02-04-2013 02:06 AM
Hi, we use the Digilent Atlys board and have a need to input 1080p60 video via DVI/HDMI. I've searched around a lot and also emailed Digilent and everyone seems to say that the SerDes performance on the Spartan-6 prevents you from doing it. The reply I got from Digilent was:
"Unfortunately the Atlys is unable to handle 1080p60Hz because of the timing requirements of its FPGA. This is not something that can be changed via an update. The reason the Atlys can't handle a 1080p60Hz signal is because it requires deserialization/serialization at a rate of well over 1 Gb/s, and the Atlys can only handle deserialization/serialization at a max of 950 Mb/s."
DS162 Table 25 says that the maximum throughput for SerDes on a Spartan-6 (-3 speed grade) would be 1080Mbps. XAPP495 says that TMDS throughput for -3 speed is 1050Mbps. This would lead me to believe that indeed it is not possible to support 1080p60 given that it would require 1485Mbps. XAPP460 states that TMDS throughput is simply “a function of the serial data rate of the video screen mode being transmitted”, which I interpret as that the TMDS throughput is only limited by the speed of the SerDes process. If that is the case, XAPP460 also talks about how to achieve enough throughput to handle 720p60 video on a smaller Spartan-3 chip, which is normally limited to 700Mbps when almost 750 is needed. Page 7 says “When transmitting an HDTV 720p screen mode video stream, the serial data rate is 742.5 Mb/s. The only practicable means to accomplish conversions at this rate is to apply a Double Data Rate (DDR) technique inside the FPGA. This reduces the bit sampling clock by half to 371.25 MHz.”
That being the case, would it be possible to use a similar technique to allow 1080p60 to be supported on a Spartan-6 like the Atlys board? If so, how would that be implemented? Currently I'm using the demo project from the Digilent website called Atlys_HDMI_PLB_Demo, and by default it only supports 720p60 video using a common 75Mhz clock speed for everything in the design (except the RAM which is 600Mhz, and the max is 800).
If it is not possible with the onboard HDMI ports at all, is there maybe a way to hook up some other board to one of the expansion connectors that can handle the SerDes and/or other processing necessary for me? That way the Atlys board can still be used, but the heavy lifting that it can't do would be provided by some other chip... at least that's the idea I had. We would really like to continue using the Atlys boards because of its price point.
Any ideas would be greatly appreciated.
02-05-2013 07:23 PM
Im my case Spartan6(25t) is enough to receive (to RAM) high speed video stream (1280*960@90fps), then transmit it to PC via PCIe.
02-05-2013 07:30 PM
Can I ask how you're accomplishing this without (presumably) using a regular serdes conversion? Would you have any code you could show?
My understanding is that the spartan6 maxes out at around 1050Mbps for serdes operations, while 1280x960@90fps even without factoring in the inactive lines, is over 1.1Gbps.
02-05-2013 08:18 PM
02-05-2013 08:29 PM
I've generated standart DESER:
DESER_INST : DESER port map ( -- From the system into the device
DATA_IN_FROM_PINS_P => SLVS_P, -- diff serial P bus (4 bit)
DATA_IN_FROM_PINS_N => SLVS_N, -- diff serial N bus (4 bit)
DATA_IN_TO_DEVICE => cambus.ser_data, -- output data - 24bit on each clock edge (12 bit for pixel)... later I'll translate it to 32bit (8bit for pixel)
CLK_IN_P => SLVSC_P,
CLK_IN_N => SLVSC_N,
CLK_DIV_OUT => CLK_DS, -- data clk
CLK_RESET => not boot_compl, -- CLK_RESET,
IO_RESET => not boot_compl -- IO_RESET;
Offcourse, you have to parse serial format(for start/end line/frame sync). I've made parser for HiSPI protocol.(can't show it)
02-06-2013 01:34 PM
But how are you overcoming the limitations of the serdes bandwidth? I'm really at a loss as to how this is possible, given all the other comments I've read that say this kind of bandwidth isn't possible for video output on a Spartan6.
02-06-2013 11:45 PM
As I guess that, 1050MHz is for one lane (PCIe has same SERDES for output); Anyway format 1280x960@90fps has bandwith about 130MB/sec. It's about 0.82Gbps.