官方论坛
官方淘宝
官方博客
微信公众号
点击联系吴工 点击联系周老师

【文章】XILINX和CycloneV光纤通信设置

发布时间:2021-06-24   作者:纳兰公子 浏览量:

本文为明德扬原创文章,转载请注明出处!

今天跟大家分享基于Xilinx K7C5之间的光纤通信,本工程是K7例化四个速率都是3.125Gbps的光纤GTX的IP核的设置,C5例化的是两个GTX的IP核的设置,然后一个K7的板卡和两个C5的板卡连接。

一、例化K7的光纤的IP核

(一) 打开Vivado光纤工程。

这里我选择的是明德扬的工程,芯片型号为XC7K325tffg900-2,大家做的时候可以新建任意工程。

 

(二) 点击“IP Catalog”,进入IP核配置界面。

(三) 搜索“gt”,双击选择“7 Series FPGAs Transceivers Wizard”。

 

(四) 选择“Line Rate,RefClk Selection”页面设置

根据左下角电路图,去掉通道0的勾选,再勾选通道8到通道11,如下面两张图所示;

 

配置TX/RX端的时钟和速率,如下图所示。

 

(五) 选择“Encoding and Clocking”页面设置

“TX”和“RX”端进行选择设置:“External Data Width (Bits)”中都选择“16”,“Encoding”和“Decoding”中都选择“8B/10B”;

“Optional Ports”端进行勾选:对“TXPCSRESET”、“TXPMARESET”、“TXBUFSTATUS”、“RXPCSRESET”、“RXBUFSTATUS”、“RXBUFRESET”、“RXCDRHOLD”进行选择。

相关项目选择如下图所示:

 

(六) 选择“Comma Alignment and  Equalization”页面设置

“RX  COMMA  detection”设置:其中“Allgn to”下选择“Any Byte Boundary”,如下图所示。

之所以进行此设置,是为了更好的对齐字节。比如说数据0x0102 0x0304”, 选择Any Byte Boundary的时候,接收到的数据出现0x0102 0x0304的概率就会更大,否则接收到的数据就会是0x0201  0x0403”。

 

(七) 选择“CB  and  CC  Sequence ”页面设置

“Clock  correction”设置:勾选“Use Clock Correction”和“Use Two Clock Correction Sequences”;在“PPM  Offset +/-”填上“1000”;在“Sequence length”选择“2”,如下图所示。

“PPM  Offset +/-”中选择“1000”是时钟的质量,数值越大表示质量越差。

 

(八) 查看参数配置

参数都配置完以后,可以在“Summary”页面查看完整的参数列表,如下图所示。

 

(九) 生成IP

配置完IP核参数后,弹出如下界面,点击“Generate”生成IP核。

 

(十) 添加IP

返回到“Sources”界面,选择添加的IP核,右键选择“Open IP Example Design…”;

 

弹出界面如下图所示,点击“OK”确认。

 

(十一) IP核移植

点击“OK“后会弹出一个新的Vivado界面,这就是它生成IP核使用的例程,如下图所示。

 

我们需要把里面的一些内容注释掉,并且添上我们的代码,让这个例程封装成一个接口,成为我们能用的IP核——这个过程就是IP核的移植过程。如果不进行修改的话,IP核与我们的工程不配套,就无法正常使用。

需要注释掉的部分如下图所示:

 


即:


 




将提供的IP核的用户接口的代码引出,并修改成本工程可以使用的用户接口代码,完成移植。

添加的代码如下:

 

以上就是K7光纤工程IP核配置和移植的具体操作,如有不明白的地方可以加我的QQ:1479512800,共同讨论,期待与大家一起探讨进步!

二、例化Altera_C5的光纤的IP核

Altera的光纤的IP核同样的是例化3.125Gbps的速率,也就是说板卡和板卡之间的通信速率是一样的。

Altera的光纤的IP核是已经集成了高速的PLLnative_phy的,所以不需要外部的高速的PLL,Altera的光纤的IP核由两个IP核组成,分别为phy_reset的IP核和native_phy核。

(一) Naive_phy的IP核的例化

(二) native_phy的IP核的设置,选择协议和速率

 

(三) 选择实际的参考时钟

 

(四) 点击finish完成即可

 

疑惑点:

有的同学有疑惑不是说速率是在3.125G吗,那为什么我们选择的IP核为2.5G的IP核?

其实数据链路上的传输的速率是3.125Gbps的,由于8b/10b编码之间的关系,则有3.125G * 0.8 = 2.5Gbps(数据真正有效的速率),也就是说我们选择的2.5Gbps的IP核是实际上的速率IP核。

 

(五) 光纤的复位IP核设置,选择如下图的IP核

 

复位IP核的设置如下图所示,参考时钟的选择可以是普通PLL传递过来的时钟,然后点击“Finish”完成即可。

 

(六)  模块顶层的例化

关键信号列表说明:

Tx_parallel_data: 发送的数据;

Tx_datak: 发送的K码;

Rx_parallel_data: 接收的数据;

RX_datak: 接收的K码;

另外,native_phy提供了对外发送和接收时钟给用户,分别是rx_std_coreclkin和tx_std_coreclkin,即用户要发送数据的时候数据要以tx_std_coreclkin时钟域对齐;

接收数据的时候是以rx_std_coreclkin对齐的。

以上就是基于Xilinx K7C5之间的光纤通信设置,有不明白的朋友可以联系明德扬进行学习讨论,当然大家也可以在留言中与我进行交流!

   拓展阅读