Home           Credits

Research & Analysis

Design & Implementation

User Manual

Reference Format

ARQ

CRC

VRC

Stop & Wait Flow Control

Sliding Window


VRC / Parity Check

Vertical Redundancy Check (VRC)

     The most common and least expensive mechanism for error detection is the vertical redundancy check (VRC), often called a parity check. In this technique, a redundant bit, called a parity bit, is appended to every data unit so that the total number of 1s in the unit (including the parity bit) becomes even.

     Suppose we want to transmit the binary data unit 1100001 [ASCII a (97)]; see Figure 1.0. Adding together the number of 1s gives us 3, an odd number. Before transmitting, we pass the data unit through a parity generator. The parity generator counts the 1s and appends the parity bit (a 1 in this case) to the end. The total number of 1s is now four, an even number. The system now transmits the entire expanded unit across the network link. When it reaches its destination, the receiver puts all eight bits through an even-parity checking function. If the receiver sees 11100001, it counts four 1s, an even number, and the data unit passes. But what if the data unit has been damaged in transit? What if, instead of 11100001, the receiver sees 11100101? Then, when the parity checker counts the 1s, it gets 5, an odd number. The receiver knows that an error has been introduced into the data somewhere and therefore rejects the whole unit.

     In vertical redundancy check (VRC), a parity bit is added to every data unit so that the total number of 1s becomes even.

Figure 6 Even parity VRC concept

                

     Note that for the sake of simplicity, we are discussing here even-parity checking, where the number of 1s should be an even number. Some systems may use odd-parity checking, where the number of 1 s should be odd. The principal is the same; the calculation is different.

     The simplest error-detection scheme is to append a parity bit to the end of a block of data. A typical example is ASCII transmission, in which a parity bit is attached to each 7-bit ASCII character. The value of this bit is selected so that the character has an even number of 1s (even parity) or an odd number of 1s (odd parity). So, for example, if the transmitter is transmitting an ASCII G (1110001) and using odd parity, it will append a 1 and transmit 11100011. The receiver examines the received character and, if the total number of 1s is odd, assumes that no error has occurred. If one bit (or any odd number of bits) is erroneously inverted during transmission (for example, 11000011), then the receiver will detect an error. Note, however, that if two (or any even number) of bits are inverted due to error, an undetected error occurs. Typically, even parity is used for synchronous transmission and odd parity for asynchronous transmission.


Performance

      VRC can detect all singer-bit errors. It can also detect burst errors as long as the total number of bits changed is odd (1, 3, 5, etc.). Let’s say we have an even-parity data unit where the total number of 1s, including the parity bit, is 6: 1000111011. If any three bits change value, the resulting parity will be odd and the error will be detected: 1111 111011:9, 011 0111011:7, 11 000 1011:5-all odd. The VRC checker would return a result of 1 and the data unit would be rejected. The same holds true for any odd number of errors.

     Suppose, however, that two bits of the data unit are changed: 111 0111011:8, 11 000 11011:6, 10000 11010 :4. In each case the number of 1s in the data unit is still even. The VRC checker will add them and return tan even number although the data unit contains two errors. VRC cannot detect errors where the total number of bits changed is even. If any two bits change in transmission, the changes cancel each other and the data unit will pass a parity check even number of errors.

      VRC can detect all singer-bit errors. It can detect burst errors only if the total number of errors in each data unit is odd.