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