?

JESD204B接口協議中的8B/10B解碼器設計

2014-09-18 00:16姚亞峰歐陽靖霍興華
電視技術 2014年19期
關鍵詞:解碼器碼字極性

陳 登,姚亞峰,歐陽靖,霍興華

(中國地質大學(武漢)機械與電子信息學院,湖北武漢430074)

JESD204B協議采用了主流的SerDes接口技術,廣泛應用于數據轉換器和邏輯器件內部高速互連。根據JESD204B[4]的規定,SerDes接口采用 8B/10B 的編解碼方法來滿足高速傳輸的要求。協議還根據SerDes接口的特點對8B/10B解碼器的控制字檢測、錯誤碼字檢測做出了一些規定。本文基于JESD204B協議規范,設計了一種完全符合該協議要求的8B/10B解碼電路。

8B/10B編碼思想最初是由IBM公司開發,把8位并行數據轉化成串行傳輸的10位數據。這種編碼方式保證了1和0的相對平衡,避免了零點漂移,編碼擴充的位數還有助于誤碼檢測、方便提供控制字符,更利于時鐘恢復,在串行通信中能夠保證良好的傳輸性能。

本文設計的8B/10B解碼器,相較于經典的IBM解碼器設計[1]減少了邏輯層數,能夠獲得更高的工作頻率;相較于Actel公司提供的IP設計[2]簡化了解碼表和極性錯誤檢測電路,節省了更多的芯片面積。本設計具體在以下幾個方面進行了改進:1)快速準確的極性信息檢測和錯誤檢測;2)極性信息用于簡化解碼表,并用邏輯方式加快解碼速度;3)分塊并行執行的思路,提高了整體效率。該電路基于0.18 μm CMOS工藝進行了綜合和驗證,能夠完全達到協議要求的功能和指標,滿足實際應用需求。

1 解碼器結構

一般編碼電路對3B和5B分別進行編碼,所以解碼時將得到的10B碼字也分為4B和6B兩部分分別進行解碼。接收電路在解碼的同時還要根據協議要求對碼字進行差錯檢測和控制字檢測。由于串行數據的極性有很重要的作用,所以還要對收到數據進行極性判斷、存儲新的極性和檢測出錯誤的碼字等。

如圖1所示,解碼器由處理模塊和解碼模塊兩部分組成。所有的檢測部分(控制字檢測、極性檢測、錯誤碼字檢測和錯誤極性檢測)統一劃歸到預處理模塊。所有解碼部分(6B/5B解碼器和4B/3B解碼器)劃歸到解碼模塊。預處理模塊將計算出來的極性信息和控制字信息提供給解碼模塊。

1.1 預處理部分

1.1.1 控制字檢測

圖1 解碼器組成框圖

SerDes接口協議的8B/10B編碼只使用了5種控制字(K.28.0,K.28.3,K.28.4,K.28.5 和 K.28.7)[3]。這些控制字的6B部分均為K.28(即110000或001111,本文中數字表示編碼對應:6B由高到低分別為abcdei;4B由高到低分別為fghj。下同。),且在數據字的6B部分不可能出現K.28,所以只需要檢測6B部分的cdei(本文中字母表示編碼對應:6B部分為abcdei對應的信息為ABCDE;4B部分為fghj對應的信息為FGH。)位是否為全0或者全1就可以判斷輸入的碼字是否為控制字??刂谱中畔⑦€要為接下來的4B/3B解碼器和錯誤碼字檢測使用,通過邏輯表達式能夠很快地判斷??刂谱钟梢员磉_式K_bit=(c&d&e&i)|~(c|d|e|i)決定。

1.1.2 極性檢測

極性信息指的是一串編碼的1和0個數的差值,在編碼長度固定的情況下,可以由1或0的個數來判斷其極性。對于偶數長度的編碼,極性的可以分為正(RD+)、負(RD-)和平衡[5]。正極性可理解為編碼中1的個數多于0的個數,負極性可理解為編碼中0的個數多于1的個數,平衡可以理解為編碼中1和0的個數相同。

不同于將10B整體進行極性檢測的方法,本設計將10B數據拆分成兩部分(6B和4B)分別計算其極性。這樣做的好處有:1)6B和4B可以同時計算極性,形成并行處理加快速度;2)分成兩部分在接下來的極性檢錯模塊中能夠發現6B和4B間的極性錯誤,檢測敏感度增強;3)每一個子檢測部分所需要的資源更少,速度也相對于10B檢測更快。

