本文為明德揚原創文章,轉載請注明出處!
加入技術交流群,獲取開源工程,了解更多開發板咨詢或者參與活動請聯系黃老師:13316124179(微信同號)
今天跟大家分享基于Xilinx K7和C5之間的光纖通信,本工程是K7例化四個速率都是3.125Gbps的光纖GTX的IP核的設置,C5例化的是兩個GTX的IP核的設置,然后一個K7的板卡和兩個C5的板卡連接。
一、例化K7的光纖的IP核
1、打開Vivado光纖工程。
這里我選擇的是明德揚的工程,芯片型號為XC7K325tffg900-2,大家做的時候可以新建任意工程。
2、點擊“IP Catalog”,進入IP核配置界面。
3、搜索“gt”,雙擊選擇“7 Series FPGAs Transceivers Wizard”。

4、選擇“Line Rate,RefClk Selection”頁面設置
根據左下角電路圖,去掉通道0的勾選,再勾選通道8到通道11,如下面兩張圖所示;


配置TX/RX端的時鐘和速率,如下圖所示。

5、選擇“Encoding and Clocking”頁面設置
在“TX”和“RX”端進行選擇設置:“External Data Width (Bits)”中都選擇“16”,“Encoding”和“Decoding”中都選擇“8B/10B”;
在“Optional Ports”端進行勾選:對“TXPCSRESET”、“TXPMARESET”、“TXBUFSTATUS”、“RXPCSRESET”、“RXBUFSTATUS”、“RXBUFRESET”、“RXCDRHOLD”進行選擇。
相關項目選擇如下圖所示:


6、選擇“Comma Alignment and Equalization”頁面設置
“RX COMMA detection”設置:其中“Allgn to”下選擇“Any Byte Boundary”,如下圖所示。
之所以進行此設置,是為了更好的對齊字節。比如說數據“0x0102 0x0304”, 選擇“Any Byte Boundary”的時候,接收到的數據出現“0x0102 0x0304”的概率就會更大,否則接收到的數據就會是“0x0201 0x0403”。

7、選擇“CB and CC Sequence ”頁面設置
“Clock correction”設置:勾選“Use Clock Correction”和“Use Two Clock Correction Sequences”;在“PPM Offset +/-”填上“1000”;在“Sequence length”選擇“2”,如下圖所示。
“PPM Offset +/-”中選擇“1000”是時鐘的質量,數值越大表示質量越差。

8、查看參數配置
參數都配置完以后,可以在“Summary”頁面查看完整的參數列表,如下圖所示。

9、生成IP核
配置完IP核參數后,彈出如下界面,點擊“Generate”生成IP核。

10、添加IP核
返回到“Sources”界面,選擇添加的IP核,右鍵選擇“Open IP Example Design…”;

彈出界面如下圖所示,點擊“OK”確認。

11、IP核移植
點擊“OK“后會彈出一個新的Vivado界面,這就是它生成IP核使用的例程,如下圖所示。

我們需要把里面的一些內容注釋掉,并且添上我們的代碼,讓這個例程封裝成一個接口,成為我們能用的IP核——這個過程就是IP核的移植過程。如果不進行修改的話,IP核與我們的工程不配套,就無法正常使用。
需要注釋掉的部分如下圖所示:

即:



將提供的IP核的用戶接口的代碼引出,并修改成本工程可以使用的用戶接口代碼,完成移植。
添加的代碼如下:

以上就是K7光纖工程IP核配置和移植的具體操作,如有不明白的地方可以加我的QQ:1479512800,共同討論,期待與大家一起探討進步!
二、例化Altera_C5的光纖的IP核
Altera的光纖的IP核同樣的是例化3.125Gbps的速率,也就是說板卡和板卡之間的通信速率是一樣的。
Altera的光纖的IP核是已經集成了高速的PLL在native_phy的,所以不需要外部的高速的PLL,Altera的光纖的IP核由兩個IP核組成,分別為phy_reset的IP核和native_phy核。
1、Naive_phy的IP核的例化

2、native_phy的IP核的設置,選擇協議和速率

3、選擇實際的參考時鐘

4、點擊finish完成即可

疑惑點:
有的同學有疑惑不是說速率是在3.125G嗎,那為什么我們選擇的IP核為2.5G的IP核?
其實數據鏈路上的傳輸的速率是3.125Gbps的,由于8b/10b編碼之間的關系,則有3.125G * 0.8 = 2.5Gbps(數據真正有效的速率),也就是說我們選擇的2.5Gbps的IP核是實際上的速率IP核。
5、光纖的復位IP核設置,選擇如下圖的IP核

復位IP核的設置如下圖所示,參考時鐘的選擇可以是普通PLL傳遞過來的時鐘,然后點擊“Finish”完成即可。

6、模塊頂層的例化

關鍵信號列表說明:
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 K7和C5之間的光纖通信設置,有不明白的朋友可以聯系明德揚進行學習討論,當然大家也可以在留言中與我進行交流!