Error Coding Transmission process may introduce errors into a - - PowerPoint PPT Presentation

error coding
SMART_READER_LITE
LIVE PREVIEW

Error Coding Transmission process may introduce errors into a - - PowerPoint PPT Presentation

Error Coding Transmission process may introduce errors into a message. Single bit errors versus burst errors Detection: Requires a convention that some messages are invalid Hence requires extra bits An (n,k) code has


slide-1
SLIDE 1

Error Coding

Transmission process may introduce errors into a message.

Single bit errors versus burst errors

Detection:

Requires a convention that some messages are invalid

Hence requires extra bits

An (n,k) code has codewords of n bits with k data bits and r = (n-k) redundant check bits

Correction

Forward error correction: many related code words map to the same data word

Detect errors and retry transmission

slide-2
SLIDE 2

Parity

1-bit error detection with parity

Add an extra bit to a code to ensure an even (odd) number

  • f 1s

Every code word has an even (odd) number of 1s

01 11 10 00 Valid code words 010 110 100 000 011 111 101 001 Parity Encoding: White – invalid (error)

slide-3
SLIDE 3

Voting

1-bit error correction with voting

Every codeword is transmitted n times

010 110 100 000 011 111 101 001 Voting: White – correct to 1 Blue - correct to 0 1 Valid code words

slide-4
SLIDE 4

Basic Concept: Hamming Distance

Hamming distance of two bit strings = number of bit positions in which they differ.

If the valid words of a code have minimum Hamming distance D, then D-1 bit errors can be detected.

If the valid words of a code have minimum Hamming distance D, then [(D-1)/2] bit errors can be corrected.

1 0 1 1 0 1 1 0 1 0 HD=2

slide-5
SLIDE 5

Examples

Parity

01 11 10 00 Valid code words 010 110 100 000 011 111 101 001 Parity Encoding: White – invalid (error) 010 110 100 000 011 111 101 001 Voting: White – correct to 1 Blue - correct to 0 1 Valid code words

Voting

slide-6
SLIDE 6

Digital Error Detection Techniques

Two-dimensional parity

Detects up to 3-bit errors

Good for burst errors

IP checksum

Simple addition

Simple in software

Used as backup to CRC

Cyclic Redundancy Check (CRC)

Powerful mathematics

Tricky in software, simple in hardware

Used in network adapter

slide-7
SLIDE 7

Two-Dimensional Parity

Use 1-dimensional parity

Add one bit to a 7-bit code to ensure an even/odd number of 1s

Add 2nd dimension

Add an extra byte to frame

Bits are set to ensure even/odd number of 1s in that position across all bytes in frame

Comments

Catches all 1-, 2- and 3-bit and most 4-bit errors

slide-8
SLIDE 8

Two-Dimensional Parity

Use 1-dimensional parity

Add one bit to a 7-bit code to ensure an even/odd number of 1s

Add 2nd dimension

Add an extra byte to frame

Bits are set to ensure even/odd number of 1s in that position across all bytes in frame

Comments

Catches all 1-, 2- and 3-bit and most 4-bit errors

0101001 1101001 1011110 0001110 0110100 1011111 Data

slide-9
SLIDE 9

Two-Dimensional Parity

Use 1-dimensional parity

Add one bit to a 7-bit code to ensure an even/odd number of 1s

Add 2nd dimension

Add an extra byte to frame

Bits are set to ensure even/odd number of 1s in that position across all bytes in frame

Comments

Catches all 1-, 2- and 3-bit and most 4-bit errors

1 1 1 1 1111011 Parity Bits Parity Byte 0101001 1101001 1011110 0001110 0110100 1011111 Data

slide-10
SLIDE 10

Internet Checksum

Idea

Add up all the words

Transmit the sum

Internet Checksum

Use 1’s complement addition on 16bit codewords

Example

Codewords:

  • 5
  • 3

1’s complement binary: 1010 1100

1’s complement sum 1000

Comments

Small number of redundant bits

Easy to implement

Not very robust

