cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Visitor
Visitor
1,447 Views
Registered: ‎09-24-2018

Video crosspoint

Hi everyone,

 

I need to do a video crosspoint in a FPGA Spartan6, I have 4 video clock inputs (clk0, clk1, clk2 and clk3) and 4 video clock outputs (clko0, clko1, clko2 and clko3), and I have 4 selection inputs (sel0, sel1, sel2 and sel3) one for each video output

 

The funcionality I would like to have is:

 

sel0 = 0: clko0 = clk0

sel0 = 1: clko0 = clk1

sel0 = 2: clko0 = clk2

sel0 = 3: clko0 = clk3

 

sel1 = 0: clko1 = clk0

sel1 = 1: clko1 = clk1

sel1 = 2: clko1 = clk2

sel1 = 3: clko1 = clk3

 

sel2 = 0: clko2 = clk0

sel2 = 1: clko2 = clk1

sel2 = 2: clko2 = clk2

sel2 = 3: clko2 = clk3

 

sel3 = 0: clko3 = clk0

sel3 = 1: clko3 = clk1

sel3 = 2: clko3 = clk2

sel3 = 3: clko3 = clk3

 

I don't know how I can do it with bufgmux, could anyone help me with this issue?

 

Thank you

 

Best regards

 

Jose

0 Kudos
11 Replies
Highlighted
Teacher
Teacher
1,445 Views
Registered: ‎07-09-2009

Re: Video crosspoint

whats your programming language ?

 

whats the video clock frequency, and format ( LVDS , LVCMOS etc ? )

 

<== If this was helpful, please feel free to give Kudos, and close if it answers your question ==>
0 Kudos
Highlighted
Visitor
Visitor
1,417 Views
Registered: ‎09-24-2018

Re: Video crosspoint

I work with VHDL and my video inputs are 3G/HD/SD-SDI

 

if I use external deserializers for each input (GS2971) the video clock has a frecuency of 148.5Mhz

 

If I use Xilinx transceivers the input frecuency is 3Gbps for 1080p60

 

I don't know the best way to do my solution

 

Thank you

0 Kudos
Highlighted
Teacher
Teacher
1,379 Views
Registered: ‎07-09-2009

Re: Video crosspoint

well, 

 

the code can only work on the parallel data, be that after the on chip PHY on an external PHY,

 

then its a simple set of case statements to make three MUX's, one for each out put 

<== If this was helpful, please feel free to give Kudos, and close if it answers your question ==>
0 Kudos
Highlighted
Visitor
Visitor
1,365 Views
Registered: ‎09-24-2018

Re: Video crosspoint

I can do 4 mux with 4 inputs and 4 outputs each one (all mux with same data inputs) 

 

But I don't know the way I can do 4 mux with 4 clock inputs and four clock outputs, all mux with same clock inputs

 

I need 3 bufgmux for each clock mux, for 4 clock mux I need 12 bufgmux

 

Spartan6 has 16 bufgmux but I don't know the way I can connect each bufgmux because there are hw constraints between global clocks pins and bufgmux inputs

 

Please see attached

 

Thank you

0 Kudos
Highlighted
Teacher
Teacher
1,360 Views
Registered: ‎07-09-2009

Re: Video crosspoint

sorry , missed that

 

you don't want a mux,

 

you receive video on serial links ?

   these then get deseralised. 

 

you then launder them to an internal system clock, 

      

when they are all on the same system clock, then you can mux, 

 

and then seralise again,

 

 

<== If this was helpful, please feel free to give Kudos, and close if it answers your question ==>
0 Kudos
Highlighted
Visitor
Visitor
1,348 Views
Registered: ‎09-24-2018

Re: Video crosspoint

The 4 video input clocks have different frequency, for example, one clock can be 148.5Mhz (1080p50) and other one 13.5Mhz (SD525)... they don't have the same frequency and they aren't synchronized

 

I need to do a crosspoint or mux between different video clocks

 

I think I need to use bufgmux but I don't know the way because I have errors of bufgmux placement when I sinthetize

 

In this moment I use external deserializer so I have 4 clock pins in my design

 

I don't know if I can do this with Spartan

 

Thank you 

 

 

0 Kudos
Highlighted
Teacher
Teacher
1,343 Views
Registered: ‎07-09-2009

Re: Video crosspoint

Ok,

 

you want to switch clocks , 

   now thats a bit more difficult.

 

suggest you start a new project, just with the clocks you want, and test where they can be put on the chip, 

    sorry can't remember , which Spartan you got ?

 

<== If this was helpful, please feel free to give Kudos, and close if it answers your question ==>
0 Kudos
Highlighted
Visitor
Visitor
1,296 Views
Registered: ‎09-24-2018

Re: Video crosspoint

I use Spartan 6 SLX100

 

I have a project only with clocks inputs, clock outputs and inputs of selection but there is no way to sintethize the solution

0 Kudos
Highlighted
1,289 Views
Registered: ‎06-21-2017

Re: Video crosspoint

Are you getting a synthesis error or a placer error?  I think this should be syntesizable.  The limited number of inputs to each clock tile on the S6 may make it impossible to place & route. 

0 Kudos
Highlighted
Visitor
Visitor
976 Views
Registered: ‎09-24-2018

Re: Video crosspoint

I have a placer error when I do 4 clock inputs and 4 clock outputs

 

I tried a new code and it works when I have four clock inputs and two clock outputs (4:2)

 

But I don't know the way to add two more output clocks, perhaps I need to use BUFIO2, but I don't know if pins clocks can go to one bufgmux input and to one BUFIO2 input

 

This code works (4 clock inputs and 2 clock outputs) but I need to add two more clocks

 

-- mux0

U00: bufgmux port map(o => clk0_01, i0 => clk0, i1 => clk1, s => sel0(0));
U01: bufgmux port map(o => clk0_23, i0 => clk2, i1 => clk3, s => sel0(0));
U02: bufgmux port map(o => clk0sel_i, i0 => clk0_01, i1 => clk0_23, s => sel0(1));

 

-- mux1
U03: bufgmux port map(o => clk1_01, i0 => clk1, i1 => clk0, s => sel1(0));
U04: bufgmux port map(o => clk1_23, i0 => clk3, i1 => clk2, s => sel1(0));
U05: bufgmux port map(o => clk1sel_i, i0 => clk1_01, i1 => clk1_23, s => sel1(1));


-- out
U06: ODDR2 port map(clk0sel, clk0sel_i, not clk0sel_i, '1', '1', '0', '0', '0');
U07: ODDR2 port map(clk1sel, clk1sel_i, not clk1sel_i, '1', '1', '0', '0', '0');

0 Kudos
Highlighted
Visitor
Visitor
934 Views
Registered: ‎09-24-2018

Re: Video crosspoint

I did the 4x4 crosspoint at the end, I need to use 12 bufgmux and 4 bufio2

 

With that configuration the issue is that I can't add more clocks to do other things, Spartan6 only has 16 bufgmux

 

Thank you to everybody