学习FPGA一段时间了,前面一直没有系统的总结,这学期把在项目中用到的IP核和一些调试过程中遇到的问题总结一下发出来,坚持下去,一起进步!
今天总结一下的GTH核的使用和测试。
软件版本:Vivado 2017.4
IP核版本:7 Series FPGAs Transceivers Wizard (3.6)
FPGA:xc7vx690tfft1927
四路光纤数据接收,由于GTX IP核的参数由建核时完成,所以本例会说明一些针对不同项目需求需要对IP核参数进行修改的地方,进而快速入手。
第一页:线速率和参考时钟
(2)Quard Column的确定需要参考手册ug476_7Series_Transceivers.pdf,和原理图中对应的管脚位置。
● 在手册中找到封装fft1927对应的界面,只有left_side。
● 原理图中Bank_210对应如下:
● 黑色框的内容可根据需求更改;此页其他内容可不变,若调试过程遇见问题,则根据手册更改参数设。
● K码:默认的K28.5,10111100即BC
对齐方式:如果选择错误,则会出现错位的情况。具体如何选择,如下图。
在本例中,数据位宽是32bit,在选择4字节对齐时,最低的字节应该是K码的值,即32’h000000BC,其他参数可不变。
第四页:在可选项中将LOOPBACK勾上,方便自环测试。
第五页:默认。
● IP核生成后,生成例子工程,并添加到工程中。
● 如果没有修改过核名的话,在gtwizard_0_exdes.v ** 文件下,将gt0_rxmcommaalignen_in**,gt0_rxpcommaalignen_in括号内的值改为1(如下图),这里用到几个gtx模块就要按照序号改几处。
(1) Qx_CLK0_GTREFCLK_PAD_N_IN :x视位置而定,GTH的参考时钟
(2) soft_reset_i: IP核的复位,高复位。
(3) RXN_IN: GTH接收引脚
(4) TXP_OUT:GTH发送引脚
(5) gt0_loopback_i: 3’b000 : 非自环模式;3’b010:近端PMA自环,单板测试时选择此模式;
(6) gt0_rxnotintable_i:接收错误指示信号线,拉高时表示接收到误码。在本例中数据是32bit,gt0_rxnotintable_i 是4bit,全0时接收正常,哪1bit为1,则对应数据的那个字节有误。
(7) gt0_rxdata_i : 接收到的数据。本例中是32 bit。
(8) gt0_rxcharisk_i : 接收到的K码。本例中是4 bit。
当gt0_rxcharisk_i 某位为1时,表示gt0_rxdata_i对应的某个8位为K码。
K28,5下为 10111100,即BC。
(9) gt0_txdata_i : 要发送的数据。本例中是32 bit。
(10) gt0_txcharisk_i : 要发送的K码。本例中是4 bit。
● 在实际使用中,还需对添加的例子工程做如下的修改,才更方便使用。
删除例程测试部分:
(1) Frame Checkers 和 Frame Generators 部分。
(2) Frame Checkes , Frame Generators相关的变量。
gt0_loopback_i :3’b010
(1)
产生四路待发送的数据
gt0: 3e6,3e7,,,,,2325
gt1: 3e8,3e9,,,,,2327
gt2: 3e7,3e8,,,,,2326
gt3: 3ea,3eb,,,,,2329
数据开始: