Error correction encoding and decoding system

Abstract: Information codes are stored in memory in the form of a data matrix having row addresses and column addresses. The information codes are extracted obliquely to produce a first error-correcting code word and transversely to produce a second error-correcting code word. The first error-correcting code word is produced by extracting the information codes in units of n row addresses (n is 2 or a larger integer). Another memory has addresses corresponding to row addresses of information codes and stores coefficients for use in generating the first error-correcting code word. An accumulator for generating the first error-correcting code word is provided with a two-port memory having writing addresses or addresses corresponding to the row addresses of information codes to be written and reading addresses or addresses corresponding to the row addresses of immediately preceding information codes that are members of the same error-correcting code word as the information codes to be written. Then, the first and second error-correcting code words are generated in parallel. Thus, high-speed processing and simple circuitry are realized.

Description: BACKGROUND OF THE INVENTION Field of the Invention The present invention relates to an error correction encoding and decoding system. More particularly, this invention is concerned with an error correction encoding and decoding system for producing a product code using inner codes and outer codes. Related Background Art When digital data transmission is performed to, for example, record or reproduce digital data on or from a magnetic recording medium, low-frequency components of digital codes to be recorded or transmitted on or to a magnetic recording medium or a transmission line must be suppressed. One of the suppressing methods is n-to-m conversion in which n-bit data is converted into m-bit (m > n) data having less low-frequency components. This method, however, increases redundancy and the amount of transmission data. Mapping encoding, for example, does not increase redundancy. The mapping encoding method can apply to image data or other data whose codes are closely correlated. This method is based on a characteristic that differential signals produced by performing differential encoding on input codes tend to concentrate on the vicinity of a zero level. To be more specific, the differential signals around the zero level are converted into codes of small digital sum values (hereafter, DSV), and thus low-frequency components of the code array are suppressed. 4-to-4 mapping encoding, for example, converts 4-bit differential codes into 4-bit codes. The mapping encoding uses the correlations among code arrays. Therefore, low-frequency components of codes that are not correlated cannot be suppressed. Error-detecting codes or error-correcting codes are not correlated one another, in general. Therefore, the low-frequency components of a code array made up of information codes and error-detecting or correcting codes for the information codes are suppressed less efficiently. This results in a high decoding error rate. Figure 1 shows an example of a data frame structure for transmitting a code array. The information data area contains mapped codes. To the inner code area, check points (error-correcting codes) of hamming codes or Read Solomon codes are allocated. Figure 2 shows a configuration of a data matrix in which data frames one of which is shown in Figure 1 are arranged lengthwise and a check point (outer code) is also allocated longitudinally. The data matrix is represented as a product code whose size is provided as a product of transverse codes by longitudinal codes. This matrix has check codes arranged two-dimensionally, which, therefore, is suitable for treating image data and other two-dimensional data. However, assuming that data frames in the data matrix shown in Figure 2 are to be transmitted sequentially, when inner codes continue, mapping encoding cannot suppress low-frequency components because of no correlations. In particular, when it comes to transmit a data frame made up of only check points of outer and inner codes, check points continue for a long time. This deteriorates efficiency of suppressing low-frequency components markedly. The present applicant invented a method of scattering check points of data frames among information codes as shown in Figure 3, and disclosed the invention in U.S. Patent No. 4,779,276. As for outer codes forming a product code, the applicant invented a method of re-arranging outer codes produced from columns of a data matrix into rows of the data matrix, then transmitting the outer codes in rows. However, the former method does not care about outer codes of a product code shown in Figure 2. The low-frequency components of a data frame made up of only check points of outer and inner codes are not suppressed very efficiently. The latter method has solved this problem. However, an outer code generating mode must be varied in columns, and an outer code encoding start point must also be altered in columns. In particular, when many check points of outer codes are generated, a pattern in which outer code check points do not continue transversely must be selected. Thus, the latter method requires complex processing. Under these circumstances, the present applicant filed U.S. Patent Application Serial No. 491,812 on March 12, 1990 to propose the method below. A data matrix for transmitting data in the order shown in Figure 4 is scanned as indicated with arrows in Figure 5 to extract information codes (data) for generating outer codes, then the outer code check points are generated. As disclosed in U.S. Patent No. 4,779,276, when reference row manipulation is performed on the rows and columns of a check matrix for generating check points, outer code check points can be scattered within a two-dimensional array in memory as shown in Figure 6. In Figure 6, outer codes are arranged obliquely. Thus, a data matrix with outer codes thus appended is scanned transversely (in rows), then data is sent to succeeding rows. Thereby, outer code check points are scattered on a time base. Figure 7 is a block diagram showing an example of a configuration of a code transmitting system that performs encoding based on oblique scanning shown in Figure 5. In Figure 7, 10 denotes an input terminal for inputting information (for example, image signals) to be recorded. A mapping encoding circuit 12 establishes the correlations among information entered at the input terminal 10 and suppresses low-frequencies of the information. The data whose low-frequencies are suppressed by the circuit 12 is written in a memory 14 to create a data matrix. Information codes of the data matrix stored in the memory 14 are read out obliquely as shown in Figure 5 under the control of an address control circuit 16, then applied to an outer code encoding circuit 18. The outer code encoding circuit 18 generates outer codes. The generated outer code parity bits are written at predetermined locations in the data matrix in the memory 14. The data matrix in the memory 14 are read transversely, then the read data is applied to an inner code encoding circuit 20. The inner code encoding circuit 20 produces inner code parity bits, and applies the parity bits to a synchronism addition circuit 22. The synchronism addition circuit 22 appends synchronization codes to the data. A recording circuit 24 records outputs of the synchronism addition circuit 22 on a magnetic tape, a magnetic or optical disk, or other recording medium. Here, computation for parity bit generation will be explained briefly. Codes for which a parity bit is generated or M-symboled main information codes are regarded as a matrix I. The matrix I is represented as follows: I = (i 1 , i 2 , i 3 , ... i M ) Then, an error-detecting/correcting code word X is represented as follows: X = (i 1 , i 2 , i 3 , ---, i M , x 1 , x 2 , x 3 , ---, x k ) where, x 1 to x k represent parity bits. I and X are conditioned as X = I · G, wherein G represents a generation matrix of M rows by (M + K) columns. This matrix computation provides outer codes or parity bits x 1 to x k . The generation matrix G is given by the expression (1), wherein the first to M-th columns whose diagonal elements are 1s form a reference matrix and the (M+1)-th to (M+K)-th columns form a matrix of elements P i'j . Figure 8 is a block diagram showing an example of a configuration of a parity calculating circuit that executes matrix computation X = I · G. A generation matrix ROM 11 contains elements P i,j of a generation matrix G at addresses associated with elements of information I read from a memory 14, inputs column and row addresses an address control circuit 16 generates via a terminal 9, then outputs coefficients for the corresponding elements P i,j . A Galois field multiplier 13 multiplies the elements P i,j retrieved from the generation matrix ROM 11 by the element of the information I to produce a Galois field. An adder 15 and a delay circuit 17 accumulate outputs of the Galois field multiplier 13. Thus, matrix computation is completed. Herein, Galois field addition pertains to EXCLUSIVE-OR in bits. As described previously, a data matrix of information codes is scanned obliquely to extract the information codes for producing error-correcting code words. Then, parity check codes are produced. When the parity check codes are appended to a data matrix of information codes row by row, no data frame includes only parity check codes of outer and inner codes. Therefore, low-frequency components are suppressed efficiently. The above procedure is easier than a procedure in which outer codes are generated in columns of a data matrix of information codes and appended transversely. However, since information codes are extracted obliquely, an access address for accessing a memory 14 must be varied transversely and longitudinally according to a predetermined program. Furthermore, an address for accessing a generation matrix ROM 11 must also be varied transversely and longitudinally. This disables high-speed processing. To be more specific, an outer code encoding circuit 18 must repeat a sequence of operations; reading information codes from the memory 14, generating outer codes, then writing the generated outer codes (and read information codes) in the memory 14, and thus complete a whole data matrix. Therefore, a memory of high accessibility must be used. As described previously, information is scanned obliquely with respect to a direction of data transmission to generate outer codes. Therefore, row addresses or addresses pointing to transverse locations of information data in a matrix shown in Figure 5, and column addresses or addresses pointing to longitudinal locations of information data in the matrix are required to read elements P i,j from a generation matrix ROM 11. Furthermore, generation matrix coefficients necessary for calculating outer codes differ with a generation matrix. Therefore, the generation matrix ROM 11 must have a very large capacity. For example, in a data matrix shown in Figure 9, assuming that the first information code array I 1 is represented as: I 1 = (i 1,1 i 2,1 i 3,1 --- i M,1 ) and an error-correcting code word for the first information code array I 1 is X 1 , and that the second information code array I 2 is represented as: I 2 = (i 1,2 i 2,2 i 3,2 i 4,2 --- i M,2 ) and an error-correcting code word for the second information code array I 2 is X 2 , X 1 and X 2 are provided by the expressions (2) and (3) below. When the error-correcting code word X 2 is generated, data is read from the data matrix in an order different from a transmission order. Thus, information data I 2 is extracted. In encoding based on oblique scanning, a complex manipulation is required to convert calculated error locations into column and row addresses of information data during decoding. The present invention provides an error correction encoding system for extracting information codes obliquely from a data matrix of the information codes and producing error-correcting codes, and thus realizing high-speed processing, and also provides performing parallel processing to further speed up its operation. United States Patent Specifications Nos. US-4796260 and US-3685016 and United Kingdom Patent Specification No. GB-A-2191318 all disclose oblique and transverse error correction. United States Patent Specification No. US-4637021 discloses a method and apparatus of error correction in which two decoders are used with interleaving. United States Patent Specification No. US-4779276 discloses a data transmission system in which information data and error detecting-converting data are divided into groupings and the error detecting-correcting data is dispersed into the information data. In accordance with the present invention there is provided an error correction encoding system as set out in claim 1. Other features of the present invention will be apparent from the detailed description of embodiments in conjunction with the drawings. BRIEF DESCRIPTION OF THE DRAWINGS Figure 1 shows an example of a configuration of a data frame for transmitting a code array; Figure 2 shows an example of a configuration of a data matrix having a plurality of data frames each of which is shown in Figure 1 arranged lengthwise; Figure 3 shows check points (parity check codes) scattered among information codes of data frames; Figure 4 is an explanatory diagram for explaining a transmission order for transmitting a data matrix; Figure 5 shows a way of scanning a data matrix obliquely to extract information codes; Figure 6 shows check points for information codes that are scattered among the information codes extracted as shown in Figure 5; Figure 7 is a block diagram showing an example of a configuration of a code transmitting system for extracting information codes obliquely as shown in Figure 5; Figure 8 shows an example of a configuration of a parity calculating circuit for extracting information codes obliquely as shown in Figure 5; Figure 9 shows a way of scanning a data matrix obliquely to acquire information code arrays; Figure 10 is a block diagram showing a configuration of a code transmitting system as an embodiment of the present invention; Figure 11 is a schematic showing how the system shown in Figure 10 extracts information codes: Figure 12 is a schematic showing how the system shown in Figure 10 appends parity check codes; Figure 13 shows a data frame the system shown in Figure 10 transmits; Figure 14 is a block diagram showing a configuration of a receiving system for receiving code arrays the system shown in Figure 10 transmits. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Embodiments of the present invention will be described in conjunction with the drawings. Figure 10 is a block diagram showing a configuration of a code transmitting system in an embodiment of the present invention. 30 denotes an input terminal for inputting information codes (for example, image data) to be recorded. 32 denotes a memory in which information codes entered at the input terminal are arranged two-dimensionally. 34 is an address control circuit for controlling access addresses used for accessing the memory 32. 36 denotes an outer code encoding circuit. 38 is an inner code encording circuit. 40 is a synchronism addition circuit for appending synchronization data. 42 denotes a mapping encoding circuit, and 44, a recording circuit for recording data on a recording medium. Figure 11 shows a data matrix in which synchronization data is appended to information codes that are arranged in the memory 32 two-dimensionally. Arrows in Figure 11 indicate a code transmission order. Synchronization data which the synchronism addition circuit 40 appends is illustrated to clarify the transmission direction. The outer code encoding circuit 36 extracts and processes information codes stored in the memory 32 obliquely with respect to the transmission direction as shown in Figure 11 while differentiating even data (having even row addresses) from odd data (having odd row addresses), and then generates outer code check points. Then, the generated outer codes are appended to the trailing ends of data frames (rows). Figure 12 shows outer code encoding. Data values having odd row addresses O 1 to O i are extracted sequentially as shown in Figure 12. Then, the outer code encoding circuit 36 generates four parity check codes P0 O , P1 O , P2 O , and P3 O . The parity check codes are appended to the trailing ends of rows as shown in Figure 12. Similarly, data values having even row addresses E 1 to E i are extracted sequentially as illustrated. Then, four parity check codes P0 E , P1 E , P2 E , and P3 E are generated, then appended to the trailing ends of rows as illustrated. Information codes and outer codes are read from the memory 32 in the transmission direction (transversely), then applied to the inner code encoding circuit 38. The inner code encoding circuit 38 uses the supplied information codes and outer codes to generate inner codes, then appends the generated inner codes to the trailing ends of rows (data frames) as shown in Figure 13. In the process of generating outer and inner codes, a manipulation of scattering check codes P0 to P4 among data frames can be employed as described in U.S. Patent No. 4,779,276. This minimizes low-frequency components of code arrays transmitted and results in a low occurrence rate of transmission errors. After the inner code encoding circuit 38 generates and appends inner-code check codes, a synchronism addition circuit 40 appends synchronization data as shown in Figures 4 and 5. A mapping encoding circuit 42 maps the codes to suppress low-frequency components. Finally, a recording circuit 44 records the processed data on a recording medium. In a code transmitting system having the aforesaid configuration, information codes having odd row addresses and those having even row addresses are extracted obliquely in parallel. When parity check codes are appended to the trailing ends of rows or data frames, parity check codes generated from the information codes having odd row addresses can be appended to rows of odd addresses, and parity check codes generated from the information codes having even row addresses can be appended to rows of even addresses. This allows an outer code encoding circuit 36 to act on fully parallel processing, thus realizing high-speed processing. Next, a system for reproducing (receiving) code arrays a system shown in Figure 10 records will be described. Figure 14 is a block diagram showing a configuration of a system for reproducing code arrays records on a recording medium by system shown in Figure 10. A reproduction circuit 31 reproduces code arrays recorded in the aforesaid order. 33 denotes a synchronism detection circuit, which detects synchronization data in the code arrays and generates clock signals synchronous with the synchronization data. A data detection circuit 35 extracts data signals from the clock signals, and restores original data streams. A mapping decoding circuit returns the restored data streams into original code arrays, then inputs the code arrays to an inner code decoding circuit 39. The inner code decoding circuit 39 decodes inner codes, and writes codes whose errors are corrected in a memory 41. Inner codes are used to correct errors in data frames and supply information indicating data frames that contain uncorrectable errors to an error flag formation circuit 45. An outer code decoding circuit 43 accesses the memory 41 under the control of an address control circuit 46, decodes outer codes, then re-writes codes whose errors have been corrected using the outer codes in the memory 41. Even in outer code decoding, check codes and information codes whose row addresses are odd are processed independently of those whose row addresses are even. Information indicating whether or not uncorrectable data is present is supplied with each error-correcting code word to the error flag formation circuit 45. Based on the information sent from the inner code decoding circuit 39 and outer code decoding circuit 43, the error flag formation circuit 45 produces an error flag for each information code indicating whether or not the information code is restorable, then outputs the flag at the same time when another information code is read from the memory 41. Information codes are read from the memory 41 in the order shown in Figure 4. An error correction (concealment) circuit 47 corrects (interpolates) errors according to the error flags. Information code arrays whose errors have been corrected are supplied via an output terminal 49. An entire sequence of operations from outer code decoding to error correction can be done separately from data of even row addresses to data of odd row addresses. This further speeds up outer code decoding and error correction. According to the system described in conjunction with Figures 10 to 14, codes at odd row addresses and those at even row addresses are processed independently and in parallel. When an information code matrix is scanned obliquely to acquire information codes and outer codes are produced using the information codes, the encoding and decoding speeds increase drastically. In the aforesaid embodiment, information codes are extracted every other row address. Needless to say, even when information codes are extracted in units of a (a is 2 or a larger integer) row addresses, the same advantages as those described so far are available.

