概述
本文開(kāi)源一個(gè)FPGA高速串行通信項(xiàng)目:Aurora 8b10b光通信。7 Series FPGAs Transceivers Wizard IP是Xilinx官方7系列FPGA的高速串行收發(fā)器,本工程主要是圍繞該IP核采用Vivado提供的例程創(chuàng)建。
下面主要介紹一下7 Series FPGAs Transceivers Wizard IP核的參數(shù)配置以及如何建立該項(xiàng)目Vivado工程。
軟硬件平臺(tái)
軟件平臺(tái) :Vitis 2019.2;
硬件平臺(tái) :XC7Z035FFG676-2;
IP核參數(shù)配置
GT Selection
GT Selection相關(guān)參數(shù)配置保持默認(rèn)即可;
Line Rate, RefClk Selection
Protocol :此選項(xiàng)下有多種協(xié)議可供選擇,這里選擇 Aurora 8b10b single lane 4bytes,對(duì)外接口也就是32位;
TX & RX :收發(fā)器是獨(dú)立的,可以選擇不同的編碼和速度,對(duì)于GTX收發(fā)器最大是10.3125Gbps,這里選擇5Gbps。參考時(shí)鐘必須和FPGA板卡上的時(shí)鐘一致,為125MHz。
Transceiver Selection :該項(xiàng)目采用的FPGA型號(hào)為MK7325,有兩個(gè)SFP接口,分別連接到GTX_X0Y12和GTX_X0Y13;
Encoding and Clocking
TX & RX :內(nèi)部數(shù)據(jù)寬度設(shè)置為20(16bit數(shù)據(jù)利用8b10b編碼為20bits),兩個(gè)內(nèi)部數(shù)據(jù)拼接為1個(gè)32bit外部數(shù)據(jù),編碼方式采用8b10b編碼,這種編碼方式最主要的目的是保持 直流平衡,根據(jù)特定的編碼表實(shí)現(xiàn)數(shù)據(jù)傳輸過(guò)程中0和1的數(shù)量基本一致,減少連續(xù)0或1的情況。DRP/System Clock是動(dòng)態(tài)重配置/系統(tǒng)工作時(shí)鐘,通過(guò)DPR可以根據(jù)所配置線速率和協(xié)議實(shí)時(shí)調(diào)整收發(fā)器參數(shù)。DRP時(shí)鐘頻率設(shè)置為100MHz,可以通過(guò)外部PLL產(chǎn)生,利用DRP時(shí)鐘初始化一些GTX控制器信號(hào)或者參數(shù);
Synchronization and Clocking :TXUSERCLK,和 RXUSERCLK 時(shí)鐘的選擇一般TXUSERCLK可以直接選擇TXOUTCLK作為用戶時(shí)鐘,而RXUSERCLK可以選擇TXOUTCLK也可以選擇RXUSERCLK,還可以選擇RXPLLREFCLK作為用戶時(shí)鐘。這里就涉及到一個(gè)同步的概念,如果時(shí)鐘不一致必須設(shè)置TX和RX的 BUFFER,默認(rèn)都是設(shè)置的。另外輸入TX的發(fā)送時(shí)鐘和RX的恢復(fù)時(shí)鐘差異交大,可能會(huì)導(dǎo)致RX BUFFER的溢出或者讀空,而導(dǎo)致數(shù)據(jù)出錯(cuò)。比較好的解決辦法就是設(shè)置RXUSERCLK為RXOUTCLK,就是利用恢復(fù)時(shí)鐘作為用戶時(shí)鐘,這樣就很好的解決了同步的問(wèn)題了。
Comma Alignment and Equalization
Comma Value :設(shè)置K碼為K28.5,K碼用于修正數(shù)據(jù)對(duì)齊,其它選項(xiàng)保持默認(rèn)配置即可;
PCIe SATA PRBS
保持默認(rèn)配置即可;
CB and CC Sequence
Clock correction :選擇支持時(shí)鐘校準(zhǔn),設(shè)置每5000個(gè)字節(jié)發(fā)送一組CC Seq,因?yàn)閺臄?shù)據(jù)流中恢復(fù)出來(lái)的時(shí)鐘和本地產(chǎn)生的FIFO讀側(cè)的時(shí)鐘的頻率不可能完全一致,所以才要進(jìn)行CC處理。這個(gè)周期是根據(jù)發(fā)送側(cè)和接收側(cè)的時(shí)鐘差算出來(lái),然后再根據(jù)實(shí)際調(diào)試結(jié)果進(jìn)行一定的修正。
Summary
根據(jù)上圖可以看出,TXUSRCLK和RXUSRCLK頻率為250M,TXUSRCLK2和 RXUSRCLK2為125M,也就是我們寫(xiě)代碼要使用的時(shí)鐘。
Vivado工程創(chuàng)建
右擊IP核,選擇 open IP example design;
其中,gt aurora GT FRAME GEN模塊功能是產(chǎn)生要發(fā)送的測(cè)試數(shù)據(jù),gt aurora GT FRAME CHECK模塊檢查回環(huán)收到的數(shù)據(jù)是否正確;
由于開(kāi)發(fā)板的SFP屏蔽籠的tx_disable引腳都默認(rèn)接了上拉電阻。要使收發(fā)回環(huán)測(cè)試可以正常進(jìn)行,必須要將tx_disable引腳拉低。因此,在example design的頂層模塊,添加2個(gè)sfp_tx_disable引腳,且均置為0即可;
將drp_clk直接連入sysclk,官方例程這個(gè)時(shí)鐘是引腳進(jìn)來(lái)的加了bufg,該工程用PLL產(chǎn)生;
接下來(lái)我們將在硬件上實(shí)現(xiàn)回環(huán)傳輸測(cè)試數(shù)據(jù)的功能,首先我們需要從外部給出一個(gè)自由時(shí)鐘,hb_gtwiz_reset_all_in復(fù)信號(hào)是高電平有效,用戶直接拉低即可。由于開(kāi)發(fā)板的SFP屏蔽籠的tx_disable引腳都默認(rèn)接了上拉電阻。要使收發(fā)回環(huán)測(cè)試可以正常進(jìn)行,必須要將tx_disable引腳拉低;
最后在示例工程里添加必要的ILA,去抓取對(duì)應(yīng)的信號(hào)。
功能測(cè)試
本工程實(shí)現(xiàn)功能為光纖信號(hào)8b10b回環(huán)傳輸,F(xiàn)PGA板上測(cè)試結(jié)果如下圖所示,可以看到gt0_error_count_i信號(hào)保持為0,也就是說(shuō)8b10b光通信傳輸正常。
-
FPGA
+關(guān)注
關(guān)注
1629文章
21729瀏覽量
602968 -
Xilinx
+關(guān)注
關(guān)注
71文章
2167瀏覽量
121293 -
串行通信
+關(guān)注
關(guān)注
4文章
571瀏覽量
35396 -
光通信
+關(guān)注
關(guān)注
19文章
876瀏覽量
33963 -
Vivado
+關(guān)注
關(guān)注
19文章
812瀏覽量
66470
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論