原创 使用ALTERA的DDIO而不是LVDS模块来设计高速串行ADC接口

2024-7-7 13:28 735 2 2 分类: FPGA/CPLD 文集: ALTERA FPGA

概述


我们知道了ALTERA器件的IOE里有DDR寄存器,而且ALTERA提供了DDIO模块供用户可以自动利用这些DDR寄存器。之前我们也探讨了不使用LVDS模块设计高速串行ADC接口原因,本文我们来具体讨论下使用IOE的DDR寄存器设计高速串行ADC接口。

        近期有项目需要串行ADC,比如AD9633,替换前期使用并行ADC,比如AD9218. 如果使用ALTEAR的FPGA,可以直接使用厂家提高的LVDS模块来接收ADC的LVDS输出。由于FPGA本身的限制,以及某些需要众多ADC同道应用场合,FPGA无法胜任如此场合,如此才无法直接使用LVDS模块,可以使用迂回方式,即DDIO+移位寄存器来接收高速串行ADC的输出。


DDIO加移位寄存器架构


这里不再介绍什么是DDIO和移位寄存器(shift register),大家可以在ALTERA的开发集成环境Quartus II里找到这两个MegaFunction。

我们知道所谓的高速串行ADC一般包含多个通道,而且符合标准的LVDS接口要求,所以可以直接连接到FPGA的LVDS接口上。一般我们直接在FPGA内实例化LVDS模块来接收ADC的采样数据即可,这在ADC分辨率不高于10bit以及ADC的通道数不多的情况下是非常常见的设计思路。但是基于之前我们分析的原因,我们需要在FPGA内部利用DDIO加shift register来设计该接口,如图1所示。


图1:DDIO加移位寄存器构成的LVDS接收接口设计


如图1所示,这种架构,每个通道需要一个DDIO加两个shift register函数以及PLL来产生快速时钟和慢速时钟(图1所示是一个8bit例子)。我们知道LTM9010当采样频率在100MHz@14bit时,其转换数字输出数据率是1400Mbps,如果采用2-Lane工作模式,那么图1所示的“datain”的速率是700Mbps,那么PLL产生的快速时钟只需350MHz即可,这在现在流行的FPGA中是可以很轻易达成的。


实例分析


这里只是针对DDIO-in的例子来研究ADC输入接口的实现,根据图1,我们来看看一个非常简单8-bit分辨率ADC的接口实现。

根据前面分析,我们知道DDR输入寄存器接收数据并将数据分离成奇数位和偶数位。那么如图1中的数据位0、2、4和6被连接到一个移位寄存器,而数据位1、3、5和7被连接到另一个移位寄存器。这两个移位寄存器就是所谓的软SerDes,用于解串数据。我们还需要一个寄存器将移位寄存器输出的并行数据同步驱动到下一级逻辑。如图2所示,包括了实现LVDS串行接收buffer所有必需的模块。


图2:完整的LVDS接收器模块


图3:具体实现


分析及结论


探讨了FPGA内部利用DDIO加移位寄存器架构设计高速串行ADC接口的可能性,最后通过一个实例进行具体分析。

这里我们需要考虑一个问题就是我们前面提到了,我们之所以采用这种方案,是因为ADC的通道数众多,所以需要考虑众多ADC通道之间是否需要同步以及各个ADC通道处理的时候高速时钟和低速时钟是否可以共享的问题。


参考

[1] Arria II GX Device Handbook

[2] AN 167

[3] ALTDDIO Megafunction User Guide

作者: coyoo, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-1010859.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
2
关闭 站长推荐上一条 /3 下一条