Description
Description
The purpose of this lab is to understand and implement Cyclic Redundancy Check algorithm, as explained in the class. Input: The input to your program will be as follows: ./ec infile outfile The input file (infile) contains a set of binary strings (each of length 128 bits). For each string, you have to compute the CRC checksum, as explained below.
1.1 Cyclic Redundancy Check
Implement the CCITT CRC-8 polynomial: x 8 + x 2 + x + 1 Your implementation should use only bit-wise operations. Output: The output for each input string will be as shown in the example: Input: 0101……01 CRC: 0101……01110..11 – See below Note that each input string is 128 bits and the checksums are 8 bits each. All output will be stored in the ’outfile’.
1.2 Error Detection Properties
Also, for each entry in the input file, report the error detection properties of the mechanism as follows: • Generate 10 odd number (3 and above) of random bit errors (for each string) and check if the error is detected.
The output format is as follows: Original String: 0101……01110 Original String with CRC: 0101……01110..11 Corrupted String: 1011……01110..11 Number of Errors Introduced: 3 CRC Check: Failed (or Passed) 1 • For each input string, generate 5 random bursty errors, each of length 6 (for each string) with starting bit error position uniformly random between 100 and 110. Check if the error is detected in each case.
The output format is similar to what is shown above. This output should also be appended to the output file mentioned earlier. Random generators such as random and drand48 from stdlib.h may be useful. 2
What to Submit • Source code files • One sample input file used for your testing, with at least 50 entries • Corresponding Output file, showing both CRC computation and error detection tests 3
Grading • CRC Code: 35 points • CRC Error Detection: 15 points Note: This is an INDIVIDUAL assignment. If you are having difficulty with the assignment, please talk to the TAs/the instructor. Downloaded Code from the Web will NOT be considered for grading and such action will lead to academic penalties. 2