0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一文詳解8b/10b編碼

EtonSmt888 ? 來源:硬件測(cè)試雜談 ? 作者:硬件測(cè)試雜談 ? 2022-11-12 15:47 ? 次閱讀

1. 什么是8b/10b編碼?

8b/10b最常見的是應(yīng)用于光纖通訊和LVDS信號(hào)的。由于光模塊光模塊只能發(fā)送亮或者不亮,也就是0或者1這兩種狀態(tài)這種單極性碼,那么這會(huì)存在一個(gè)問題,如果傳輸中出現(xiàn)較長(zhǎng)的連0或者連1(例如111111100000000),那么接收端將沒有辦法正確的采樣識(shí)別信號(hào),另外還會(huì)由于單極性碼含有直流分量,這種直流成分會(huì)隨數(shù)據(jù)中1和0的隨機(jī)變化也呈現(xiàn)隨機(jī)性,這會(huì)引起接收端的基線漂移導(dǎo)致接收端誤判。LVDS信號(hào)一樣會(huì)存在這個(gè)問題,隨著線路上的信號(hào)頻率越來越高,如果線路上的0和1數(shù)量不均衡(直流不平衡)那么線路上的基電壓會(huì)出現(xiàn)偏移,一樣會(huì)導(dǎo)致解碼錯(cuò)誤。

總之一句話,8b/10b是為了解決直流平衡而推出的。

8B/10B編碼是加擾二進(jìn)制碼的一種,在此之前這種技術(shù)已得到應(yīng)用,只是沒有像8B10B那么普遍。目前采用8b/10b編碼的串行高速接口總線有IEEE 1394b、SATA、PCI Express、Infini-band、Fiber Channel、RapidIO、USB3.0、MIPI M-phy 等。

將8bit編碼成10bit后,連續(xù)的1或者0不能超過5位,所以10b中0和1的位數(shù)只可能出現(xiàn)3中情況:

? 有5個(gè)0和5個(gè)1

? 有6個(gè)0和4個(gè)1

? 有4個(gè)0和6個(gè)1

**不均等性:**這樣引出了一個(gè)新術(shù)語(yǔ)“不均等性”(Disparity),就是1的位數(shù)和0的位數(shù)的差值,根據(jù)上面3種情況就有對(duì)應(yīng)的3個(gè)Disparity0、-2、+2。

2. 為什么引入8b/10b編碼?

首先,為什么要編碼?原來的碼型有什么不好的地方嗎?其中最主要的原因用下面這個(gè)圖來進(jìn)行解釋:

4baf174c-3df2-11ed-9e49-dac502259ad0.png

4bf12b14-3df2-11ed-9e49-dac502259ad0.png

4c1b0920-3df2-11ed-9e49-dac502259ad0.png

大家看明白了吧,由于我們的串行鏈路中會(huì)有交流耦合電容,我們知道理想電容的阻抗公式是Zc=1/2πf*C,因此信號(hào)頻率越高,阻抗越低,反之頻率越低,阻抗越高。因此上面的情況,當(dāng)碼型是高頻的時(shí)候,基本上可以不損耗的傳輸過去,但是當(dāng)碼型為連續(xù)“0”或者“1”的情況時(shí),電容的損耗就很大,導(dǎo)致幅度不斷降低,帶來的嚴(yán)重后果是無法識(shí)別到底是“1”還是“0”。因此編碼就是為了盡量把低頻的碼型優(yōu)化成較高頻的碼型,從而保證低損耗的傳輸過去。

3. 8b/10b的編碼算法

4c558b5e-3df2-11ed-9e49-dac502259ad0.png

如上圖,關(guān)于8B/10B編碼算法有下面幾點(diǎn)需要理解:

1, 低5位(ABCDE)中間加一位,進(jìn)行5B/6B編碼,高三位(FGH)中間加一位,進(jìn)行3B/4B編碼;

2, 編碼后的bit僅會(huì)出現(xiàn)這三種情況:5個(gè)“0”與5個(gè)“1”、4個(gè)“0”與6個(gè)“1”、6個(gè)“0”與4個(gè)“1”;

3, 有兩個(gè)術(shù)語(yǔ)要知道:不均等性(disparity)和極性偏差(running disparity,RD)。

不均等性是指編碼后的碼型數(shù)據(jù)是“1”多還是“0”多,如果是“1”多,則極性偏差RD為RD-,如果是“0”多則為RD+。

