Title: DIGITAL COMMUNICATION
1DIGITAL COMMUNICATION
- Packet error detection (CRC)
- November 2011
- A.J. Han Vinck
2Some books
3Cyclic Redundancy Check
- Add n-k bits of extra data (the CRC field) to an
k-bit message to provide error detection function - For efficiency, want n-k ltlt n
- e.g., n-k 32 for Ethernet and n 12,000 (1500
bytes)
4Automatic Repeat reQuest
- IDEA ask for retransmission if error detected
-
-
channel
Pass data if no error
ERROR ?
If Yes ask retransmission
5Some properties of ARQ
- Automatic Repeat-reQuest (ARQ)
- send ACK packet OK
- send NACK packet in error
-
- Some modes
- Resend the packet if no ACK received before
timeout - Use a predetermined maximum of retransmissions
until it is correctly received - Some ARQ protocols are
- Stop-and-wait ARQ
- Go-Back-N ARQ
- Selective Repeat ARQ.
- Hybrid ARQ is a combination of ARQ and forward
error correction.
6A pictorial view of coding
Replace k information bits by a unique n bit code
word
- 2n vectors 2k code words (code)
-
7Error detection
received vector not equal to one of the 2k
code words.
- 2n vectors transmitted word
- received
-
8Misdetection
- 2n vectors transmitted word
- received
-
-
9Consider the following example
- transmitted
- 0 0 0 0 0 0 1 0 1 1 1 0 1 0 1 1 1 1 1 0
- received
- 0 0 0 0 1 0 1 0 1 0 1 0 1 0 0 1 1 1 1 1
- 0 0 0 1 0 0 1 0 0 1 1 0 1 1 1 1 1 1 0 0
- 0 0 1 0 0 0 1 1 1 1 1 0 0 0 1 1 1 0 1 0
one error - 0 1 0 0 0 0 0 0 1 1 1 1 1 0 1 1 0 1 1 0
- 1 0 0 0 0 1 1 0 1 1 0 0 1 0 1 0 1 1 1 0
- 0 0 1 1 0 1 1 0 0 1 1 0 0 1 1 0 1 1 0 0
- 1 1 0 0 0 0 0 1 1 1 0 1 1 0 1 1 0 0 1 0
- Property one error can be corrected
- two errors can be detected
- CHECK!
-
10Error detection capability
- code words differ in at
least dmin positions - 2k vectors
-
-
-
0xx1x0x0 4 differences 1xx0x1x1 lt 3 errors
can be detected
up to dmin 1 errors are detectable
11Misdetection
for a random vector the probability of
false acceptance is (2k-1)/2n probability of
hitting the wrong code word
12A polynomial description of the procedure
- Let a (a0 a1,..., ak-1) be k information
bits - the information is represented by A(X) Xn-k
(a0a1X ...ak-1 Xk-1 ) -
- the check polynomial is F(X) f0f1X
...fn-k Xn-k. -
- The transmitted code polynomial or encoding
procedure is -
- C(X) ( A(X) mod F(X) A(X) )
-
- Note that C(X) mod F(X) ? 0, and thus is C(X) a
multiple of F(X).
13A non-systematic procedure
- Transmit C(X) F(X) (a0a1X ...ak-1 Xk-1 )
- then, C(X) modulo F(X) 0!
14Some examples
- All coefficient operations are modulo-2
- ( 1 X X3 ) (X X2 ) X X2 X4 X2 X3
X5 - X X3 X4 X5
- errors change 0 1 and 1 0
- Ex ( X X4 X5 ) modulo-(1 X2 ) 1
- Subtract as often as possible ( 1 X2 ), but
keep calculating mod-2
15Ex ( X X4 X5 ) Modulo- (1 X2 )
- X X4 X5
- X3 X5 X3
- X X3 X4
- X2 X4 X2
- X X2 X3
- X X3 X
- X2
- 1 X2 1
- 1
16detection procedure
- Assume that we receive the polynomial R(X)
C(X) E(X) -
- where E(X) is a binary error polynomial
- i.e. an error vector ( 0,0,0,1,0) ? C(X) X3
-
- the decoder calculates R(X) mod F(X)
- - if the result 0 no error detected
- - if the result ? 0, then an error is
detected. -
- The polynomial R(X) mod F(X) 0 if and only if
E(X) is a multiple of F(X).
17performance
- ASSUME the polynomial F(X) has the form F(X)
1 ... Xn-k - - degree n-k - and a nonzero constant term,
- THEN any error burst of length ? n-k has a
polynomial representation - that looks like E(X) Xi (1 ... Xn-k-1 )
- and can thus never be a multiple of F(X).
- F(X) is capable of detecting any burst of
length ? n-k !
18Performance contd
- A nonzero burst of length ? (n-k) can never
give a zero result. - This can also be seen as follows
- n - k
- E(X) 0 0 0 0 0 0 ... 0 1 0 ... 1 0 ...
1 0 0 0 -
- Xi F(X) 0 0 ... 0 ... 1 ...
1 - n-k1
- WHY the binary representation of F(X) has
length (n - k 1) - cancellation of the highest degree nonzero
component in E(X) always gives a non-zero
result. -
19CRC standard polynomials
- CRC-8 x8x2x11
- CRC-10 x10x9x5x4x11
- CRC-12 x12x11x3x21
- CRC-16 x16x15x21
- CRC-CCITT x16x12x51
- CRC-32 x32x26x23x22 x16x12x11x10x8
x7x5x4x21 - Ethernet uses CRC-32
- HDLC CRC-CCITT
- ATM CRC-8, CRC-10, and CRC-32
20Why these polynomials (CRC-16 and CRC-CCITT) ?
- 1st property Multiples of these polynomials have
even weight -
- Hence error vectors of odd weight cannot be a
multiple! - 2nd property error vectors of the form E(X) (1
Xi ) - are not divisible by F(X) for i lt L,
- L larger than word length
- Try to check this property!
- Conclusion 1, 2 and 3 errors are detectable.
CHECK!
21SUMMARY for ERROR DETECTION
- Remark We do all operations modulo 2 (XOR).
F(X) 1 .... Xn-k - A packet has the form
-
- C(X) A(X) mod F(X) A(X) Xn-k
(a0 a1X ... ak-1 Xk-1 - checksum information packet of length
k. -
-
- C checksum a0 a1 a2
... ak-1 - n-k bits k bits data
- To calculate A(X) mod F(X), cancel highest
nonzero term with F(X) until result has degree
less than n-k
22Contd
- invert C at positions where the binary error
vector E has ones R C ? E -
- EXAMPLE
- C checksum a0 a1 a2 ...
ak-1 0 0 0 1 1 1 1
1 0 1 1 - C c0 c1 c2 ... 0 ... 1 ...
1 ... 0 cn-1 0 0 0 0 1 0 0
1 0 1 1 - E e0 e1 e2 ... 1 ... 1 ...
0 ... 0 en-1 0 1 0 1 - 1 0 1 1
- R r0 r1 r2 1 ... 0
... 1 ... 0 rn-1 1 1 1 0 check
sum -
- If no errors C(X) mod F(X) A(X) mod F(X) ?
A(X) mod F(X) 0! - If errors C(X) ? E(X) mod F(X) E(X) mod
F(X).
23Shift-register
The following shift register can be used to
calculate A(X) modulo (1 X X3 )
a0 a1 a2 ... ak-1
Homework give a description of the shift
control to obtain the result
24Contd
- Example calculate ( 1 X2 X4 X5 ) modulo (
1 X X3 ) - In binary ( 1 0 1 0 1 1 ) modulo ( 1 1 0 1 )
- The operations in binary are as follows
- 1 0 1 0 1 1 1 X2 X4 X5
- 0 0 1 1 0 1 X2 ( 1 X X3 )
- 1 0 0 1 1 0
- 0 1 1 0 1 0 X ( 1 X X3 )
- 1 1 1 1 0 0
- 1 1 0 1 0 0 ( 1
X X3 ) - RESULT 0 0 1 0 0 0 X2
Homework draw the corresponding shift register
25CRC contd
- The following clocked shift register can be
used to implement CRC16
F(X) 1 X2 X15 X16
Data in
13 flip-flops
Example X16 modulo F(X) 1 X2 X15
Question When is the result A(X) mod F(X) equal
to 0? What does this mean?
26A simple method
Fill row wise Transmit column wise RESULT any
burst of length L can be detected
0 1 1 0 0 1 1 0 0 1 1 0 0 0 1 1 0 0 1 1 0 0 0
0 0 0 0 0 0 0 0 0 0
L
0 1 1 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 1 1 1 1 0
0 0 0 0 0 0 0 0 1 1
row parity
27A simple code the single parity check code
- Make the number of ones in a code word even
- Method 1
- Take F(X) 1 X, i.e. C(X) F(X) A(X).
- C(X 1) adds up the number of ones and since X
1 is a root of F(X), the result is 0. - Method 2.
- Use the n-th bit to make the parity of a word
even - CONCLUSION detection of any number of odd errors
- Efficiency R (n-1)/n
28ISBN checksum checksum for 10-digit ISBN
- Given 9 digit product code. Starting at
leftmost digit - multiply corresponding digit
by 10, 9, 8, ... down to 2 inclusive - add the
resulting numbers add digit 10 such that the
result is divisible by 11 the number 10 is
written as X e.g., 0-201-61586-X is valid. The
last digit has to be 10 ( X). 100 92 80
71 66 51 45 38 62 110 122
10 132 1211 detects transpositions and
single digit errors - an error e at
position I gives as result the value eI modulo 11
? 0 - detection of an transposition error of
A and B A I B (I-1) ? BI A(I-1) AI
B(I-1) A B the value ( A B ) ? 0
modulo 11 for A ? B
29Combining error detection-correction
- G1(X) G2(X) generates a code with minimum
distance D2 - G1(X) generates a code with minimum distance D1 lt
D2 - C(X) I(X) G1(X) G2(X) I(X)G1(X)
- decoding
- step 1 correct a maximum of ë( D1 1 )/2û
errors with G1(X) - step 2 detect the remaining errors with
G1(X)G2(X) - properties
- 1. t ë( D1 1 )/2û errors correctable
- 2. t D2 - 1 - ë( D1 1 )/2û errors
detectable - Homework construct some examples
30Combining error detection-correction
- Example
- n k dmin generator polynomial (octal)
- 63 57 3 G1 103 (octal)
- 51 5 G2 x G1 G1 x (127)
- 45 7 G3 x G2 x G1 G2 x G1 x (147)
31Example bluetooth
- Three error correction schemes are defined for
Bluetooth - 1/3 rate FEC, a simple repetition
- 2/3 rate FEC, a shortened Hamming Code (10,15)
- ARQ scheme for data (automatic retransmission
request) - FEC schemes reduce the number of retransmissions
- A CRC code decides whether a packet/header
contains errors, i.e. - transmit C(X) I(X) g(X)
- receive R(X) C(X) E(X)
- check R(X) modulo g(X) 0 ?
32Bookland EAN Symbol
33Proper codes
Linear block codes do not necessarily obey the
2-(n-k) bound. In other words, a code is proper
if PU is monotonically increasing in p, for 0.0 ?
p ? 0.5. Hamming codes and primitive double
error-correcting BCH codes are proper. To
illustrate the above behavior, we compare the
standard CRC-16 for a length 80 packet with a
double error correcting BCH code of length 81 and
17 redundant digits.
Detection error probability as a function of the
channel error probability.
34Unidirectional errors detection Berger
codesapplication memory systems
Errors unidirectional, i.e. In a word only from
0 to 1 (or from 1 to 0)
log2 (n1) check bits indicate the of zeros in
the first part
n binary data bits
Example n 7 log2 (n1) 3 1 0 0 0 1 1 1 0
1 1
Suppose errors from 1 to 0 in the first part
only number of zeros does not match check in
the second part only idem dito in the first and
second part the first part gets more
zeros the second part gets
smaller CONCLUSION any number of errors
detectable!
35Some practical info
INTEL website http//datasheets.chipdb.org/Intel
/x86/Pentium/Embedded20PentiumAE20Processor/ERR
ORDET.PDF
Xilinx website http//www.xilinx.com/support/doc
umentation/application_notes/xapp645.pdf
Altera website http//www.altera.com/literature/
an/an357.pdf