同時,為了能夠快速地檢測6B或4B的極性,每一個子檢測部分進行了3方面處理:1)采用邏輯表達式的方法來檢測極性;2)只產生兩個判斷信號,即極性正和極性負;3)只針對正確的碼字做出極性判斷,使得邏輯更加簡單。

極性信息在本設計中是一個至關重要的信息,需要又快又準地檢測出來。所以,不同于通過累加各個編碼位來得到精確極性信息的方法,這里的檢測并不包含檢錯功能,也沒有精確的游程輸出。極性檢測模塊只輸出4個關鍵信號:6B極性為正(6B+)、6B極性為負(6B-)、4B極性為正(4B+)、4B極性為負(4B-)。

1.1.3 錯誤碼字檢測

錯誤碼字檢測僅需要檢測出不可能出現在編碼表里面的碼字,同樣分為4B和6B兩部分。

分析6B編碼表特性,可以將5B編碼成6B碼,分成4類:1)6B平衡的編碼,一共是20種,其中18種分別對應5B部分的18個數據,還有特殊的000111和111000對應5B部分1個數據;2)5B部分還有13個數據,根據極性有兩種編碼,所以有26種6B編碼;3)特殊控制字K.28的6B編碼占用兩種情況001111和110000;4)余下的16種情況即為6B的錯誤碼字部分,不可能出現在正確的編碼中。6B部分錯誤碼字檢測所要做的就是找到這16種錯誤碼字,如表1所示。參考IBM[1]設計一文的方法可以分為兩類,既考慮abcd位全為0或全為1的情況,也考慮abcd位僅有1個1或僅有1個0的情況。前者直接可以判斷該碼字為錯誤碼字,后者再觀察ei位是否全為0或全為1,即可判斷碼字是否錯誤。

表1 6B碼字錯誤情況

4B部分錯誤碼字的判斷不同于6B部分,由于4B部分一共只有16種可能,可以分為兩類:1)兩種錯誤碼字0000和1111,這兩個碼字無論在控制字還是數據字前提下均為錯誤碼字;2)余下的14種碼字需要分成控制字前提下和數據字前提下兩類討論。

前面提到SerDes接口的8B/10B控制字只有5種,而且完全由6B部分收到的編碼確定。所以4B部分僅負責檢測錯誤,而不需要確定是否為控制字。在確認是控制字的前提下有3種編碼是錯誤碼字(即K.28.1,K.28.2和 K.28.6),具體情況如表 2 所示。如果是數據字對于這3種情況,則不受約束,不需要報錯。

表2 4B碼字錯誤情況

1.1.4 極性錯誤檢測

極性錯誤在8B/10B編碼中有很多種情況,可以由圖2狀態圖來判斷。其中A判斷分兩種情況:1)當4B-或6B-時檢測出極性錯誤;2)當4B或6B為平衡時不報錯。同理B判斷也分兩種情況:1)當4B+或6B+時檢測出極性錯誤;2)當4B或6B為平衡時不報錯。

圖2 極性錯誤檢測狀態圖

可以發現,這樣的判斷方法非常復雜,對一組編碼需要先對6B部分判斷,再對4B部分判斷,才能得出準確的結果,這樣至少要2次狀態判斷和轉換。所以本設計利用了極性檢測模塊得到的4個信號,分析了所有可能情況,列出了如表3所示的真值表來進行極性錯誤檢測和生成新極性。其中last信號即存儲的極性,1代表正,0代表負,復位時默認置為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]中的有限狀態機方法,將last信息作為判斷條件,對極性錯誤進行檢測、對新極性進行存儲。這樣的檢錯、更新方法有以下優勢:1)節省了存儲器資源,綜合表明只需要2個觸發器就可以完成以上功能;2)邏輯判斷能夠并行進行而不需要先對6B判斷再對4B判斷,縮短了時間;3)邏輯表達式簡潔,充分利用了已有信號,縮小了設計面積;4)極性檢錯和極性計算并行進行相互不依賴,減小了復雜度。

同時,這樣的極性錯誤檢測不同于Actel[2]解碼器設計采用8個信號共同來判斷極性錯誤,而是選擇了之前極性檢測模塊計算出來的4個信號結合存儲器中的極性信息來判斷是否出錯,在面積上更有優勢。

