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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

串行總線的8b/10b編碼

NJ90_gh_bee81f8 ? 來源:未知 ? 作者:李建兵 ? 2018-03-14 16:23 ? 次閱讀

為了提高串行數(shù)據(jù)傳輸?shù)目煽啃裕F(xiàn)在很多更高速率的數(shù)字接口采用的是對數(shù)據(jù)進行編碼后再做并串轉換的方式。編碼的方式有很多,如8b/9b編碼、8b/10b編碼、64b/66b編碼、128b/130b編碼等,下面我們以最流行的ANSI 8b/10b編碼為例進行一下介紹。

在ANSI 8b/10b編碼方式中,8比特的數(shù)據(jù)先通過相應的編碼規(guī)則轉換成10比特的數(shù)據(jù),然后再進行并串轉換;接收端收到信號后先把串行數(shù)據(jù)進行串并轉換得到10比特的數(shù)據(jù),然后再通過10比特到8比特的解碼得到原始傳輸?shù)?比特數(shù)據(jù)。因此,如果發(fā)送端并行側的數(shù)據(jù)速率是8bit*100Mb/s,通過8b/10b編碼和并串轉換后的串行側的數(shù)據(jù)速率就是1bit*1Gb/s。8b/10b編碼方法最早由IBM發(fā)明,后來成為ANSI標準的一部分(ANSI X3.230-1994, clause 11),并在通信和計算機總線上廣泛應用。

數(shù)據(jù)經過8b/10b編碼后有幾個最大的好處:

有足夠多的跳變沿,可以從數(shù)據(jù)里進行時鐘恢復。正常傳輸?shù)臄?shù)據(jù)里可能會有比較長的連續(xù)的0或者連續(xù)的1,而進行完8b/10b編碼后,其編碼規(guī)則保證了編碼后的數(shù)據(jù)流里不會出現(xiàn)超過5個的連續(xù)的0或1,信號里會出現(xiàn)足夠多的跳變沿,因此可以采樣嵌入式的時鐘方式,即接收端可以從數(shù)據(jù)流里用PLL電路直接恢復時鐘,不需要專門的時鐘傳輸通道。

直流平衡,可以采用AC耦合方式。經過編碼后數(shù)據(jù)里不會出現(xiàn)連續(xù)的0或者1了,但是還是有可能在某個時間段內0或者1的數(shù)量偏多一些。從上面的編碼表中我們可以看到同一個Byte對應有正、負兩組10bit的編碼,一個編碼里1的數(shù)量多一些,另一個編碼里0的數(shù)量多一些。數(shù)據(jù)在對當前的Byte進行8b/10b編碼傳輸時,會根據(jù)前面歷史傳輸?shù)臄?shù)據(jù)中正負bit的數(shù)量來選擇使用哪一組編碼,從而可以保證總線上正負bit的數(shù)量在任何時刻基本都是平衡的,也就是直流點不會發(fā)生大的變化。直流點平衡以后,在信號傳輸?shù)穆窂缴衔覀兙涂梢圆捎肁C耦合方式(最常用的方法是在發(fā)送端或接收端串接隔直電容),這樣信號對于收發(fā)端的地電平變化和共模噪聲的抵抗能力進一步增強,可以傳輸更遠的距離。采用AC耦合方式的另一個好處是收發(fā)端在做互連時不用太考慮直流偏置點的互相影響,互連變得非常簡單,對于熱插拔的支持能力也更好。

有利于信號校驗。很多高速信號在做傳輸時為了保證傳輸?shù)目煽啃砸獙邮盏降男盘栠M行檢查以確認收到的信號是否正確。在8b/10bit編碼表里,原始的8bit數(shù)據(jù)總共有256個組合,即使考慮到每個Byte有正負兩個10bit編碼也只需要用到512個10bit的組合。而10bit的數(shù)據(jù)總共可以有1024個組合,因此有大約一半的10bit組合是無效的數(shù)據(jù),接收端一旦收到這樣的無效組合就可以判決數(shù)據(jù)無效。另外,前面我們介紹過數(shù)據(jù)在傳輸過程中是要保證直流平衡的,一旦接收端收到的數(shù)據(jù)中發(fā)現(xiàn)違反直流平衡的規(guī)則,也可以判決數(shù)據(jù)無效。因此采用8b/10b編碼以后數(shù)據(jù)本身就可以提供一定的信號校驗功能。不過需要注意的是,這種校驗不是足夠可靠,因為理論上還是可能存在有幾個bit在傳輸中發(fā)生了錯誤但是結果仍然符合8b/10b編碼和規(guī)則和直流平衡原則。因此,很多使用8b/10b編碼的總線都還會在上層協(xié)議上再做相應的CRC校驗(循環(huán)冗余校驗)。

