簡介
在電信學中,
不歸零編碼(
non-return-to-zeroline code,
NRZ) 指的是一種二進制的信號代碼,在這種傳輸方式中,1 和 0 都分別由不同的電子顯著狀態來表現,除此之外,沒有中性狀態、亦沒有其他種狀態。這種脈衝的能量比歸零代碼要來得密集,但它傳輸時是不停歇的,這代表同步信號必須在此代碼之外獨自傳輸。
在給定一個信號頻率的情況下(比如說
比特率),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”單名來稱呼;FIPS 1037 也把“不歸零改變為一 (non-return-to-zero change-on-ones)”和“不歸零一 (non-return-to-zero one)”定義為與此相同的東西。
NRZ-Space
“1”由物理電平的沒有改變來表現。
“0”由電平的改變來表現。
在時脈術語中,沿著前一個比特的時脈邊緣改變的電平代表的是“0”。
這個“改變為零”的套用例子是High-Level Data Link Control和
USB。它們利用插入零比特來避免長串的未改變比特(即使資料中包含了大量的 1 比特序列)。HDLC 傳輸器會在連續的五個 1 比特後面,自動插入一個 0 比特(一個例外是區塊定義符 "01111110")。USB 傳輸器會在六個連續的 1 比特後,插入一個 0 比特。接收端將使用每一個電平的轉換(不管是資料本身還是自動插入比特)來維持時脈的同步性,若不為同步,則這些插入 0 比特會被忽略。
NRZ-Inverted (NRZI)
一改變:“1”為物理電平上的改變。“0”為沒有改變。
零改變:“0”為物理電平上的改變。“1”為沒有改變。
改變發生在當下比特的時鐘脈衝前緣。
但是,NRZI 會有長串的 0或1 比特出現,導致時脈回復有困難,可以使用一些編碼技巧(例如游長限制)來解決。
曼徹斯特碼永遠有時脈信號,但傳輸效率比 NRZI 低。
參見