那定義+/-RD有什么意義呢?+/-RD代表著同一個(gè)碼型的兩種編碼方式。我們本身就是編碼的目標(biāo)就是為了緩解長(zhǎng)“0”或長(zhǎng)“1”的影響,因此在編碼后如果“1”多的話,我們下一次的編碼就要把這種碼型做一個(gè)修正,因此從-RD碼型變成+RD碼型。如果是“0”和“1”一樣多,極性則不用變,如下圖:

4c7f6d52-3df2-11ed-9e49-dac502259ad0.png

4, 我們?cè)趺粗谰幋a后映射成什么碼型呢?因此會(huì)有一個(gè)專門的編碼表,我們只需要在上面找到我們的原始碼型,然后就一目了然了。編碼表如下所示(部分截圖):

4ca7ccde-3df2-11ed-9e49-dac502259ad0.png

說了那么多,還不如舉個(gè)例子更直觀。

我們以上面的D3.0碼型進(jìn)行仿真驗(yàn)證:

4cd0a62c-3df2-11ed-9e49-dac502259ad0.png

原始的碼型如下:

4cf65282-3df2-11ed-9e49-dac502259ad0.png

仿真得到8B/10B編碼后的碼型如下:

4d19e756-3df2-11ed-9e49-dac502259ad0.png

對(duì)照上面的編碼表,結(jié)果完全相同,從RD-的模型出發(fā),編碼后RD-的碼型“1”比較多,因此極性變成RD+的編碼碼型,接著RD+的編碼碼型“0”比較多,極性又變回RD-,因此碼型就是RD-和RD+之間循環(huán)下去。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • lvds
    +關(guān)注

    關(guān)注

    2

    文章

    1018

    瀏覽量

    65386
  • 編碼
    +關(guān)注

    關(guān)注

    6

    文章

    915

    瀏覽量

    54651

原文標(biāo)題:8b/10b編碼