Claims: An error correction encoding device comprising: a memory (32) for storing information codes in the form of a data matrix having row and column addresses; first error correction encoding means (36) adapted to extract information codes from said data matrix in the oblique direction thereof and producing first error-correcting code words each of which is composed of the information codes extracted in the oblique direction and first parity check codes generated by using the information codes, and second error correction encoding means (34) for extracting said information codes from said data matrix in the row direction thereof and producing second error-correcting code words each of which is composed of the information codes extracted in the row direction and second parity check codes generated by using the information codes, characterised in that said first error correction encoding means extracts the information codes for each first correction code word from addresses which have different column addresses and only one of every adjacent "n" row addresses on the data matrix so that "n" number of first error correcting code words are produced in parallel, where "n" is 2 or a larger integer. A device according to claim 1, wherein said first error correction encoding means outputs as the first error-correcting code words an odd code word composed of odd parity check codes only for information codes whose row addresses are odd and an even code word composed of even parity check codes only for information codes whose row addresses are even. A device according to claim 2, wherein said first error correction encoding means writes the odd parity check codes at odd row addresses in the memory, and the even parity check codes at even row addresses in the memory. A device according to claim 1, wherein said first error correction encoding means writes the first parity check codes at row addresses larger than those of the information codes in the memory, and the memory reads the information codes and the first parity check codes in order of row addresses in units of a data frame including a plurality of information codes and parity check codes whose column addresses are the same. A device according to claim 4, wherein said second error correction encoding means writes the second parity check codes at row addresses larger than those of the first parity check codes in the memory. A device according to any preceding claim, further comprising: transmitting means for transmitting the information codes and said parity check codes forming the second error-correcting code word in units of a data frame including a plurality of information codes whose column addresses in said memory are the same. A device according to claim 6, further comprising a code converting means for converting said information codes into codes whose low-frequency components are suppressed by utilising correlations among the information codes. A device according to claim 6 or claim 7, wherein said transmitting means includes a synchronism addition means (40) for appending synchronising code to leading ends of said data frames.

Inventors: KARASAWA KATSUMI, KARASAWA, KATSUMI, KARASAWA, KATSUMI, C/O CANON KABUSHIKI KAISHA
Applicants: CANON KK, CANON KABUSHIKI KAISHA
Application year: 1992
Main classification: H03M13
IPC codes: H03M13