slide-11
SLIDE 11

IP Checksum

u_short cksum(u_short *buf, int count) { register u_long sum = 0; while (count--) { sum += *buf++; if (sum & 0xFFFF0000) { /* carry occurred, so wrap around */ sum &= 0xFFFF; sum++; } } return ~(sum & 0xFFFF); }

slide-12
SLIDE 12

Cyclic Redundancy Check (CRC)

Goal

Maximize protection, Minimize extra bits

Idea

Add k bits of redundant data to an n-bit message

N-bit message is represented as a n-degree polynomial with each bit in the message being the corresponding coefficient in the polynomial

Example

Message = 10011010

Polynomial

= 1 ∗x7 + 0 ∗x6 + 0 ∗x5 + 1 ∗x4 + 1 ∗x3 + 0 ∗x2 + 1 ∗x + 0 = x7 + x4 + x3 + x

slide-13
SLIDE 13

CRC

Select a divisor polynomial C(x) with degree k

Example with k = 3:

C(x) = x3 + x2 + 1

Transmit a polynomial P(x) that is evenly divisible by C(x)

P(x) = M(x) + k bits

slide-14
SLIDE 14

CRC - Sender

Steps

T(x) = M(x) by xk (zero extending)

Find remainder, R(x), from T(x)/C(x)

P(x) = T(x) – R(x) ⇒ M(x) followed by R(x)

Example

M(x) = 10011010 = x7 + x4 + x3 + x

C(x) = 1101 = x3 + x2 + 1

T(x) = 10011010000

R(x) = 101

P(x) = 10011010101

slide-15
SLIDE 15

CRC - Receiver

Receive Polynomial P(x) + E(x)

E(x) represents errors

E(x) = 0, implies no errors

Divide (P(x) + E(x)) by C(x)

If result = 0, either

No errors (E(x) = 0, and P(x) is evenly divisible by C(x))

(P(x) + E(x)) is exactly divisible by C(x), error will not be detected

slide-16
SLIDE 16

CRC – Example Encoding

C(x) = x3 + x2 + 1 = 1101 Generator M(x) = x7 + x4 + x3 + x = 10011010 Message

slide-17
SLIDE 17

CRC – Example Encoding

10011010000 Message plus k zeros

C(x) = x3 + x2 + 1 = 1101 Generator M(x) = x7 + x4 + x3 + x = 10011010 Message

slide-18
SLIDE 18

CRC – Example Encoding

1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 10011010000 Message plus k zeros

C(x) = x3 + x2 + 1 = 1101 Generator M(x) = x7 + x4 + x3 + x = 10011010 Message

slide-19
SLIDE 19

CRC – Example Encoding

1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 10011010000 Message plus k zeros

C(x) = x3 + x2 + 1 = 1101 Generator M(x) = x7 + x4 + x3 + x = 10011010 Message

slide-20
SLIDE 20

CRC – Example Encoding

1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 10011010000 Message plus k zeros

C(x) = x3 + x2 + 1 = 1101 Generator M(x) = x7 + x4 + x3 + x = 10011010 Message

slide-21
SLIDE 21

CRC – Example Encoding

1001 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 10011010000 Message plus k zeros

C(x) = x3 + x2 + 1 = 1101 Generator M(x) = x7 + x4 + x3 + x = 10011010 Message

slide-22
SLIDE 22

CRC – Example Encoding

1001 1101 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 10011010000 Message plus k zeros

C(x) = x3 + x2 + 1 = 1101 Generator M(x) = x7 + x4 + x3 + x = 10011010 Message

slide-23
SLIDE 23

CRC – Example Encoding

1001 1101 1000 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 10011010000 Message plus k zeros

C(x) = x3 + x2 + 1 = 1101 Generator M(x) = x7 + x4 + x3 + x = 10011010 Message

slide-24
SLIDE 24

CRC – Example Encoding

1001 1101 1000 1101 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 10011010000 Message plus k zeros