可以插入控制字符。在10bit數(shù)據(jù)可以表示的1024個組合中,除了512個組合用于對應原始的8bit數(shù)據(jù)以及一些不太好的組合(比如0b1100000000這樣信號里有太長的連續(xù)0或者1而且明顯0、1的數(shù)量不平衡)以外,還有一些很特殊的組合。這些特殊的組合可以用來在數(shù)據(jù)傳輸過程中做為控制字符插入。這些控制字符不對應特定的8bit數(shù)據(jù),但是在有些總線應用里可以代表一些特殊的含義。比如K28.5碼型,其特殊的碼型組合可以幫助接收端更容易判別接收到的連續(xù)的10bit數(shù)據(jù)流的符號邊界,所以在一些總線的初始化階段或數(shù)據(jù)包的包頭都會進行發(fā)送。還有一些特殊的符號用于進行鏈路訓練、標記不同的數(shù)據(jù)包類型、進行收發(fā)端的時鐘速率匹配等。

綜上所述,要把并行的信號通過串行總線傳輸,一般需要對數(shù)據(jù)進行并串轉換。為了進一步減少傳輸線的數(shù)量和提高傳輸距離,很多高速數(shù)據(jù)總線采用嵌入式時鐘和8b/10b的數(shù)據(jù)編碼方式。8b/10b編碼由于直流平衡、支持AC耦合、可嵌入時鐘信息、抗共模干擾能力強、編解碼結構相對簡單等優(yōu)點,在很多高速的數(shù)字總線如FiberChannel、PCI-E、SATA、USB3.0、DisplayPort、XAUI、RapidIO等接口上得到廣泛應用。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 編碼
    +關注

    關注

    6

    文章

    915

    瀏覽量

    54651
  • 串行總線
    +關注

    關注

    1

    文章

    176

    瀏覽量

    30551

原文標題:串行總線的8b/10b編碼

文章出處:【微信號:gh_bee81f890fc1,微信公眾號:面包板社區(qū)】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    USB3.0中8b/10b編解碼器的設計

    為了在USB 3.0中實現(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>編解碼器的設計

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

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

    Aurora 8b/10b IP核問題

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

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

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

    淺析64B//66B編碼

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

    收發(fā)器向導中啟用8b/10b編碼器的方法是什么?

    親愛的先生,我正在使用Vivado 2015.4。我想在收發(fā)器向導中使用通道綁定,但CB在手冊中是灰色的。另外,我找不到在收發(fā)器向導中啟用8b / 10b編碼器的方法。如果你能給我一些建議,我將不勝感激。問候,泰迪王
    發(fā)表于 08-04 08:32

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

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

    怎么禁用Aurora IP Core 8B / 10B中的時鐘補償功能?

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

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

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

    基于FPGA的8B10B編解碼設計

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

    基于PRBS的8B/10B編碼器誤碼率為0設計

    基于減少8B/10B編碼器占用的邏輯資源和保證該編碼器誤碼率為0的目的,采用查表法和組合邏輯實現(xiàn)相結合的方法設計實現(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設計

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

    針對較為常用的Aurora 8B/10B和PCI Express 2.0,Serial RapidIO 2.0三種協(xié)議進行了測試及對比分析。首先搭建了基于Virtex-6 FPGA的高速串行協(xié)議測試
    發(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三種<b class='flag-5'>串行</b>通信協(xié)議分析

    淺談高速信號的64B/66B編碼方式

    很多人可能在想,8B/10B編碼主要作用的優(yōu)化直流平衡,從8bit中插2個bit進去,這樣的話最終效果能夠使長0或者長1的位數(shù)不超過5位,達到很好的效果。那64
    的頭像 發(fā)表于 04-01 12:01 ?8232次閱讀
    淺談高速信號的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 ?8324次閱讀
    高速<b class='flag-5'>串行</b>通信常用的<b class='flag-5'>編碼</b>方式-<b class='flag-5'>8b</b>/<b class='flag-5'>10b</b><b class='flag-5'>編碼</b>/解碼解析

    一文詳解8b/10b編碼

    8b/10b最常見的是應用于光纖通訊和LVDS信號的。由于光模塊光模塊只能發(fā)送亮或者不亮,也就是0或者1這兩種狀態(tài)這種單極性碼,那么這會存在一個問題,如果傳輸中出現(xiàn)較長的連0或者連1(例如
    的頭像 發(fā)表于 11-12 15:47 ?1.2w次閱讀