陳 登,姚亞峰,歐陽靖,霍興華
(中國地質(zhì)大學(xué)(武漢)機械與電子信息學(xué)院,湖北武漢430074)
JESD204B協(xié)議采用了主流的SerDes接口技術(shù),廣泛應(yīng)用于數(shù)據(jù)轉(zhuǎn)換器和邏輯器件內(nèi)部高速互連。根據(jù)JESD204B[4]的規(guī)定,SerDes接口采用 8B/10B 的編解碼方法來滿足高速傳輸?shù)囊?。協(xié)議還根據(jù)SerDes接口的特點對8B/10B解碼器的控制字檢測、錯誤碼字檢測做出了一些規(guī)定。本文基于JESD204B協(xié)議規(guī)范,設(shè)計了一種完全符合該協(xié)議要求的8B/10B解碼電路。
8B/10B編碼思想最初是由IBM公司開發(fā),把8位并行數(shù)據(jù)轉(zhuǎn)化成串行傳輸?shù)?0位數(shù)據(jù)。這種編碼方式保證了1和0的相對平衡,避免了零點漂移,編碼擴充的位數(shù)還有助于誤碼檢測、方便提供控制字符,更利于時鐘恢復(fù),在串行通信中能夠保證良好的傳輸性能。
本文設(shè)計的8B/10B解碼器,相較于經(jīng)典的IBM解碼器設(shè)計[1]減少了邏輯層數(shù),能夠獲得更高的工作頻率;相較于Actel公司提供的IP設(shè)計[2]簡化了解碼表和極性錯誤檢測電路,節(jié)省了更多的芯片面積。本設(shè)計具體在以下幾個方面進行了改進:1)快速準(zhǔn)確的極性信息檢測和錯誤檢測;2)極性信息用于簡化解碼表,并用邏輯方式加快解碼速度;3)分塊并行執(zhí)行的思路,提高了整體效率。該電路基于0.18 μm CMOS工藝進行了綜合和驗證,能夠完全達到協(xié)議要求的功能和指標(biāo),滿足實際應(yīng)用需求。
一般編碼電路對3B和5B分別進行編碼,所以解碼時將得到的10B碼字也分為4B和6B兩部分分別進行解碼。接收電路在解碼的同時還要根據(jù)協(xié)議要求對碼字進行差錯檢測和控制字檢測。由于串行數(shù)據(jù)的極性有很重要的作用,所以還要對收到數(shù)據(jù)進行極性判斷、存儲新的極性和檢測出錯誤的碼字等。
如圖1所示,解碼器由處理模塊和解碼模塊兩部分組成。所有的檢測部分(控制字檢測、極性檢測、錯誤碼字檢測和錯誤極性檢測)統(tǒng)一劃歸到預(yù)處理模塊。所有解碼部分(6B/5B解碼器和4B/3B解碼器)劃歸到解碼模塊。預(yù)處理模塊將計算出來的極性信息和控制字信息提供給解碼模塊。
1.1.1 控制字檢測
圖1 解碼器組成框圖
SerDes接口協(xié)議的8B/10B編碼只使用了5種控制字(K.28.0,K.28.3,K.28.4,K.28.5 和 K.28.7)[3]。這些控制字的6B部分均為K.28(即110000或001111,本文中數(shù)字表示編碼對應(yīng):6B由高到低分別為abcdei;4B由高到低分別為fghj。下同。),且在數(shù)據(jù)字的6B部分不可能出現(xiàn)K.28,所以只需要檢測6B部分的cdei(本文中字母表示編碼對應(yīng):6B部分為abcdei對應(yīng)的信息為ABCDE;4B部分為fghj對應(yīng)的信息為FGH。)位是否為全0或者全1就可以判斷輸入的碼字是否為控制字??刂谱中畔⑦€要為接下來的4B/3B解碼器和錯誤碼字檢測使用,通過邏輯表達式能夠很快地判斷??刂谱钟梢员磉_式K_bit=(c&d&e&i)|~(c|d|e|i)決定。
1.1.2 極性檢測
極性信息指的是一串編碼的1和0個數(shù)的差值,在編碼長度固定的情況下,可以由1或0的個數(shù)來判斷其極性。對于偶數(shù)長度的編碼,極性的可以分為正(RD+)、負(RD-)和平衡[5]。正極性可理解為編碼中1的個數(shù)多于0的個數(shù),負極性可理解為編碼中0的個數(shù)多于1的個數(shù),平衡可以理解為編碼中1和0的個數(shù)相同。
不同于將10B整體進行極性檢測的方法,本設(shè)計將10B數(shù)據(jù)拆分成兩部分(6B和4B)分別計算其極性。這樣做的好處有:1)6B和4B可以同時計算極性,形成并行處理加快速度;2)分成兩部分在接下來的極性檢錯模塊中能夠發(fā)現(xiàn)6B和4B間的極性錯誤,檢測敏感度增強;3)每一個子檢測部分所需要的資源更少,速度也相對于10B檢測更快。
同時,為了能夠快速地檢測6B或4B的極性,每一個子檢測部分進行了3方面處理:1)采用邏輯表達式的方法來檢測極性;2)只產(chǎn)生兩個判斷信號,即極性正和極性負;3)只針對正確的碼字做出極性判斷,使得邏輯更加簡單。
極性信息在本設(shè)計中是一個至關(guān)重要的信息,需要又快又準(zhǔn)地檢測出來。所以,不同于通過累加各個編碼位來得到精確極性信息的方法,這里的檢測并不包含檢錯功能,也沒有精確的游程輸出。極性檢測模塊只輸出4個關(guān)鍵信號:6B極性為正(6B+)、6B極性為負(6B-)、4B極性為正(4B+)、4B極性為負(4B-)。
1.1.3 錯誤碼字檢測
錯誤碼字檢測僅需要檢測出不可能出現(xiàn)在編碼表里面的碼字,同樣分為4B和6B兩部分。
分析6B編碼表特性,可以將5B編碼成6B碼,分成4類:1)6B平衡的編碼,一共是20種,其中18種分別對應(yīng)5B部分的18個數(shù)據(jù),還有特殊的000111和111000對應(yīng)5B部分1個數(shù)據(jù);2)5B部分還有13個數(shù)據(jù),根據(jù)極性有兩種編碼,所以有26種6B編碼;3)特殊控制字K.28的6B編碼占用兩種情況001111和110000;4)余下的16種情況即為6B的錯誤碼字部分,不可能出現(xiàn)在正確的編碼中。6B部分錯誤碼字檢測所要做的就是找到這16種錯誤碼字,如表1所示。參考IBM[1]設(shè)計一文的方法可以分為兩類,既考慮abcd位全為0或全為1的情況,也考慮abcd位僅有1個1或僅有1個0的情況。前者直接可以判斷該碼字為錯誤碼字,后者再觀察ei位是否全為0或全為1,即可判斷碼字是否錯誤。
表1 6B碼字錯誤情況
4B部分錯誤碼字的判斷不同于6B部分,由于4B部分一共只有16種可能,可以分為兩類:1)兩種錯誤碼字0000和1111,這兩個碼字無論在控制字還是數(shù)據(jù)字前提下均為錯誤碼字;2)余下的14種碼字需要分成控制字前提下和數(shù)據(jù)字前提下兩類討論。
前面提到SerDes接口的8B/10B控制字只有5種,而且完全由6B部分收到的編碼確定。所以4B部分僅負責(zé)檢測錯誤,而不需要確定是否為控制字。在確認是控制字的前提下有3種編碼是錯誤碼字(即K.28.1,K.28.2和 K.28.6),具體情況如表 2 所示。如果是數(shù)據(jù)字對于這3種情況,則不受約束,不需要報錯。
表2 4B碼字錯誤情況
1.1.4 極性錯誤檢測
極性錯誤在8B/10B編碼中有很多種情況,可以由圖2狀態(tài)圖來判斷。其中A判斷分兩種情況:1)當(dāng)4B-或6B-時檢測出極性錯誤;2)當(dāng)4B或6B為平衡時不報錯。同理B判斷也分兩種情況:1)當(dāng)4B+或6B+時檢測出極性錯誤;2)當(dāng)4B或6B為平衡時不報錯。
圖2 極性錯誤檢測狀態(tài)圖
可以發(fā)現(xiàn),這樣的判斷方法非常復(fù)雜,對一組編碼需要先對6B部分判斷,再對4B部分判斷,才能得出準(zhǔn)確的結(jié)果,這樣至少要2次狀態(tài)判斷和轉(zhuǎn)換。所以本設(shè)計利用了極性檢測模塊得到的4個信號,分析了所有可能情況,列出了如表3所示的真值表來進行極性錯誤檢測和生成新極性。其中l(wèi)ast信號即存儲的極性,1代表正,0代表負,復(fù)位時默認置為0;New信號即表示新輸入編碼的極性情況,1代表正,0代表負。
表3 極性錯誤檢測及新極性生成表
通過化簡極性檢錯邏輯得到以下邏輯式:
在last=0時,err=(~RD_6B_pos& RD_4B_neg)|(RD_6B_pos& RD_4B_pos)|RD_6B_neg。
在last=1時,err=RD_6B_pos|(~RD_6B_neg&RD_4B_pos)|(RD_6B_neg& RD_4B_neg)。
通過化簡極性計算邏輯得到以下邏輯式:
在last=0時,RD=(RD_6B_pos& ~RD_4B_neg)|RD_4B_pos。
在last=1時,RD=(~RD_6B_neg& ~RD_4B_pos)|RD_4B_pos。
最后參考了文獻[6]中的有限狀態(tài)機方法,將last信息作為判斷條件,對極性錯誤進行檢測、對新極性進行存儲。這樣的檢錯、更新方法有以下優(yōu)勢:1)節(jié)省了存儲器資源,綜合表明只需要2個觸發(fā)器就可以完成以上功能;2)邏輯判斷能夠并行進行而不需要先對6B判斷再對4B判斷,縮短了時間;3)邏輯表達式簡潔,充分利用了已有信號,縮小了設(shè)計面積;4)極性檢錯和極性計算并行進行相互不依賴,減小了復(fù)雜度。
同時,這樣的極性錯誤檢測不同于Actel[2]解碼器設(shè)計采用8個信號共同來判斷極性錯誤,而是選擇了之前極性檢測模塊計算出來的4個信號結(jié)合存儲器中的極性信息來判斷是否出錯,在面積上更有優(yōu)勢。
解碼部分分為兩部分6B/5B和4B/3B,結(jié)構(gòu)圖如圖1所示。不同于Actel[2]文中所描述的CASE描述方法,也不同于IBM[1]中的純邏輯方法。本設(shè)計分別引入了6B和4B模塊的極性正信息,讀入的數(shù)據(jù)先根據(jù)極性正信息對碼字進行反轉(zhuǎn),即通過異或邏輯,當(dāng)極性正信號為1時對相應(yīng)輸入的編碼進行反轉(zhuǎn)。這樣,在解碼表只需要涉及極性為負和平衡的情況。
對于6B解碼表由原來的48種情況減少為34種(如表4所示);對于4B解碼表,由于其解碼需考慮K Bit的情況,由原來的28種情況減少為16種(如表5所示)。這里需要強調(diào)的是4B解碼部分,不同于6B解碼,4B解碼還需要控制字信息。這是因為對于控制字K.28來說,為了防止整個10B編碼出現(xiàn)連續(xù)5個0或1,就要根據(jù)情況選擇不同的3B編碼。所以在解碼過程中要考慮到這一點,增加了K位作為解碼條件之一,K位即為控制字位,由控制字檢測電路產(chǎn)生。最后通過化簡的真值表進行邏輯化簡,得到表達式用以解碼。
這樣的設(shè)計優(yōu)勢有以下幾點:1)通過極性信號對編碼反轉(zhuǎn)簡化了解碼表;2)由于有專門的錯誤碼字檢測,所以碼表中去除了錯誤碼字,進一步縮小解碼表;3)解碼只需要極性信息,所以在解碼同時預(yù)處理模塊也在對輸入碼字檢錯,二者并行執(zhí)行;4)上文提到的快速的極性信息計算,保證了解碼模塊第一時間得到正確的極性信息,縮短了解碼所需時間;5)對更小的碼表進行邏輯化簡,這樣得到的表達式邏輯層次少,運行速度快,并且面積較小。
表4 6B解碼表
表5 4B解碼表
其中4B部分的解碼邏輯表達式如下,可以發(fā)現(xiàn)邏輯層數(shù)不超過3層:
1)F=(j& ~g)|f|(K&j);
2)G=(~j& ~h&f)|(~K&j& ~f)|(h&g)or(j&h);
3)H=(g&h)|(~j& ~g)|(~h& ~g& ~f)|(K& j& ~h)。
本文設(shè)計的解碼器,用Verilog語言進行了實現(xiàn),并用ModelSim進行仿真,用Synopsys Design Compiler進行了綜合。
圖3所示為解碼器RTL代碼的ModelSim仿真結(jié)果。其中num_5B_in和num_3B_in為輸入理想編碼器的待編碼信息,num_5B_out和num_3B_out為解碼器輸出,K_bit為解碼器控制字輸出信號,RD_err為解碼器極性錯誤輸出信號,NIT_err為解碼器錯誤碼字輸出信號。從輸入到輸出只有一個周期的時鐘延時,整個解碼過程在一個時鐘周期內(nèi)完成。對比編碼前和解碼后數(shù)據(jù)發(fā)現(xiàn)是完全一致的,表明解碼電路的功能是完全正確的。
圖3 解碼器仿真圖(截圖)
通過Synopsys Design Compiler對本設(shè)計和文獻提供的設(shè)計分別進行了綜合,采用的是SMIC180工藝庫,使用了相同的約束條件和導(dǎo)線模式。表6所示的是綜合結(jié)果,主要比較了三項指標(biāo)。相較于Actel方法,新設(shè)計在頻率上有11%的減少,但是在面積上,無論是單元面積還是總面積都減少了近50%。相較于IBM方法,新設(shè)計在頻率上有近25%的提升,在單元面積上幾乎相同,在總面積上減少了7%,表明本設(shè)計有一定優(yōu)越性。
表6 綜合具體結(jié)果比較
通過分析JESD204B協(xié)議中編碼規(guī)則和編碼數(shù)據(jù)內(nèi)在相關(guān)性的基礎(chǔ)上,首先構(gòu)建了快速的極性信息檢測和極性錯誤檢測;再在解碼部分使用了極性信息來對數(shù)據(jù)進行預(yù)處理使得解碼表簡化,并根據(jù)簡化的解碼表采用邏輯關(guān)系進行解碼。本設(shè)計與已有設(shè)計相比更加實用,在工作頻率和面積上有一定優(yōu)勢,符合數(shù)據(jù)轉(zhuǎn)換器和邏輯器件內(nèi)部高速互連的技術(shù)要求。
:
[1] WIDMER A X.A DC-balanced,partitioned-block,8b/10b transmission code[J].IBM Journal of research and development,1983(27):440-451.
[2] ACTEL.Implementing an 8b/10b encoder/decoder for gigabit ethernet[J].Application Note,1998(10):1-20.
[3] IEEE802.3,Standard for information technology.Part 3:8B/10B transmission code[S].2012.
[4] JESD204B,Serial interface for data converters[S].2008.
[5]秦蒙,王輝,秋云海,等.光纖通信中8B/10B編碼器的設(shè)計與實現(xiàn)[J].電視技術(shù),2014,38(1):50-54.
[6] ABDULLAH A K.Development of FSM based running disparity controlled 8b-10b encoder-decoder[J].HCTL Open Int.J.of Technology Innovations and Research,2103(2):11-24.