C(x) = x3 + x2 + 1 = 1101 Generator M(x) = x7 + x4 + x3 + x = 10011010 Message

slide-25
SLIDE 25

CRC – Example Encoding

1001 1101 1000 1101 1011 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 10011010000 Message plus k zeros

C(x) = x3 + x2 + 1 = 1101 Generator M(x) = x7 + x4 + x3 + x = 10011010 Message

slide-26
SLIDE 26

CRC – Example Encoding

1001 1101 1000 1101 1011 1101 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 10011010000 Message plus k zeros

C(x) = x3 + x2 + 1 = 1101 Generator M(x) = x7 + x4 + x3 + x = 10011010 Message

slide-27
SLIDE 27

CRC – Example Encoding

1001 1101 1000 1101 1011 1101 1100 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 10011010000 Message plus k zeros

C(x) = x3 + x2 + 1 = 1101 Generator M(x) = x7 + x4 + x3 + x = 10011010 Message

slide-28
SLIDE 28

CRC – Example Encoding

1001 1101 1000 1101 1011 1101 1100 1101 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 10011010000 Message plus k zeros

C(x) = x3 + x2 + 1 = 1101 Generator M(x) = x7 + x4 + x3 + x = 10011010 Message

slide-29
SLIDE 29

CRC – Example Encoding

1001 1101 1000 1101 1011 1101 1100 1101 1000 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 10011010000 Message plus k zeros

C(x) = x3 + x2 + 1 = 1101 Generator M(x) = x7 + x4 + x3 + x = 10011010 Message

slide-30
SLIDE 30

CRC – Example Encoding

1001 1101 1000 1101 1011 1101 1100 1101 1000 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 1101 10011010000 Message plus k zeros

C(x) = x3 + x2 + 1 = 1101 Generator M(x) = x7 + x4 + x3 + x = 10011010 Message

slide-31
SLIDE 31

CRC – Example Encoding

1001 1101 1000 1101 1011 1101 1100 1101 1000 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 101 1101 10011010000 Message plus k zeros

C(x) = x3 + x2 + 1 = 1101 Generator M(x) = x7 + x4 + x3 + x = 10011010 Message

slide-32
SLIDE 32

CRC – Example Encoding

1001 1101 1000 1101 1011 1101 1100 1101 1000 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 101 1101 Remainder m mod c 10011010000 Message plus k zeros

C(x) = x3 + x2 + 1 = 1101 Generator M(x) = x7 + x4 + x3 + x = 10011010 Message

slide-33
SLIDE 33

CRC – Example Encoding

1001 1101 1000 1101 1011 1101 1100 1101 1000 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 101 1101 Remainder m mod c 10011010000 Message plus k zeros

Result: Transmit message followed by remainder: 10011010101

C(x) = x3 + x2 + 1 = 1101 Generator M(x) = x7 + x4 + x3 + x = 10011010 Message

slide-34
SLIDE 34

CRC – Example Decoding – No Errors

C(x) = x3 + x2 + 1 = 1101 Generator P(x) = x10 + x7 + x6 + x4 + x2 + 1 = 10011010101 Received Message

slide-35
SLIDE 35

CRC – Example Decoding – No Errors

10011010101 Received message, no errors

C(x) = x3 + x2 + 1 = 1101 Generator P(x) = x10 + x7 + x6 + x4 + x2 + 1 = 10011010101 Received Message

slide-36
SLIDE 36

CRC – Example Decoding – No Errors

1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 10011010101 Received message, no errors

C(x) = x3 + x2 + 1 = 1101 Generator P(x) = x10 + x7 + x6 + x4 + x2 + 1 = 10011010101 Received Message

slide-37
SLIDE 37

CRC – Example Decoding – No Errors

1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 10011010101 Received message, no errors

C(x) = x3 + x2 + 1 = 1101 Generator P(x) = x10 + x7 + x6 + x4 + x2 + 1 = 10011010101 Received Message

slide-38
SLIDE 38

CRC – Example Decoding – No Errors

1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 10011010101 Received message, no errors

