Patent GB-1267113-A (GB)
IPC: H04L1/00
Filed: 1969-10-10
Abstract: 1,267,113. Error correcting codes. CODEX CORP. 10 Oct., 1969 [11 Oct., 1968], No. 49902/69. Heading H4P. [Also in Division G4] A decoder for data encoded by a convolutional error correcting code employs fast logic circuitry to hypothesize the existence and location of errors according to a sequential search algorithm. The undecoded bits of data while being examined by the logic circuitry reside in a store, having a length equal to at least a plurality of constraint lengths of the code, which communicates with a constant capacity buffer store holding variable lengths of decoded and undecoded bits. A convolutional code of rate 1/2 is preferred and decoders are described for both systematic and unsystematic coding. A monograph " Sequential Decoding " by Wozencraft and Reifen is referred to amongst others. Data bits to be encoded by a systematic convolutional code enter serially a shift register 13 (Fig. 1A) and modulo 2 adder 14, tapped to particular stages of the register according to the convolutional code employed, computes a parity check bit for each shift of the register, which bits are transmitted alternately with the data bits. The decoder (Fig. 10) decides whether the received data bits are 1 or 0, without any indication of the probability of this decision being correct and separates the bits into information bits (i) and parity bits (p). A syndrome bit former adds to the received parity bits a corresponding parity bit formed from received information bits to create syndrome bits (s) indicative of transmission errors in either the information or parity bits. The information bits (i) are stored in information bit buffers awaiting the creation in the active memory of correction bits from the syndrome bits. The active memory (Fig. 10) consists of two two-way shift registers and receives syndrome bits into the lower register from constant capacity buffer memory 17. For each syndrome bit an error is hypothesized in either the original information bit or original parity bit from which the syndrome bit was created, or an error in both such bits. An error in the parity bit is stored as a bit 1 in the R.H. end of the lower register and an error in the information bit is stored as a bit 1 in the upper register. The information error bits are transferred to the constant capacity buffer memory 17 for correction of the original information bits in an error correction circuit. When a syndrome bit arrives at a stage P in the lower register, a 0 automatically enters the first H stage of the upper register so hypothesizing no errors in the corresponding information bit, and no error or an error in the corresponding parity bit depending on whether the syndrome bit was a 0 or 1. The logic circuitry 19 examines the H and P stages at each shift and keeps a running count of the number of errors. If the count is rising too fast, the logic circuitry causes the registers to shift backwards and in so doing complement the H and P stages, thereby changing the hypothesis of the errors. The logic circuitry embodies a Fano algorithm to decide on the basis of the H and P stages and the error count to shift backwards or forwards. A valve called the metric is kept as the error count to which + 1, - 4 or - 9 is added for none, one or two errors in the information and parity bits of each syndrome. The metric is reduced to zero again on reaching + 5. In another embodiment the logic circuitry decides on each move whether to complement the information error hypothesis H at the H stage and with it all associated syndrome bits yet to arrive at the P stage. The logic circuitry can also decide in advance when the metric is about to become negative so it can make a move to avoid it going negative. If the logic circuitry falls behind in its search so that correction bits are not available for information bits arriving at the correction circuit some or all of the syndrome bits in the constant capacity buffer and active memory are zeroized so hypothesizing no errors in the corresponding information bits. Figs. 16 and 17 show a coder and decoder respectively for a non-systematic convolutional code. Information bits (i) enter a shift register from which two parity bits are generated for every shift of the register. At the decoder the original information bits, as modified by channel errors, are created by shift registers 102, 104 and syndrome bits are created by shift registers 110, 112 and adder 108 to pass to a decoder. The decoder provides error bits for streams 1<SP>1</SP> and 2<SP>1</SP> which are combined at adder 122 to correct the information bits in delay 114. The constant capacity buffer memory of Fig. 10 may either be two one-way shift registers or an addressable magnetic core memory (Figs. 3 to 8, not shown).