文章出處:【微信號(hào):硬件測(cè)試雜談,微信公眾號(hào):硬件測(cè)試雜談】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    USB3.0與USB2.0編碼方式的區(qū)別

    USB 3.0的傳輸編碼方式與USB 2.0有所不同,從USB 3.0規(guī)范中我們了解到,USB 3.0采用的是8b/10b編碼方式
    發(fā)表于 11-22 16:22 ?8824次閱讀
    USB3.0與USB2.0<b class='flag-5'>編碼</b>方式的區(qū)別

    USB3.0中8b/10b編解碼器的設(shè)計(jì)

    為了在USB 3.0中實(shí)現(xiàn)數(shù)據(jù)的8 b/10 b編解碼,把8b/10b編解碼分解成5
    發(fā)表于 11-30 11:38 ?3159次閱讀
    USB3.0中<b class='flag-5'>8b</b>/<b class='flag-5'>10b</b>編解碼器的設(shè)計(jì)

    8b10b編碼verilog實(shí)現(xiàn)

    8b/10b編碼種用于減少數(shù)據(jù)線上的低效能時(shí)鐘信號(hào)傳輸?shù)募夹g(shù),通過在數(shù)據(jù)流中插入特殊的控制字符,來同步數(shù)據(jù)和時(shí)鐘。在Verilog中實(shí)現(xiàn)8b
    發(fā)表于 03-26 07:55

    Aurora 8b/10b IP核問題

    小弟最近在調(diào)用Aurora 8b/10b IP模塊時(shí),在用modelsim功能仿真時(shí),切正常。 但是直接使用了例化后的example,并將Tx和Rx形成了回路下到FPGA板子上
    發(fā)表于 03-09 10:58

    8b/10b編解碼的控制字問題

    8b/10b編碼用的控制字是K28.5,但是解碼時(shí)用非K28.5的控制字能把數(shù)據(jù)解碼出來嗎?
    發(fā)表于 01-02 14:47

    淺析64B//66B編碼

    作者:黃剛上文說完了8B/10B之后,我們?cè)賮碚f說貌似更復(fù)雜的64B/66B編碼。很多人可能在想,8B
    發(fā)表于 07-19 07:35

    收發(fā)器向?qū)е袉⒂?b class='flag-5'>8b/10b編碼器的方法是什么?

    親愛的先生,我正在使用Vivado 2015.4。我想在收發(fā)器向?qū)е惺褂猛ǖ澜壎?,但CB在手冊(cè)中是灰色的。另外,我找不到在收發(fā)器向?qū)е袉⒂?b class='flag-5'>8b / 10b編碼器的方法。如果你能給我
    發(fā)表于 08-04 08:32

    如何使用Aurora 8B / 10B建立僅傳輸?

    你好,我正在嘗試使用Aurora 8B / 10B建立僅傳輸(流媒體)?,F(xiàn)在使用Vivado 2014.4進(jìn)行模擬階段。我知道GTXE2_COMMON原語(yǔ)需要在設(shè)計(jì)中使用以包含個(gè)QUAD PLL
    發(fā)表于 08-14 08:49

    怎么禁用Aurora IP Core 8B / 10B中的時(shí)鐘補(bǔ)償功能?

    大家好,我使用的是Vivado 2016.4和Virtex 7 XC7VX485T FPGA。我需要知道是否有個(gè)選項(xiàng)可以禁用Aurora IP Core 8B / 10B中的時(shí)鐘補(bǔ)償功能。我可以看到IP核心文件,但它們都是只讀
    發(fā)表于 08-18 09:43

    高速接口8B/10B的作用?

    、高速接口8B/10B的作用? 在數(shù)字通信中編碼和加擾的作用是不同的。編碼通常有信源編碼和信道
    發(fā)表于 01-18 06:16

    基于FPGA的8B10B編解碼設(shè)計(jì)

    摘要:為提高8B10B編解碼的工作速度和簡(jiǎn)化邏輯方法,提出種基于FPGA的8B10B編解碼系統(tǒng)設(shè)計(jì)方案。與現(xiàn)有的
    發(fā)表于 05-26 11:08 ?3695次閱讀
    基于FPGA的<b class='flag-5'>8B</b>/<b class='flag-5'>10B</b>編解碼設(shè)計(jì)

    基于PRBS的8B/10B編碼器誤碼率為0設(shè)計(jì)

    基于減少8B/10B編碼器占用的邏輯資源和保證該編碼器誤碼率為0的目的,采用查表法和組合邏輯實(shí)現(xiàn)相結(jié)合的方法設(shè)計(jì)實(shí)現(xiàn)了符合嵌入式互連規(guī)范Rapidl0協(xié)議的
    發(fā)表于 11-06 17:04 ?7次下載
    基于PRBS的<b class='flag-5'>8B</b>/<b class='flag-5'>10B</b><b class='flag-5'>編碼</b>器誤碼率為0設(shè)計(jì)

    基于Virtex-6 的Aurora 8B/10B,PCIe2.0,SRIO 2.0三種串行通信協(xié)議分析

    針對(duì)較為常用的Aurora 8B/10B和PCI Express 2.0,Serial RapidIO 2.0三種協(xié)議進(jìn)行了測(cè)試及對(duì)比分析。首先搭建了基于Virtex-6 FPGA的高速串行協(xié)議測(cè)試
    發(fā)表于 11-18 01:00 ?1.2w次閱讀
    基于Virtex-6 的Aurora <b class='flag-5'>8B</b>/<b class='flag-5'>10B</b>,PCIe2.0,SRIO 2.0三種串行通信協(xié)議分析

    淺談高速信號(hào)的64B/66B編碼方式

    很多人可能在想,8B/10B編碼主要作用的優(yōu)化直流平衡,從8bit中插2個(gè)bit進(jìn)去,這樣的話最終效果能夠使長(zhǎng)0或者長(zhǎng)1的位數(shù)不超過5位,達(dá)到很好的效果。那64
    的頭像 發(fā)表于 04-01 12:01 ?8232次閱讀
    淺談高速信號(hào)的64<b class='flag-5'>B</b>/66<b class='flag-5'>B</b><b class='flag-5'>編碼</b>方式

    高速串行通信常用的編碼方式-8b/10b編碼/解碼解析

    ? 論序 8b/10b編碼/解碼是高速串行通信,如PCle SATA(串行ATA),以及Fiber Channel中常用的編解碼方式。在發(fā)送端,編碼電路將串行輸入的
    的頭像 發(fā)表于 09-26 09:56 ?8323次閱讀
    高速串行通信常用的<b class='flag-5'>編碼</b>方式-<b class='flag-5'>8b</b>/<b class='flag-5'>10b</b><b class='flag-5'>編碼</b>/解碼解析