不歸零 (訊號)

不歸零編碼 (non-return-to-zero line code, NRZ) 指的是一種二進位的訊號代碼,在這種傳輸方式中,1 和 0 都分別由不同的電子狀態來表現,除此之外,沒有中性狀態、亦沒有其他種狀態。這種脈衝的能量比歸零代碼(return-to-zero, RZ) 要來得密集,但它傳輸時是不停歇的,這代表同步訊號必須在此代碼之外獨自傳輸。

二進位碼以矩形脈衝的方式改變振幅。

在給定一個訊號頻率的情況下(比如說位元率),NRZ 代碼只需要曼徹斯特碼 (Manchester code) 的一半頻寬。

當用於非同步傳輸時,由於缺少中性狀態,必須依靠其他種機制,來達成在同步傳輸中使用時鐘偵測錯誤的資料回復工作。

NRZ-Level 本身並非一種同步系統,而更是一種編碼方式,因為它可用於同步環境、或非同步環境中,也就是不管有沒有明確的時鐘訊號,都可以運作。所以,討論 NRZ-Level 編碼是否在時鐘「跳動 (clock-edge)」或「跳動之間 (between clock-edge)」並非必要的,因為每一個訊號一定都是以給定的時脈來傳輸的,這就暗示了訊號內在的時脈。真正的問題是,能否在接收端以當初取樣時的同樣頻率重繪該訊號。

然而,由於 NRZ 訊號的脈衝與時鐘是一致的,這就很容易看出 NRZ-Level 和其他編碼方式的不同,例如前面提到的曼徹斯特碼,它需要明確的時脈資訊(即 NRZ 和時鐘的 XOR 值),還能看出與 NRZ-Mark 和 NRZ-Inverted 等編碼的不同。

單極 NRZ-Level

 

「1」由一種物理電平表現,例如傳輸線上的直流偏移 (DC bias)。

「0」由另一種電平表現(通常是正電壓)。

在時脈術語中,通常「1」沿着上一個位元的時脈邊緣,維持或改變到一個較低的位置;而「0」則沿着上一個位元的時脈邊緣,維持或改變到一個較高的位置,或者兩者反過來。這可能會造成一長串不改變的電平,讓同步工作變得困難。一個解決辦法是只傳送有着許多變化的訊號,見限制遊長 (Run Length Limited)。

圖表顯示最低一條線代表真正的零電平,而其上是代表「0」的邏輯電平,電壓代表「1」,這種配置較稀少。

兩極 NRZ-Level

「1」由一物理電平表現(通常是負電壓)。

「0」由另一電平表現(通常是正電壓)。

在時脈術語中,兩極的 NRZ-Level 電壓沿着上一個位元的時脈邊緣,從正轉向負。

這種訊號的例子是 RS-232,它的「1」是 -5v 至 -12V 之間、「0」是 +5V 至 +12V 之間。

NRZ-Mark

 

「1」由物理電平的改變來表示。

「0」由物理電平的沒有改變來表示。

在時脈術語中,沿着上一個位元的時脈邊緣作出改變的代表「1」,沒有改變的代表「0」。

觀看圖表來理解以改變為基礎的編碼時,必須理解到如果第一個位元之前的初始狀態被判斷為相反的,則整個訊號會是反相的、或部份反相的。

在其他文件中,這個編碼很常只用「NRZ」單名來稱呼[1];FIPS 1037 也把「不歸零改變為一 (non-return-to-zero change-on-ones)」和「不歸零一 (non-return-to-zero one)」定義為與此相同的東西。

NRZ-Space

 

「1」由物理電平的沒有改變來表現。

「0」由電平的改變來表現。

在時脈術語中,沿着前一個位元的時脈邊緣改變的電平代表的是「0」。

這個「改變為零」的應用例子是 High-Level Data Link ControlUSB。它們利用插入零位元來避免長串的未改變位元(即使資料中包含了大量的 1 位元序列)。HDLC 傳輸器會在連續的五個 1 位元後面,自動插入一個 0 位元(一個例外是區塊定義符 "01111110")。USB 傳輸器會在六個連續的 1 位元後,插入一個 0 位元。接收端將使用每一個電平的轉換(不管是資料本身還是自動插入位元)來維持時脈的同步性,若不為同步,則這些插入 0 位元會被忽略。

NRZ-Inverted (NRZI)

 
一代表改變的 NRZI
 
零代表改變的 NRZI

一改變:「1」為物理電平上的改變。「0」為沒有改變。

零改變:「0」為物理電平上的改變。「1」為沒有改變。

改變發生在當下位元的時鐘脈衝前緣。

但是,NRZI 會有長串的 0或1 位元出現,導致時脈回覆有困難,可以使用一些編碼技巧(例如遊長限制)來解決。曼徹斯特碼永遠有時脈訊號,但傳輸效率比 NRZI 低。

NRZI 編碼被用於磁帶的錄音、CD的刻錄和標準 USB 的傳訊。

  1. ^ 例如 non return to zero頁面存檔備份,存於互聯網檔案館

參見

參考資料