1. Field of the Invention
This invention relates generally to error detection and correction devices, and more particularly to devices used in detecting and correcting data read from DVD media.
2. Description of the Related Art
In recent years, optical disc technology has gained popularity in the computer and entertainment industries. For example, by providing superior digital sound quality, CD players and discs have effectively displaced phonographs in the music industry. In addition, CD-ROM technology has also become popular in the computer industry as well for recording and reading large amounts of information or data.
However, in response to an ever increasing demand for convenient storage devices with even greater storage capacity, a new optical media known as digital video disc or digital versatile disc (DVD) has emerged as a promising new technology. The DVD media technology provides many times the storage capacity of a conventional CD-ROM disc. For example, a DVD medium may store data from 4.7 gigabytes up to 18 gigabytes. In contrast, conventional CD-ROM discs are usually only capable of storing about 650 Megabytes of data. Of course, the capacity of a DVD medium may surpass 18 Gigabytes in the near future as the technology improves.
Information in a DVD medium is stored in a similar manner as the traditional CD-ROM disc. Prior Art FIG. 1A illustrates a DVD medium 100 having a center hole 104. In the DVD medium 100, data is typically stored in units of sectors that are laid out in a continuous spiral 102 from the center hole 104 and extending through to the circumference of the DVD medium 100. Sectors are laid out along the spiraling track 102. For example, a portion 106 of the spiraling track 102 may include numerous sequential sectors.
Prior art FIG. 1B illustrates a more detailed layout of the portion 106 of the spiraling track 102 in the DVD medium 100. The portion 106 includes five sequential sectors 110, 111, 112, 113, and 114 (i.e., 110 through 114). Each of the sectors 110 through 114 stores user data of 2064 bytes.
Each of the sectors 110 through 114 contains a header field 120 and a data field 122. The header field 120 is typically assigned sixteen bytes. Of these sixteen bytes, the first four bytes store the sector number for identifying the sector, and the remaining bytes are used to store information related to error detection, copy protection, and payload error detection.
Often however, user data stored in or read from a DVD medium may become corrupted or contaminated. For example, contamination or corruption can occur for reasons such as scratches, dust, noise, and other imperfections. The contamination or corruption typically causes two types of errors: a random error and a burst error. The random error refers to a single bit of error. On the other hand, the burst error refers to an error involving a set of contiguous bits.
To protect against such random and burst errors, DVD technology typically implements an error correction code (ECC) block coding scheme. In the ECC block coding scheme, user data is organized into blocks of data sectors and ECC bytes. Prior Art FIG. 2A illustrates the organization of an exemplary ECC block 200. The block 200 includes 16 sectors from sector 0 through sector 15. As will be discussed below, each of the 16 sectors includes 12 rows. For example, the first sector 202 (i.e., sector 0) includes 12 rows. Each of the rows includes 172 columns or column bytes labeled 0 through 171.
In the ECC block 200, both the rows and columns of the ECC block 200 include check bytes for error detection and correction. Check bytes are well known in the art and are also referred to parity bytes, check symbols, redundancy symbols, etc. The ECC block 200 includes row check bytes 204 and column check bytes 206. Each of the rows of the 16 sectors includes 10 row check bytes 204 (i.e., inner parity or PI) appended after the last byte in the corresponding row. Each of the 172 columns and the row check bytes 204 includes 16 column check bytes 206 (i.e., outer parity or PO) appended after the last byte in the corresponding column. Thus, the data and check bytes in the ECC block 200 are logically organized in a two dimensional structure.
Prior Art FIG. 2B shows the individual rows and columns of the ECC block 200. The ECC block 200 depicts 208 rows from row 0 through row 207. Since 12 rows make up a data sector, the ECC block 200 contains 16 sectors occupying 192 rows from row 0 through row 191. For example, the first sector 202 includes 12 rows from row 0 through row 11. The ECC block 200 contains column check bytes in the remaining 16 rows 206 from row 192 through row 207. The last four bytes in a sector (e.g., sector 202) are error-detection code (EDC) bytes 210 used as an additional error detection bytes for a sector.
With continuing reference to Prior Art FIG. 2B, the ECC block 200 also shows 182 columns from column 0 through column 181. Each row in the ECC block 200 contains 172 user bytes and 10 row check bytes for a total of 182 bytes. These 182 bytes define the columns 0 through 181, respectively. The 10 row check bytes are appended to the end of a row as shown in columns 172 through 181 for error detection and correction.
As mentioned previously, a data sector is split into 12 rows of 172 bytes each. One data sector typically contains 12 bytes of header, 2048 bytes of user data, and 4 bytes of EDC for a total of 2064 bytes. Prior Art FIG. 2C illustrates a physical sector 250 including 13 rows from row 0 through row 12. The physical sector 250 is first generated by converting a data sector into a recording sector, which is generated by adding and interleaving check bytes. Specifically, 10 bytes of row check bytes (i.e., inner parity or PI bytes) are generated and added to each row and 16 column check bytes (i.e., outer parity bytes) are generated and added to each column. Then, column check bytes are interleaved between 16 sectors of user data such that each sector is followed by a row of column check bytes. Accordingly, each recording sector consists of 13 rows of 182 bytes each.
The recording sector is then converted to the physical sector 250 by splitting the recording sector down the middle and adding a 1-byte sync code 252 in front of each half-row. In addition, the data is processed with an 8-to-16 modulation (EFM plus), which replaces each byte with a 16-bit code. This conversion process results in the creation of 16 blocks of physical sectors within an ECC block. Each of the physical sectors consists of 4836 bytes. The physical sector data are then sequentially written out row by row to a DVD medium as channel data starting with the first sector in the ECC block. The first sector of the next ECC block immediately follows the last sector of the current ECC block.
Prior Art FIG. 3 illustrates a block diagram of a DVD decoder system 300 for detecting and correcting errors in an ECC block. In this system 300, a disc controller 302 sequentially receives a stream of ECC block data from a DVD medium and identifies sync bytes for detecting the rows. The disc controller 302 transmits the detected rows of the ECC block data into an ECC buffer 304. The DVD decoder system 300 assembles the rows into an ECC block in the ECC buffer 304. When a full ECC block has been assembled or stored in the ECC buffer 304, the error detection and correction circuitry 306 accesses the ECC buffer 304 to read the data that are stored in the ECC buffer 304. The error detection and correction circuitry 306 then performs row and column corrections using the accessed data. If either the row or column errors can not be corrected, the data in the ECC buffer 304 is accessed again for repeat correction. Finally, when the data has been detected and corrected, the corrected data is transmitted to a host 308.
Unfortunately, waiting for a full ECC block to be available before performing error correction results in significant performance degradation. For example, waiting for the complete assembly of the full ECC block in the ECC buffer 304 has the disadvantage of delaying error detection and correction processing. This delay in error detection and correction processing generally translates into more time to complete the error correction processing. Furthermore, the error correction circuitry may sit idle when waiting for the full ECC block to be assembled in the ECC buffer 304. In such cases, the idle time translates into loss in valuable processing resources, thereby increasing hardware cost.
In addition, the DVD decoder system 300 requires a relatively large buffer bandwidth since all data is stored to and accessed from the single ECC buffer 304. Specifically, each access requires full buffer bandwidth. For example, storing the rows of the ECC block data into the ECC buffer 304 requires 12 megabytes/second of buffer bandwidth at 8xc3x97 speed of a DVD drive. Similarly at the 8xc3x97 speed, row correction, column correction, repeat correction, and writing to the host 308 each requires 12 megabytes/second of bandwidth. Hence, the DVD decoder system 300 would typically require a total of 80 to 90 megabytes/second of buffer bandwidth taking into account the efficiency of the buffer manager. Since more bandwidth requires more hardware resources, the DVD decoder system 300 is relatively expensive to implement due to its large bandwidth requirement.
In view of the foregoing, what is needed is a device and method that can detect and correct errors in an ECC block data without waiting for an entire ECC block to be assembled in a buffer. What is further needed is a device and method that can perform error detection and correction with less buffer bandwidth.
Broadly speaking, the present invention fills these needs by providing a device, method, and system for detecting and correcting errors in ECC block data as it is read sequentially from a DVD medium. It should be appreciated that the present invention can be implemented in numerous ways, including as a process, an apparatus, a system, a device, a method, or a computer readable medium. Several inventive embodiments of the present invention are described below.
In one embodiment, the present invention provides a device for detecting and correcting errors in error correction coded (ECC) data blocks that are read sequentially from a DVD medium. Each ECC data block is defined as a two dimensional block of a plurality of columns and rows. Each of the ECC data blocks is read from the DVD medium sequentially in rows. The device includes row correction circuitry, a buffer, column correction circuitry, and repeat correction circuitry. The row correction circuitry is configured to sequentially receive the rows of an ECC data block for detecting and correcting up to a first predetermined number of errors in each of the received rows. The buffer is coupled to the row correction circuitry for receiving the error corrected rows of the ECC data block as a receiving buffer. The buffer also stores the ECC data block as a correction buffer when all the rows of the ECC data block have received. The column correction circuitry is coupled to the row correction circuitry and the buffer to sequentially receive the row error corrected rows of the ECC data block for detecting the uncorrected errors. The column correction circuitry is also configured to correct the uncorrected errors in the columns of the ECC data block that is stored in the correction buffer. The repeat correction circuitry is coupled to the buffer for detecting and correcting the remaining uncorrected errors in the correction buffer.
In another embodiment, the present invention provides a method for detecting and correcting errors in ECC data blocks, each of which comprising a plurality of rows and columns. The method sequentially receives the rows of an ECC data block. Then, the method detects errors in each of the received rows of the ECC data block and corrects up to a first predetermined number of the errors in each of the rows in the ECC data block. Each of the corrected rows is then stored in a storage unit. While storing the corrected rows, the method of the present invention receives each of the corrected rows sequentially for detecting the uncorrected errors in the columns of the ECC data block. The method then corrects the uncorrected errors in the columns of the ECC data block when all the rows of the ECC data block has been stored.
In yet another embodiment, the device includes a receiving means, a row error detecting means, a row error correcting means, a storing means, a column error detecting means, and a column error correcting means. The receiving means sequentially receives the rows of an ECC data block. The row error detecting means detects errors in each of the received rows of the ECC data block and the row error correcting means corrects up to a first predetermined number of the errors in each of the rows in the ECC data block. The storing means stores each of the corrected rows. The column error detecting means receives each of the corrected rows sequentially and detects the uncorrected errors in the columns of the ECC data block while each of the corrected rows are being stored. The column error correcting means corrects the uncorrected errors in the columns of the ECC data block when all the rows of the ECC data block has been stored.
Advantageously, the present invention provides a device and method that can detect and correct errors in the rows of an ECC block data without waiting for an entire ECC block to be assembled in a buffer. Furthermore, the device and method of the present invention performs column corrections, and repeat corrections if necessary, as soon as all the rows of the ECC block have been received. In addition, the present invention requires less buffer bandwidth to access the buffer in the error detection and correction process. Other aspects and advantages of the invention will become apparent from the following detailed description, taken in conjunction with the accompanying drawings, illustrating by way of example the principles of the invention.