摘要:64B/66B編碼技術(shù)是IEEE 802.3工作組為10G以太網(wǎng)提出的,目的是減少編碼開銷,降低硬件的復(fù)雜性,并作為8B/10B編碼的另一種選擇,以支持新的程序和數(shù)據(jù)。在本篇文章中,我將從它的提出背景、編碼格式、編碼原理、和8B/10B比較它的優(yōu)缺點等方面和大家分享一下,在學(xué)習(xí)過程中有關(guān)64B/66B編碼的心得筆記。
關(guān)鍵字:8B/10B,64B/66B,編碼,擾碼
1、??引言
①??經(jīng)過之前的學(xué)習(xí),我們知道,8b/10b編碼最初由IBM公司于1983年發(fā)明,并應(yīng)用于ESCON(200M互連系統(tǒng))的一種編碼方式。8B/10B編碼不只應(yīng)用于光纖通道,目前在許多高速串行總線。
我們知道的8b/10b編碼的特性之一是保證DC 平衡。
采用8b/10b編碼方式,可使得發(fā)送的“0”、“1”數(shù)量保持基本一致,連續(xù)的“1”或“0”不超過5位,即每5個連續(xù)的“1”或“0”后必須插入一位“0”或“1”,從而保證信號DC平衡,也就是說,在鏈路超時時不致發(fā)生DC失調(diào)。
通過8b/10b編碼,可以保證傳輸?shù)臄?shù)據(jù)串在接收端能夠被正確復(fù)原,除此之外,利用一些特殊的代碼( 在PCI-Express總線中為K碼) ,可以幫助接收端進(jìn)行還原的工作,并且可以在早期發(fā)現(xiàn)數(shù)據(jù)位的傳輸錯誤,抑制錯誤繼續(xù)發(fā)生。
然而,將原本8位的字節(jié)用10位來表示,會使8B/10B編碼的開銷太大,帶寬利用率并不高。
于是,就有了一系列的優(yōu)化編碼方式,其中64B/66B就是其中的一種。
②? 64B/66B編碼技術(shù)是IEEE802.3工作組為10G以太網(wǎng)提出的,目的是減少編碼開銷,降低硬件的復(fù)雜性,并作為8B/10B編碼的另一種選擇,以支持新的程序和數(shù)據(jù)。它并不是真正的編碼,而是一種基于擾碼機制編解碼方式,這種編碼方式,是IEEE推薦的10G通信的標(biāo)準(zhǔn)編碼方式。
當(dāng)前,64B/66B編碼主要應(yīng)用于FiberChannel 10GFC和16GFC、10G以太網(wǎng)、100G以太網(wǎng)、10G EPON、InfiniBand、Thunderbolt和Xilinx的Aurora協(xié)議。
2、??64B/66B編碼技術(shù)
64B/66B編碼將64bit“數(shù)據(jù)或控制信息”編碼成66bit塊來進(jìn)行傳輸,這66bit中,前兩位表示同步頭(2bit Sync Header),主要用于接收端的數(shù)據(jù)對齊和接收數(shù)據(jù)位流的同步。
00??????編碼錯誤
01??????64 bit = 純數(shù)據(jù)
10??????64 bit = 混合的數(shù)據(jù)/控制信息
11??????編碼錯誤
也就是說,在沒有發(fā)生錯誤的情況下,每66位的數(shù)據(jù),就會出現(xiàn)至少一個“01”或者“10”的轉(zhuǎn)換。
同步頭有“01”和“10”兩種:
“01“表示后面的64bit都是數(shù)據(jù)。
“10”表示后面的64bit是數(shù)據(jù)和控制信息的混合,其中緊挨著同步頭的8b是類型域,后面的56bit是控制信息或者數(shù)據(jù)或者兩者的混合。
①??對于純數(shù)據(jù)Pure data
同步頭:01,后面的信息:8*8=64bit數(shù)據(jù)
②??對對于純控制Pure Control (Type = 0x1E)
同步頭:10,后面的信息:8bit類型表示+7*8控制信息
③??對于數(shù)據(jù)和控制信息的混合
同步頭:10,后面的信息:數(shù)據(jù)信息和控制信息的混合。
64B/66B編碼格式圖如下圖所示:
其中,D表示數(shù)據(jù)編碼,每個數(shù)據(jù)碼8bit;Z表示控制碼,每個控制碼7bit;S表示包的開始,T表示包的結(jié)束。S只會出現(xiàn)在8字節(jié)中的第0和第4字節(jié),T能夠出現(xiàn)在任意的字節(jié)。
下面我們一起來看一個簡單的例子,這個例子將幫助我們更好地理解數(shù)據(jù)幀和控制幀。
一個18 bytes的數(shù)據(jù)塊的傳輸過程如下圖所示:
這過程是怎么樣的呢?我們一起來看一下,從圖中我們可以直觀的看到,在數(shù)據(jù)的傳輸過程中,我們需要用到兩個控制幀,一個是開始部分的控制幀,用來告訴接收方這是某一個數(shù)據(jù)塊的開始,還要有的是一個用來表示結(jié)束的控制幀,告訴接收方該數(shù)據(jù)塊到此結(jié)束。
從圖中我們可以知道,在開始和結(jié)束的控制幀之外,為純數(shù)幀,一個純數(shù)據(jù)幀,他能表示64bit的數(shù)據(jù)。不管是數(shù)據(jù)幀還是控制幀,每隔64bit,就會插入一個01或者10序列來分隔,我們還知道,他的DC平衡并不是由這兩位01.10來完成的,相對于64bit這么大的數(shù)據(jù)塊,10和01的平衡能力微乎其微,在學(xué)習(xí)的過程中,我們知道他用到的是擾碼技術(shù),這是我們下一個模塊要講述的內(nèi)容。
3、??擾碼傳輸技術(shù)
上面我們提到,除同步碼外,64bit的數(shù)據(jù)必須經(jīng)過擾碼以后才能進(jìn)行傳輸,在引言部分我們說過,64B/66B并不是真正的編碼,而是一種基于擾碼機制編解碼方式。
我們知道8B/10B編碼通過優(yōu)化直流平衡,從8bit中插2個bit進(jìn)去,這樣能夠使長0或者長1的位數(shù)不超過5位,達(dá)到很好的效果。那64B/66B編碼方式呢?在從64個bit中僅加入2個bit,能夠很好的解決長0長1的問題嗎?作用似乎只是杯水車薪,2個bit相對于64個bit太少了。
當(dāng)然,如果僅靠這2個bit來實現(xiàn)8B/10B的作用顯然不太現(xiàn)實。其實上,這兩個bit只是起一個同步頭的作用,主要用于接收端的數(shù)據(jù)對齊和接收數(shù)據(jù)位流的同步。
那按照上面說的,新加的2個bit只是作為同步,那后面的數(shù)據(jù)可以如何優(yōu)化呢?這里有一項區(qū)別于8B/10B編碼的技術(shù)——擾碼。
為此,我又去查資料看了一下,有關(guān)擾碼的相關(guān)知識。
通過查資料我知道,擾一種將數(shù)據(jù)重新排列或者進(jìn)行編碼以使其最優(yōu)化的方法,他的作用是對數(shù)字信號的比特級進(jìn)行隨機處理,減少連0和連1的出現(xiàn),從而減少碼間干擾和抖動,方便接收端的時鐘提??;同時又?jǐn)U展了基帶信號頻譜,起到加密的效果。
為了保證在任何情況下進(jìn)入傳輸信道的數(shù)據(jù)碼流中“0”與“1”的概率都能基本相等,傳輸系統(tǒng)會用一個偽隨機序列對輸入的傳送碼流進(jìn)行擾亂處理,將二進(jìn)制數(shù)字信息做“隨機化”處理,變?yōu)閭坞S機序列,也能限制連“0”碼或連“1”碼的長度,這種“隨機化”處理通常稱為“擾碼”。
擾亂雖然改變了原始傳送碼流,但這種擾亂是有規(guī)律的,因而也是可以解除的,在接收端解除這種擾亂的過程稱為解擾。完成擾碼和解擾的電路相應(yīng)稱為擾碼器和解擾器。
64B/66B自同步擾碼實現(xiàn)隨機化,編碼所使用的擾碼器為: X58+X39+1
擾碼的數(shù)學(xué)原理使用了多項式,多項式的選擇通常是基于擾碼的特性,包括生成數(shù)據(jù)的隨機度,以及打亂連0和連1的能力。一個簡單的擾碼器包含一組排列好的觸發(fā)器,用于移位數(shù)據(jù)流。大部分的觸發(fā)器只需要簡單地輸出下一個比特流即可,但是在復(fù)雜的擾碼電路中,觸發(fā)器需要與數(shù)據(jù)流中的歷史比特進(jìn)行邏輯運算(與和或運算)。基本的擾碼電路如下所示:
第39和第58位的異或運算,然后通過移位寄存器輸出的碼型結(jié)果。這是一個需要大量計算的過程,但對于我們的計算機來說,僅僅是異或和移位的操作是比較簡單的,他可以很快就完成。
他的計算原理,我們通過一個簡單的表達(dá)式的例子來講解:X3+X2+1。
首先我們有一個初始狀態(tài)“111”。我們就有了下面這么一個計算過程(畫得不好,大家看內(nèi)容就好)。簡單說明一下,紅色為異或運算過程,藍(lán)色為每次移位后的bit,綠色為輸出的數(shù)據(jù)bit,紫色說明繞一圈之后又回到了原先,循環(huán)了一次。
具體的計算過程,如下圖,我們一起來看一下圖。
這是一個初始一直是111的例子,也就是說,我們的輸入一直都是111.觀察最終的輸出結(jié)果我們可以看出,他得到了0,不再是全是1。
4、??編碼過程
關(guān)于編碼過程,我們先一起來看一個圖:
圖中的CGMII是物理編碼子層,output of ?encoder function為編碼器的輸出結(jié)果,outputof scrambler function為擾碼器的輸出結(jié)果,transmit block為傳輸塊,Gearbox為變速箱。
我們一起來看一下這個過程,我們一些數(shù)據(jù)塊要傳輸,假設(shè)說從物理編碼子層傳來的這兩個塊每個是32bit,加在一起才有64bit,經(jīng)過encoder編碼器進(jìn)行編碼,得到編碼后的數(shù)據(jù)D0-D7,生成同步頭01或者10,然后不含同步頭的D0-D7,經(jīng)過擾碼器,得到表達(dá)式X58+X39+1擾碼后的數(shù)據(jù)S0-S7。
在之后,將同步頭和擾碼后的數(shù)據(jù)S0-S7合并,生成一個傳輸塊,將這個傳輸塊經(jīng)過GearBox處理后,完成編碼。
5、??8B/10B、64B/66B簡單比較
這里,我們一起來看一個比較的圖:
在圖中,我們分別從他們之中的連續(xù)的0和連續(xù)的1的個數(shù)、DC平衡能力、位同步時鐘恢復(fù)能力,字同步能力控制塊等方面進(jìn)行了比較。
經(jīng)過對比分析我們可以得知,8B/10B編碼的連續(xù)0或者連續(xù)1的最大長度是5;8B/10B編碼他有良好的DC平衡能力和位同步恢復(fù)能力,而64B/66B的這些能力都和擾碼器有關(guān),或者說他都決定于擾碼所用的表達(dá)式。對于字同步,8B/10B編碼有他自己的K碼,而64B/66B編碼用的是兩位表示的同步頭。對于控制碼,8B/10B編碼也是使用K碼,而64B/66B編碼用的是同步頭為10 的控制碼。
6、??結(jié)束語
64B/66B編碼的這種擾碼方式目標(biāo)是使數(shù)據(jù)的“0”和“1”最大程度的隨機分布,減小連續(xù)出現(xiàn)的情況,因此它可能并不能適用于所有的碼型,不像8B/10B編碼一樣對所有的bit組合都有出色的表現(xiàn),具體還要看擾碼器接收器的能力。但是無可否認(rèn),它最大的好處是效率比較高,傳輸冗余的bit只有2位,開銷大約只有3%,不像8B/10B編碼需要20%的開銷,這方面在更高速的傳輸環(huán)境下更具有優(yōu)勢。
參考資料:
【1】??????存儲技術(shù)基礎(chǔ)?西安電子科技大學(xué)出版社劉凱 劉博 編著。
【2】??????百度百科64B/66B編碼8B/10B編碼
【3】??????CSDN博客 線路/信道編碼技術(shù)(2)——64B/66B編碼
編輯:黃飛
?
評論
查看更多