搜索
bottom↓
回复: 25

FPGA 高速读取数据

[复制链接]

出0入0汤圆

发表于 2013-3-29 09:45:49 | 显示全部楼层 |阅读模式
路过的大神们,我现在要用FPGA 读取ADC的数据,现在的问题是ADC出来的读取数据的时钟的上升沿和下降沿数据都会变化,并且读数据的时钟频率是360M,这么算那数据的频率就是720M,直接就这么来读会不会很危险,产生竞争冒险和亚稳态哇~时序图如下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2013-3-29 10:34:22 | 显示全部楼层
为什么要在上升沿跟下降沿都读数据呢?上面的图你在上升沿读就可以了。

出0入0汤圆

发表于 2013-3-29 11:11:21 | 显示全部楼层
上升沿、下降沿各用一组移位寄存器,最后再组合。

出0入0汤圆

发表于 2013-3-29 11:21:17 | 显示全部楼层
噢看错了,确实是上下沿。

出0入0汤圆

发表于 2013-3-29 11:55:01 | 显示全部楼层
什么型号FPGA?

出0入0汤圆

发表于 2013-3-29 12:18:39 | 显示全部楼层
本来高速ADC应当是并行输出的提高数据输出能力,不知为何你用的的串行的,确实不很好做

出0入0汤圆

发表于 2013-3-29 12:25:48 | 显示全部楼层
用SERDES,不难做

出0入0汤圆

 楼主| 发表于 2013-3-29 12:41:23 | 显示全部楼层
sme 发表于 2013-3-29 11:11
上升沿、下降沿各用一组移位寄存器,最后再组合。

这个想法我也有想过,可是这样做和你在同一个always里同时检测上升沿和下降沿效果貌似是一样的,因为都是要在上升沿和下降沿更新数据

出0入0汤圆

 楼主| 发表于 2013-3-29 12:45:10 | 显示全部楼层
NJ8888 发表于 2013-3-29 12:18
本来高速ADC应当是并行输出的提高数据输出能力,不知为何你用的的串行的,确实不很好做 ...

嗯~这个是要输出8路数据的,然后每一路数据在一个时钟内串行传出12bits,所以我现在要用FPGA在一个时钟内将这串行的12bits转换为并行的数据,可是数据的频率又太高,无从下手,高手有没有什么好办法啊

出0入0汤圆

 楼主| 发表于 2013-3-29 12:46:46 | 显示全部楼层
40130064 发表于 2013-3-29 11:55
什么型号FPGA?

cyclone iv的,有没什么好办法

出0入0汤圆

 楼主| 发表于 2013-3-29 12:48:31 | 显示全部楼层
verilog 发表于 2013-3-29 12:25
用SERDES,不难做

刚才百度 了一下你说的这个东西,貌似不太适合我吧,现在就只能通过FPGA来读

出0入0汤圆

 楼主| 发表于 2013-3-29 12:50:37 | 显示全部楼层
wildone 发表于 2013-3-29 11:21
噢看错了,确实是上下沿。

嗯!!对哇,上下沿不是主要问题,现在是数据频率720M太快,不知道FPGA 能不能读出来

出0入0汤圆

发表于 2013-3-29 13:24:17 | 显示全部楼层
scutfanyu 发表于 2013-3-29 12:50
嗯!!对哇,上下沿不是主要问题,现在是数据频率720M太快,不知道FPGA 能不能读出来 ...

你采样多久后,进行数据处理?还是一直都在处理?

出0入0汤圆

发表于 2013-3-29 13:35:31 | 显示全部楼层
如果是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和配套示例。

出0入0汤圆

发表于 2013-3-29 14:55:46 | 显示全部楼层
scutfanyu 发表于 2013-3-29 12:48
刚才百度 了一下你说的这个东西,貌似不太适合我吧,现在就只能通过FPGA来读 ...

说的就是用FPGA里的SERDES core,A家的FPGA就google ug_altlvds.pdf看看吧。

出0入0汤圆

发表于 2013-3-31 15:48:42 | 显示全部楼层
mark. LVDS,高速ADC,SERDES core

出0入0汤圆

发表于 2013-3-31 17:20:04 | 显示全部楼层
mark. LVDS,高速ADC,SERDES core

出0入0汤圆

发表于 2013-3-31 20:46:11 | 显示全部楼层
这个看上去需要用到锁相环 然后LVDS,不过也没有做过,

出0入0汤圆

发表于 2013-3-31 20:54:49 | 显示全部楼层
用乒乓操作!

出0入0汤圆

发表于 2013-3-31 21:19:41 | 显示全部楼层
      

出0入0汤圆

发表于 2013-4-1 14:44:03 | 显示全部楼层
loywong 发表于 2013-3-29 13:35
如果是A家的
你需要用 ALT_DDIO,或ALT_LVDS_RX,并配合锁相环。时序问题,需要结合PCB写约束文件,静态分 ...

真是高手啊,研究得这么细。

这个东西我只知道用serdes,上下沿的问题,有没有支持上下沿的serdes呢,没有的话,真的要pll倍频了

出0入0汤圆

发表于 2013-4-1 15:59:15 | 显示全部楼层
使用LVDS收发器实现lvds的传输,一般要用到altlvds强函数,分频后串并转换。

出0入0汤圆

发表于 2013-4-4 23:55:01 | 显示全部楼层
jay007 发表于 2013-4-1 14:44
真是高手啊,研究得这么细。

这个东西我只知道用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,还有配套工程文件官网可下。

出0入0汤圆

发表于 2013-4-4 23:57:13 | 显示全部楼层
本帖最后由 starsboy 于 2013-4-5 00:00 编辑

难道用的是AD9228?好眼熟 呵呵
正如sme所说 “上升沿、下降沿各用一组移位寄存器,最后再组合。”

出0入0汤圆

发表于 2013-4-5 00:43:03 | 显示全部楼层
360MHz。。。楼主直接换片子吧,什么ADC啊,居然支持这么高速度的串行。

出0入0汤圆

发表于 2013-4-5 15:11:16 | 显示全部楼层
我觉得撸主得换器件了……
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 07:20

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表