?????? 摘要:在深入研究了8B/10B?編碼規(guī)則及其內(nèi)在相關(guān)性的基礎(chǔ)上,提出了一種新的8B/10B編、解碼方法,該方法綜合了查表法和邏輯運算法的優(yōu)點,具有運算量小、編解碼同步好、速度快、可靠性高等優(yōu)點。用Verilog HDL 語言實現(xiàn)編解碼算法的描述,并通過高性能的FPGA器件進行仿真和綜合,實現(xiàn)了具體的硬件電路,并驗證了設(shè)計方法的有效性和可行性。?
關(guān)鍵詞:8B/10B 碼,?編碼, 解碼,?光纖通信,?集成電路?
引言
隨著Internet 業(yè)務(wù)的迅速增長,光纖通信的數(shù)據(jù)傳輸速率和容量不斷提高。目前,甚短距離傳輸系統(tǒng)(VSR) 、1000BASE-X標推的千兆以太網(wǎng)以及10GBASE-X標推的萬兆以太網(wǎng)成為世界上光纖通信系統(tǒng)研究的焦點。然而隨著傳輸距離的增加以及數(shù)據(jù)速率的提升,信號惡化將十分嚴重,此時滿足要求的誤碼率成為通信系統(tǒng)設(shè)計的一個挑戰(zhàn)。
為了增加信息傳輸?shù)目煽啃?以上系統(tǒng)都采用了一種傳輸帶寬小、轉(zhuǎn)換密度高以及碼字游程長度受限的8B/10B編碼,它將原8位(一個字節(jié)) 數(shù)據(jù)編碼成為10位字符,增加了數(shù)據(jù)中的高低電平變換(即“1”/“0”變換) ,有利于實現(xiàn)轉(zhuǎn)換前后的時鐘同步,此外還能幫助實現(xiàn)直流平衡,以使接收器的輸入沒有直流(DC)漂移。由于采用了這種編碼,鏈路可以是交流(AC)耦合的,這樣就給任一端的設(shè)備廠商提供了更大的靈活性。而且這種編碼有利于檢測出傳輸過程中單個和多個的比特誤碼,同時編碼設(shè)計中的一些特殊碼組還有助于比特流的碼組定位和信息識別。?
高速通信系統(tǒng)中信息處理都是通過大規(guī)模集成電路實現(xiàn)的,因此在集成電路設(shè)計過程中如何高速、有效地實現(xiàn)8B/10B編解碼,直接決定著通信系統(tǒng)數(shù)據(jù)傳輸速率的進一步提高。目前最常用的編碼方法是查表法,它用存儲器存儲所有可能出現(xiàn)的碼組,再把輸入碼組作為存儲地址,找出對應(yīng)的編解碼。該方法簡單直接,但是編解碼電路工作速度受到存儲器讀取時間的限制,并且不可避免地增加芯片的面積和功耗。另一種方法則是通過邏輯運算直接完成編解碼功能,該方法的難點在于邏輯關(guān)系復雜,同時由于延時、競爭和冒險的存在,使輸出的數(shù)據(jù)抖動嚴重,限制了芯片的最高工作速度。本文在對8B/10B編解碼的內(nèi)在相關(guān)性進行研究的基礎(chǔ)上,綜合上述兩種編碼方法的優(yōu)點,實現(xiàn)了一種新的8B/10B編解碼方法。?
1 8B/10B 編解碼方法研究?
8B/10B 編碼在發(fā)送端將輸入的8B碼組按照編碼規(guī)則映射成10B碼組,再通過并串轉(zhuǎn)換將并行的10位碼組串行輸出,在接收端則進行串并轉(zhuǎn)換和解碼。8B/10B 編碼過程是將8B碼組(從高位到低位為HGFEDCBA) 分解成3B (HGF) 和5B( EDCBA) ,分別進行3B/4B編碼和5B/6B編碼,最后組成10B碼組(從低位到高位為abcdeifghj)。3B/4B 編碼表如表1 所示:?
分析表1 可以看出,3B碼000 ,011 ,100 的4B編碼都有互相取反的兩種編碼,000 和100 編碼的游程值(RD) 為1 和3 ,011 的兩種編碼的RD值均為2。而001 ,010 ,101 ,110 的編碼則只有一種,其RD值為2。比較特殊的是111 的編碼,它有兩組互相取反的編碼共4 種,但是根據(jù)8B/10B編碼表可以看出,1000 和0111 這組編碼分別只出現(xiàn)在5B 碼組為01011 ,01101 ,01110 的RD + 列和5B 碼組為10001 ,10010 ,10100 的RD-列,其它的碼組根據(jù)編碼規(guī)則采用0001 和1110這組編碼。?
同樣分析5B/6B 編碼表得出,5B 碼共32 種,其中有18 種的編碼為單值,其RD 值為3 ,其它13 種為互相取反的雙值,并且其RD 值為4 和2 ,剩下的00111 的編碼也是雙值(111000 和000111) ,但是其RD 均為3。因此編碼得到的10B 碼組的RD 值只可能是6、5或4,其它的為禁用碼組。同時根據(jù)游程差的正負,8B/10B 編碼表分成RD-和RD + 兩列。深入分析整個8B/10B 編碼的內(nèi)在相關(guān)性可以知道:
當3B碼有唯一4B編碼時(001 , 010 , 101 ,110) ,若5B 碼為具有單值編碼的碼字,則8B/ 10B 編碼表的RD-列和RD + 列取唯一的10B 編碼,并且其RD 值為5 ;若5B 碼具有雙值編碼,則在RD-列取RD值為4 的6B 編碼,在RD + 列取RD 值為2 的6B 編碼;若5B 碼為00111 ,則在RD-列取111000 ,在RD +列取000111。?
當3B碼有雙值4B編碼時(000 ,100) ,若5B碼為18 種具有單值編碼的碼字,則4B 編碼在RD-列和RD+ 列分別取RD 值為3 和1 的編碼,3B 碼為011 的情況下則分別取1100 和0011 ;若5B 碼為13種有雙值編碼的碼字時,則在RD-列和RD+ 列分別取6B RD 值為4、4B RD 值為1 和6B RD 值為2、4B RD值為3 的編碼;若5B 碼為00111 ,3B 碼為000 ,100 ,則在RD-列和RD + 列分別取6B 為111000、4BRD 值為3 和6B 為000111、4B RD值為1 的編碼;若5B 碼為00111 ,3B 碼為011 時,在RD-列和RD+列的編碼分別111000、1100 和000111、0011。當3B 碼為111 時,由前面分析的1000 和0111 這組編碼出現(xiàn)的特殊情況外,其它的編碼規(guī)則同上面分析的3B 碼具有雙值編碼的情況,此時的編碼取0001 和1110 這組編碼。?
另外,8B 碼分為D 分組(數(shù)據(jù)字節(jié)編碼) 和K分組(特殊控制符號編碼) ,上面分析的D 分組,對于K 分組,共有12個8B 碼組,其編碼規(guī)則與D 分組不同,但是由于其碼組少,編碼比較簡單,只需要在編碼過程中根據(jù)輸入判斷這12 個碼組是否為K分組,再根據(jù)K 分組編碼規(guī)則進行編碼,在這里不再贅述。?
由前面的分析得出了3B/4B 編碼和5B/6B 編碼的關(guān)系,從而得到整個8B/ 10B 編碼表的RD-和RD+ 兩列,編碼過程中根據(jù)當前的游程差確定4B和6B 編碼的選取,從而實現(xiàn)10B碼的直流平衡 。根據(jù)上面對分析得出的結(jié)論,我們設(shè)計的8B/10B 編碼器如圖1 所示:?
圖1 8B/ 10B編碼器框圖?
上圖中整個編碼器的核心是Controls模塊,它根據(jù)輸入信號進行判斷,在8B/10B 編碼表的RD-和RD + 兩列正確的選取適當?shù)木幋a。3B/4B 編碼和5B/6B 編碼的選取是通過圖中的兩個異或門實現(xiàn)的,由上面的分析,具有非唯一編碼的8B 碼,其3B/4B 編碼和5B/ 6B 編碼都是成對出現(xiàn)的,而且互為取反。因此,我們可以根據(jù)輸入的3B和5B碼組,只選擇出一組4B和6B 編碼輸出即可,然后通過它們與0000 (000000) 或者1111 (111111) 的異或運算,就可以兩組編碼中的一組。?
5B/6B編碼表和3B/4B編碼表模塊實現(xiàn)多路選擇器的功能,根據(jù)輸入的3B和5B碼組,只選擇出一組RD-列的4B和6B 編碼輸出,然后與Controls模塊的輸出進行異或運算來得到正確的編碼。Controls模塊實現(xiàn)的功能有: K 分組(特殊控制符號編碼) 碼組的判斷,根據(jù)輸入8B碼組和K判斷輸入是D分組還是K分組,以及是否為正確的K分組碼,并根據(jù)K分組編碼規(guī)則輸出用來進行異或運算的操作數(shù);設(shè)置一個內(nèi)部寄存器變量RD,設(shè)定的默認初始值為0,表示RD-列,根據(jù)輸入8B碼判斷是否翻轉(zhuǎn),并存儲下一個8B碼的游程差的正負,以便在正確的列取得編碼。
對RD的賦值狀態(tài)機如圖2所示,其中RD=0代表RD-列,RD=1代表RD+列;當輸入為D分組碼時,根據(jù)前面內(nèi)在相關(guān)性的分析,輸出用來進行異或運算的正確的操作數(shù),例如當輸入5B碼為01011 ,01101 ,01110 ,3B碼為111時,若當前取RD+列,輸出4比特1001 ,與3B/4B編碼表模塊輸出的4B碼0001相異或,得到正確的3B/4B編碼1000 ;對于輸入的K分組禁用碼組,輸出錯誤標志kerr 。根據(jù)對編碼的需要,Controls 模塊輸出的6 比特和4 比特操作數(shù)分別包括000000、111111、000001、111110 和0000、1111、1001、0110。?
圖2 游程差值狀態(tài)機?
對解碼器的設(shè)計相對簡單一些,其根據(jù)也是前面分析的結(jié)果。解碼過程大致為:先將輸入的10B碼分解成4B和6B 碼,對它們分別進行判斷是否為許用碼組,因為它們的許用碼組分別只有14個和46個。同時判斷4B和6B雖為許用碼組,得到的10B碼組是否為禁用碼。對于K分組碼組,判斷其是否為正確的K分組編碼。如果未出現(xiàn)禁用碼錯誤,則解出相應(yīng)的3B和5B碼組,同時計算它們的RD值,否則輸出錯誤標志。然后根據(jù)得到的8B碼的RD值進一步判斷其是否為許用碼組,同時根據(jù)判斷標志輸出正確的8B碼。設(shè)計的解碼器框圖如圖3 所示。?
圖3 8B/10B解碼器框圖
該解碼器由三個模塊組成, 6B/5B 解碼表和4B/3B 解碼表模塊分別根據(jù)輸入的6B和4B許用碼,輸出相應(yīng)的5B和3B解碼,其實現(xiàn)與編碼器的相應(yīng)模塊類似。
Controls模塊完成對輸入10B 分解后的6B 和4B 碼組是否為許用碼組的判斷,并計算RD值,分別只能是4、3、2 和1、2、3 ;對輸入碼組是否為K分組碼及其正確性的判斷;對既是許用碼組,又滿足RD 值要求的10B 禁用碼進行判斷,包括6B 碼為111000 或000111、4B 碼為0011 或1100 時可能出現(xiàn)的禁用碼組合,以及前面提到3B 碼為111 時的兩對編碼的情況下禁用碼組的判斷,同時在本模塊內(nèi)部對10B碼的RD值判斷其是否為6、5 或4 ,進一步判斷出10B 碼是否是禁用碼;完成解碼有效性的判斷,輸出各種錯誤標志,包括D 分組解碼錯誤derr 和K分組解碼錯誤kerr ,在此基礎(chǔ)上計算收到的10B 碼的游程差,檢查其是否是在編碼表中RD-和RD+兩列中相應(yīng)的列中選擇的,若出現(xiàn)錯誤, rderr 指示解碼無效;輸出K指示得到的8B解碼是否是K分組碼。?
上述編解碼器的實現(xiàn)結(jié)構(gòu)比較簡單,編解碼器的各個模塊用同一系統(tǒng)時鐘同步觸發(fā),編解碼速度比較快,輸出抖動小。出現(xiàn)解碼錯誤的原因是10B碼在傳輸過程中出現(xiàn)了誤碼,對解碼的有效性檢查增加了信息傳輸?shù)目煽啃浴?
2 仿真結(jié)果與分析?
根據(jù)本文提出的8B/10B 編、解碼方法,用Verilog HDL進行了硬件描述,用MAX+plus Ⅱ軟件在Altera的FPGA 器件上實現(xiàn)了編解碼器的功能驗證、綜合和時序仿真。在對編解碼器內(nèi)的各個模塊分別進行驗證和仿真的基礎(chǔ)上,將各模塊組合起來綜合成完整的編解碼電路。?
圖4a所示為編碼器的仿真時序圖,輸入datain的順序為HGFEDBA ,輸出dataout 的順序為abcde-ifghj 。圖中所取的值包含了HGF =111時兩組不同的編碼的選擇,并且根據(jù)當前游程差的正負,從RD-和RD+兩列選取相應(yīng)的編碼,從而實現(xiàn)了保持了碼流中1和0的數(shù)目相等。從編碼的結(jié)果可以看出采用該方法實現(xiàn)的編碼器能夠根據(jù)輸入8B碼正確的編碼。同時,由于本方法采用同步設(shè)計,并且各控制信號和數(shù)據(jù)產(chǎn)生的延時差別不大,所以輸出數(shù)據(jù)的抖動很小。圖4b 所示為解碼器的仿真時序圖,其中第五個輸入數(shù)據(jù)1110000011由于是10B禁用碼組,所以輸出derr 跳變?yōu)?指示該解碼錯誤。由于第二個輸入數(shù)據(jù)1000110111 取自RD-列,而第三個輸入數(shù)據(jù)1110100101 同樣取自RD-列,所以產(chǎn)生游程差錯誤,rderr = 1。?
(a) 8B/ 10B 編碼器仿真時序圖?
(b) 8B/10B 解碼器仿真時序圖? 圖4 8B/10B編解碼器仿真時序圖?
仿真結(jié)果表明,采用本方法設(shè)計的8B/10B 編解碼器有效可靠的實現(xiàn)了編解碼功能。對于輸出出現(xiàn)的抖動,可以通過減小高速電路的工作延時或者在關(guān)鍵路徑上用D 觸發(fā)器進行同步,減小輸出抖動的積累。在本設(shè)計中,在編解碼器的輸入、輸出級通過D 觸發(fā)器同步采樣后的輸入輸出的時序圖如圖5 所示,輸入信號、編碼信號和解碼信號之間都順序相差一個碼元周期,輸出抖動被完全消除了。?
圖5 用D 觸發(fā)器同步采樣后的編解碼器仿真時序圖?
3 結(jié)論?
文在分析8B/10B 編碼規(guī)則和3B/4B編碼、5B/6B編碼之間的內(nèi)在相關(guān)性的基礎(chǔ)上,提出了新的編解碼方案, 并用Verilog HDL語言在Altera的FPGA上實現(xiàn)了硬件電路,仿真結(jié)果完全正確。該方案層次分明、結(jié)構(gòu)簡單、編解碼速度快、輸出抖動小與現(xiàn)有的編解碼方法相比有一定的優(yōu)勢,適合高速光纖通信物理層的8B/10B編解碼器以及VSR轉(zhuǎn)換器IC的設(shè)計。 |