高速串行接口的編碼技術(shù)
編碼技術(shù)基礎(chǔ)理論
目前,高速接口正在被廣泛應(yīng)用于包括SATA、SAS、高速PCI等多種標(biāo)準(zhǔn)中。這些接口的速率甚至可以達(dá)到并超過每線10Gbits/s。同時(shí),所有主流ASIC和FPGA平臺(tái)也都支持這些高速接口技術(shù)。從結(jié)構(gòu)上看,這些高速接口主要包括三個(gè)組成部分:
電路部分(串行/解串行)
物理部分(實(shí)現(xiàn)編碼)
鏈路與協(xié)議部分(高層)
支持多速率、多協(xié)議的串行/解串行器已經(jīng)實(shí)現(xiàn)。以O(shè)IF(光互聯(lián)論壇)為例,他們已經(jīng)為兩組速率制定了電路規(guī)范,分別為5Gbits/s-6.375Gbits/s和10Gbits/s-11Gbits/s。OIF同樣為兩種應(yīng)用距離制定了規(guī)范,分別為短距離(采用一個(gè)連接器,8英寸)和長距離(采用兩個(gè)連接器,40英寸)。串行/解串行器還可以被設(shè)計(jì)用來滿足更多的規(guī)范,包括不同的速率、距離、電路規(guī)格等等。
物理部分的主要任務(wù)是對(duì)數(shù)據(jù)進(jìn)行編碼,以保證串行/解串行器的正常運(yùn)行。這些編碼的目的包括:確保必須的變換(“1”到“0”和“0”到“1”的變換),保證穩(wěn)定的直流均衡(“0”碼與“1”碼的個(gè)數(shù)相當(dāng)),以及滿足其它標(biāo)準(zhǔn)的要求(最大化信道帶寬利用率,提高對(duì)誤差的容忍能力等等)。
以MancheSTer編碼為例,這種編碼技術(shù)被廣泛應(yīng)用于10Mbit/s以太網(wǎng)連接中。它的編碼方式非常簡(jiǎn)單,就是將“1”編碼為“01”,將“0”編碼為“10”。從編碼原理我們可以推斷出:
最大相同連續(xù)字符數(shù)為2(正常情況下連續(xù)出現(xiàn)兩個(gè)以上連續(xù)“0”或“1”是不可能的)。
保證穩(wěn)定的直流均衡(“0”的個(gè)數(shù)與“1”的個(gè)數(shù)總是相同的)。
具備1bit誤碼糾錯(cuò)能力(“00”或者“11”是無效碼)。
高達(dá)100%的系統(tǒng)開銷。
擾碼技術(shù)是串行鏈路常用的另一種編碼技術(shù)。這種技術(shù)將偽隨機(jī)序列與原始碼流混合,以實(shí)現(xiàn)轉(zhuǎn)換、直流均衡等目的。偽隨機(jī)發(fā)生器由線性反饋移位寄存器產(chǎn)生的最長序列(m序列)構(gòu)成1。此序列的周期為2n,其中n為線性反饋移位寄存器特征多項(xiàng)式的最高階。例如SONET/SDH的特征多項(xiàng)式為x7+x6+1,它的序列長度為27-1,即127。
擾碼器包括兩種類型,分別為邊擾碼器與自同步擾碼器。通常,邊擾碼器的寄存器狀態(tài)與發(fā)送數(shù)據(jù)異或構(gòu)成它的下一個(gè)狀態(tài),這需要在輸入與輸出之間“重置/同步”擾碼器狀態(tài)。自同步擾碼器直接將輸入數(shù)據(jù)作為擾碼器狀態(tài),不需要重置和同步過程。
8B10B編碼技術(shù)
8B10B是應(yīng)用最廣泛的編碼技術(shù)。它被用于串行連接SCSI、串行ATA、光纖鏈路、吉比特以太網(wǎng)、XAUI(10吉比特接口)、PCI Express總線、InfiniBand、Seria RapidIO、HyperTransport總線以及IEEE1394b接口(火線)技術(shù)中。
8B10B2將8bit代碼組合編碼成10bit代碼,代碼組合包括256個(gè)數(shù)據(jù)字符編碼和12個(gè)控制字符編碼(如表1所示)。通過仔細(xì)選擇編碼方法可以獲得不同的優(yōu)化特性。這些特性包括滿足串行/解串行器功能必須的變換;確?!?”碼元與“1”碼元個(gè)數(shù)的一致,又稱為直流均衡;確保字節(jié)同步易于實(shí)現(xiàn)(在一個(gè)比特流中找到字節(jié)的起始位);以及對(duì)誤碼率有足夠的容忍能力和降低設(shè)計(jì)復(fù)雜度。
8B10B中所有的編碼都具備3到10種變換。每個(gè)碼字確保:
在一行中不會(huì)產(chǎn)生超過四個(gè)連“1”或連“0”;
“1”與“0”的不平衡度(不平衡度指“0”的個(gè)數(shù)減去“1”的個(gè)數(shù))不會(huì)超過2個(gè)碼字(5個(gè)“1”/5個(gè)“0”,4個(gè)“1”/6個(gè)“0”或4個(gè)“0”/6個(gè)“1”)。
8B10B采用一種簡(jiǎn)單的方法保證了編碼的直流平衡。在不平衡時(shí),采用兩個(gè)10bit字符表示一個(gè)8bit字符,其中一個(gè)稱為RD-,表示“1”的個(gè)數(shù)比“0”多2個(gè),另一個(gè)稱為RD+,表示“1”的個(gè)數(shù)比“0”少2個(gè)。選取合適的RD字符可以保證不平衡度不大于1。同時(shí),采用只有在控制字符(K28.5,K28.1,K28.7)中才有的特殊字符可以保證同步定位的準(zhǔn)確。
8B10B借助總共268個(gè)字符及它們的反轉(zhuǎn)碼,還可以檢測(cè)任何可能破壞不平衡的誤碼。但是,即使接收機(jī)接收到了正確的碼字,有時(shí)它們也有可能因?yàn)椴黄胶庑远鴮?dǎo)致誤碼,這種現(xiàn)象被稱為誤碼復(fù)制。8B10B編碼技術(shù)將8bit數(shù)據(jù)分成3bit和5bit兩組,因此可以看作是3B4B和5B6B編碼技術(shù)的組合。
改進(jìn)傳統(tǒng)8B10B編碼技術(shù)的一種方法是,在編碼之前增加擾碼過程。有證據(jù)證明,特殊的模式3或差分群時(shí)延可能會(huì)導(dǎo)致重復(fù)模式產(chǎn)生不可預(yù)測(cè)的誤碼。解決這個(gè)問題最直接的辦法就是在編碼之前對(duì)數(shù)據(jù)進(jìn)行擾碼。
以上這些特點(diǎn)保證了8B10B編碼成為使用最廣泛的編碼技術(shù)。它最主要的缺點(diǎn)只有一個(gè),就是高達(dá)25%的系統(tǒng)開銷。
低開銷編碼
最近,人們提出了幾種降低8B10B編碼技術(shù)系統(tǒng)開銷的改進(jìn)方法。這些改進(jìn)主要基于以下兩個(gè)基礎(chǔ):一是隨著鏈路速率與數(shù)量的增加,25%系統(tǒng)開銷的問題顯得越來越突出;二是集成技術(shù)的進(jìn)步,使得硬件復(fù)雜度不再像過去那樣重要。
在這些低開銷的改進(jìn)技術(shù)中,有四個(gè)非常相似的技術(shù)脫穎而出,受到人們的廣泛關(guān)注:
64B66B編碼技術(shù),應(yīng)用于10G以太網(wǎng)4;
OIF CEIP5;
10GBase-KR6,應(yīng)用于10GbE背板連接;
Interlaken7。
這些技術(shù)的共同點(diǎn)是,都以提高硬件設(shè)計(jì)復(fù)雜度(門數(shù)目)為代價(jià),換取了較低的系統(tǒng)開銷。
64B66B編碼技術(shù)。這種技術(shù)應(yīng)用于10G以太網(wǎng)(10GBase-R),是一種編碼與擾碼相結(jié)合的技術(shù)。首先,數(shù)據(jù)被分成8個(gè)字節(jié)一組(總共64比特)。然后,這些字節(jié)采用自同步擾碼實(shí)現(xiàn)隨機(jī)化,其特征多項(xiàng)式為x58+x39+1。最后,如果這些8字節(jié)組是數(shù)據(jù)字符,那么會(huì)加上“01”標(biāo)識(shí);如果有一個(gè)或多個(gè)字節(jié)是控制字符,那么就會(huì)加上“10”標(biāo)識(shí)。
表1. 主要標(biāo)準(zhǔn)中的控制碼字使用
在此編碼技術(shù)中,將8個(gè)字節(jié)的字符(由8B10B編碼定義,可能是數(shù)據(jù)或控制字符)編碼為64比特長字符的過程通常被稱為轉(zhuǎn)換代碼。GFP-T8為組合8B10B的8比特為64比特字符提供了標(biāo)準(zhǔn)方法。而10GbE為10G以太網(wǎng)和10Gbit/s光纖鏈路提供了相關(guān)子集的映射表。用于同步定位的“01”和“10”比特不參與擾碼過程。這是因?yàn)槠渌忍卦跀_碼后可能取任何值,只有同步比特“01”和“10”在經(jīng)歷長途傳輸后基本保持不變。同步比特還可以保證每隔66比特至少會(huì)發(fā)生一次轉(zhuǎn)換。
CEI-P編碼技術(shù)。這種技術(shù)由OIF定義。它的系統(tǒng)開銷與64B66B編碼相等,大約為3%。當(dāng)然,它還有很多不同之處。
CEI-P采用邊擾碼,特征多項(xiàng)式為x17+x14+1。這樣做的優(yōu)點(diǎn)是可以有效防止誤碼復(fù)制的產(chǎn)生(擾碼的狀態(tài)不會(huì)受之前產(chǎn)生的誤碼影響),缺點(diǎn)是需要在發(fā)送與接收之間同步擾碼狀態(tài)。
當(dāng)邊擾碼與線路誤碼無關(guān)時(shí),如果發(fā)送數(shù)據(jù)與擾碼值相同(或恰好相反),那么擾碼器會(huì)輸出非常長的“1”或“0”序列。而這種非常長的擾碼輸出序列比短的序列對(duì)誤碼的容忍能力更強(qiáng)。
CEI-P編碼采用幀同步取代定位同步。64B66B采用同步比特實(shí)現(xiàn)定位,而CEI-P將24個(gè)64比特碼字看作一幀,這樣用1個(gè)比特就可以實(shí)現(xiàn)數(shù)據(jù)或控制字符的判定。附加的24比特用于誤碼校驗(yàn)與信令。其中誤碼校驗(yàn)使用20比特,采用fire-code技術(shù),可以糾正長達(dá)7比特的突發(fā)誤碼串。
10GBase-KR編碼技術(shù)。這種技術(shù)的系統(tǒng)開銷與CEI-P一致,都是3%,主要的不同在于幀的長度是32個(gè)碼字,而不是24個(gè)碼字。這樣一來糾錯(cuò)碼長度就是32比特,可以糾正比CEI-P更長的突發(fā)誤碼串。而它采用的擾碼規(guī)則與10GbE相似。只不過它的擾碼多項(xiàng)式與10GBase-R一致,寄存器采用的初始序列為“010101……”,而且每一幀重置一次。
Interlaken PHY編碼技術(shù)。Interlaken編碼技術(shù)的系統(tǒng)開銷為4.5%(64/67)。它的碼字基于64比特。與其它低開銷編碼技術(shù)相比,Interlaken的主要不同之處在于:
同步信號(hào)為3個(gè)比特,其中兩個(gè)比特用于區(qū)分?jǐn)?shù)據(jù)與控制,一個(gè)比特用于標(biāo)識(shí)數(shù)據(jù)是否轉(zhuǎn)化。數(shù)據(jù)轉(zhuǎn)化比特的目的與8B10B類似,都是為了保證直流平衡;
Interlaken采用與10GbE相同的邊擾碼特征多項(xiàng)式實(shí)現(xiàn)擾碼。這樣可以避免因采用自同步擾碼器所導(dǎo)致的誤碼復(fù)制問題。一個(gè)同步碼字用于傳遞擾碼器狀態(tài),而且它非常長的擾碼長度保證不會(huì)出現(xiàn)很長的連“0”或者連“1”;
表2. 編碼技術(shù)的對(duì)比
整個(gè)鏈路采用CRC32循環(huán)冗余校驗(yàn)方式保證誤碼校驗(yàn)。
表2對(duì)比了以上討論的幾種編碼技術(shù)的異同,主要包括以下幾點(diǎn):
實(shí)際采用情況;
系統(tǒng)開銷;
轉(zhuǎn)換密度與直流平衡;
同步定位;
誤碼(保護(hù)、校驗(yàn)、復(fù)制);
硬件復(fù)雜度(門數(shù)目)。
雖然8B10B編碼行之有效,而且被廣泛采用,但是它高達(dá)25%系統(tǒng)開銷的缺點(diǎn)在未來數(shù)百吉比特鏈路與系統(tǒng)應(yīng)用中顯得越來越突出?,F(xiàn)在已經(jīng)有若干種低開銷的編碼技術(shù),它們具備不同的優(yōu)勢(shì)與缺點(diǎn)。但是到目前為止,還沒有哪種低開銷技術(shù)能夠脫穎而出,成為繼8B10B之后被廣泛采用的首選技術(shù)。不過,本文所提到的幾種技術(shù)都以提高硬件復(fù)雜度為代價(jià),以滿足低開銷的要求。
評(píng)論