thumb|right|upright=1.4|The binary signal is encoded using rectangular pulse-amplitude modulation with polar NRZ(L), or polar non-return-to-zero-level code.
In telecommunications, a non-return-to-zero (NRZ) line code is a binary code in which ones are represented by one significant condition, usually a positive voltage, while zeros are represented by some other significant condition, usually a negative voltage, with no other neutral or rest condition.
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). The pulses in NRZ have more energy than a return-to-zero (RZ) code, which also has an additional rest state besides the conditions for ones and zeros.
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. Since NRZ is not inherently a self-clocking signal, some additional synchronization technique must be used for avoiding bit slips; examples of such techniques are a run-length-limited constraint and a parallel synchronization signal.
Variants
NRZ can refer to any of the following serializer line codes:
{| class="wikitable"
! Code <br/>name
! Alternate <br/>name
! Complete name
! Description
|-
| NRZ(L)
| NRZL
| Non-return-to-zero level
| Appears as raw binary bits without any coding. Typically binary 1 maps to logic-level high, and binary 0 maps to logic-level low. Inverse logic mapping is also a type of NRZ(L) code.
|-
| NRZ(I)
| NRZI
| style="white-space:nowrap;" | Non-return-to-zero inverted
| Refers to either an NRZ(M) or NRZ(S) code.
|-
| NRZ(M)
| NRZM
| Non-return-to-zero mark
| Serializer mapping {0: constant, 1: toggle}.
|-
| NRZ(S)
| NRZS
| Non-return-to-zero space
| Serializer mapping {0: toggle, 1: constant}.
|-
| NRZ(C)
| NRZC
| Non-return-to-zero change
| Encodes 1 as a change from low to high, and 0 as a change from high to low. Inverse logic mapping is also a type of NRZ(C) code.
|}
The NRZ code also can be classified as a polar or non-polar, where polar refers to a mapping to voltages of +V and −V, and non-polar refers to a voltage mapping of +V and 0, for the corresponding binary values of 1 and 0.
Unipolar non-return-to-zero level
thumb|right|upright=1.4| Unipolar NRZ(L), or unipolar non-return-to-zero level
One is represented by a DC bias on the transmission line (conventionally positive), while zero is represented by the absence of bias – the line at 0 volts or grounded. For this reason, it is also known as on-off keying. In clock language, a one transitions to or remains at a biased level on the trailing clock edge of the previous bit, while zero transitions to or remains at no bias on the trailing clock edge of the previous bit. Among the disadvantages of unipolar NRZ is that it allows for long series without change, which makes synchronization difficult, although this is not unique to the unipolar case. One solution is to not send bytes without transitions. More critically, and unique to unipolar NRZ, are issues related to the presence of a transmitted DC level – the power spectrum of the transmitted signal does not approach zero at zero frequency. This leads to two significant problems: first, the transmitted DC power leads to higher power losses than other encodings, and second, the presence of a DC signal component requires that the transmission line be DC-coupled.
Bipolar non-return-to-zero level
One is represented by one physical level (usually a positive voltage), while 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.
Non-return-to-zero space
thumb|right|upright=1.4|Non-return-to-zero space
thumb|Encoder for NRZS, toggle on zero
One is represented by no change in physical level, while 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 5 contiguous 1 bits (except when transmitting the frame delimiter 01111110). USB transmitters insert a 0 bit after 6 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.
Non-return-to-zero inverted
thumb|right|upright=1.4|An example of the NRZI encoding, transition on 1
thumb|right|upright=1.4|The opposite convention, transition on 0
thumb|Encoder for NRZ-M, toggle on one
Non-return-to-zero, inverted (NRZI, also known as non-return to zero IBM, inhibit code,
</references>
Further reading
- https://onlinelibrary.wiley.com/doi/full/10.1002/jnm.1905
External links
- CodSim 2.0: Open source simulator for Digital Data Communications Model at the University of Malaga written in HTML
