Menu Close

FPGA 与LVDS接口电路设计

FPGA 与LVDS接口电路设计

在上节内容中我们已经详细讲解了差分信号及LVDS的基本工作原理,并解释了LVDS的作为物理层电压接口的优缺点,LVDS的收发结构如图1,2所示。

图1

图2

 1.  LVDS 的电流

LVDS源端驱动器由一个恒流源(通常约为3.5mA,最大不超过4mA)驱动一对差分信号线组成,,如图2所示。Q1,Q4与Q2,Q4组成两对根据输入轮流导通。接收端的接收器本身为高直流输入阻抗,所以几乎全部的驱动电流都流经100Ω的终端匹配电阻,并在接收器输入端产生约350mV的电压。当源端驱动状态反转变化时,流经匹配电阻的电流方向改变,于是在接收端产生高低逻辑状态的变化。

 2. LVDS的接收器

为适应共模电压的在宽范围内的变化,一般情况下,LVDS的接收器输入级还包括一个自动电平调整电路,该电路将共模电压调整为一固定值。其后是带有一定的回滞特性的差分放大器。LVDS 接收端差分电平在大于100mv是输出高电平,在小于-100mv时输出低电平。在-100mv到+100mv之间没有定义,这种情况在系统初始化,发送到接收开路等条件下会发生,此时接收端的输出高低电平未知,可能会对整个接收数据处理产生干扰,因此在设计硬件电路和软件处理时加以考虑(如failsafe)。

3. FPGA IO上的差分信号

FPGA上的差分信号如图3所示,该图是Xilinx Artix XC7A100T BANK13 的管脚示意图,其中有LxP(如L1P,L2P等),LxN(如L1N,L2N等)分别对应差分信号的的同相端和反相端。其中LxP表示同相端,LxN表示反相端。差分对一般成对出现,如L1P, L1N为一对,L2P, L2N为一对等。在LVDS设计时一般收发双方同相端与同相端对应,反相端与反相端对应。 图3是FII-PRX100D开发板原理图中的一部分。

图3

从图3的IO脚的命名可以看出,看看如何识别IO的功能及含义。目前FPGA的IO都是多功能的,根据不同的应用可以设置不同的接口电压及功能。如图3,IO_L11P_T1_SRCC_13字符串中IO表示该脚可以做输入、输出或双向;L11P表示该脚可以配置成差分对的同相输入或输出或双向;T1表示该脚可以与DDR存储器相接,在DDR的信号分组中为第一组(见DDR控制器设计)。SRCC(single region clock capable) 表示可以配置成单区域时钟管脚,表示在该区域内时钟具有布线能力(见FPGA时钟资源部分);数字13表示该管脚在bank13上;Y22表示该管脚在BGA封装的管脚号为Y22。如果要作为差分信号使用,与之配对的管脚为IO_L11N_T1_SRCC_13。

在Intel_Altera的管脚描述中也是极其类似的,图4是FII-PRA 006的部分图纸,器件为:10CL006YE144C8G,其中IO_B4_54/DIFFIO_B12p表示IO–输入输出,B4–Bank4, 54–pin54 ,DIFFIO–差分输入输出,B12p–第12个差分对的同相端。

图4

图5是FII-pra006开发板上对外接口,是PMOD接口中的一个,用于与外界通信。可见该接口实现了4对差分信号。本章后续内容将以IO8_P, IO8_N作为LVDS的发送驱动器,以IO12_P,IO12_N 为LVDS的差分对作为接收缓冲器进行高速通信的收发协议研究。结合图5 的 时钟差分对也可以进行多数据位的同步差分通信的设计。

图5

4. FPGA上的LVDS接口

FPGA上的差分接口可以有多种应用以及多种电压接口,可以根据不同的应用进行选择,当然在诸多的接口中所选择的FPGA 器件是否支持该接口,需要仔细阅读FPGA相关文档,这是硬件工程师在设计前首先需要解决的问题。FPGA差分接口支持的电压接口标准及类型如下:

BUS LVDS,

Differential 1.2-V HSTL class I

Differential 1.2-V HSTL class II

Differential 1.5-V HSTL class I

Differential 1.5-V HSTL class II

Differential 1.8-V SSTL class I

Differential 1.8-V SSTL class II

Differential 2.5-V SSTL class I

Differential 2.5-V SSTL class II

LVDS

LVDS-E-3R

mini-LVDS

mini-LVDS-E-3R

Altera的FPGA器件自cyclone V(含Arria5,Stratix V)之后的所有器件在LVDS的收器端都内部集成了接收终端电阻,Xilinx 自6系列器件也同样集成了接收终端电阻,在设计硬件电路时不需要再外部并联终端电阻,可以通过FPGA编程实现。如Altera器件在选择I/O Standard时选择 LVDS-E-3R类型即可,Xilinx应在XDC文件添加 DIFF_TERM约束如下,

set_property DIFF_TERM TRUE [get_ports sys_diff_clock_clk_p]

如果没有给定约束或选择类型不匹配(如在Altera器件中选择LVDS),默认情况下,FPGA内部的终端电阻是断开的,即没有将内部的终端电阻并联到LVDS 接收器的差分线上,因此硬件工程师和FPGA工程师在设计时都要非常清楚才能设计出简洁实用的电路。

5. 时钟扩展:

由于Cyclone10系列芯片的CLK引脚 只能作为输入脚使用,因此在FII-pra006开发板上将相 邻的差分对Pin84,Pin85连接 进行扩展,以便能实现 双向时钟线。同时该接口也可以作为普通 的差分信号进行数据通信。 如图6,

图6

由于Xilinx 器件一般时钟管脚同时也是IO(或差分IO),因此不需要如图6的方式进行处理。

6. 思考题:

LVDS一般认为是点到点的通信,如何设计LVDS组成的通信网络?

Posted in FPGA, FPGA 教材教案, 教材与教案, 文章

发表评论

您的电子邮箱地址不会被公开。

Leave the field below empty!

相关链接