高速序列匯流排系列(1)8B 10B編碼技術

2021-10-08 16:31:06 字數 4362 閱讀 1544

目錄

8b/10b編碼

5b/6b 編碼表

3b/4b 編碼表

控制字元編碼表

8b/10b編碼的利用率

參考文獻

為什麼要使用8b/10b編碼?

8b/10b編碼的特性之一是保證dc 平衡,採用8b/10b編碼方式,可使得傳送的「0」、「1」數量保持基本一致,連續的「1」或「0」不超過5位,即每5個連續的「1」或「0」後必須插入一位「0」或「1」,從而保證訊號dc平衡,它就是說,在鏈路超時時不致發生dc失調。通過8b/10b編碼,可以保證傳輸的資料串在接收端能夠被正確復原,除此之外,利用一些特殊的**( 在pci-express匯流排中為k碼) ,可以幫助接收端進行還原的工作,並且可以在早期發現資料位的傳輸錯誤,抑制錯誤繼續發生。

8b/10b編碼是目前許多高速序列匯流排採用的編碼機制,如 usb3.0、1394b、serial ata、pci express、infini-band、fiber channel、rapidio等匯流排或網路等。

8b/10b編碼是目前高速序列通訊中經常用到的一種編碼方式。直觀的理解就是把8bit資料編碼成10bit來傳輸,為什麼要引入這種機制呢?其根本目的是「直流平衡(dc balance)」。當高速序列流的邏輯1或邏輯0有多個位沒有產生變化時,訊號的轉換就會因為電壓位階的關係而造成訊號錯誤,直流平衡的最大好處便是可以克服以上問題。

將8bit編碼成10bit後,10b中0和1的位數只可能出現3種情況:

1.有5個0和5個1

2.有6個0和4個1

3.有4個0和6個1

這樣引出了乙個新術語「不均等性(disparity)」,就是1的位數和0的位數的差值,根據上面3種情況就有對應的3個disparity 0、-2、+2。

8b/10b編碼的原理:

8bit原始資料會分成兩部分,其低5位進行5b/6b編碼,高3位則進行3b/4b編碼,這兩種對映關係在當時已經成為了乙個標準化的**。人們喜歡把8bit資料表示成dxx.y的形式,其中x=5lsb,y=3msb。

其中d表示待編碼的字元為正常資料,還存在kxx.y的形式,這裡的k表示控制字元。

例如乙個8bit資料101 10101,x=10101(十進位制為21) y=101(十進位制為5),現在我們就把這8bit資料寫成d21.5,明白了吧!

對於8bit資料,它在表中的位序為hgfedcba,即h為最高位,a為最低位,edcba經過5b/6b編碼為abcdei,hgf經過3b/4b編碼為fghj。傳送10bit編碼的順序為abcdeifghi。

8b/10b編碼由低5位進行5b/6b編碼,高3位則進行3b/4b編碼實現,二者都是通過lut的方式實現。在lut中,除了原始的8位輸入資料,編碼後10位輸出資料,還有乙個編碼極性rd(running disparity),下面會給出二者的編碼表:

input

rd = −1

rd = +1

input

rd = −1

rd = +1

edcba

abcdei

edcba

abcdei

d000000

100111

011000

d1610000

011011

100100

d100001

011101

100010

d1710001

100011

d200010

101101

010010

d1810010

010011

d300011

110001

d1910011

110010

d400100

110101

001010

d2010100

001011

d500101

101001

d2110101

101010

d600110

011001

d2210110

011010

d700111

111000

000111

d2310111

111010

000101

d801000

111001

000110

d2411000

110011

001100

d901001

100101

d2511001

100110

d1001010

010101

d2611010

010110

d1101011

110100

d2711011

110110

001001

d1201100

001101

d2811100

001110

d1301101

101100

d2911101

101110

010001

d1401110

011100

d3011110

011110

100001

d1501111

010111

101000

d3111111

101011

010100

input

rd = −1

rd = +1

hgffghj

d.x.0

0001011

0100

d.x.1

0011001

d.x.2

0100101

d.x.3

0111100

0011

d.x.4

1001101

0010

d.x.5

1011010

d.x.6

1100110

d.x.p7

1111110

0001

d.x.a7

1110111

1000

在8b/10b編碼中,還會用到12個特殊的k字元,k字元及其組合方式通常用於表示資料幀的sof(起始位)/eof(結束位)/idle(空閒位)等特殊資訊。

input

rd = −1

rd = +1

hgf edcba

abcdei fghj

abcdei fghj

k.28.0

000 11100

001111 0100

110000 1011

k.28.1

001 11100

001111 1001

110000 0110

k.28.2 

010 11100

001111 0101

110000 1010

k.28.3 

011 11100

001111 0011

110000 1100

k.28.4 

100 11100

001111 0010

110000 1101

k.28.5

101 11100

001111 1010

110000 0101

k.28.6 

110 11100

001111 0110

110000 1001

k.28.7

111 11100

001111 1000

110000 0111

k.23.7 

111 10111

111010 1000

000101 0111

k.27.7 

111 11011

110110 1000

001001 0111

k.29.7 

111 11101

101110 1000

010001 0111

k.30.7 

111 11110

011110 1000

100001 0111

由於採用8b/10b編碼帶來了2個位寬的開銷,所以導致頻寬利用率只有原來的80%,如srio協議3.125gbps頻寬,其有效的頻寬利用率只有3.125*0.8 = 2.5gbps,所以序列匯流排在提高頻寬的同時,頻寬利用率也必須提高,因此誕生了64b/66b、128b/130b等編碼方式,原理和8b/10b編碼相同,但是頻寬利用率提高了。

嵌入式高速序列匯流排技術

參考鏈結1

參考鏈結2

參考鏈結3

參考鏈結4

目錄

高速序列匯流排系列(2)高速序列匯流排技術總覽

srio serial rapidio 是一種低延時 基於包交換和分發結構的 支援訊息和讀寫操作的 具有容錯機制和流量控制的 高效率低功耗 可支援數千個節點的新型匯流排結構。srio匯流排的定位是針對嵌入式系統多處理器間的互連。jesd204匯流排是面向dac adc的序列通訊匯流排結構。jesd2...

演算法馬拉松18 B 非010串

acm模版 這道題一開始一看,覺得是dp,後來發現資料太大,dp要死人的,於是想到了矩陣快速冪,在網上看到有人說可以dp,不懂他是怎麼做的,但是感覺一定會超時啊 這裡首先我們需要找到遞推式 01 an 10 bn 00 cn 11 dn 由此可以推出 an 1 bn cn bn 1 dn 因為需要排...

51Nod演算法馬拉松18 B 非010串

如果乙個01字串滿足不存在010這樣的子串,那麼稱它為非010串。求長度為n的非010串的個數。對1e9 7取模 最喜歡簽到題了。設f i j 表示到第i個點,末尾的狀態是j 01,00,10,11四個狀態 轉移很顯然。然後在轉成矩陣乘法就好了。include include include inc...