C(x) = x3 + x2 + 1 = 1101 Generator P(x) = x10 + x7 + x6 + x4 + x2 + 1 = 10011010101 Received Message

slide-39
SLIDE 39

CRC – Example Decoding – No Errors

1001 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 10011010101 Received message, no errors

C(x) = x3 + x2 + 1 = 1101 Generator P(x) = x10 + x7 + x6 + x4 + x2 + 1 = 10011010101 Received Message

slide-40
SLIDE 40

CRC – Example Decoding – No Errors

1001 1101 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 10011010101 Received message, no errors

C(x) = x3 + x2 + 1 = 1101 Generator P(x) = x10 + x7 + x6 + x4 + x2 + 1 = 10011010101 Received Message

slide-41
SLIDE 41

CRC – Example Decoding – No Errors

1001 1101 1000 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 10011010101 Received message, no errors

C(x) = x3 + x2 + 1 = 1101 Generator P(x) = x10 + x7 + x6 + x4 + x2 + 1 = 10011010101 Received Message

slide-42
SLIDE 42

CRC – Example Decoding – No Errors

1001 1101 1000 1101 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 10011010101 Received message, no errors

C(x) = x3 + x2 + 1 = 1101 Generator P(x) = x10 + x7 + x6 + x4 + x2 + 1 = 10011010101 Received Message

slide-43
SLIDE 43

CRC – Example Decoding – No Errors

1001 1101 1000 1101 1011 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 10011010101 Received message, no errors

C(x) = x3 + x2 + 1 = 1101 Generator P(x) = x10 + x7 + x6 + x4 + x2 + 1 = 10011010101 Received Message

slide-44
SLIDE 44

CRC – Example Decoding – No Errors

1001 1101 1000 1101 1011 1101 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 10011010101 Received message, no errors

C(x) = x3 + x2 + 1 = 1101 Generator P(x) = x10 + x7 + x6 + x4 + x2 + 1 = 10011010101 Received Message

slide-45
SLIDE 45

CRC – Example Decoding – No Errors

1001 1101 1000 1101 1011 1101 1100 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 10011010101 Received message, no errors

C(x) = x3 + x2 + 1 = 1101 Generator P(x) = x10 + x7 + x6 + x4 + x2 + 1 = 10011010101 Received Message

slide-46
SLIDE 46

CRC – Example Decoding – No Errors

1001 1101 1000 1101 1011 1101 1100 1101 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 10011010101 Received message, no errors

C(x) = x3 + x2 + 1 = 1101 Generator P(x) = x10 + x7 + x6 + x4 + x2 + 1 = 10011010101 Received Message

slide-47
SLIDE 47

CRC – Example Decoding – No Errors

1001 1101 1000 1101 1011 1101 1100 1101 1101 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 10011010101 Received message, no errors

C(x) = x3 + x2 + 1 = 1101 Generator P(x) = x10 + x7 + x6 + x4 + x2 + 1 = 10011010101 Received Message

slide-48
SLIDE 48

CRC – Example Decoding – No Errors

1001 1101 1000 1101 1011 1101 1100 1101 1101 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 1101 10011010101 Received message, no errors

C(x) = x3 + x2 + 1 = 1101 Generator P(x) = x10 + x7 + x6 + x4 + x2 + 1 = 10011010101 Received Message

slide-49
SLIDE 49

CRC – Example Decoding – No Errors

1001 1101 1000 1101 1011 1101 1100 1101 1101 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 1101 10011010101 Received message, no errors

C(x) = x3 + x2 + 1 = 1101 Generator P(x) = x10 + x7 + x6 + x4 + x2 + 1 = 10011010101 Received Message

slide-50
SLIDE 50

CRC – Example Decoding – No Errors

1001 1101 1000 1101 1011 1101 1100 1101 1101 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 1101 Remainder m mod c 10011010101 Received message, no errors

C(x) = x3 + x2 + 1 = 1101 Generator P(x) = x10 + x7 + x6 + x4 + x2 + 1 = 10011010101 Received Message

