Patent GB-947188-A (GB)
Title: Improvements in or relating to error correcting systems for binary coded multi-bit data signal handling arrangements
IPC: H04L1/00
Filed: 1960-09-13
Abstract: 947,188. Error detection and correction. INTERNATIONAL BUSINESS MACHINES CORPORATION. Sept. 13, 1960 [Sept. 25, 1959], No. 31455/60. Heading G4A. With a group of binary digits are associated locator parity bits which determine the position of an error which may occur during data transmission and error-type parity bits which determine the kind of error, in particular whether a single error, a double adjacent error, a double non-adjacent error, or a burst of three errors. The parity bits are generated by the use of shift registers which give outputs in the form of an m-sequence. An m-sequence is a sequence of 2<SP>R-1</SP> binary digits satisfying where the C j  are binary coefficients determined from reference tables of irreducible polynominals. The positions of the binary ones in the sequence determine those bit positions in a data word checked by a specific parity bit. The Specification relates to fifteen bit words, nine data bits, four locator parity bits and two error-type parity bits, and an m-sequence for R = 4 satifies the recurrence relation which is realized by the generator 50 (Fig. 2) in the form of a four stage shift register with the last two stages F 3 , F 4  connected to the first F 1  through an exclusive-or circuit 53. With F 1  initially storing a one the output of each stage is the sequence. with each stage lagging one bit behind the immediately preceding stage. As shown in Fig. 4 the locator parity bit P 1  checks the bits in positions D 1 , D 2 , D 4 , D 6 , # 2 , D 7 , D 8  and P 1 , and this is effected by stage F 1  of generator 50 opening an and gate 56 at the times these data bits are entered in a shift register 30 i.e. each time F 1  stores a one of the m-sequence. If there are an odd number of binary ones in these data positions a P 1  flip-flop will be set to one at the end of data entry. However adjustment must be made for the value of the error-type parity bit # 2  which P 1  also checks. Similar arrangements derive a first approximation to locator parity bits P2 to P 4 . The positions checked by the error-type parity bits are determined by the m-sequence 011 generated by flip-flops G 1  G 2  of which the outputs feed back through an exclusive-or circuit to G 1 , besides opening and gates 66 to data bits and the first approximations to the locator parity bits at times determined by the one bits in the m-sequence in order to set flip-flops # 1 , # 2 . Finally the errortype parity bits are entered in the appropriate flip-flops P 1  to P 4  through and gates 70, 71 to determine the final locator parity of the data group. Error detection and correction. It is shown in the Specification and in an article by C. M. Melos: "A new group of codes for correction of dependent errors on data transmission" (IBM journal of Research and Development, Vol. 4 No. 1, January 1960 at page 58), which is referred to, that, if the locator and error-type parity bits are computed on reception of the data group, (a) If the parity bits are zero, no error has occurred. (b) A single error in position N gives the same locator parity count as a double adjacent error starting in position N-4,a double non-adjacent error starting in position N-8, and a triple error burst starting in position N-10. (c) The location of a single error is determined by applying shift pulses to the locator parity m-generator until it registers the computed pattern of locator parity bits. The number of pulses necessary indicate the bit position of a single error. (d) The type of error is determined by a similar operation on the error type m-sequence generator. Fig. 5 shows error detection and correction apparatus. A data group is read into a shift register 101 by shift pulses S1 to S15 while the parity bits are computed by means of apparatus similar to that used before transmission. If any of the parity bits are non-zero an error trigger 132 produces an error signal which prevents reception of further data since and gate 114 is no longer opened by clock pulses. The error signal sets a forward drive trigger 161 and a counter 156 is driven by shift pulses S16 to S30 while the locator parity bit m-sequence generator is recycled by a second set of shift pulses S1 to S15. When the state of the flip-flops (F) of the sequence generator coincides with the state of the flip-flops (P) storing the computed parity bits a P-F compare signal issues from circuit 142 which sets a counter control trigger 14 to enable a 4-state counter 140 (there are four possible kinds of error) to be driven by shift pulses S16 to S30, and resets trigger 161 to stop counter 156. When comparison obtains where possible between the state of sequence generator and the computed error-type parity bits counter 140 is stopped. In the example described of a data group of fifteen bits a zero count on comparison indicates a single bit error, a one count indicates a double adjacent error and a two count a double non- adjacent error. Since the error type m-sequence is only two bits long (three combinations) a triple error burst is detected by non-comparison between the sequence generator and the computed error-type parity bits. The count is transmitted to a count modification unit 157 which modifies the setting of counter 140 according to the rules set out in (b) above, and to a corrector modification unit 159 which sets in a corrector register 158 a three bit number appropriate to the error being corrected: 001 for a single error, 011 for a double adjacent error, 101 for a double non- adjacent error and 111 for triple error. The shift pulse S30 turns on a reverse drive trigger 166 and a correct command trigger 164 and sets error trigger 132 to no error. A last cycle of shift pulses S1 to S15 and a cycle of clock pulses C1 to C10 now follow. The shift pulses drive counter 156 to count down from the count at which it was stopped by the P-F compare signal at the same time stepping data from the shift register 101 while a new data group may be read in. When counter 156 reaches a count of one, gate 158G is opened and the bit position at which an error has been detected is on stage 15 of the shift register with the result that appropriate data positions are corrected by adding in the contents of register 158 (without carry). When the counter reaches 0 trigger 164 is turned off and the process is complete. Since in the data group parity bit #2 comes between data bits D 6  and D 7  the output arrangement 109 is necessary to close the gap left by omission of the parity bit. Figure 6 shows the computation of parity bits for a correctly received data group. Figures 6a to 6c show the detection and correction of a triple error burst in bit positions 10 to 12 of the same message. The locator parity is computed as 0101 and the sequence generator 110 reaches this sequence at shift pulse 20 stopping counter 156 at a count of 5. The error type parity bits are computed as 00, and since generator 121 does not generate this sequence no comparison is possible and the counter 140 is set to 3, while the counter 140 is modified to a count of 5 - 10 = 10. At the tenth shift pulse of the next set S1 to S15, counter 156 reaches a count of 1 to add the correction 111 into the shift register 101. U. S. A. Specification 2, 552, 629 is referred to.