FPGA 高速读取数据
路过的大神们,我现在要用FPGA 读取ADC的数据,现在的问题是ADC出来的读取数据的时钟的上升沿和下降沿数据都会变化,并且读数据的时钟频率是360M,这么算那数据的频率就是720M,直接就这么来读会不会很危险,产生竞争冒险和亚稳态哇~时序图如下 为什么要在上升沿跟下降沿都读数据呢?上面的图你在上升沿读就可以了。 上升沿、下降沿各用一组移位寄存器,最后再组合。 噢看错了,确实是上下沿。 什么型号FPGA? 本来高速ADC应当是并行输出的提高数据输出能力,不知为何你用的的串行的,确实不很好做 用SERDES,不难做 sme 发表于 2013-3-29 11:11 static/image/common/back.gif上升沿、下降沿各用一组移位寄存器,最后再组合。
这个想法我也有想过,可是这样做和你在同一个always里同时检测上升沿和下降沿效果貌似是一样的,因为都是要在上升沿和下降沿更新数据 NJ8888 发表于 2013-3-29 12:18 static/image/common/back.gif
本来高速ADC应当是并行输出的提高数据输出能力,不知为何你用的的串行的,确实不很好做 ...
嗯~这个是要输出8路数据的,然后每一路数据在一个时钟内串行传出12bits,所以我现在要用FPGA在一个时钟内将这串行的12bits转换为并行的数据,可是数据的频率又太高,无从下手,高手有没有什么好办法啊 40130064 发表于 2013-3-29 11:55 static/image/common/back.gif
什么型号FPGA?
cyclone iv的,有没什么好办法 verilog 发表于 2013-3-29 12:25 static/image/common/back.gif
用SERDES,不难做
刚才百度 了一下你说的这个东西,貌似不太适合我吧,现在就只能通过FPGA来读 wildone 发表于 2013-3-29 11:21 static/image/common/back.gif
噢看错了,确实是上下沿。
嗯!!对哇,上下沿不是主要问题,现在是数据频率720M太快,不知道FPGA 能不能读出来 scutfanyu 发表于 2013-3-29 12:50 static/image/common/back.gif
嗯!!对哇,上下沿不是主要问题,现在是数据频率720M太快,不知道FPGA 能不能读出来 ...
你采样多久后,进行数据处理?还是一直都在处理? 如果是A家的
你需要用 ALT_DDIO,或ALT_LVDS_RX,并配合锁相环。时序问题,需要结合PCB写约束文件,静态分析不报critical warning就行。
时钟的话,最好用温补晶振和专门的时钟芯片,fpga的pll输出时钟jitter比较大,比如a家的cyclone,300ps,在100MHz的频点上,这个300ps会对snr有20*log((2*pi*100M*300ps)约15dB的劣化。
时钟芯片出两路lvds时钟,给ad和fpga的pll输入。
pll给lvds_rx的bclk可能需要根据静态时序分析的报表调整相位。
a家官网上有lvds的user guide和配套示例。 scutfanyu 发表于 2013-3-29 12:48 static/image/common/back.gif
刚才百度 了一下你说的这个东西,貌似不太适合我吧,现在就只能通过FPGA来读 ...
说的就是用FPGA里的SERDES core,A家的FPGA就google ug_altlvds.pdf看看吧。 mark. LVDS,高速ADC,SERDES core mark. LVDS,高速ADC,SERDES core 这个看上去需要用到锁相环 然后LVDS,不过也没有做过, 用乒乓操作! {:smile:} loywong 发表于 2013-3-29 13:35 static/image/common/back.gif
如果是A家的
你需要用 ALT_DDIO,或ALT_LVDS_RX,并配合锁相环。时序问题,需要结合PCB写约束文件,静态分 ...
真是高手啊,研究得这么细。
这个东西我只知道用serdes,上下沿的问题,有没有支持上下沿的serdes呢,没有的话,真的要pll倍频了 使用LVDS收发器实现lvds的传输,一般要用到altlvds强函数,分频后串并转换。 jay007 发表于 2013-4-1 14:44 static/image/common/back.gif
真是高手啊,研究得这么细。
这个东西我只知道用serdes,上下沿的问题,有没有支持上下沿的serdes呢,没 ...
不敢当~
上下沿正是ALT_DDIO* 的事情,ALT_LVDS*是包含DDIO和SERDES的。
你只需要时钟频率等于数据率一般的时钟送给ALT_LVDS*即可。
当然如果数据率一半之后内部普通逻辑就可以处理了,只用ddio*也行(比如cyc4,200Msps的LVDS,ddio之后数据率减半(位宽增倍)到100Msps就可以只用ddio了)。
http://www.altera.com/literature/ug/ug_altlvds.pdf,还有配套工程文件官网可下。 本帖最后由 starsboy 于 2013-4-5 00:00 编辑
难道用的是AD9228?好眼熟 呵呵
正如sme所说 “上升沿、下降沿各用一组移位寄存器,最后再组合。” 360MHz。。。楼主直接换片子吧,什么ADC啊,居然支持这么高速度的串行。 我觉得撸主得换器件了……
页:
[1]