slide-51
SLIDE 51

CRC – Example Decoding – No Errors

1001 1101 1000 1101 1011 1101 1100 1101 1101 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 1101 Remainder m mod c 10011010101 Received message, no errors

Result: CRC test is passed

C(x) = x3 + x2 + 1 = 1101 Generator P(x) = x10 + x7 + x6 + x4 + x2 + 1 = 10011010101 Received Message

slide-52
SLIDE 52

CRC – Example Decoding – with Errors

C(x) = x3 + x2 + 1 = 1101 Generator P(x) = x10 + x7 + x5 + x4 + x2 + 1 = 10010110101 Received Message

slide-53
SLIDE 53

CRC – Example Decoding – with Errors

10010110101 Received message

C(x) = x3 + x2 + 1 = 1101 Generator P(x) = x10 + x7 + x5 + x4 + x2 + 1 = 10010110101 Received Message

slide-54
SLIDE 54

CRC – Example Decoding – with Errors

10010110101 Received message Two bit errors

C(x) = x3 + x2 + 1 = 1101 Generator P(x) = x10 + x7 + x5 + x4 + x2 + 1 = 10010110101 Received Message

slide-55
SLIDE 55

CRC – Example Decoding – with Errors

1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 10010110101 Received message Two bit errors

C(x) = x3 + x2 + 1 = 1101 Generator P(x) = x10 + x7 + x5 + x4 + x2 + 1 = 10010110101 Received Message

slide-56
SLIDE 56

CRC – Example Decoding – with Errors

1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 10010110101 Received message Two bit errors

C(x) = x3 + x2 + 1 = 1101 Generator P(x) = x10 + x7 + x5 + x4 + x2 + 1 = 10010110101 Received Message

slide-57
SLIDE 57

CRC – Example Decoding – with Errors

1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 10010110101 Received message Two bit errors

C(x) = x3 + x2 + 1 = 1101 Generator P(x) = x10 + x7 + x5 + x4 + x2 + 1 = 10010110101 Received Message

slide-58
SLIDE 58

CRC – Example Decoding – with Errors

1000 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 10010110101 Received message Two bit errors

C(x) = x3 + x2 + 1 = 1101 Generator P(x) = x10 + x7 + x5 + x4 + x2 + 1 = 10010110101 Received Message

slide-59
SLIDE 59

CRC – Example Decoding – with Errors

1000 1101 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 10010110101 Received message Two bit errors

C(x) = x3 + x2 + 1 = 1101 Generator P(x) = x10 + x7 + x5 + x4 + x2 + 1 = 10010110101 Received Message

slide-60
SLIDE 60

CRC – Example Decoding – with Errors

1000 1101 1011 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 10010110101 Received message Two bit errors

C(x) = x3 + x2 + 1 = 1101 Generator P(x) = x10 + x7 + x5 + x4 + x2 + 1 = 10010110101 Received Message

slide-61
SLIDE 61

CRC – Example Decoding – with Errors

1000 1101 1011 1101 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 10010110101 Received message Two bit errors

C(x) = x3 + x2 + 1 = 1101 Generator P(x) = x10 + x7 + x5 + x4 + x2 + 1 = 10010110101 Received Message

slide-62
SLIDE 62

CRC – Example Decoding – with Errors

1000 1101 1011 1101 1101 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 10010110101 Received message Two bit errors

C(x) = x3 + x2 + 1 = 1101 Generator P(x) = x10 + x7 + x5 + x4 + x2 + 1 = 10010110101 Received Message

slide-63
SLIDE 63

CRC – Example Decoding – with Errors

1000 1101 1011 1101 1101 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 1101 10010110101 Received message Two bit errors

C(x) = x3 + x2 + 1 = 1101 Generator P(x) = x10 + x7 + x5 + x4 + x2 + 1 = 10010110101 Received Message

slide-64
SLIDE 64

CRC – Example Decoding – with Errors

1000 1101 1011 1101 1101 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 0101 1101 10010110101 Received message Two bit errors

