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