一、前言
前面我們是站在時(shí)鐘的角度對(duì)通道進(jìn)行的分析,雖然也涉及了部分信號(hào)的處理,但并未深入,接下來我們將隨著信號(hào)流,來看看發(fā)送通道中依次進(jìn)行了一些什么處理。筆者從用戶手冊(cè)摘錄出了一些主要的處理模塊,包括FPGA發(fā)送接口模塊(FPGA TXInterface)、8B10B編碼模塊(8B10B Encoder)、發(fā)送變速箱模塊(TX Gearbox)、碼型生成器模塊(Pattern Generator)、相位調(diào)整FIFO模塊(Phase Adjust FIFO)、極性模塊(Polarity)等,如下圖所示,這些模塊是發(fā)送鏈路中最常用的模塊,如果讀者對(duì)其他模塊感興趣可以查閱用戶手冊(cè)。
二、FPGA TX接口
TX接口的端口形態(tài)與使用何種編碼形式有關(guān)。有三種選擇:8B10B編碼、發(fā)送變速箱(64B66B編碼、64B67B編碼)、或者無編碼,我們就按照三種情況來進(jìn)行說明。
1、使用8B10B編碼
使能8B10B編碼后,會(huì)啟用收發(fā)器中8B10B Encoder模塊,同時(shí)GTX原語有專門的8B10B編碼數(shù)據(jù)入口,如下表所示。
但并不是所有的協(xié)議都需要用到這么寬的位寬,因此在收發(fā)器向?qū)P設(shè)置中,會(huì)將用戶實(shí)際需要使用的端口引出,剩下的bit位置為1’b0。實(shí)際使用位寬與收發(fā)器向?qū)P中的External Data Width配置有關(guān)。
例如上圖中External DataWidth設(shè)置為32bits時(shí),則只使用了TXDATA[31:0]和TXCHARISK[3:0],那么這部分端口會(huì)通過收發(fā)器向?qū)P引出,剩下的端口TXDATA[63:32]和TXCHARISK[7:4]所有位都會(huì)被置為0。
2、使用發(fā)送變速箱
如果需要使用發(fā)送變速箱,則表示使用了64B/66B 編碼或者64B/67B 編碼。這里使用更普遍的64B/66B 編碼為例。一些高速數(shù)據(jù)速率協(xié)議會(huì)使用 64B/66B 編碼來減少 8B/10B 編碼的開銷,同時(shí)保留編碼方案的優(yōu)點(diǎn)。
GTX原語有專門的64B/66B編碼數(shù)據(jù)入口,如下表所示。
當(dāng)使用TX變速箱數(shù)據(jù)入口時(shí), 需要遵循其時(shí)序要求。
當(dāng)使用64B/66B編碼時(shí),TXHEADER[1:0]同步頭必須是2’b01或者2’b10。而TXSEQUENCE [5:0]是一個(gè)0到32的循環(huán)累加數(shù)。并不是每一輪循環(huán)的每個(gè)時(shí)鐘周期的TXDATA都是有效的數(shù)據(jù),在TX_DATA_WIDTH 和TX_INT_DATAWIDTH 相同的模式下,數(shù)據(jù)暫停兩個(gè)TXUSRCLK2 周期;在TX_DATA_WIDTH 是TX_INT_DATAWIDTH 兩倍的模式下,數(shù)據(jù)暫停 1 個(gè) TXUSRCLK2 周期。有效數(shù)據(jù)傳輸在下一個(gè) TXUSRCLK2 周期恢復(fù)。如下表所示。
例如下圖配置時(shí),對(duì)應(yīng)上表中 TX_DATA_WIDTH = 64,以及TX_INT_DATAWIDTH = 1(4-byte)的情形,此時(shí)數(shù)據(jù)會(huì)在TXSEQUENCE = 32的時(shí)候暫停一個(gè)TXUSRCLK2 周期。
發(fā)送數(shù)據(jù)輸入的時(shí)序圖如下圖所示。
3、不使用編碼
不使用編碼的時(shí)候FPGA Interface Width(也即收發(fā)器向?qū)P中的External Data Width)可配置為16、20、32、40、64、80比特,數(shù)據(jù)入口如下表所示。
當(dāng)FPGAInterface Width設(shè)置為16/32/64的時(shí)候,則只需要使用TXDATA[63:0]端口即可,但如果FPGA Interface Width設(shè)置為20/40/80的時(shí)候,則需要使用到TXCHARDISPVAL和TXCHARDISPMODE端口來擴(kuò)展位寬,例如如下圖配置。
數(shù)據(jù)位的對(duì)應(yīng)關(guān)系用代碼表示為:
assign TXDATA[7:0] = tx_data_in[7:0]; assign TXCHARDISPVAL[0] = tx_data_in[8]; assign TXCHARDISPMODE [0] = tx_data_in[9]; assign TXDATA[15:8] = tx_data_in[17:10]; assign TXCHARDISPVAL[1] = tx_data_in[18]; assign TXCHARDISPMODE [1] = tx_data_in[19]; assign TXDATA[23:16] = tx_data_in[27:20]; assign TXCHARDISPVAL[2] = tx_data_in[28]; assign TXCHARDISPMODE [2] = tx_data_in[29]; assign TXDATA[31:24] = tx_data_in[37:30]; assign TXCHARDISPVAL[3] = tx_data_in[38]; assign TXCHARDISPMODE [3] = tx_data_in[39];
-
FPGA
+關(guān)注
關(guān)注
1624文章
21567瀏覽量
600560 -
收發(fā)器
+關(guān)注
關(guān)注
10文章
3352瀏覽量
105733 -
接口
+關(guān)注
關(guān)注
33文章
8366瀏覽量
150541 -
Xilinx
+關(guān)注
關(guān)注
71文章
2146瀏覽量
120712
原文標(biāo)題:Xilinx 7系列FPGA收發(fā)器——9、發(fā)送鏈路的TX接口
文章出處:【微信號(hào):FPGA十年老鳥,微信公眾號(hào):FPGA十年老鳥】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論