1.2 解碼器部分

解碼部分分為兩部分6B/5B和4B/3B,結構圖如圖1所示。不同于Actel[2]文中所描述的CASE描述方法,也不同于IBM[1]中的純邏輯方法。本設計分別引入了6B和4B模塊的極性正信息,讀入的數據先根據極性正信息對碼字進行反轉,即通過異或邏輯,當極性正信號為1時對相應輸入的編碼進行反轉。這樣,在解碼表只需要涉及極性為負和平衡的情況。

對于6B解碼表由原來的48種情況減少為34種(如表4所示);對于4B解碼表,由于其解碼需考慮K Bit的情況,由原來的28種情況減少為16種(如表5所示)。這里需要強調的是4B解碼部分,不同于6B解碼,4B解碼還需要控制字信息。這是因為對于控制字K.28來說,為了防止整個10B編碼出現連續5個0或1,就要根據情況選擇不同的3B編碼。所以在解碼過程中要考慮到這一點,增加了K位作為解碼條件之一,K位即為控制字位,由控制字檢測電路產生。最后通過化簡的真值表進行邏輯化簡,得到表達式用以解碼。

這樣的設計優勢有以下幾點:1)通過極性信號對編碼反轉簡化了解碼表;2)由于有專門的錯誤碼字檢測,所以碼表中去除了錯誤碼字,進一步縮小解碼表;3)解碼只需要極性信息,所以在解碼同時預處理模塊也在對輸入碼字檢錯,二者并行執行;4)上文提到的快速的極性信息計算,保證了解碼模塊第一時間得到正確的極性信息,縮短了解碼所需時間;5)對更小的碼表進行邏輯化簡,這樣得到的表達式邏輯層次少,運行速度快,并且面積較小。

表4 6B解碼表

表5 4B解碼表

其中4B部分的解碼邏輯表達式如下,可以發現邏輯層數不超過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)。

2 仿真及結果

本文設計的解碼器,用Verilog語言進行了實現,并用ModelSim進行仿真,用Synopsys Design Compiler進行了綜合。

圖3所示為解碼器RTL代碼的ModelSim仿真結果。其中num_5B_in和num_3B_in為輸入理想編碼器的待編碼信息,num_5B_out和num_3B_out為解碼器輸出,K_bit為解碼器控制字輸出信號,RD_err為解碼器極性錯誤輸出信號,NIT_err為解碼器錯誤碼字輸出信號。從輸入到輸出只有一個周期的時鐘延時,整個解碼過程在一個時鐘周期內完成。對比編碼前和解碼后數據發現是完全一致的,表明解碼電路的功能是完全正確的。

圖3 解碼器仿真圖(截圖)

通過Synopsys Design Compiler對本設計和文獻提供的設計分別進行了綜合,采用的是SMIC180工藝庫,使用了相同的約束條件和導線模式。表6所示的是綜合結果,主要比較了三項指標。相較于Actel方法,新設計在頻率上有11%的減少,但是在面積上,無論是單元面積還是總面積都減少了近50%。相較于IBM方法,新設計在頻率上有近25%的提升,在單元面積上幾乎相同,在總面積上減少了7%,表明本設計有一定優越性。

表6 綜合具體結果比較

3 結論

通過分析JESD204B協議中編碼規則和編碼數據內在相關性的基礎上,首先構建了快速的極性信息檢測和極性錯誤檢測;再在解碼部分使用了極性信息來對數據進行預處理使得解碼表簡化,并根據簡化的解碼表采用邏輯關系進行解碼。本設計與已有設計相比更加實用,在工作頻率和面積上有一定優勢,符合數據轉換器和邏輯器件內部高速互連的技術要求。

:

[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編碼器的設計與實現[J].電視技術,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.

猜你喜歡
解碼器碼字極性
科學解碼器(一)
科學解碼器(二)
科學解碼器(三)
線圣AudioQuest 發布第三代Dragonfly Cobalt藍蜻蜓解碼器
跟蹤導練(四)
放 下
數據鏈系統中軟擴頻碼的優選及應用
放下
香椿子不同極性部位對糖尿病周圍神經病變的保護作用
表用無極性RS485應用技術探討
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合