C(x) = x3 + x2 + 1 = 1101 Generator P(x) = x10 + x7 + x5 + x4 + x2 + 1 = 10010110101 Received Message

slide-65
SLIDE 65

CRC – Example Decoding – with Errors

1000 1101 1011 1101 1101 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 0101 1101 Remainder m mod c 10010110101 Received message Two bit errors

C(x) = x3 + x2 + 1 = 1101 Generator P(x) = x10 + x7 + x5 + x4 + x2 + 1 = 10010110101 Received Message

slide-66
SLIDE 66

CRC – Example Decoding – with Errors

1000 1101 1011 1101 1101 1101 1101 k + 1 bit check sequence c, equivalent to a degree-k polynomial 0101 1101 Remainder m mod c 10010110101 Received message

Result: CRC test failed

Two bit errors

C(x) = x3 + x2 + 1 = 1101 Generator P(x) = x10 + x7 + x5 + x4 + x2 + 1 = 10010110101 Received Message

slide-67
SLIDE 67

CRC Error Detection

Properties

Characterize error as E(x)

Error detected unless C(x) divides E(x)

(i.e., E(x) is a multiple of C(x))

What errors can we detect?

All single-bit errors, if xk and x0 have non-zero coefficients

All double-bit errors, if C(x) has at least three terms

All odd bit errors, if C(x) contains the factor (x + 1)

Any bursts of length < k, if C(x) includes a constant term

Most bursts of length ≥ k

slide-68
SLIDE 68

CRC Error Detection

Odd number of bit errors can be detected if C(x) contains the factor (x + 1) Proof:

C(x) = (x + 1) C’(x) => C(1) = 0 ( C(x) has an even number of terms)

P(x) = C(x) f(x) = (x + 1) C’(x) f(x) => P(1) = 0 ( P(x) has an even number of terms)

E(x) has an odd number of terms (odd number of error bits)  E(1) = 1 => P(1) + E(1) = 0 + 1 = 1 …………………………….. (1)

Assume E(x) cannot be detected by CRC with C(x)  P(x) + E(x) = C(x)g(x) => P(1) + E(1) = C(1)g(1) = 0 ………………………………(2) (1) contradicts (2) => E(x) must be detected by C(x)

slide-69
SLIDE 69

CRC Error Detection

Any error bursts of length < k will be detected if C(x) includes a constant term Proof:

E(x) = xi (xk-1 + ... + 1), where i >= 0

C(x) = x f(x) + 1

No power of x can be factored out of C(x) => C(x) is not a factor of xi …………………….(1)

C(x) has a degree of k: it cannot be a factor of polynomial with smaller degree (up to k-1) => C(x) is not a factor of xk-1 + ... + 1 …………………….(2) (1) (2) => C(x) cannot be a factor of E(x)

slide-70
SLIDE 70

Common Polynomials for C(x)

x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x1 + 1

CRC-32

x16 + x12 + x5 + 1

CRC-CCITT

x16 + x15 + x2 + 1

CRC-16

x12 + x11 + x3 + x2 + x1 + 1

CRC-12

x10 + x9 + x5 + x4 + x1 + 1

CRC-10

x8 + x2 + x1 + 1

CRC-8 C(x) CRC

slide-71
SLIDE 71

Cyclic Redundancy Codes (CRC)

Commonly used codes that have good error detection properties.

Can catch many error combinations with a small number or redundant bits

Based on division of polynomials.

Errors can be viewed as adding terms to the polynomial

Should be unlikely that the division will still work

Can be implemented very efficiently in hardware.

Examples:

CRC-32: Ethernet

CRC-8, CRC-10, CRC-32: ATM

slide-72
SLIDE 72

Error Detection vs. Error Correction

Detection

Pro: Overhead only on messages with errors

Con: Cost in bandwidth and latency for retransmissions

Correction

Pro: Quick recovery

Con: Overhead on all messages

What should we use?

Correction if retransmission is too expensive

Correction if probability of errors is high