8b10b編碼基礎(chǔ)-云帆興燁
8b/10b編碼的應用非常廣泛,例如:PCIE GEN1 GEN2,USB3.2 GEN1。再到現(xiàn)在的128b/130b (PCIE GEN3/4/5) 128b/132b (USB3.2 GEN2), 與8b/10b相比他們提升了編碼效率,這兩種編碼方式在底層邏輯上和處理的問題其實是相同的,本文從什么是8b/10b編碼、為什么要使用8b/10b編碼和如何實現(xiàn)8b/10b編碼三個方面來給大家介紹這項技術(shù)。
1
什么是 8b/10b 編碼
8b/10b就是把8個bit的數(shù)據(jù)加工映射成10個bit。如圖1所示,我們可以看到會把8個連續(xù)的bit分成低5位 (LSB) 和高3位 (MSB) 分別進行映射,5位通過5b/6b編碼,3位通過3b/4b編碼。
圖1 8b/10b編碼映射圖
2
為什么要進行 8b/10b 編碼
那么為什么要把8個bit編碼成10個bit?為什么要浪費兩個bit,不去傳輸有用數(shù)據(jù)?原因有以下兩點:
可以用多出來的bit位來傳輸一些控制信息
可以通過這種方式來達到直流均衡
公式1
圖2 不同頻率的NRZ碼型通過電容
當數(shù)據(jù)位流中出現(xiàn)多個連續(xù)的1或0時,可以認為該時間段信號是直流的,電容的損耗變大,導致信號的幅度降低,直流信號被濾除,到最后無法識別是1還是0。且接收端收到連續(xù)的1或0時,沒有充分的定時信息,給接收端的解碼帶來了困難(見圖3)。
圖3 連1連0信號通過電容信號失真
因此,8b/10b編碼就是把信號中的連1連0通過多加兩位的冗余,來實現(xiàn)映射后的信號盡量是01交替的情況,換一種說法,就是映射后的信號中盡量有相同數(shù)量的0和1。下面我們就來看一下8b/10b編碼具體是怎么把8bit映射成10bit的。
3
如何實現(xiàn) 8b/10b 編碼
表1和表2就分別是3b/4b和5b/6b的映射關(guān)系表,通過映射后的數(shù)據(jù)是不會出現(xiàn)全1或者全0的??梢钥吹揭粋€碼型能被編碼映射成多個碼型而且又分為RD+和RD-,這又為什么?
表1 3b/4b編碼映射表
表2 5b/6b編碼映射表
圖4 8b/10b編碼狀態(tài)轉(zhuǎn)移圖
解碼8b/10b串行數(shù)據(jù)波形并且會在波形上進行細致的注釋,協(xié)助工程師排查問題
關(guān)聯(lián)協(xié)議事件到物理波形更深入的洞察;將數(shù)據(jù)保存到磁盤方便后續(xù)進一步分析
支持多通道操作,可同時查看多達四個通道
協(xié)議解碼能力高達 16 Gb/s
特勵達力科的8b/10b解碼功能強大,可以協(xié)助工程師以最簡便的操作、最詳盡的細節(jié)來排查問題調(diào)試串行數(shù)據(jù)中存在的問題。
圖5 8b/10b解碼選件實測圖