首页 > 代码库 > 数字编码 - 归零码RZ 非归零码NRZ 曼彻斯特码Manchester 差分曼彻斯特码 Differential Manchester
数字编码 - 归零码RZ 非归零码NRZ 曼彻斯特码Manchester 差分曼彻斯特码 Differential Manchester
http://en.wikipedia.org/wiki/Return-to-zero
RZ 编码(Return-to-zero Code),即归零编码。
在 RZ 编码中,正电平代表逻辑 1,负电平代表逻辑 0,并且,每传输完一位数据,信号返回到零电平,
也就是说,信号线上会出现 3 种电平:正电平、负电平、零电平:
从图上就可以看出来,因为每位传输之后都要归零,所以接受者只要在信号归零后采样即可,这样就不在需要单独的时钟信号。
实际上,RZ 编码就是相当于把时钟信号用归零编码在了数据之内。这样的信号也叫做自同步(self-clocking)信号。
这样虽然省了时钟数据线,但是还是有缺点的,因为在 RZ 编码中,大部分的数据带宽,都用来传输“归零”而浪费掉了。
Return-to-zero
Return-to-zero (RZ) describes a line code used in telecommunications signals in which the signal drops (returns) to zero between each pulse.
This takes place even if a number of consecutive 0s or 1s occur in the signal.
The signal is self-clocking. This means that a separate clock does not need to be sent alongside the signal,
but suffers from using twice the bandwidth to achieve the same data-rate as compared to non-return-to-zero format.
The "zero" between each bit is a neutral or rest condition, such as
a zero amplitude in pulse amplitude modulation (PAM),
zero phase shift in phase-shift keying (PSK), or
mid-frequency in frequency-shift keying(FSK).
That "zero" condition is typically halfway between the significant condition representing a 1 bit and the other significant condition representing a 0 bit.
Although return-to-zero (RZ) contains a provision for synchronization, it still has a DC component resulting in “baseline wander”
during long strings of 0 or 1 bits, just like the line code non-return-to-zero.
Return to zero, inverted
Return-to-zero, inverted (RZI) is a method of mapping for transmission.
The two-level RZI signal has a pulse (shorter than a clock cycle) if the binary signal is 0, and no pulse if the binary signal is 1.
It is used (with a pulse 3/16 of a bit long) by the IrDA serial infrared (SIR) physical layer specification.
Required bandwidth for this kind of modulation is: BW = R(data rate)
http://en.wikipedia.org/wiki/Non-return-to-zero
http://zh.wikipedia.org/wiki/%E4%B8%8D%E6%AD%B8%E9%9B%B6
NRZ 编码(Non-return-to-zero Code),不归零编码。
我们去掉这个归零步骤,NRZ 编码(Non-return-to-zero Code)就出现了,和 RZ 的区别就是 NRZ 是不需要归零的:
http://baike.baidu.com/view/491480.htm
归零码
单极性归零码
双极性归零码
Non-return-to-zero
NRZ指的是在一个比特位的传送时间内,电压是保持不变的(比如说,不回到零点)。
In telecommunication, a non-return-to-zero (NRZ) line code is a binary code in which
1s are represented by one significant condition (usually a positive voltage) and
0s are represented by some other significant condition (usually a negative voltage), with no other neutral or rest condition.
The pulses have more energy than a return-to-zero (RZ) code.
Unlike RZ, NRZ does not have a rest state.
NRZ is not inherently a self-clocking signal, thus some additional synchronization technique
(for example a run length limited constraint, or a parallel synchronization signal) must be used for avoiding bit slip.
For a given data signaling rate, i.e., bit rate, the NRZ code requires only half the baseband bandwidth required
by the Manchester code (the passband bandwidth is the same).
When used to represent data in an asynchronous communication scheme,
the absence of a neutral state requires other mechanisms for bit synchronization
when a separate clock signal is not available.
NRZ-Level itself is not a synchronous system but rather an encoding that can be used
in either a synchronous or asynchronous transmission environment,
that is, with or without an explicit clock signal involved.
Because of this, it is not strictly necessary to discuss how the NRZ-Level encoding acts "on a clock edge" or "during a clock cycle"
since all transitions happen in the given amount of time representing the actual or implied integral clock cycle.
The real question is that of sampling—the high or low state will be received correctly provided the transmission line has stabilized for that bit
when the physical line level is sampled at the receiving end.
However, it is helpful to see NRZ transitions as happening on the trailing (falling) clock edge in order to compare NRZ-Level to other encoding methods,
such as the mentioned Manchester code, which requires clock edge information (is the XOR of the clock and NRZ, actually)
see the difference between NRZ-Mark and NRZ-Inverted.
在电信学中,不归零编码 (non-return-to-zero line 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 等编码的不同。
不归零法编码 不归零法(Nonreturn to Zero, NRZ)可能是最简单的一种编码方案。
它传送一个0时把电压升高,而传送一个1时则使用低电平。
这样,通过在高低电平之间作相应的变换来传送0和1的任何序列。
NRZ指的是在一个比特位的传送时间内,电压是保持不变的(比如说,不回到零点)。
下图描述了二进制串1 0 1 0 0 11 0的NRZ传输过程。
NRZ编码虽然简单,但却存在一个问题。研究一下下图中的传输。它正在传送什么呢?
你可以回答说是“一个0的序列”。是的,但到底有多少个0呢?
对于这个问题,你会回答说这取决于一个比特位的持续时间。
现在假设我们告诉你1毫米线段对应于一个周期。那么你所要做的就是量出图中线段的长度,并转换为毫米。
这一计算将告诉你线段中有多少个1毫米的分段,也就是0的个数。理论上这个方法是行得通的,但实际上却不然。
假设有个人用尺子画出了一条包含1 0 0 0个1毫米分段的线段。那么总共有多长呢?
答案是1米,但由于在测量和实际绘制时出现的误差,线段可能只是接近而不是刚刚好一米长。
因此,当第二个人来测量这条线段时,他将得出一个比1 0 0 0个分段稍微多点或少点的答案。
即使第一个人很幸运,他的测量准确无误,但第二个人度量时的不精确也将导致误差。
这会给数据传输带来什么影响呢?
当一台设备传送一个比特的数字信号时,它将在一定的周期内,假定为T,产生一个持续的信号。
一个内置的时钟负责定时。接收设备必须知道信号的周期,这样它才能在每个T时间单元内对信号进行采样。
它也有一个负责定时的内置时钟。剩下的就是确保两个时钟使用同样的T。
下一个问题是:所有的时钟总是保持一致的吗?任何物理设备都存在着设计上的局限性和缺陷。
几乎可以肯定任何两个时钟都存在着微小的差别,这使得设备无法对传输信号作十分精确的采样。
就好象我们在新年的第一天校正了两个时钟,但到了年底却发现它们已经有了轻微的差别。
同样地,管弦乐队的音乐家们以同样的速度同时开始演奏,但如果他们不看指挥,
也不注意听别人的拍子的话,他们的节奏将开始混乱。
稍微的不和谐就将毁掉整个演奏,使它听起来就象作者和他的同事们正在表演一样。
就象指挥家确保演奏者的同步一样,通信设备也需要某种机制以使它们的定时保持一致。
不变的信号不具备同步机制。但如果信号改变的话,这种改变就可以用来保持设备的同步。
有些强制信号改变的编码方案就是基于这个原因。
Non return to zero(NRZ)
NRZ codes share the property that voltage level is constant during a bit interval.
High level voltage = bit 1 and Low level voltage = bit 0.
A problem arises when there is a long sequence of 0s or 1s and the volatage level
is maintained at the same value for a long time.
This creates a problem on the recieving end because now, the clock synchronization is lost due to lack of any transitions and hence,
it is difficult to determine the exact number of 0s or 1s in this sequence.
The two variations are as follows:
- NRZ-Level: In NRZ-L encoding, the polarity of the signal changes only when the incoming signal changes from a 1 to a 0 or from a 0 to a 1.
NRZ-L method looks just like the NRZ method, except for the first input one data bit.
This is because NRZ does not consider the first data bit to be a polarity change, where NRZ-L does. - NRZ-Inverted: Transition at the beginning of bit interval = bit 1 and No Transition at beginning of bit interval = bit 0 or vicecersa.
This technique is known as differential encoding.
NRZ-I has an advantage over NRZ-L.
Consider the situation when two data wires are wrongly connected in each other‘s place.
In NRZ-L all bit sequences will get reversed (B‘coz voltage levels get swapped).
Whereas in NAZ-I since bits are recognized by transition the bits will be correctly interpreted.
A disadvantage in NRZ codes is that a string of 0‘s or 1‘s will prevent synchronization of transmitter clock
with receiver clock and a separate clock line need to be provided.
Unipolar non-return-to-zero level
"One" is represented by one physical level (such as a DC bias on the transmission line).
"Zero" is represented by another level (usually a negative voltage).
"zero" transitions or remains low on the trailing clock edge of the previous bit, or just the opposite.
单极 NRZ-Level
1”由一种物理电平表现,例如传输线上的直流偏移 (DC bias)。
“0”由另一种电平表现(通常是负电压)。
在时脉术语中,通常“1”沿着上一个位元的时脉边缘,维持或改变到一个较低的位置;
而“0”则沿着上一个位元的时脉边缘,维持或改变到一个较高的位置,或者两者反过来。
这可能会造成一长串不改变的电平,让同步工作变得困难。
一个解决办法是只传送有着许多变化的讯号,见限制游长 (Run Length Limited)。
图表显示最低一条线代表真正的零电平,而其上是代表“0”的逻辑电平,电压代表“1”,这种配置较稀少。
Bipolar non-return-to-zero level
"One" is represented by one physical level (usually a positive voltage).
"Zero" is represented by another level (usually a negative voltage).
In clock language, in bipolar NRZ-Level the voltage
"swings" from positive to negative on the trailing edge of the previous bit clock cycle.
An example of this is RS-232, where "one" is ?12 V to ?5 V and "zero" is +5 V to +12 V.
两极 NRZ-Level
1”由一物理电平表现(通常是正电压)。负电压 ?
“0”由另一电平表现(通常是负电压)。正电压 ?
在时脉术语中,两极的 NRZ-Level 电压沿着上一个位元的时脉边缘,从正转向负。
这种讯号的例子是 RS-232,它的“1”是 -5v 至 -12V 之间、“0”是 +5V 至 +12V 之间。
Non-return-to-zero Mark
“1”由物理电平的改变来表示。
“0”由物理电平的没有改变来表示。
在时脉术语中,沿着上一个位元的时脉边缘作出改变的代表“1”,没有改变的代表“0”。
观看图表来理解以改变为基础的编码时,必须理解到如果第一个位元之前的初始状态被判断为相反的,
则整个讯号会是反相的、或部份反相的。
在其他文件中,这个编码很常只用“NRZ”单名来称呼[1];
FIPS 1037 也把“不归零改变为一 (non-return-to-zero change-on-ones)
”和“不归零一 (non-return-to-zero one)”定义为与此相同的东西。
Non-return-to-zero space
"One" is represented by no change in physical level.
"Zero" is represented by a change in physical level.
In clock language, the level transitions on the trailing clock edge of the previous bit to represent a "zero."
This "change-on-zero" is used by High-Level Data Link Control and USB.
They both avoid long periods of no transitions (even when the data contains long sequences of 1 bits) by using zero-bit insertion.
HDLC transmitters insert a 0 bit after five contiguous 1 bits (except when transmitting the frame delimiter ‘01111110‘).
USB transmitters insert a 0 bit after six consecutive 1 bits.
The receiver at the far end uses every transition —
both from 0 bits in the data and these extra non-data 0 bits — to maintain clock synchronization.
The receiver otherwise ignores these non-data 0 bits.
1”由物理电平的没有改变来表现。
“0”由电平的改变来表现。
在时脉术语中,沿着前一个位元的时脉边缘改变的电平代表的是“0”。
这个“改变为零”的应用例子是 High-Level Data Link Control 和 USB。
它们利用插入零位元来避免长串的未改变位元(即使资料中包含了大量的 1 位元序列)。
HDLC 传输器会在连续的五个 1 位元后面,自动插入一个 0 位元(一个例外是区块定义符 "01111110")。
USB 传输器会在六个连续的 1 位元后,插入一个 0 位元。
接收端将使用每一个电平的转换(不管是资料本身还是自动插入位元)来维持时脉的同步性,若不为同步,则这些插入 0 位元会被忽略。
Non-return-to-zero inverted (NRZI)
Non return to zero, inverted (NRZI) is a method of mapping a binary signal to a physical signal
for transmissionover some transmission media.
The two level NRZI signal has a transition at a clock boundary if the bit being transmitted is a logical 1,
and does not have a transition if the bit being transmitted is a logical 0.
"One" is represented by a transition of the physical level.
"Zero" has no transition.
Also, NRZI might take the opposite convention, as in Universal Serial Bus (USB) signalling,
when in Mode 1, in which a transition occurs when signaling zero, and a steady level when signaling a one.
The transition occurs on the leading edge of the clock for the given bit.
This distinguishes NRZI from NRZ-Mark.
However, even NRZI can have long series of zeros (or ones if transitioning on "zero"),
and thus clock recovery can be difficult unless some form of run length limited (RLL) coding is used in addition to NRZI.
Magnetic disk and tape storage devices generally use fixed-rate RLL codes,
while USB uses bit stuffing, which inserts an additional 0 bit after 6 consecutive 1 bits.
While bit stuffing is efficient, it results in a variable data rate
because it takes slightly longer to send a long string of 1 bits than it does to send a long string of 0 bits.
NRZ-Inverted (NRZI)
一改变:“1”为物理电平上的改变。“0”为没有改变。
零改变:“0”为物理电平上的改变。“1”为没有改变。
改变发生在当下位元的时钟脉冲前缘。
但是,NRZI 会有长串的 0或1 位元出现,导致时脉回复有困难,可以使用一些编码技巧(例如游长限制)来解决。
曼彻斯特代码永远有时脉信号,但传输效率比 NRZI 低。
NRZI 编码被用于磁带的录音、CD的刻录和标准 USB 的传讯。
NRZI编码方式。
信号电平的一次反转代表1,电平不变化表示0,并且在表示完一个码元后,电压不需回到0
不归零制编码是效率最高的编码
缺点是存在发送方和接收方的同步问题
单极性不归零码,无电压(也就是元电流)用来表示"0",而恒定的正电压用来表示"1"。
每一个码元时间的中间点是采样时间,判决门限为半幅度电平(即0.5)。
也就是说接收信号的值在0.5与1.0之间,就判为"1"码,如果在O与0.5之间就判为"0"码。
每秒钟发送的二进制码元数称为"码速"。
双极性不归零码,"1"码和"0"码都有电流,但是"1"码是正电流,"0"码是负电流,正和负的幅度相等,故称为双极性码。
此时的判决门限为零电平,接收端使用零判决器或正负判决器,接收信号的值若在零电平以上为正,判为"1"码;若在零电平以下为负,判为"0"码。
以上两种编码,都是在一个码元的全部时间内发出或不发出电流(单极性),以及发出正电流或负电流(双极性)。
每一位编码占用了全部码元的宽度,故这两种编码都属于全宽码,也称作不归零码NRZ (Non Return Zero)。
如果重复发送"1"码,势必要连续发送正电流;如果重复发送"0"码,势必要连续不送电流或连续发送负电流,
这样使某一位码元与其下一位码元之间没有间隙,不易区分识别。归零码可以改善这种状况。
NRZI 编码(Non-Return-to-Zero Inverted Code)和 NRZ 的区别就是
NRZI 用信号的翻转代表一个逻辑,信号保持不变代表另外一个逻辑。
USB 传输的编码就是 NRZI 格式,在 USB 中,电平翻转代表逻辑 0,电平不变代表逻辑1(NRZI 遇 0 翻转,遇 1 不变):
翻转的信号本身可以作为一种通知机制,而且可以看到,即使把 NRZI 的波形完全翻转,
所代表的数据序列还是一样的,对于像 USB 这种通过差分线来传输的信号尤其方便.
现在再回到那个同步问题:的确,NRZ 和 NRZI 都没有自同步特性,但是可以用一些特殊的技巧解决。
比如,先发送一个同步头,内容是 0101010 的方波,让接受者通过这个同步头计算出发送者的频率,
然后再用这个频率来采样之后的数据信号,就可以了。
在 USB 中,每个 USB 数据包,最开始都有个同步域(SYNC),这个域固定为 0000 0001,
这个域通过 NRZI 编码之后,就是一串方波(复习下前面:NRZI 遇 0 翻转遇 1 不变),
接受者可以用这个 SYNC 域来同步之后的数据信号。
此外,因为在 USB 的 NRZI 编码下,逻辑 0 会造成电平翻转,所以接受者在接受数据的同时,
根据接收到的翻转信号不断调整同步频率,保证数据传输正确.
但是,这样还是会有一个问题,就是虽然接受者可以主动和发送者的频率匹配,但是两者之间总会有误差。
假如数据信号是 1000 个逻辑1,经过 USB 的 NRZI 编码之后,就是很长一段没有变化的电平,
在这种情况下,即使接受者的频率和发送者相差千分之一,就会造成把数据采样成 1001 个或者 999 个 1了。
USB 对这个问题的解决办法,就是强制插 0,也就是传说中的 bit-stuffing,
如果要传输的数据中有 7 个连续的 1,发送前就会在第 6 个 1 后面强制插入一个 0,
让发送的信号强制出现翻转,从而强制接受者进行频率调整。
接受者只要删除 6 个连续 1 之后的 0,就可以恢复原始的数据了。
曼彻斯特编码
曼彻斯特编码(Manchester Code)用信号的变化来保持发送设备和接收设备之间的同步。
也有人称之为自同步码( Self-Synchronizing Code)。
为了避免上面 不变的信号不具备同步机制 情况,它用电压的变化来分辨0和1。
它明确规定,从高电平到低电平的跳变代表0,而从低电平到高电平的跳变代表1。
下图给出了比特串0 1 0 11 0 0 1的曼彻斯特编码。如图所示,信号的保持不会超过一个比特位的时间间隔。
即使是0或1的序列,信号也将在每个时间间隔的中间发生跳变。
这种跳变将允许接收设备的时钟与发送设备的时钟保持一致。
曼彻斯特编码的一个缺点是需要双倍的带宽。也就是说,信号跳变的频率是NRZ编码的两倍。
曼彻斯特编码(Manchester Encoding),也叫做相位编码( Phase Encode,简写PE),
是一个同步时钟编码技术,被物理层使用来编码一个同步位流的时钟和数据。
它在以太网媒介系统中的应用属于数据通信中的两种位同步方法[1]里的自同步法(另一种是外同步法),
即接收方利用包含有同步信号的特殊编码从信号自身提取同步信号来锁定自己的时钟脉冲频率,达到同步目的。
差分曼彻斯特编码
和曼彻斯特编码一样,在每个比特时间间隔的中间,信号都会发生跳变。
区别在于每个时间间隔的开始处。
0将使信号在时间间隔的开始处发生跳变。而1将使信号保持它在前一个时间间隔尾部的取值。( 不变 )
因此,根据信号初始值的不同, 0将使信号从高电平跳到低电平,或从低电平跳到高电平。
下图给出了比特串1 0 1 0 0 11 0的差分曼彻斯特编码。
在这里,我们通过检查每个时间间隔开始处信号有无跳变来区分0和1。
检测跳变通常更加可靠,特别是线路上有噪音干扰的时候。
如果有人把连接的导线颠倒了,也就是把高低电平颠倒了,这种编码仍然是有效的
(现在,你也许会问哪个神志清醒的人会把两根连接的导线颠倒呢。
有几种可能的原因。其一是某人过于匆忙,其二是某人不小心搞错了。这种事情常有发生!)。
差分曼彻斯特编码:
在信号位开始时不改变信号极性,表示辑"1"
在信号位开始时改变信号极性,表示逻辑"0" ;
【注意】:如果在最初信号的时候,即第一个信号时:
如果中间位电平从低到高,则表示0;如果中间位电平从高到低,则表示1;
后面的(从第二个开始)就看每个信号位开始时有没有跳变来决定:
Biphase Mark Coding
差分曼彻斯特编码与曼彻斯特编码的比较
他们的特征是在传输的每一位信息中都带有位同步时钟,因此一次传输可以允许有很长的数据位。
- Modulation rate twice that of NRZ and bandwidth correspondingly greater. (Modulation is the rate at which signal level is changed).
- Because there is predictable transition during each bit time,the receiver can synchronize on that transition i.e. clock is extracted from the signal itself.
- Since there can be transition at the beginning as well as in the middle of the bit interval the clock operates at twice the data transfer rate.
- Biphase-manchester: Transition from high to low in middle of interval = 1 and Transition from low to high in middle of interval = 0
- Differential-manchester: Always a transition in middle of interval. No transition at beginning of interval=1 and Transition at beginning of interval = 0