<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

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

3天內不再提示

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

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

為了提高串行數據傳輸的可靠性,現在很多更高速率的數字接口采用的是對數據進行編碼后再做并串轉換的方式。編碼的方式有很多,如8b/9b編碼、8b/10b編碼、64b/66b編碼、128b/130b編碼等,下面我們以最流行的ANSI 8b/10b編碼為例進行一下介紹。

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

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

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

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

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

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

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

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

    關注

    6

    文章

    835

    瀏覽量

    54464
  • 串行總線
    +關注

    關注

    1

    文章

    164

    瀏覽量

    30438

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

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

收藏 人收藏

    評論

    相關推薦

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

    為了在USB 3.0中實現數據的8 b/10 b編解碼,把8b/10b編解碼分解成5 b/6 b編解碼和3 b/4 b編解碼,然后在FPGA上實現了具體的硬件電路。
    發表于 11-30 11:38 ?2876次閱讀
    USB3.0中<b class='flag-5'>8b</b>/<b class='flag-5'>10b</b>編解碼器的設計

    8b10b編碼verilog實現

    8b/10b編碼是一種用于減少數據線上的低效能時鐘信號傳輸的技術,通過在數據流中插入特殊的控制字符,來同步數據和時鐘。在Verilog中實現8b/1
    發表于 03-26 07:55

    Aurora 8b/10b IP核問題

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

    探討串行解串器的技術及其應用

    總線經過 8B/10B 編碼并經過串行化后,通過差分高速介質進行有序傳輸。TLK1501 的接收器部分可接受
    發表于 09-13 09:54

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

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

    淺析64B//66B編碼

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

    如何設計低功耗FPGA的8b/10b SERDES的接口?

    本方案是以CME最新的低功耗系列FPGA的HR03為平臺,實現8/10b的SerDes接口,包括SERDES收發單元,通過完全數字化的方法實現SERDES的CDR(Clock Data
    發表于 10-21 07:09

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

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

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

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

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

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

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

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

    基于FPGA的8B10B編解碼設計

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

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

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

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

    ? 論序 8b/10b編碼/解碼是高速串行通信,如PCle SATA(串行ATA),以及Fiber Channel中常用的編解碼方式。在發送
    的頭像 發表于 09-26 09:56 ?7601次閱讀
    高速<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信號的。由于光模塊光模塊只能發送亮或者不亮,也就是0或者1這兩種狀態這種單極性碼,那么這會存在一個問題,如果傳輸中出現較長的連0或者連1(例如
    的頭像 發表于 11-12 15:47 ?8748次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>