Method and apparatus for enhancing error detection in data transmission
A transceiver includes a transmitter and a receiver. The transmitter includes an ECC encoder and a data frame generator. The ECC encoder is configured to generate an ECC parity from user data and at least one bit from a syncmark. The data frame generator is configured to generate a data frame for transmission from the syncmark, the user data, and the ECC parity. The receiver includes a detector, an inverter, and a decoder. The detector is configured to detect a received syncmark in a received data frame. The received data frame includes the received syncmark, received user data, and received ECC parity. The inverter is configured to selectively invert a sequence. The sequence includes the received user data, the received ECC parity, and at least one bit from the received syncmark. The decoder is configured to decode one of the sequence or the inverted sequence.
Latest Marvell International Ltd. Patents:
This application claims the benefit of priority to previously filed U.S. provisional patent application Ser. No. 61/095,136, filed Sep. 8, 2008, entitled ENHANCING ERROR DETECTION BY ENCODING LSB OF SYNCMARK IN ERROR CORRECTING CODE. That provisional application is hereby incorporated by reference in its entirety.
BACKGROUND1. Field of the Invention
The present invention relates generally to data transmission, and more particularly to error detection in data transmission.
2. Description of Related Art
A receiver 2 may be informed of the syncmark in advance, and may detect the start of user data by searching for the syncmark. At the receiver 2, a data frame from the transmitter 1 may first enter a syncmark and user data detector 102. If the syncmark is not found, the receiver 2 may claim failure and report error status. If the syncmark is found, the received bits corresponding to the user data 1103 and ECC parity 1104 may be fed from the syncmark and user data detector 102 to an ECC decoder 103. The ECC decoder 103 may try to decode and/or correct errors in its input. When there is no error, or there are errors but the errors are correctable, the ECC decoder 103 may output decoded user data. Otherwise, the ECC decoder 103 may claim failure and report error status.
The error detection capability of an ECC mainly depends on the number of bits in the ECC parity. The more bits in the ECC parity, the more errors the ECC may detect and/or correct. Thus, one known solution to enhance the error detection capability of an ECC is to use an ECC parity which is sufficiently long. However, when the physical space for a data frame is fixed, a long ECC parity may lead to higher bit density, which in turn may degrade the performance of the ECC. Therefore, it may be desirable to provide a method and apparatus that improve error correction capability of the ECC without costing data bit density.
SUMMARYA method for detecting errors in data transmission comprises, at a transmitter, generating an error correcting code (ECC) parity from user data and at least one bit from a syncmark; forming a data frame with the syncmark, the user data and the ECC parity; and transmitting the data frame.
A transmitter comprises: an ECC encoder for generating an ECC parity from user data and at least one bit from a syncmark.
A receiver comprises: a detector for detecting a syncmark in a received data frame comprising the syncmark, user data and an ECC parity generated from the user data and at least one bit from the syncmark; and a decoder for decoding the user data.
Embodiments of the present invention are described herein with reference to the accompanying drawings, similar reference numbers being used to indicate functionally similar elements.
To enhance the error detection capability of a given ECC without changing data bit density, the present invention includes one or more bits from the syncmark, e.g., the least significant bit (LSB) of the syncmark, in ECC encoding and decoding. The invention may be implemented in hardware, firmware, software or a combination thereof.
The ECC encoder 201 may generate a 7-bit ECC parity which is able to correct 1-bit error. In the embodiment shown, the ECC parity generated may be, e.g., “0110000”.
As shown in
A data frame from the transmitter 200 may first enter the detector 3021 and the data start location may be detected by searching for the syncmark. If the detector 3021 determines that the syncmark is found, it may store the received data frame in the data detector buffer 3022. As shown in
When there are no transmission errors, the detector 3021 may find the syncmark at the correct position, and thus the bits sent to the ECC decoder 303 may be the syncmark LSB “1”, the user data “11000001” and the ECC parity “0110000”, as shown in
However, when the data is corrupted, the detector 3021 may find the syncmark at a wrong position, and send wrong bits to the ECC decoder 303. In the example shown in
At 401, the decoder 3031 may calculate syndromes and determine whether there is an error detected in the sequence received from the syncmark and user data detector 302, which may include the LSB of the syncmark and the 15 bits following it.
In one embodiment, the ECC is a cyclic code which adds parity to user data to form a code word. The decoder 3031 may calculate syndromes based on the sequence received from the syncmark and user data detector 302. If the received sequence is a valid code word and the syndromes are all zeros, the decoder 3031 may determine that no errors are detected.
If no error is detected, the received sequence may be copied to the decoded bit buffer 3032 at 402, and the procedure may proceed to 406.
If an error is detected, at 403, the decoder 3031 may determine whether the error can be corrected.
If the error can be corrected, at 404, the decoder 3031 may correct the error based on the syndromes obtained from 401. The procedure may then proceed to 402.
If a code can correct t bits of errors, each error pattern with an error number smaller or equal to t will be diagnosed by a distinct non-zero syndrome. Once such a syndrome is found by the decoder 3031, the corresponding error pattern will be corrected. All other non-zero syndromes correspond to uncorrectable error patterns and the zero syndrome corresponds to an error free valid codeword.
If there is an error in the sequence received from the syncmark and user data detector 302 and the error cannot be corrected, the decoder 3031 may claim failure due to uncorrectable errors in the input, and finish the processing for the input at 405.
In the data frame in
At 406, the decoder 3031 may check whether the bit in the decoding result corresponding to the syncmark LSB is “1”, i.e., the value of the syncmark LSB of which the decoder 3031 was previously informed.
If yes, at 407, the decoder 3031 may claim decoding success, and output the bits corresponding to the user data in the decoded bits buffer 3032.
However, if the bit in the decoding result corresponding to the syncmark LSB is different from the syncmark LSB b, at 408, the decoder 3031 may claim decoding failure due to incorrect syncmark. For the sequence in
Steps 406-408 may add an additional safeguard by checking whether the bit in the decoding result from the decoder 3031 corresponding to the syncmark LSB is the same as the value of the syncmark LSB, and claiming decoding success only when they are the same. Consequently, transmission error in the sequence of
In the embodiment shown in
If the bit selected from the syncmark is “0”, in one embodiment, it may be inverted to “1” and added to the input to an ECC encoder. The output of the ECC encoder may be inverted before transmitting the data frame.
As shown in
A data frame from the transmitter 500 may first enter the detector 6021 and the data start location may be detected by searching for the syncmark. If the detector 6021 determines that a syncmark is found, it may store the received data frame in the data detector buffer 6022. As shown in
A summary of the generation of data frames in the transmitter is shown in
Some ECC decoders may prefer that the value for the bit in the input to the ECC decoder corresponding to the syncmark LSB is 1. In one embodiment, a register bit CTRL may be used to force that bit to be 1. A summary of the input to the ECC decoder is shown in
Specifically, when CTRL=1 and b=1, the receiver shown in
When CTRL=0 and b=1, the receiver in
The invention may be used to improve the performance of repeated-run-out (RRO) data decoding, e.g., RRO data decoding in hard disk drives.
Several features and aspects of the present invention have been illustrated and described in detail with reference to particular embodiments by way of example only, and not by way of limitation. Alternative implementations and various modifications to the disclosed embodiments are within the scope and contemplation of the present disclosure. Therefore, it is intended that the invention be considered as limited only by the scope of the appended claims.
Claims
1. A method for detecting errors in data transmission, the method comprising:
- at a transmitter: generating an error correcting code (ECC) parity from (i) user data, and (ii) at least one bit from a syncmark; forming a data frame with (i) the syncmark, (ii) the user data, and (iii) the ECC parity; and transmitting the data frame; and
- at a receiver: receiving the data frame, wherein the received data frame includes (i) a received syncmark, (ii) received user data, and (iii) received ECC parity; detecting the received syncmark in the received data frame; selectively inverting a sequence, wherein the sequence includes (i) at least one bit from the received syncmark, (ii) the received user data, and (iii) the received ECC parity; and decoding one of the sequence or the inverted sequence.
2. The method of claim 1, wherein the at least one bit from the syncmark is the least significant bit (LSB) of the syncmark.
3. The method of claim 1, wherein the data frame further comprises a preamble.
4. The method of claim 1, further comprising:
- determining whether the at least one bit from the received syncmark is the same as a corresponding bit in the decoded sequence.
5. The method of claim 4, further comprising:
- indicating decoding failure in response to the at least one bit from the received syncmark being different from the corresponding bit in the decoded sequence.
6. The method of claim 5, further comprising:
- determining whether the received data frame has one or more errors.
7. The method of claim 6, further comprising:
- in response to the received data frame having the one or more errors, determining whether the one or more errors are correctable.
8. The method of claim 7, further comprising:
- indicating failure in response to at least one of the one or more errors being uncorrectable.
9. The method of claim 1, wherein in response to the at least one bit from the syncmark being zero, the ECC parity is generated from (i) the user data and (ii) an inversion of the at least one bit from the syncmark.
10. The method of claim 9, wherein the data frame comprises:
- (i) the syncmark, (ii) an inversion of the user data, and (iii) an inversion of the ECC parity.
11. The method of claim 1, further comprising:
- forcing the at least one bit from the received syncmark to be 1.
12. A transceiver comprising:
- a transmitter comprising: an ECC encoder configured to generate an ECC parity from (i) user data, and (ii) at least one bit from a syncmark; and a data frame generator configured to generate a data frame for transmission from (i) the syncmark, (ii) the user data, and (iii) the ECC parity; and
- a receiver comprising: a detector configured to detect a received syncmark in a received data frame, wherein the received data frame includes (i) the received syncmark, (ii) received user data, and (iii) received ECC parity; an inverter configured to selectively invert a sequence, wherein the sequence includes (i) at least one bit from the received syncmark, (ii) the received user data, and (iii) the received ECC parity; and a decoder configured to decode one of the sequence or the inverted sequence.
13. The transceiver of claim 12, wherein the transmitter further comprises:
- a first inverter configured to invert the at least one bit from the syncmark in response to the at least one bit from the syncmark being zero.
14. The transceiver of claim 13, wherein the transmitter further comprises:
- a second inverter configured to selectively invert a transmission sequence, wherein the transmission sequence includes (i) the inverted at least one bit from the syncmark, (ii) the user data, and (iii) the ECC parity.
15. The transceiver of claim 12, wherein the receiver further comprises:
- a first buffer configured to store an output of the detector in response to the received data frame having no errors.
16. The transceiver of claim 12, wherein the inverter is configured to invert the sequence in response to the at least one bit from the syncmark being zero.
17. The transceiver of claim 15, wherein the receiver further comprises:
- a second buffer configured to store an output of the decoder.
4993029 | February 12, 1991 | Galbraith et al. |
5359468 | October 25, 1994 | Rhodes et al. |
5600662 | February 4, 1997 | Zook |
6112324 | August 29, 2000 | Howe et al. |
6185173 | February 6, 2001 | Livingston et al. |
6198705 | March 6, 2001 | Tran et al. |
6397366 | May 28, 2002 | Tanaka et al. |
7120849 | October 10, 2006 | Hwang et al. |
7134068 | November 7, 2006 | Silvus et al. |
7734977 | June 8, 2010 | Ornes et al. |
7783950 | August 24, 2010 | Esumi et al. |
20020026615 | February 28, 2002 | Hewitt et al. |
20030122964 | July 3, 2003 | Hara |
20060146680 | July 6, 2006 | MacDonald et al. |
20080267323 | October 30, 2008 | Bliss et al. |
20090231985 | September 17, 2009 | Senshu |
Type: Grant
Filed: Sep 2, 2009
Date of Patent: Dec 9, 2014
Assignee: Marvell International Ltd. (Hamilton)
Inventors: Heng Tang (Sunnyvale, CA), Zaihe Yu (Santa Clara, CA), Gregory Burd (San Jose, CA), Panu Chaichanavong (Mountain View, CA)
Primary Examiner: Albert Decady
Assistant Examiner: Enam Ahmed
Application Number: 12/553,049
International Classification: H03M 13/00 (20060101);