------Aurora协议是Xilinx公司提供的一个开放免费的链路层协议,可以用来进行点到点的串行数据传输,具有实现高性能数据传输系统的高效率、简单易用的特点。此协议分为两种编码方式,分别是Aurora 8b10b和Aurora 64b66b,两者的设计方法差不多,本次主要介绍8b10b协议的应用。本次将从IP配置到例化工程再进行仿真验证最后讲解实际应用技巧来详细介绍此IP。
------一般验证IP设计的正确性,可以通过看channel up的状态即可,如果高有效且长时间稳定,则表示链路建立成功,可以进行数据通信。再设计一个产生顺序数的模块和一个校验数据的模块用以验证数据收发的正确性。就可以了,下面就是详细设计的步骤。
本次选择的FPGA芯片是xc7vx690tffg1930-2,IP应用方法如下:
1. 首先是IP核中Core options页面设置:
------Lane width: 一般我们选择2 Bytes(1 Byte = 8bit),如果是4 Bytes那位宽更高,频率更小,同样可以有一样的传输速率。
Lane Rate: 3.125 Gbps线速率越高,那IP使用的用户时钟就越高,这对用户逻辑的时序要求更高;
------GT Refclk:125 MHz(硬件设计决定的,可以看看原理图);
------INIT clk:50 MHz(默认值就可以,这个时钟可以通过系统时钟通过PLL锁出来);
------DRP clk:50 Mhz(默认值就可以,,这个时钟可以通过系统时钟通过PLL锁出来);
------Dataflow Mode:Duplex(全双工,双向独立发送接收);
------Interface:Streaming(发送端不受接收端影响,有数就发)。
其他选项保持默认即可。。
------2. 在GT Selections页面中,设置Lanes数量,这个例程我们选择的是4X的,所以这里选择4 Lanes,在GT Refclk1中会自动选择GTHQ3,再在GTHQ3模块中任意选出1,2,3,4路就可以了。GTHQ应该根据原理图来选择,如果随便选,那可以disable掉IP的XDC文件,自己再约束bank。
-
在Shared Logic页面中,选择include Shared Logic in example design,这个可以将服务于IP的时钟模块和复位模块独立于IP核,方便我们更改里面的代码,或移植等。
-
IP设置好后直接生成,然后右键IP核生成IP的Example design。
-
打开Example design的顶层模块,原有的端口在实际应用中,除了系统时钟复位和接口时钟与数据接口外,都可以去掉,输出型端口改为wire型,输入的时钟可以用板上晶振过来的时钟用PLL锁出来,复位可以直接用板上硬复位。但这里为了方便应用Example design自带的testbench,所以端口没有修改,文章后半段会简述去掉某些端口的情形。
-
接着可以去掉除了IP例化的接口以外的部分,这些部分是为了测试接口用的,包括一些造数模块等,都去掉只要剩下如下图所示即可。除IP接口以外剩下的三个参数是IP接口复位和GT底层复位,还有就是IP接口回环控制位。
-
为了验证接口的正确性,我们可以设计一个线性的造数模块,代码如下所示:
module dat_gen(
clk,
rst,
tx_dat,
tx_dat_v,
tx_dat_start
);
input clk;
input rst;
output reg [63:0] tx_dat;
output reg tx_dat_v;
input tx_dat_start;
reg [15:0