編碼(RZ NRZ NRZI)


Frm: https://jingyan.baidu.com/album/39810a23addccbb637fda66a.html?picindex=1

RZ 編碼(Return-to-zero Code),也叫歸零編碼。

在該編碼試工中,正電平代表邏輯1,負電平代碼邏輯0,並且每次傳輸完一位數據,信號都會回到零電平。這樣,在信號線上會產生3種電平:正電平、負電平、零電平,相應的信號圖例如下:

從上圖中可看出,每們數據傳輸中都有一個歸零的過程,這樣接收端只需要在歸零后進行新的采樣,這樣就不需要單獨的時鍾信號,這實際上相當於把時鍾信號用歸零處理在傳輸的數據中,這種信號叫自同步(self-clocking)信號。  
這雖然節省了信號線,不過還是有它固有的缺點,由於RZ編碼信號中有大部分數據帶寬被用於傳輸“歸零”信號而浪費掉了。除了省去這個步驟,NRZ編碼就產生了,相對於RZ編碼,NRZ編碼就是不需要“歸零”。
 

NRZ 編碼(Non-return-to-zero Code),也叫不歸零編碼。

下圖是NRZ編碼的信號圖例:

從上圖可以看到,每一位信號都不需要“歸零”了,被浪費的帶寬收回了,但又失去了應有的自同步特性,讓我們感覺又回到了起點,那么先繼續了解NRZI編碼吧。  
 

NRZI 編碼(Non-Return-to-Zero Inverted Code),也叫反向不歸零編碼。

NRZI編碼與NRZ編碼的區別就是NRZI用翻轉來表示一個邏輯,而信號保持不變來表示另一個邏輯。而在USB傳輸的編碼中采用的是NRZI格式,電平翻轉代表邏輯0,電平不變代表1。

 

從上面的了解,NRZ和NRZI都失去了自同步特性,不過還是可以通過一些技巧來處理。

在USB中,每個數據包的最開始處都有一個同步域(SYNC),其值為00000001,在經過NRZI編碼后,就是一串方波,接收方可能過這個同步頭來計算發送方的頻率,以便用這個頻率來繼續采樣數據信號。由於USB所采用的NRZI編碼中,每當邏輯0時就會進行電平翻轉,那么接收方可通過這個不斷翻轉的信號來調整同步的頻率,保證數據的正確傳輸。

但這仍然存在問題,一旦電平長時間保持不變時,我們無法知道到時發送的是100個邏輯1,還是1000個邏輯1,即使傳輸的是100個邏輯1,但接收方與發送方的頻率相差了100分之1,那么也還是存在可能把數據采集成為99或者101。而USB中采用了Bit-Stuffing位填充處理,即在連續發送6個1后面會插入1個0,強制使發送信號進行翻轉,從而讓接收方調整頻率,同步接收。而接收方在接收時只要接收到連續的6個1后,直接將后面的0刪除即可恢復數據的原貌。

接收方只需要將上面接受到的NRZI編碼數據進行譯碼,再進行位反填充即可還原為原始數據了。此種編碼方式除了在USB上使用,還有在CD光盤以及使用光纖傳輸的100BASE-FX(Fast Ethernet)等產品、領域。 
 
 
 
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM