天天看點

USB 之傳輸編碼格式 NRZI 介紹

NRZI (Non-Return-to-Zero Inerted code) 非歸零翻轉編碼,之前,我先稍微記錄一下他的前身

RZ 編碼(Return- to - zero coding)

  RZ 編碼,簡單的來說,就是在每一位普通的編碼後面加了一個零電平。是以叫做歸零編碼,正電平代表

USB 之傳輸編碼格式 NRZI 介紹

  可以看到,每一位後面都接了一位,實際上,RZ編碼就相當于把時鐘信号用 信号。 這樣的做法雖然在實體上少了一根時鐘線,但是在帶寬上确有一大部分都用在歸零上面了。

第二種演變,去掉歸零 NRZ (Non - Return - to - Zero - code)編碼,就是講 RZ 編碼的歸零去掉

  NRZ編碼既是将邏輯1編碼作為一個DC電平,邏輯0做為另一個DC電平。它與RZ碼的差別就是它不用歸零,也就是說,一個周期可以全部用來傳輸資料,這樣傳輸的帶寬就可以完全利用。一般常見的帶有時鐘線的傳輸協定都是使用NRZ編碼或者差分的NRZ編碼。是以,使用NRZ編碼若想傳輸高速同步資料,基本上都要帶有時鐘線,因為本身NRZ編碼無法傳遞時鐘信号。但在低速異步傳輸下可以不存在時鐘線,但在通信前,雙方裝置要約定好通信波特率,例如UART。

USB 之傳輸編碼格式 NRZI 介紹

NRZ一般用于裝置内的信号傳輸,對于串行傳輸,它有許多缺點:

(1)資料本身不攜帶時鐘資訊,是以不能自定時(即這樣做雖然我們帶寬不浪費了,但是我們的時鐘線的同步信号又要另外給。);此外,一個全是1或全是0的長串編碼結果就是一個固定的電平,沒有跳變。

(2)它的DC分量随着資料流内容的變化而變化,低頻内容往往占主導地位。

        由于這些原因,除了低速短距離通訊,比如SPI等 外,NRZ很少用于串行傳輸。

第三種演變,NRZI(Non - Return - to - Zero - Inverted - code) 非歸零反相編碼

  和NRZ 編碼不同的是,NRZI 編碼利用的電平的翻轉來代表一個邏輯,目前電平相對于前一個電平不變代表,目前電平相對于前一個電平相反代表1,,在USB 中,電平翻轉代表邏輯NRZI就可以實作自定時能力。比如,将全0的同步碼反向,于是産生連續的跳變,這樣便于PLL鎖定。NRZI頻譜依然有一個相對較高的低頻分量,且它的直流分量也不是自由的(反轉用0或是1,并不是一定的)。

USB 之傳輸編碼格式 NRZI 介紹

資料同步問題

  NRZ 和 NRZI 都沒有同步的特性,但是,可以用一些比較特殊的技巧來解決,比如,先發送一個同步頭,内容是

  在USB 中,每一個USB的資料包,最開始的時候都有一個同步域,這個域定義為

,規定為傳輸,接受者隻要删除

轉載于:https://www.cnblogs.com/guojun-junguo/p/9510464.html