如何实现 高速串口ADC与FPGA连接?

如何实现 高速串口ADC与FPGA连接?,第1张

呵呵。不知道你用的是什么FPGA。数据时钟速率挺高的。特意看了下这个9222的资料。觉得这个设计困难的地方就是IO这边了。

一一解答:

LVDS的差分信号在PCB方面的布线不仅需要等长,而且阻抗是有要求的。Altera和Xilinx的文档有这类example design

第二:就是ADC和FPGA的直接相连:Altera系列支持到支持600Mbps的器件有:cycloneIII,stratixII以上,还有最新的Arraia可以支持到LVDS 600+。Xilinx方面spartan3,vertix系列支持。

第三:FPGA方面。差分对是需要经过约束才可以使用的。无论是Xilinx还是Altera。首先是管脚。可以从Assignment或者UCF里面约束至对应管脚。pin planner里面以对应的图例会表明一对差分信号的输入口分别以p,n表示。第二是需要约束输入至第一个寄存器的延迟时间。这个参见下面的example。

数据窗口可能的确有点小。呵呵,这块AD好像用于医疗方面的,精度很高。

给出参考设计吧。

Altera:

http://www.altera.com.cn/search?site=china_spt_kdb&q=LVDS&btnG=%E6%90%9C%E7%B4%A2&entqr=0&output=xml_no_dtd&sort=date%3AD%3AL%3Ad1&ie=UTF-8&lr=lang_zh-CN&client=china_frontend&ud=1&oe=UTF-8&proxystylesheet=china_frontend

说明:里面有两个FAQ。里面包含了3篇PDF。

第一个FAQ讲的是Quartus里面高速接口的megafunction。闲了可以看看。有助了解全部的IO标准。

第二个FAQ里面是example design。cycloneIII和stratix系列。分别是两篇pdf。内部包括:PCB的走线要求。以及内部端口的使用。

Xilinx的:

第一个是PCB要求:

http://www.xilinx.com/support/documentation/application_notes/xapp230.pdf

不过xilinx的example design。。。我找了半天,只有结论性的。。。约束和参考设计由于太分散。。。所以找来找去没找到。

如果真是用xilinx的话。不行就找找当地的FAE吧。呵呵,实在没办法了。

  本文通过以高速 ADS42LB69 芯片为例进行实战,利用SelectIO IP快速快速高效完成驱动的生成。关于SelectIO IP的使用,可以参考 Xilinx SelectIO IP使用说明(一) 。

  ADS42LB49和ADS42LB69是 高线性度、双通道、14 和 16 位 250MSPS 模式转换器 (ADC) 系列,支持 DDR 和 QDR LVDS 输出接口 。已缓冲模拟输入在大大减少采样保持毛刺脉冲能量的同时,在宽频率范围内提供统一的输入阻抗。采样时钟分频器可实现更灵活的系统时钟 架构设计。ADS42LBx9 以低功耗在宽输入频率范围内 提供出色的无杂散动态范围 (SFDR)。

  用户可以根据自己的需求将数据接口通过SPI配置成 QDR DDR 接口。在进行数据验证时,也可以使用测试模式,对收发数据进行验证以保证系统的正确性。另外,还可以对输入时钟进行延时调节或者通过SelectIO的 delay delayctrl 功能对时钟信号进行微调,以满足时序要求。此方面不是本文重点,不做展开,更多内容参考官方data sheet。

  从下图可以看到,数据接口引脚采用1.8V供电,故数据接口为差分1.8V。

  下图为ADS42LB69的 DDR 模式时序图,从图中可以看出有1对时钟接口,两个8对数据接口(DA与DB),每对数据接口分别在时钟的上升沿与下降沿采样,经过一个时钟周期可以捕获16位数据。

  根据以上对ads42lb69的了解,就可以轻松的配置SelectIO IP的GUI界面了。

  首先时钟接口与数据接口都是input,该时钟信号与RF模块时钟必须保持同源,以保证系统的相参性。由于ads42lb69采用DDR模式,且所有数据引脚都是并行,所以不选择串并转换器SERDES。

  由于数据时钟来源于ads42lb69引脚,故选择外部时钟,而非FPGA内部时钟。

  在实际处理高速数据时,往往存在由于布局布线导致的数据引脚之间的延时不相同,可以通过在每个数据引脚添加idelay、delayctrl模块对齐进行微调。或者, 存在数据引脚与时钟引脚之间不对齐 ,通常对时钟引脚添加idelay、delayctrl模块对其进行微调。

  IP生成之后,通过右击选择Open IP Example Design进行仿真以加强理解,在线DEBUG调试延时模块,以达到设计要求。

其实基于FPGA的高速信号采集几乎都是相同的设计原理。就是先ADC采样信号,将模拟信号转换为数字信号,然后交由FPGA。而此时的FPGA需要写3个IP模块:

IP核1、控制ADC自动高速转换的状态机。其作用是实现高速100M的信号采样,就是一个循环的时序控制,让ADC转换一次完成之后由FPGA读出数据并将数据交由第二个IP核(FIFO缓存控制IP),然后立刻读取第二次数据。但是需要注意ADC芯片的选择,器转换速率必须要高于100MHZ。

IP核2、FIFO缓存控制核:如果说想要实现采集数据的高可靠性和稳定性的话,FIFO一般来说是必须存在的。FIFO的IP核判断ADC一次采样是否结束,如果结束,将数据存在FIFO的缓存区1。然后在第二次采样的时候让IP核3将缓存区1的数据读走然后清空缓存区1的数据,并同时将第二次读到的采样数据存进缓存区2,然后又将第二次读的数据让IP核3从缓存区2读走,同时ADC采样并存数据到缓存区1。(也就是说,FIFO分为两个缓存区,总是一个用来存储ADC转换后的数据,另一个用来让后面的功能模块读出上一次采样到的数据。两个是同时的。缓存区1和缓存区2交替工作。)

IP核3:处理数字信号的功能模块。你说到了你的任务是ADC转换这一块,所以IP核3你只需要交替读出FIFO两个缓存区的数据就OK。

回答你的补充问题:

1.低速是不是不需要FIFO模块?

答:FIFO其实无论是高速还是低速都可以省掉,只是为了系统的稳定性和采样速率的稳定性、采集数据的高可靠性所以次啊加的FIFO缓存器。

2.高速信号PCB布线应注意什么?

答:

1.电源滤波一定要做好,否则有纹波。

2.正电源(VCC)的所有线路最好用两根地线(GND)将它夹在中间,(如果整个板子都铺铜,这个可以不考虑)。

3.双面板需要将正反两面的走线方向垂直,可以减小EMC。

4.模拟电源和数字电源分开,地也一样。整个板子上的数字电源和模拟电源用两个个0欧电阻连接。(1个电源正,一个地)

5.最好铺铜。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12098834.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存