本节内容讲解在LVDS在Intel Altera FPGA 上的使用以及如何在Quartus FPAG集成开发环境配置LVDS接口的各项设置。首先在Quartus 新建一个工程进行测试。
-
Quartus新建工程
创建空工程并指定工程文件,库,器件及EDA工具。分解步骤如下,
在主菜单 点击File–>New Project Wizard ,弹出如图1所示对话框

图1
在图1中输入(或选择)项目路径(D:/high_speed_txrx),项目名称hs_txrx,顶层实体文件hs_txrx。点击 –>NEXT,弹出图2所示界面

图2
在project type界面下:选择Empty project(空工程),点击–next , 弹出如图3所示界面

图3
图3中可以选择需要的文件添加到项目中,由于目前是测试新项目,因此没有文件需要添加,点击–>>next, 弹出界面如图4,

图4
在图4界面下选择合适的器件,由于本次设计测试采用FII-PRAoo6, 因此在Family,Device & Board Settings标签栏内的对话框中,
Family –> Cyclone10 LP,Package –> TQFP,Pin count–> 144,Core speed grade –>8,最终选定10cl006YE144C8G
点击–> NEXT, 弹出图5对话框

图5
图5中在Simulation选择ModelSim-Altera, Format(s)–> Verilog HDL,点击–> NEXT 弹出summary对话框,然后点击–>finish 完成新项目创建。如图6
图6
2. 添加LVDS RX IP,
在Quartus 主界面 有IP Catalog选择框,如图7

图7
在IP Catalog中选择ALTLVDS_RX并双击,弹出对话框如图8,
图 8
图8将IP variation file name的名称也就是新生成的文件名设为IO_RX, 在 IP variation file type 选择Verilog。点击”OK“。弹出图9 对话框。

图 9
(1)器件选择
在图9中的右上角Currently selected device family 选择所需要的器件,当然也可以选择Match project/default(与创建工程时所使用的器件一致),如果将器件选择为Arria II GX 或其它含有Serdes(serialization /deserialization)硬核的FPGA器件(一般含有硬核SERDES的FPGA器件都用GX作为后缀区分)。
注意:是否能选择出合适的器件,要看系统中是否安装了该类器件库。
(2)硬核SERDES与软核SERDES
图9中由于使用cyclone 10 LP 器件没有硬核的SERDES,因此这一部分将会理由FPGA内的 逻辑电路实现,而且仅用时钟的快速边沿捕获数据,这个和硬核SERDES的应用是不同的,关于硬核部分,我们后续课程在SERDES及其应用的篇幅中会详细讲解。
如果选择了GX系列,依然可以选择使用逻辑实现,当然不使用硬核SERDES,其性能和捕获速度会大打折扣。建议在使用含有硬核SERDES的器件时,尽量使用hard SERDES。
(3)使能动态相位对齐模式(Enable Dynamic Phase Alignment mode)
利用动态相位对齐模式有多种实现方案,具体的实现技术在后续的篇章中会详细介绍,这里提到的动态相位对齐模式是指如果使用GX系列FPGA,动态相位对齐模式在硬核SERDES内实现。LP系列不含硬核SERDES因此,这些选项都是灰色的。

图10
(4)通道数量(what is number of Channels?)
在一次生成的Altera_LVDS 的模块中带有几个通道(Channels),一次可以选择1–18个通道不等。随着通道数增加,rx_in的数量也在增加。如只有一个通道则为rx_in[0], 如果选3个通道则为rx_in[2..0],表示有rx_in[0],rx_in[1],rx_in[2]共3个通道。
(5)反串行化因子(what is the deserialization factor),
反串行化因子决定采用几位输出。如反串行化因子为4则每次输出4位结果。如果是多通道,则输出会拼接在一起,如channel=3, factor=4;则输出为rx_out[11:0], 其中rx_out[3:0],rx_out[7:4],rx_out[11:8]分别为rx_in[0],rx_in[1],rx_in[2]的输出结果。
上面介绍了一部分SERDES的基本知识,由于在本章内容中相关的高速异步串行通信中只涉及到1个通道,串行化因子也设为1,设置如图9所示。关于SERDES的使用我们会在后续章节中介绍。点击next,弹出界面如图10,

图11
(6)频率/PLL设定
图11中介绍frequency/PLL的使用,由于串行化因子为1,所以图11的各种选项都为灰色,不能设置,在SERDES的使用章节会介绍如何使用。点击next,弹出图12的界面。
- 动态相位对准设定DPA(Dynamic phase alignment)setting

图12,
图12介绍动态相位对准1,即DPA(Dynamic phase alignment )setting1,由于选择了deserialization factor为1,因此本页面也为灰色,将来在介绍SERDES使用的章节中会详细介绍。DPA setting2,3都是同样的原因为灰色的,点击next 直到Receiver Setting界面,如图13所示。

图13,
在图13中将Register output的复选框去掉,即输出不需要锁存,此时输入端的时钟也自然也自然消失,此时ALTLVDS_RX将会生成仅带LVDS接收器的LVDS输入接口。点击next ,如图14

图14
图14指出仿真注意实项及网表生成。

图15
在图15选择要生成的文件,点击Finish结束IO_RX IP 核的生成,并将IO_RX.qip添加到项目中。
至此完成RX端LVDS的产生,并添加到项目中。在后续合成中会在串行高速通信中使用。