Menu Close

高速通信分层设计—PRX100-D开发板实验(Xilinx)

之前的课程中,我们实现了高速通信分层设计–FII-PRA006 开发板(Altera)的实验。 这一节课,我们要将整个工程移植到Xilinx FPGA上。 这里,我们选用FII-PRX100-D 开发板。

实验目的:

  • 将Altera工程移植到Xilinx FPGA上
  • 实现之前的高速通信设计
  • 对比移植AlteraIP 到 Xilinx IP
  • 实现相关的管脚约束

工程环境:

Vivado 2018.2

FII-PRX100-D 开发板  (ARTIX 100T XILINX FPGA)

本实验在高速通信分层设计—PRA006开发板实验(Altera)的基础上做出修改而成的,通篇以修改后的源代码呈现给大家,在每个程序后面有对应的相关修改的解释。

1 顶层工程代码:

 


Vivado工程的顶层代码中对外端口与Quartus工程中的对外端口设计不同。 Xilinx FPGA 使用IBUFDS,OBUFDS 原语实现单端信号rx,tx 到差分信号的转换,所以在端口上的定义为tx_p, tx_n;  rx_p, rx_n。单端信号到差分信号的转换也可以使用Xilinx SelectIO IP 核实现。 本文使用IBUFDS,OBUFDS 原语。

在仿真程序中, 不再使用tx_rx 信号连接 发送和接收端口, 而是使用 assign rx_p = tx_p;   assign rx_n = tx_n; 来实现。

2 修改hs_txrx.v代码:


将Altera PLL替换为Xilinx clock IP。

Xilinx clock IP 例化如下:

图1

图2

3 修改tx_pmd.v代码:


 

在Quartus 工程中, 使用IO_TX IP 核, 当移植到Xilinx FPGA 时, 这里将不再使用IP核, 而是在top.v 文件中使用 OBUFDS 来实现.

4 修改recv_bit_pmd.v代码:


同样, 注释Quartus 工程中的IO_RX IP , 而是在top.v 文件中使用 IBUFDS 原语实现。

5 对比移植altera IP 到 Xilinx IP:

Quartus 工程 , 使用PLL IP核, IO_TX和IO_RX  IP核 。 其中PLL 输入50M 时钟, 输出 100M, 400M 时钟。

Vivado 工程: 使用PLL IP核,IBUFDS 和 OBUFDS 原语。 其中PLL 也是输入50M 时钟, 输出为100M,400M 时钟,Xilinx需要使用xBUFDS (x 表示 I 或者 O)原语实现单端信号到差分信号的转换。

6 实现相关的管脚约束:


 

Xilinx文档中相关阻抗匹配部分如下所示:

图3


在管脚约束文件中定义管脚为lvds_25 标准, 同时使用DIFF_TERM 1或者DIFF_TERM TRUE,表示使用内部差分电阻。

注:在使用Artix 系列FPGA 使用LVDS差分功能时, 需要管脚连接的bank 电压 <=  2.5v  。 目前,我们使用tx_p, tx_n, rx_p, rx_n 都是连接在bank35中。 所以需要将bank35 的电压设置为 <= 2.5v ,否则FPGA 不会工作,因此这里选择bank35电压为1.8V。如图4所示:

图4

 

7 .  FII-PRX100-D高速通信回环实验设置

  •     原理图部分如图5,图6所示:

图5

图6

  • 开发板硬件连线如图7所示:

图7

8 使用ILA (mark_debug)调试高速通信信号:

图8

 

图9

示波器波形:

图10

其中 紫色信号连接tx_p,  黄色信号连接 tx_n。 白色信号为 tx_p – tx_n  得到相关的差分信号。

由于通信工程当中的逻辑验证部分在之前的文章中已经介绍过,这里只演示了在线的硬件调试部分内容。

关于详细的实验内容,请参见对应的视频。

 

vivado 2018.2 工程代码:

[content_control]

high_speed_xilinx.zip

[/content_control]

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