本發(fā)明涉及計(jì)算機(jī)通信系統(tǒng),特別是一種新的8b/10b編碼實(shí)現(xiàn)方法。
背景技術(shù):
在當(dāng)今的通信行業(yè),芯片、系統(tǒng)間的數(shù)據(jù)傳輸都在由傳統(tǒng)的并行低速傳輸向高速串行傳輸轉(zhuǎn)變。在大多數(shù)高速串行傳輸技術(shù)中,發(fā)送通道將高速時(shí)鐘信息隱藏在用戶數(shù)據(jù)中,即不單獨(dú)發(fā)送專門的高速時(shí)鐘同步信號(hào);接收通道接收衰減的高速串行輸入數(shù)據(jù),根據(jù)其跳變沿信息提取出高速時(shí)鐘信息,并對(duì)本地采樣時(shí)鐘相位進(jìn)行調(diào)整,以保證采樣時(shí)鐘的相位能夠準(zhǔn)確定位輸入數(shù)據(jù)碼元的中間位置。
但是,如果傳輸?shù)母咚俅袛?shù)據(jù)中連續(xù)的“0”或者“1”過(guò)多,一方面會(huì)導(dǎo)致數(shù)據(jù)跳變沿的數(shù)目太少而影響相位判斷結(jié)果,另一方面也會(huì)導(dǎo)致數(shù)據(jù)的直流電平過(guò)低(連續(xù)“0”過(guò)多)或者過(guò)高(連續(xù)“1”過(guò)多)。因此,必須對(duì)傳輸前的數(shù)據(jù)進(jìn)行處理以增加高速串行數(shù)據(jù)的跳變沿密度,同時(shí)也保證“0”和“1”的數(shù)目大致相等以穩(wěn)定信號(hào)直流電平。
8b/10b編碼方式最初由IBM公司的Al Widmer和Peter Franaszek在IBM的刊物“研究與開發(fā)”上描述,并應(yīng)用于ESCON(200M互聯(lián)系統(tǒng))。該編碼的基本思想是將8bit的碼字通過(guò)映射機(jī)制轉(zhuǎn)化為10bit碼字,它的特征之一是保證了直流平衡,可以使發(fā)送的“0”或者“1”的數(shù)目保持一致,同時(shí)連續(xù)的“0”或者“1”的數(shù)目不超過(guò)5位。通過(guò)8b/10b編碼,大大減小了接收端從高速串行數(shù)據(jù)中恢復(fù)出時(shí)鐘和數(shù)據(jù)的難度;同時(shí),它也利用一些特殊的編碼幫助接收端進(jìn)行數(shù)據(jù)的還原,這樣可以在早期就發(fā)現(xiàn)數(shù)據(jù)位的傳輸錯(cuò)誤,防止錯(cuò)誤的數(shù)據(jù)繼續(xù)向上層傳輸。
具體來(lái)說(shuō),8b/10b編碼可以對(duì)256(28)種數(shù)據(jù)(一般稱作D碼)和12個(gè)特殊字符(一般稱作K碼)進(jìn)行編碼,至于對(duì)8bit輸入碼字進(jìn)行D碼還是K碼編碼由一位額外的K碼指示信號(hào)來(lái)表示。為了保證之前所有編碼后的數(shù)據(jù)中“0”和“1”的數(shù)目保持一致,在8b/10b編碼過(guò)程中,需要一位極性指示輸入來(lái)指導(dǎo)編碼過(guò)程中選擇“0”比“1”多或者“1”比“0”多的編碼結(jié)果。同時(shí)輸出一位極性指示為下一個(gè)8b/10b編碼提供極性指示輸入。
8b/10b編碼方式廣泛應(yīng)用于許多高速串行總線,如PCI Express、Fiber Channel、USB3.0、Infini-band、RapidIO等總線或者接口技術(shù)都采用了8b/10b編碼機(jī)制。
現(xiàn)行的8b/10b編碼實(shí)現(xiàn)主要有兩種:第一種是存儲(chǔ)查表實(shí)現(xiàn),將10bit編碼結(jié)果和1bit極性指示作為數(shù)據(jù)存儲(chǔ)到存儲(chǔ)器件中,把8bit輸入碼字以及2bit編碼指示信號(hào)作為存儲(chǔ)地址;第二種是組合邏輯實(shí)現(xiàn),利用8b/10b編碼協(xié)議的特點(diǎn),首先將8bit輸入碼字拆分為5bit和3bit分別進(jìn)行5b/6b和3b/4b編碼,然后再根據(jù)極性指示信號(hào)對(duì)6bit和4bit編碼結(jié)果進(jìn)行處理,最后再將兩部分結(jié)果組合起來(lái)作為10bit編碼結(jié)果。
上述的第一種方法實(shí)現(xiàn)起來(lái)簡(jiǎn)單直接,但由于對(duì)每一種編碼結(jié)果都進(jìn)行存儲(chǔ),增加了電路的面積,而且電路也受到了存儲(chǔ)器讀取時(shí)間的制約。相比之下,第二種方法中的邏輯實(shí)現(xiàn)靈活性比較強(qiáng),可以根據(jù)總體電路的設(shè)計(jì)指標(biāo),在速度和面積之間進(jìn)行折中實(shí)現(xiàn)。
基于上述第二種方法的8b/10b編碼過(guò)程中,首先將8bit輸入字碼由高到低標(biāo)記為HGFEDCBA八位二進(jìn)制數(shù),對(duì)低五位EDCBA進(jìn)行5b/6b編碼得到6bit編碼結(jié)果,對(duì)高三位HGF進(jìn)行3b/4b編碼得到4bit編碼結(jié)果,然后根據(jù)編碼指示輸入對(duì)相應(yīng)結(jié)果進(jìn)行處理,最后組合為10bit編碼結(jié)果abcdeifghj與極性指示一起輸出。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明基于上述的第二種方法,利用8b/10b編碼表的一些內(nèi)在規(guī)律對(duì)8b/10b編碼表進(jìn)行了簡(jiǎn)化,進(jìn)而提出一種改進(jìn)的8b/10b編碼實(shí)現(xiàn)方法。該改進(jìn)方法根據(jù)簡(jiǎn)化后的8b/10b編碼表將整個(gè)8b/10b編碼電路分為4b/6b編碼和3b/4b編碼實(shí)現(xiàn),根據(jù)數(shù)據(jù)碼(D碼)和非數(shù)據(jù)碼(K碼)的編碼規(guī)律將兩種編碼一體化實(shí)現(xiàn),在明顯減小電路實(shí)現(xiàn)規(guī)模的同時(shí)也減小了輸入到輸出的延時(shí)。
如圖3、圖4所示,為8bit輸入字碼分組后的3b/4b和5b/6b簡(jiǎn)化編碼表??梢钥吹剑瑢?duì)于每一種輸入,有不少于一種編碼結(jié)果,因此這里存在一個(gè)如何選擇編碼結(jié)果的問(wèn)題。本發(fā)明的新穎之處,就是對(duì)“如何選擇合適的編碼結(jié)果”這一問(wèn)題進(jìn)行了合理簡(jiǎn)化。
圖3中,對(duì)各種組合輸入的3b/4b的兩種編碼結(jié)果進(jìn)行了X和X`標(biāo)記,這里的X和X`不是簡(jiǎn)單的取反關(guān)系,而是為了方便圖1中對(duì)3b/4b編碼結(jié)果進(jìn)行選擇。
重點(diǎn)觀察圖1,本簡(jiǎn)化表利用傳統(tǒng)的5b/6b編碼表的對(duì)稱規(guī)律將碼字中EDCBA互相取反的兩個(gè)碼字放到一起,如、00101(5.x)和11010(26.x)、00000(0.x)和11111(31.x)、00001(1.x)和11110(30.x)等??梢园l(fā)現(xiàn),除了3.x和28.x這兩個(gè)特例,EDCBA相互取反的兩個(gè)碼字的5b/6b編碼結(jié)果按位相互取反或者部分取反。如00101(5.x)和11010(26.x)按位相互取反,它們的編碼結(jié)果101001和010110也按位相互取反;00000(0.x)和11111(31.x)按位相互取反,它們的編碼結(jié)果100111和101011中abei相同而cd按位取反;00001(1.x)和11110(30.x)按位相互取反,它們的編碼結(jié)果011101和011110中abcd相同而ei按位取反。
以上的規(guī)律稱為規(guī)律1,根據(jù)該規(guī)律可以將5b/6b編碼的實(shí)現(xiàn)簡(jiǎn)化為4b/6b編碼實(shí)現(xiàn),E位充當(dāng)4bit編碼輸入為DCBA還是D`C`B`A`的選擇信號(hào)。對(duì)于6bit編碼結(jié)果,當(dāng)E=0時(shí),直接輸出6bit結(jié)果;當(dāng)E=1時(shí),需要對(duì)D`C`B`A`的6bit編碼結(jié)果進(jìn)行按位相互取反或者部分取反處理,至此可以得到標(biāo)準(zhǔn)8b/10b編碼表中的5b/6b編碼的RD-結(jié)果。至于具體進(jìn)行按位相互取反還是部分取反處理,下面的規(guī)律2給出明確的說(shuō)明。與5b/6b編碼實(shí)現(xiàn)相比,4b/6b編碼實(shí)現(xiàn)的電路規(guī)??梢钥s減將近一半。
在上述規(guī)律1的基礎(chǔ)上,繼續(xù)觀察圖1,本簡(jiǎn)化表根據(jù)DCBA(E=0)或者D`C`B`A`(E=1)中“1”的個(gè)數(shù)將輸入碼字分為三大類:
1)第一類碼字中DCBA(E=0)或者D`C`B`A`(E=1)中有2個(gè)或者3個(gè)“1”,這類碼字對(duì)兒有5.x(26.x)、6.x(25.x)、9.x(22.x)、10.x(21.x)、11.x(20.x)、12.x(19.x)、13.x(18.x)、14.x(17.x)、3.x(28.x)、7.x(24.x);
2)第二類碼字中DCBA(E=0)或者D`C`B`A`(E=1)中有0個(gè)或者4個(gè)“1”,這類碼字對(duì)兒有0.x(31.x)、15.x(16.x);
3)第三類碼字中DCBA(E=0)或者D`C`B`A`(E=1)中有1個(gè)“1”,這類碼字對(duì)兒有1.x(30.x)、2.x(29.x)、4.x(27.x)、8.x(23.x)。
以上的分類稱為規(guī)律2。
第一,該規(guī)律指出:對(duì)于以上的第一類碼字(除了7.x(24.x)這一對(duì)特殊碼字和28.x的K碼編碼),EDCBA相互取反的兩個(gè)碼字的5b/6b編碼結(jié)果按位相互取反;對(duì)于第二類碼字,EDCBA相互取反的兩個(gè)碼字的5b/6b編碼結(jié)果按位部分取反(abei相同,cd相互取反);對(duì)于第三類碼字,EDCBA相互取反的兩個(gè)碼字的5b/6b編碼結(jié)果也按位部分取反(abcd相同,ei相互取反)。
第二,該規(guī)律指出:對(duì)于以上的第一類碼字(除了7.x(24.x)這一對(duì)特殊碼字和28.x的K碼編碼),不同極性的5b/6b編碼結(jié)果相同;對(duì)于第二、三類碼字以及7.x(24.x)這一對(duì)特殊碼字和28.x的K碼編碼,不同極性的5b/6b編碼結(jié)果按位互相取反。
第三,根據(jù)圖2中對(duì)3b/4b編碼的標(biāo)記,該規(guī)律指出:對(duì)于以上的第一類碼字(除了7.x(24.x)這一對(duì)特殊碼字和28.x的K碼編碼),3b/4b編碼的RD-結(jié)果選擇X`,RD+結(jié)果選擇X;對(duì)于第二、三類碼字以及7.x(24.x)這一對(duì)特殊碼字和28.x的K碼編碼,3b/4b編碼的RD-結(jié)果選擇X,RD+結(jié)果選擇X`。
第四,取RD=RD_i&(G&F`+G`&F)+RD_i`&(G&F+G`&F`),取RD`=RD_i`&(G&F`+G`&F+G&F&K)+RD_i&(G&F&K`+G`&F`)。該規(guī)律指出:對(duì)于以上的第一類碼字(除了7.x(24.x)這一對(duì)特殊碼字和28.x的K碼編碼),極性指示輸出選擇RD;對(duì)于第二、三類碼字以及7.x(24.x)這一對(duì)特殊碼字和28.x的K碼編碼,極性指示輸出選擇RD`。
需要特殊說(shuō)明的是,選擇x.A7特殊3b/4b編碼結(jié)果的只有以下幾種特殊的碼字:
1)D11.7、D13.7、D14.7的3b/4b的RD+編碼結(jié)果;
2)D17.7、D18.7、D20.7的3b/4b的RD-編碼結(jié)果;
3)Kx.7的3b/4b編碼結(jié)果。
附圖說(shuō)明
圖1為5b/6b編碼表;
圖2為3b/4b編碼表;
圖3為本發(fā)明中8b/10b編碼實(shí)現(xiàn)的流程圖;
圖4為本發(fā)明中8b/10b編碼實(shí)現(xiàn)的結(jié)構(gòu)圖;
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,下面結(jié)合附圖及具體實(shí)施例,對(duì)本發(fā)明進(jìn)行詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
該發(fā)明的8b/10b編碼流程圖如圖3所示,包括以下步驟:
1、輸入8bit碼字、K碼指示、極性指示。一方面作為4b/6b和3b/4b編碼以及低四位統(tǒng)計(jì)的輸入,另一方面參與4b/6b和3b/4b編碼結(jié)果的選擇信號(hào)的譯碼;
2、4b/6b和3b/4b編碼以及低四位統(tǒng)計(jì)。這三部分處理是并行同步進(jìn)行的,其中4b/6b編碼利用上述規(guī)律1對(duì)5b/6b編碼進(jìn)行縮減實(shí)現(xiàn);
3、4b/6b和3b/4b編碼結(jié)果選擇以及極性選擇。利用上述規(guī)律2,通過(guò)低四位的統(tǒng)計(jì)結(jié)果以及輸入的碼字對(duì)4b/6b和3b/4b編碼結(jié)果進(jìn)行若干次選擇;同時(shí)也根據(jù)規(guī)律2對(duì)極性指示輸入進(jìn)行取反或者不取反得到極性指示輸出。
4、輸出10bit編碼結(jié)果和極性指示。將最終的4bit和6bit編碼結(jié)果組合為10bit編碼結(jié)果,與極性指示一起輸出。
具體的實(shí)現(xiàn)結(jié)構(gòu)如圖4所示。由輸入寄存器、4b/6b編碼模塊、3b/4b編碼模塊、4輸入1位加法器模塊、選擇信號(hào)譯碼模塊、若干的2選1復(fù)用模塊(2:1MUX)和反相器模塊以及輸出寄存器組成。其中,輸入寄存器之后的4位2選1復(fù)用模塊和4b/6b編碼模塊是上述規(guī)律1的主要實(shí)現(xiàn)模塊,4輸入1位加法器模塊和選擇信號(hào)譯碼模塊是上述規(guī)律2的主要實(shí)現(xiàn)模塊,是本發(fā)明的核心所在。該結(jié)構(gòu)的工作過(guò)程如下:
1)在時(shí)鐘驅(qū)動(dòng)下輸入8bit碼字以及K碼指示、極性指示得到HGFDCBA、K_reg、RD_reg;
2)通過(guò)上述規(guī)律1確定4b/6b、3b/4b的初步編碼結(jié)果6b_reg1和4b_reg1;
3)由選擇信號(hào)譯碼模塊的輸出信號(hào)6bit_sel1和4bit_sel1對(duì)初步結(jié)果進(jìn)行第一級(jí)選擇得到5b/6b、3b/4b的RD-編碼結(jié)果6b_reg2和4b_reg2;
4)由選擇信號(hào)譯碼模塊的輸出信號(hào)6bit_sel2和4bit_sel2對(duì)第一級(jí)選擇結(jié)果進(jìn)行第二級(jí)選擇得到5b/6b、3b/4b的RD-/RD+編碼結(jié)果fghj和abcdei;同時(shí)由選擇信號(hào)譯碼模塊的輸出信號(hào)rd_sel選擇是否對(duì)RD_reg取反;
5)在時(shí)鐘的驅(qū)動(dòng)下將8b/10b的最終編碼結(jié)果abcdeifghj和極性指示輸出。
選擇信號(hào)譯碼模塊的輸出與輸入關(guān)系主要遵循規(guī)律2,附加上述規(guī)律之外對(duì)特殊碼字的特殊處理。鑒于5b/6b和3b/4b編碼結(jié)果的每一次選擇有按位取反處理,因此,上述的多位2選1選擇模塊的操作都是基于1位的。同樣的,選擇信號(hào)譯碼模塊的輸出選擇信號(hào)6bit_sel1、6bit_sel2都是6位寬,分別作為6bit輸入中各位的選擇信號(hào);選擇信號(hào)4bit_sel1、4bit_sel2則都是4位寬,分別作為4bit輸入中各位的選擇信號(hào)。
舉例1,對(duì)于8bit輸入數(shù)據(jù)碼字011_01101,由于E=0,直接對(duì)DBCA進(jìn)行統(tǒng)計(jì),有3個(gè)“1”,歸為上述規(guī)律2的第一類。根據(jù)圖1、圖2和上述規(guī)律1、規(guī)律2,對(duì)EDCBA編碼結(jié)果選擇101100(RD-結(jié)果和RD+結(jié)果),對(duì)HGF編碼結(jié)果選擇X`=1100(RD-結(jié)果)或者X=0011(RD+結(jié)果),最后組合得到10bit編碼結(jié)果101100_1100(RD-結(jié)果)或者101100_0011(RD+結(jié)果)。至于極性指示輸出,由于HGF=011而且為上述規(guī)律2中的第一類碼字,根據(jù)圖1和上述規(guī)律2對(duì)RD_i進(jìn)行取反。
舉例2,對(duì)于8bit輸入數(shù)據(jù)碼字111_11000,由于E=1,對(duì)D`B`C`A`進(jìn)行統(tǒng)計(jì),有3個(gè)“1”,歸為上述規(guī)律2的第一類。根據(jù)圖1、圖2和上述規(guī)律1、規(guī)律2,對(duì)EDCBA編碼結(jié)果選擇110011(RD-結(jié)果)或者001100(RD+結(jié)果),對(duì)HGF編碼結(jié)果選擇X=0001(RD-結(jié)果)或者X`=1110(RD+結(jié)果),最后組合得到10bit編碼結(jié)果110011_0001(RD-結(jié)果)或者001100_1110(RD+結(jié)果)。至于極性指示輸出,由于HGF=111而且為上述規(guī)律2中的第一類碼字,根據(jù)圖1和上述規(guī)律2相對(duì)于RD_i保持不變。
舉例3,對(duì)于8bit輸入非數(shù)據(jù)碼字111_11101,由于E=1,對(duì)D`B`C`A`進(jìn)行統(tǒng)計(jì),有1個(gè)“1”,歸為上述規(guī)律2的第三類。根據(jù)圖1、圖2和上述規(guī)律1、規(guī)律2,對(duì)EDCBA編碼結(jié)果選擇101110(RD-結(jié)果)或者010001(RD+結(jié)果),對(duì)HGF編碼結(jié)果選擇X=1000(RD-結(jié)果)或者X`=0111(RD+結(jié)果),最后組合得到10bit編碼結(jié)果101110_1000(RD-結(jié)果)或者010001_0111(RD+結(jié)果)。至于極性指示輸出,由于HGF=111而且為上述規(guī)律2中第三類碼字,根據(jù)圖1和上述規(guī)律2相對(duì)于RD_i保持不變。
相比于傳統(tǒng)的5b/6b和3b/4b分塊編碼實(shí)現(xiàn),本發(fā)明有以下有益效果:
(1)本發(fā)明中根據(jù)規(guī)律1對(duì)DCBA進(jìn)行了4b/6b編碼,由E位選擇DCBA或者D`B`C`A`作為4b/6b編碼輸入,根據(jù)選擇信號(hào)譯碼模塊的輸出對(duì)4b/6b編碼結(jié)果進(jìn)行按位處理。與5b/6b編碼實(shí)現(xiàn)相比,4b/6b編碼實(shí)現(xiàn)將邏輯規(guī)模縮減將近一半。
(2)本發(fā)明中的數(shù)據(jù)編碼(D碼)和非數(shù)據(jù)編碼(K碼)沒(méi)有分開來(lái)實(shí)現(xiàn),而是根據(jù)上述規(guī)律進(jìn)行了一體化實(shí)現(xiàn)。相比于單獨(dú)對(duì)12種K碼進(jìn)行8b/10b編碼實(shí)現(xiàn),進(jìn)一步減小了邏輯規(guī)模。
(3)本發(fā)明中的極性指示輸出利用上述規(guī)律對(duì)極性指示輸入進(jìn)行直接輸出或者取反輸出,是與4b/6b編碼和3b/4b編碼并行同步進(jìn)行的。相比于在5b/6b編碼和3b/4b編碼完成后再對(duì)各自的結(jié)果進(jìn)行“0”和“1”的個(gè)數(shù)比較再判斷極性變化,在一定程度上減小了電路的延時(shí)。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所做的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。