Error Detection Methods

Parity check

  • The parity checking protocol determines whether bits in a transmission have been corrupted
  • Every byte transmitted has one of its bits allocated as a parity bit
  • The sender and receiver must agree before transmission whether they are using odd or even parity
  • If odd parity is used then there must be an odd number of 1’s in the byte, including the parity bit
  • If even parity is used then there must be an even number of 1’s in the byte, including the parity bit
  • The value of the parity bit is determined by counting the number of 1’s in the byte, including the parity bit
  • If the number of 1’s does not match the agreed parity then an error has occurred
  • Parity checks only check that an error has occurred, they do not reveal where the error(s) occurred

Even parity

  • Below is an arbitrary binary string
EVEN
Parity bit
Byte
01011010
  • If an even parity bit is used then all bits in the byte, including the parity bit, must add up to an even number
    • There are four 1’s in the byte. This means the parity bit must be 0 otherwise the whole byte, including the parity bit, would add up to five which is an odd number

Odd parity

  • Below is an arbitrary binary string
ODD
Parity bit
Byte
11011010
  • If an odd parity bit is used then all bits in the byte, including the parity bit, must add up to an odd number
    • There are four 1’s in the byte. This means the parity bit must be a 1 otherwise the whole byte, including the parity bit, would add up to four which is an even number
  • The table below shows a number of examples of the agreed parity between a sender and receiver and the parity bit used for each byte
Example #Agreed parityParity bitMain bit stringTotal number of 1’s
#1ODD011010115
#2EVEN100010002
#3EVEN101011116
#4ODD101110015
#5ODD110101015
#6EVEN010011104
  • Example #1: The agreed parity is odd. All of the 1’s in the main bit string are added (5). As this number is odd already the parity bit is set to 0 so the whole byte stays odd
  • Example #2: The agreed parity is even. All of the 1’s in the main bit string are added (1). As this number is odd the parity bit is set to 1 to make the total number of 1’s even (2)
  • Example #6: The agreed parity is even. All of the 1’s in the main bit string are added (4). As this number is even already the parity bit is set to 0 so the whole byte stays even

How do errors occur?

  • When using parity bits, an error occurs when the number of total bits does not match the agreed parity
  • Bits can be flipped or changed due to interference on a wire or wirelessly due to weather or other signals
Example #Agreed parityParity bitMain bit stringTotal number of 1’sError
#1ODD111010116Error
#2EVEN100010002No error
#3EVEN101111117Error
#4ODD101110015No error
#5ODD110101116Error
#6EVEN010001103Error
  • Example #1: The agreed parity is odd but the total number of 1’s is even (6). An error has occurred somewhere
  • Example #2: The agreed parity is even and the total number of 1’s is even (2). No error has occurred here
  • Example #3: The agreed parity is even but the total number of 1’s is odd (7). An error has occurred somewhere
  • Parity checks are quick and easy to implement but fail to detect bit swaps that cause the parity to remain the same
  • Below is an arbitrary binary string. The agreed parity is odd and the total number of 1’s is five (odd)
Agreed parityParity bit Total number of 1’sError
ODD101010115No error
Agreed parityParity bit Total number of 1’sError
ODD110000013No error

Parity bytes and parity blocks

  • Parity checks do not pinpoint errors in data, only that an error has occurred
  • Parity blocks and parity bytes can be used to check an error has occurred and where the error is located
    • parity block consists of a block of data with the number of 1’s totalled horizontally and vertically
    • A parity byte is also sent with the data which contains the parity bits from the vertical parity calculation
  • Below is a parity block with a parity byte at the bottom and a parity bit column in the second column
ODDParity bitBit 2Bit 3Bit 4Bit 5Bit 6Bit 7Bit 8
Byte 101101011
Byte 200001000
Byte 310101111
Byte 410111001
Byte 511010101
Byte 611001110
Byte 700111110
Byte 801011000
Parity byte01111111
  • The above table uses odd parity
  • Each byte row calculates the horizontal parity as a parity bit as normal
  • Each bit column calculates the vertical parity for each row. This is the parity byte. It is calculated before transmission and sent with the parity block
  • Each parity bit tracks if a flip error occurred in a byte while the parity byte calculates if an error occurred in a bit column
  • By cross referencing both horizontal and vertical parity values the error can be pinpointed
  • In the above example the byte 3 / bit 5 cell is the error and should be a 0 instead
  • The error could be fixed automatically or a retransmission request could be sent to the sender

