APPENDIX A 



ERROR DETECTION: 



The data from the pilot whale (1987) transmissions had about a 15% 

 error rate, and it is reasonable to assume that we will continue to 

 have a similar error rate from future transmissions. One method 

 for increasing data reliability is to implement an error detection 

 scheme. 



Errors found in the pilot whale transmissions occurred in bursts. 

 "Bursts" are clumps of errors scattered over an otherwise clean 

 transmission. A common scheme for the detection of burst errors is 

 to add a Cyclic Redundancy Check (CRC) code to the transmission. 



In concept, the procedures for implementing a CF code are to: 



a) convert the data stream into a polynomial. Each bit 

 position represents a coefficient of a polynomial, for 

 instance: 



10101 would be Ix^ + Ox^ + Ix^ + Ox^ + lx° and 

 11010 would be Ix*^ + Ix^ + Ox"^ + Ix' + Ox°; 



b) multiply the polynomial by x", where n = the number of 

 error detection bits being used for the CRC code; 



c) divide the result by a special (primitive) polynomial. 

 Primitives are specific to the number of error detection bits 

 being used, for example: 



a primitive for 8 bits of error detection is 

 Ix^ + Ox'^ + Ox^ + Ox^ + 1 '' 

 represented by 10001001, 



Ix' + Ox'^ + Ox^ + Ox^ + Ix^ + Ox^ + Ox^ + lx° 



Since there may be more than one applicable primitive, it is 

 important that all parties concerned pre-agree on the 

 primitive to be used; 



d) the coefficients of the remainder are the CRC code; 



e) append the CRC code to the original data stream and 

 transmit; 



f) upon receipt, divide the entire transmission by the 

 primitive. If the new remainder is zero, then there were no 

 errors. If the new remainder is non-zero, then there were 

 errors . 



This scheme supposedly works with 100% accuracy for bursts of 

 errors shorter than or equal to the number of bits used for 

 detection. The detectability of errors longer than the number of 



149 



