不归零编码 (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 等编码的不同。
“1”由一种物理电平表现,例如传输线上的直流偏移 (DC bias)。
“0”由另一种电平表现(通常是正电压)。
在时脉术语中,通常“1”沿着上一个比特的时脉边缘,维持或改变到一个较低的位置;而“0”则沿着上一个比特的时脉边缘,维持或改变到一个较高的位置,或者两者反过来。这可能会造成一长串不改变的电平,让同步工作变得困难。一个解决办法是只传送有着许多变化的信号,见限制游长 (Run Length Limited)。
图表显示最低一条线代表真正的零电平,而其上是代表“0”的逻辑电平,电压代表“1”,这种配置较稀少。
“1”由一物理电平表现(通常是负电压)。
“0”由另一电平表现(通常是正电压)。
在时脉术语中,两极的 NRZ-Level 电压沿着上一个比特的时脉边缘,从正转向负。
这种信号的例子是 RS-232,它的“1”是 -5v 至 -12V 之间、“0”是 +5V 至 +12V 之间。
“1”由物理电平的改变来表示。
“0”由物理电平的没有改变来表示。
在时脉术语中,沿着上一个比特的时脉边缘作出改变的代表“1”,没有改变的代表“0”。
观看图表来理解以改变为基础的编码时,必须理解到如果第一个比特之前的初始状态被判断为相反的,则整个信号会是反相的、或部分反相的。
在其他文件中,这个编码很常只用“NRZ”单名来称呼;FIPS 1037 也把“不归零改变为一 (non-return-to-zero change-on-ones)”和“不归零一 (non-return-to-zero one)”定义为与此相同的东西。
“1”由物理电平的没有改变来表现。
“0”由电平的改变来表现。
在时脉术语中,沿着前一个比特的时脉边缘改变的电平代表的是“0”。
这个“改变为零”的应用例子是 High-Level Data Link Control 和 USB。它们利用插入零比特来避免长串的未改变比特(即使资料中包含了大量的 1 比特序列)。HDLC 传输器会在连续的五个 1 比特后面,自动插入一个 0 比特(一个例外是区块定义符 "01111110")。USB 传输器会在六个连续的 1 比特后,插入一个 0 比特。接收端将使用每一个电平的转换(不管是资料本身还是自动插入比特)来维持时脉的同步性,若不为同步,则这些插入 0 比特会被忽略。
一改变:“1”为物理电平上的改变。“0”为没有改变。
零改变:“0”为物理电平上的改变。“1”为没有改变。
改变发生在当下比特的时钟脉冲前缘。
但是,NRZI 会有长串的 0或1 比特出现,导致时脉回复有困难,可以使用一些编码技巧(例如游长限制)来解决。曼彻斯特码永远有时脉信号,但传输效率比 NRZI 低。
NRZI 编码被用于磁带的录音、CD的刻录和标准 USB 的传讯。