Checksums

  • Checksums determine if data has been corrupted but do not reveal where
  • Data is sent in blocks and an additional checksum value is added at the end of the block
  • Checksums are custom user-created algorithms that perform mathematical calculations on data
  • An example of a custom checksum algorithm in computer science is:
    • checksum byte is defined as a value between 1 and 255 which is stored in 8 bits. 8 bits are collectively known as a byte
    • If the sum of all of the bytes of a transmitted block of data is <= 255 then the checksum value is the sum of all of the bytes
    • If the sum of all of the bytes is > 255 then the checksum is calculated with an algorithm:
      • X = sum of all of the bytes
      • Y = X / 256
      • Round down Y to nearest whole number
      • Z = Y * 256
      • Checksum = X – Z

Custom Checksum Walkthrough

  • If X = 1496
    • Y = 1496 / 256 = 5.84
    • Rounded down Y = 5
    • Z = 5 * 256 = 1280
    • Checksum = 1496 – 1280 = 216
  • The checksum value in this example would be 216

Echo check

  • Echo checks involve transmitting the received data back to the sender. The sender then checks the data to see if any errors occurred during transmission
  • This method isn’t reliable as an error could have occurred when the sender transmits the data or when the receiver transmits the data. Neither will know when the error occurred.
  • If an error does occur the sender will retransmit the data

Check Digits

  • Check Digits to determine if data has been corrupted but do not reveal where
  • Data is sent in blocks and an additional check digit value is added at the end of the block
  • Check Digits are custom user-created algorithms that perform mathematical calculations on data
  • An example of a check digit is the ISBN value on books:
    • Each book has a unique ISBN number that identifies the book
    • A standard ISBN number may be ten digits, for example, 965-448-765-9
    • The check digit value is the final digit (9 in this example). This number is chosen specifically so that when the algorithm is completed the result is a whole number (an integer) with no remainder parts
    • check digit algorithm is performed on the ISBN number. If the result is a whole number then the ISBN is valid

ISBN Check Digit Walkthrough

    • To calculate an ISBN check digit the following algorithm is performed on 965-448-765-9:
      • Multiply each ISBN digit by 1 to 10 and add them all up:
        • 9×1 + 6×2 + 5×3 + 4×4 + 4×5 + 8×6 + 7×7 + 6×8 + 5×9 + 9×10 = 352
      • Take the total number and divide it by 11: 352/11 = 32. 32 is a whole number with no remainder so the ISBN is valid
  • Another example of a check digit is barcodes on purchasable items:
    • Barcodes consist of black and white lines which can be scanned using barcode scanners. Barcode scanners shine a laser on the black and white lines which reflect light into the scanner. The scanner reads the distance between these lines as numbers and can identify the item
    • Barcodes also use a set of digits to uniquely identify each item. The number of digits varies from code to code. An example would be 9780201379624
    • The final digit on a barcode is usually the check digit. Like an ISBN this can be used to validate and authenticate an item

Barcode Check Digit Walkthrough

  • To calculate a barcode check digit we can perform the following example algorithm on 9780201379624 (the final digit is the check digit):
    • Multiply each digit by 1 or 3, alternating between these two values and add them all up
      • 9×1 + 7×3 + 8×1 + 0x3 + 2×1 + 0x3 + 1×1 + 3×3 + 7×1 + 9×3 + 6×1 + 2×3 = 96
    • The check digit (the final digit) should be the difference between the sum and the closest multiple of 10 that is larger or equal to the sum
      • 96 rounded to the nearest 10 = 100
      • 100-96 = 4
      • The check digit is therefore 4 which matches our original barcode number

Custom Check Digit Walkthrough

  • If X = 1496
    • Y = 1496 / 256 = 5.84
    • Rounded down Y = 5
    • Z = 5 * 256 = 1280
    • Check digit = 1496 – 1280 = 216
  • The check digit value in this example would be 216

Loading

error: Content is protected !!