原创 【博客大赛】高速差分IO评估(LVDS)

2015-5-4 10:46 3826 16 18 分类: FPGA/CPLD 文集: ALTERA FPGA

高速差分IO评估(LVDS

概述

    很多人在使用ALTERA的高速差分接口,即LVDS,老是遇到问题,作为参考笔者基于AlteraStratix II器件评估其LVDS接口。Altera的高端器件的LVDS接口集成了专用的硬件资源,而且逻辑设计的时候可以直接调用LVDS设计模块。相对于低端的Cyclone系列,用户在使用的时候需要投入更多的精力。

学习目标

l  创建高速差分接口LVDS发送和接收器

l  学习如何分配高速差分I/O

l  使用片上自带的匹配电阻(Cyclone系列没有)

l  使用ModelSim仿真LVDS接口

 

 

开始进行专用高速差分I/O设计

    如图1所示,我将要在StratixII器件上实现如下的设计。该设计利用器件专用的SERDES高速差分I/O运行在840 Mbps。接收器的两个8-bit输出使用内部的专用乘法器相乘,相乘的结果送入LVDS发送器。下面我们开始使用Megawizard来创建两个通道的LVDS RxTx设计文件以及顶层文件。

无标题.jpg

 

 

1LVDS高速差分设计实例

第一步:创建LVDS接收器

    使用Megawizard生成LVDS接收器,速率为840 Mbps,时钟为105 MHzX8模式。

1、 首先创建一个Quartus II工程,命名为Diff_io_top.qpf,并打开此工程。

2、 从工程的工具菜单选择Tools à MegaWizard Plug-In Manager。在弹出的插件管理器界面选择Create a New Custom Megafunction Variation。然后点击下一步。

3、 在出现的界面中,展开“I/O”项并选择“ALTLVDS”。选择好生成的源文件HDL输出类型(VerilogVHDL)并指定器件为Stratix II。输入源文件输出名字为lvds_rx,点击下一步,如图2所示。

20150428143754988002.png

2:生成LVDS接收器第二页

4、  在下一个窗口选择生成LVDS receiver模块。指定Stratix II作为器件家族。选择通道数为2通道。选择解串化因子为8,如图3所示。

20150428143800752003.png

3

5、 点击下一步(Next)继续

6、在接着出现的窗口中选择接口速率为840 Mbps。勾选“Use rx_locked output port”。“ alignment of data with respect to rx_inclock”默认为“EDGE_ALIGNED”。通过时钟频率来指定输入时钟速度,并指定为105 MHz。勾选“Use shared PLLs for Rx and Tx”。如图4所示。

20150428143806753004.png

4

7、 点击下一步(Next)继续。

8、 在出现的窗口中勾选“Use the “rx_data_align” input port”。勾选后界面如图5所示,点击“Finish”后选择生成所有文件,并再次点击“Finish”按钮。

20150428143814608005.png

5

至此,我们已经创建了一个LVDS接收器模块,此时我们会在工程目录下得到一个lvds_rx.vhd文件。

第二步:创建LVDS发送器

    和上一步一样我们再生成一个对应的LVDS发送器模块,速率840 Mbps,时钟105 MHzX8模式。

1、 Quartus II工程的工具菜单中选择MegaWizard插件管理器,在弹出的窗口中选择“Create a New Custom Megafunction Variation”,并点击“Next”按钮继续。

2、 在出现的窗口中展开I/O项,并从中选择ALTLVDS。同样这里选择生成VHDL输出源文件。为生成的模块命名为lvds_tx。点击Next继续,如图6所示。

20150428143823368006.png

6

3、 在出现的窗口中,确认选择生出的是发送模块。选择Stratix II器件,修改通道数为2,修改解串因子为8,点击Next继续,如图7所示。

20150428143828280007.png

7

4、 在出现的窗口中,修改输出数据率为840 Mbps。在指定输入时钟速率框下勾选“clock frequency”并指定时钟速率为105 MHz。勾选“Register input”和“Use shared PLL for receiver and transmitter.”,然后点击Next继续,如图8所示。

20150428143836394008.png

8

5、 在出现的窗口中设置“outclock divide factor”为8,不要勾选“Use ‘tx_locked”output port”,并点击Finish按钮后选择生成所有文件后再次点击Finish按钮完成模块生成,如图9所示。

20150428143844529009.png

9

    至此LVDS发送模块已经生成,此时我们可以在工程目录下看到生成的源文件lvds_tx.vhd

第三步到第六步省略了

    这就几步分别介绍了:

l  如何在设计中例化LVDS收发模块

l  LVDS收发模块分配输入输出LVDS标准的 I/O引脚

l  编译设计

l  检查底层布局布线

l 

第七步 使用ModelSimLVDS模块进行仿真

    在我们进行仿真之前,非常有必要了解下LVDS高速接口中的数据帧格式。上面我们各创建了2LVDS收发通路,串化因子为8,这意味着高速串行通道在每个rx-inclock周期内传输一组8-bit的数据。在接收端,8-bit字边界由接收器时钟的下降沿来确定,如图10所示,每个时钟周期给FPGA逻辑发送一个8-bit数据。

20150428143849738010.jpg

10:串化因子为8时的解串方式

    根据图10那么我们来看图11给出的例子,图中与时钟下降沿对齐的两个字节的数据,应该分别是数值48,因为每个时钟周期内,rx_in上的只有一个bit为‘1’,且分别位于bit2bit3的位置。

20150428143856140011.jpg

11:接收端串行数据解串举例

    下面开始使用ModelSimLVDS模块设计进行仿真,这里我们采用自动化仿真方式。建立批处理文件、脚本文件(sim.dowave.do),当然最重要的是是设计合适的测试激励文件。这些文件都以附件的形式给出,这里不做过多解释,图12显示了仿真的最终结果。

20150428143902304012.jpg

12LVDS仿真结果

 

          这里对于仿真的过程不再过多赘述,博主前面有详细的博文介绍,本文附件里也给出了详细的仿真工程,大家除了可以直接拿来仿真lvds以外,最重要的是理解仿真工程里的相关lvds的测试激励。

 

 

 

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户1208903 2015-5-4 10:22

感谢分享!

用户1828471 2015-5-2 18:06

谢谢分享。

用户1661642 2008-4-15 15:40

总结的很好

用户1053025 2006-11-20 15:31

谢谢herald的文章!
相关推荐阅读
coyoo 2025-01-16 13:07
PET探测器
记录下PET探测器的知识点。所谓探测器,即探测出核医学里的核辐射。人体代谢等反应发生的湮没产生了伽马光子,该伽马光子的能量很强,当前很难直接探测(尽管还存在直接探测的探测器)。所以,更多的时候是间接探...
coyoo 2024-12-25 14:13
ALTERA Cyclone 10器件的使用-8:特定的上电顺序
概述 Intel 要求用户为其10代FPGA器件使用特定的上电和掉电顺序,这就要求用户在进行FPGA硬件设计的时候必须选择恰当的FPGA供电方案,并合理控制完整的供电上电顺序。经过在Cyclone 1...
coyoo 2024-12-22 11:46
AD9218子板在新处理板上表现的问题
概述 新的数据处理板融合了数字和数据处理功能模块,计划采用ADI的4通道串行ADC芯片代替之前的并行ADC。由于初次使用,所以初次设计时预留了AD9218的子板的插槽。 在调试AD9633功能的同时并...
coyoo 2024-12-14 17:15
在Cyclone 10 GX器件上实现高精度TDC探索
概述 Cyclone 10 GX器件的ALM结构与Cyclone V类似,所以在Cyclone 10 GX器件上实现TDC功能理论上是可以完全参考甚至移植自Cyclone V系列的成功案例。但是,现实...
coyoo 2024-12-10 13:28
Cyclone V GX FPGA设计TDC的优化问题
概述 通过前面的研究学习,已经可以在CycloneVGX器件中成功实现完整的TDC(或者说完整的TDL,即延时线),测试结果也比较满足,解决了超大BIN尺寸以及大量0尺寸BIN的问题,但是还是存在一些...
coyoo 2024-12-03 12:20
比较器检测模拟脉冲说明(四)
概述 说明(三)探讨的是比较器一般带有滞回(Hysteresis)功能,为了解决输入信号转换速率不够的问题。前文还提到,即便使能滞回(Hysteresis)功能,还是无法解决SiPM读出测试系统需要解...
我要评论
2
16
关闭 站长推荐上一条 /3 下一条