龐志鋒 劉毅夫 安國(guó)臣 王曉君
摘要:串行傳輸技術(shù)具有速度快,成本低的特點(diǎn),被廣泛應(yīng)用于高速通信領(lǐng)域。在高速串行系統(tǒng)中,F(xiàn)PGA器件結(jié)合了可編程性和高速I /O的優(yōu)點(diǎn),實(shí)現(xiàn)了高速,穩(wěn)定的數(shù)字通信。本文基于FPGA開發(fā)環(huán)境,在vivado開發(fā)平臺(tái)上使用VHDL語言編程設(shè)計(jì)了64B/66B編解碼的IP核,完成了關(guān)鍵模塊的功能仿真驗(yàn)證,為高速串行傳輸系統(tǒng)提供了一種有效的設(shè)計(jì)方法,具有一定工程意義。
關(guān)鍵詞:高速串行傳輸;VHDL;64B/66B編解碼;IP核
隨著對(duì)電子系統(tǒng)吞吐量要求的日益提高,并行數(shù)據(jù)傳輸模式已不能滿足高帶寬應(yīng)用的傳輸需求。高速串行傳輸技術(shù)[1]具有帶寬高,延時(shí)低,信號(hào)完整性好,可擴(kuò)展性強(qiáng)等優(yōu)點(diǎn),已成為數(shù)據(jù)傳輸?shù)闹髁骷夹g(shù),廣泛應(yīng)用于通信網(wǎng)絡(luò)、數(shù)據(jù)存儲(chǔ)、個(gè)人計(jì)算機(jī)、服務(wù)器和嵌入式控制等諸多領(lǐng)域。廣泛應(yīng)用于通信網(wǎng)絡(luò)、數(shù)據(jù)存儲(chǔ)、個(gè)人計(jì)算機(jī)、服務(wù)器和嵌入式控制等諸多領(lǐng)域?,F(xiàn)場(chǎng)可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)比數(shù)字信號(hào)處理器處理速度快,F(xiàn)PGA能夠處理復(fù)雜的高速邏輯,與專用芯片相比,開發(fā)周期更短,靈活性更高?;贔PGA的系統(tǒng)設(shè)計(jì)驗(yàn)證具有穩(wěn)定性高、成本低、處理速度快等優(yōu)點(diǎn),F(xiàn)PGA器件已經(jīng)成為實(shí)現(xiàn)串行接口應(yīng)用[2]的理想連接平臺(tái)。IP核(Intellectual property core),就是知識(shí)產(chǎn)權(quán)核,是一段可以實(shí)現(xiàn)特定電路功能的可重用模塊,設(shè)計(jì)人員能夠調(diào)用IP核來進(jìn)行現(xiàn)場(chǎng)可編程邏輯門陣列的邏輯設(shè)計(jì),能夠減少開發(fā)周期。
本文主要是基于FPGA的開發(fā)環(huán)境中使用VHDL語言來設(shè)計(jì)實(shí)現(xiàn)64B/66B編解碼[3]功能的IP核,通過加擾、解擾模塊以及并串/串并轉(zhuǎn)換[4]模塊來設(shè)計(jì)高速串行傳輸系統(tǒng)。
1 64B/66B編解碼
64 B/66B編碼是一種高性能的串行數(shù)據(jù)編碼標(biāo)準(zhǔn),它并不是真正的編碼,而是一種基于擾碼機(jī)制的編解碼方式,是 IEEE推薦的10G通信標(biāo)準(zhǔn)編碼方式。[5]相比較于8B/10B編碼,[6]64B/66B編碼使編碼開銷更低,適應(yīng)更復(fù)雜的硬件,支持最新的數(shù)據(jù)和程序。當(dāng)前,64B/66B編碼主要應(yīng)用于 Fiber Channel10GFC和16 GFC、10G以太網(wǎng)、 100G以太網(wǎng)、10 G EPON、InfiniBand、Thunderbolt和 Xilinx的Aurora協(xié)議。
64B / 66B編碼的基本思想是將64位數(shù)據(jù)或控制信息編碼為66位塊傳輸。主要是為了接收器的數(shù)據(jù)對(duì)齊和接收到的數(shù)據(jù)比特流的同步。“10”和“01”表示兩種同步頭,“10”表示數(shù)據(jù)是由控制信息和數(shù)據(jù)混合而成,其中緊鄰?fù)筋^的8位數(shù)據(jù)為類型域,剩下的56位則是控制信息或者數(shù)據(jù)或者兩者的混合。如圖1所示,其中D表示64B/66B的數(shù)據(jù)編碼,每個(gè)數(shù)據(jù)碼為8位;Z表示控制碼,每個(gè)控制碼為7位;S表示包的開始,T表示包的結(jié)束。T能夠在任何字節(jié)中存在,但是S只能在8個(gè)字節(jié)中的第0和4個(gè)字節(jié)中出現(xiàn)。出了同步碼之外,64位數(shù)據(jù)在傳輸之前必須先進(jìn)行加擾。用于64B/66B編碼的擾碼器的特征多項(xiàng)式為X58+X39+1。
為了提高高速數(shù)據(jù)傳輸?shù)姆€(wěn)定性以及增加傳輸效率,高速串行數(shù)據(jù)傳輸系統(tǒng)從剛開始求穩(wěn)采用的 8 B/10 B到現(xiàn)如今已經(jīng)廣泛采用64B/66B編碼。64B/66B編碼中的擾碼技術(shù)將數(shù)據(jù)重新排列或者進(jìn)行編碼以使其最優(yōu)化的方法,使數(shù)據(jù) bit的“0”和“1”最大程度的達(dá)到隨機(jī)分布,進(jìn)一步減輕了抖動(dòng)的碼間串?dāng)_,[7]提高了數(shù)據(jù)傳輸?shù)目煽啃浴?4B/66B編碼最大的好處是效率比較高,傳輸冗余的 bit只有2位,編碼的開銷約為3%,運(yùn)用64B/66B編碼的數(shù)據(jù)傳輸?shù)男实玫奖WC,在更高速的傳輸環(huán)境下更具有優(yōu)勢(shì)。
2 系統(tǒng)模塊設(shè)計(jì)
基于FPGA的高速串行傳輸系統(tǒng)主要分為兩部分:數(shù)據(jù)發(fā)送處理和數(shù)據(jù)接收處理。數(shù)據(jù)發(fā)送處理流程主要是:并行數(shù)據(jù)輸入,經(jīng)過64B/66B編碼模塊轉(zhuǎn)換,再經(jīng)過加擾模塊對(duì)數(shù)據(jù)進(jìn)行加擾,然后經(jīng)過并/串轉(zhuǎn)換將數(shù)據(jù)發(fā)送出去。測(cè)試系統(tǒng)將串行發(fā)送與接收端做自環(huán)處理。數(shù)據(jù)接收處理流程為:自環(huán)數(shù)據(jù)經(jīng)過串/并轉(zhuǎn)換將數(shù)據(jù)送至解擾模塊解擾,解擾后的數(shù)據(jù)再經(jīng)過64 B/66 B解碼模塊解碼,這樣既保證了數(shù)據(jù)的穩(wěn)定傳輸,又能夠確保數(shù)據(jù)的傳輸效率。整體系統(tǒng)原理圖如圖2所示。
首先,輸入信號(hào)經(jīng)過接收模塊緩存到fifo中,在64B/66B編碼模塊中根據(jù)不同的64b碼格式,如果8字節(jié)組是數(shù)據(jù)字符,就加上“01”標(biāo)識(shí);如果有一個(gè)或多個(gè)字節(jié)是控制字符,就加上“10”標(biāo)識(shí)。將64位信號(hào)添加同步頭轉(zhuǎn)換為66b信號(hào),接著在加擾模塊中僅對(duì)64b數(shù)據(jù)進(jìn)行加擾,加擾后再并串轉(zhuǎn)換模塊中將66b轉(zhuǎn)換為一位串行信號(hào)輸出。數(shù)據(jù)接收處理相對(duì)于數(shù)據(jù)發(fā)送則是一個(gè)完整的逆過程,信號(hào)經(jīng)過串并轉(zhuǎn)換,先將數(shù)據(jù)進(jìn)行解擾,再根據(jù)66b碼的同步頭判斷數(shù)據(jù)類型,如果是數(shù)據(jù)塊則直接輸出;如果是控制塊,則需要對(duì)照查找表對(duì)數(shù)據(jù)進(jìn)行解碼后輸出。系統(tǒng)內(nèi)部結(jié)構(gòu)圖如圖3所示。
3 仿真結(jié)果和分析
I_clk為系統(tǒng)時(shí)鐘信號(hào)(頻率為160MHz),I_rst為復(fù)位信號(hào)(高電平有效,有效時(shí)系統(tǒng)復(fù)位),TX_PE_DATA[63:0]為源數(shù)據(jù)輸入信號(hào),TX_PE_DATA_V為數(shù)據(jù)使能信號(hào)(高電平有效),TX_DATA為編碼后數(shù)據(jù)輸出信號(hào),TX_HEADER_1和TX_HEADER_0為兩位同步頭信號(hào)。系統(tǒng)復(fù)位后,64bit數(shù)據(jù)發(fā)送到編碼模塊中,經(jīng)過編碼后輸出64bit數(shù)據(jù)以及2bit同步頭,如圖4所示。
I_clk是系統(tǒng)時(shí)鐘信號(hào),I_rst是復(fù)位信號(hào)(高電平有效),DATA_VALID_IN是加擾數(shù)據(jù)有效信號(hào),UNSCRAMBLED_DATA_IN是編碼后數(shù)據(jù)輸入信號(hào),經(jīng)過加擾模塊對(duì)數(shù)據(jù)進(jìn)行加擾,SCRAMBLED_DATA_OUT為加擾數(shù)據(jù)輸出信號(hào),如圖5所示。
數(shù)據(jù)經(jīng)過加擾后經(jīng)過串并轉(zhuǎn)換模塊轉(zhuǎn)換為1位串行數(shù)據(jù),經(jīng)過系統(tǒng)自環(huán),再經(jīng)過逆過程并串轉(zhuǎn)換轉(zhuǎn)換為并行數(shù)據(jù)進(jìn)行處理。
I_clk為系統(tǒng)時(shí)鐘信號(hào),I_rst為復(fù)位信號(hào)(高電平有效),SCRAMBLED_DATA_IN為加擾數(shù)據(jù)輸入信號(hào),DATA_VALID_ IN為解擾數(shù)據(jù)有效信號(hào),UNSCRAMBLED_DATA_OUT是解擾數(shù)據(jù)輸出信號(hào)。解擾是加擾的逆過程,數(shù)據(jù)經(jīng)過解擾模塊后輸出64bit解擾數(shù)據(jù),如圖6所示。
I_clk是系統(tǒng)時(shí)鐘信號(hào),I_rst是復(fù)位信號(hào)(高電平有效),RX_HEADER_1和 RX_HEADER_0是兩個(gè)同步頭信號(hào),RX_DATA是解擾數(shù)據(jù)輸入信號(hào),RX_PE_DATA是解碼數(shù)據(jù)輸出信號(hào),RX_PE_DATA_V是解碼數(shù)據(jù)有效信號(hào)。解碼模塊輸出數(shù)據(jù)如圖7所示,經(jīng)過試驗(yàn)仿真驗(yàn)證,編碼結(jié)果和編解碼真值表一致。整個(gè)高速通信系統(tǒng)運(yùn)行完畢。
4 結(jié)語
本文主要使用 VHDL硬件描述語言在基于 FPGA的環(huán)境下編寫了64 B/66 B編解碼模塊,經(jīng)過加擾和解擾模塊,以及利用并串/串并轉(zhuǎn)換模塊來實(shí)現(xiàn)整個(gè)高速通信系統(tǒng),在整個(gè)系統(tǒng)設(shè)計(jì)中,各模塊能夠完成獨(dú)立的功能實(shí)現(xiàn),64 B/66 B編碼使數(shù)據(jù) bit的“0”和“1”的個(gè)數(shù)得到了最大化的平衡,以及極高的傳輸效率,非常適合超高速的信息傳輸,同步時(shí)鐘能夠確保發(fā)送和接收之間的同步,同時(shí)還能為解碼模塊提供可靠的時(shí)鐘參考。該設(shè)計(jì)具有很實(shí)用的工程價(jià)值。
參考文獻(xiàn):
[1]尚自乾.基于FPGA的高速串行傳輸技術(shù)研究[D].陜西師范大學(xué),2017.
[2]李大鵬,陳長(zhǎng)勝,王世奎,李雯.基于FPGA的高速串行傳輸接口研究與實(shí)現(xiàn)[J].航空計(jì)算技術(shù),2008(02):100103.
[3]Aurora_64B/66B_protocol_spec_sp002.SP011( v11.2).USA,Xilinx Corp,April 4,2018.
[4]王向陽.基于FPGA的64B/66B編解碼設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)與軟件工程,2016(23):129131.
[5]IEEE Std 802.3ae2002[S/OL].New Jersey:IEEE,2002[2002830].http://standards.ieee.org.
[6]舒志興,黃魯,杜學(xué)亮.一種新的8B/10B編碼器設(shè)計(jì)[J].微電子學(xué)與計(jì)算機(jī),2015,32(09):181184.
[7]高曉宇,楊龍劍.高速串行通道的信號(hào)完整性問題分析[J].通信技術(shù),2013,46(06):4447.
作者簡(jiǎn)介:劉毅夫(1993),男,漢族,河北廊坊人,碩士,F(xiàn)PGA。
*通訊作者:龐志鋒。