GTX、GTH等具体是什么就不多介绍了,网上有很多。写这个的目的,就是当收到FPGA板卡后,要判断本板的高速串行总线是否能够应用,那就需要做基本的功能测试。我们可以用xilinx提供的ibert进行测试,而且基本上可以达到不用敲代码就可以完成测试的目的。
下面按步骤,一步一步实现。重点的地方我会标注出来。
(1)新建工程,只需选择好与板卡对应的FPGA型号即可,无须添加任何文件。
(3)配置IP
这里我们先只配置一个quad,也就是测试一个quad,速度是1G的速度,也就是千兆网的速度。这里是8b/10b编码。因此实际1000Mbpsx10/8=1.25Gbps。参考时钟这里,你要看你的硬件上是接的多少M的时钟。也就是MGT的refclk引脚上,并注意是哪个quad。
在我的电路中,我的125MHz的差分时钟是接到了MGTREFCLK1P_115和MGTREFCLK1N_115上。
这里需要注意的是:参考时钟频率和GTX的传输速率的关系。虽然在内部是通过PLL倍频上去的,但是,基本时钟频率是要匹配才行。比如125MHz,10倍频就可以达到1.25GHz。如果55MHz参考时钟,倍到1.25GHz,就不行了。
假若是10GHz的速度,因为10GHz就是64b/66b的编码,实际速度是:10000x66/64=10.3125Gbps。这时用156.25MHz的时钟就比较合适(156.25MHzx66=10.3125GHz)。如果其他频率的,存在小数倍频,那就不行了,pll很难锁定。
因为我这里选的速度是1.25GHz,那后面的QuadPLL就不能选择,否则提示错误。1.25GHz频率低于QuadPLL的范围。因此,这里不选中QuadPLL,默认采用CPLL。
(4)这部分就是要选择你要测哪个quad以及对应的时钟。
我这里测115哪个quand,参考时钟前面已经说了是在MGTREFCLK1P_115和MGTREFCLK1N_115上,所以做如下选择:
(5)在clocksetTIng里,是设置ibert内部逻辑使用的时钟,这里可以用从其他bank引入的时钟,也可以直接用前面的quad时钟。现在为了简单,直接使用前面的115上的时钟。
至此,点击“OK”产生iberTIP。
(6)在刚才生成的iberTIP上右键,选择:OpenIPExampleDesign。又会重新打开一个Vivado,然后生成一个新的工程。在这个工程里,你可以不做任何更改。当然,你可以在顶层文件中加入一些其他逻辑,比如控制你的晶振、指示灯等。
(7)在(6)的工程里里直接生成bit文件,先后下载到FPGA板卡上。
(8)下载完后,会点击createlinks。
添加通道:
选择回环:
(9)连接建立如下,误码率比较高,复位一下就可以了:
(10)这里可以选择回环模式。如果只是在本板测试的话,就只能是near端回环了。
(11)在这里显示notlocked,是因为我们前面没有用quadpll,而用了cpll,不影响传输。
(12)还可以看眼图,在对应通道上右击,选择createscan:
直接OK,就会出现眼图,蓝色部分越大,越好。如果选择远端回环,速度越高,眼自然会开的要小:
(13)至此,基本的测试完毕。
总结:整个测试是很简单的,没有过多的可设置项。关键的就是要把时钟频率、时钟位置对应好。
(在ug476的P345开始,有MGTbank与placement的对应关系图,这个可以用来对照自己的原理图以及ip设置是否正确。)
不正确的地方,欢迎大家讨论指正。我也是才开始用这个东西。