Question: What is error correcting code (ECC)? How does it help in single-bit error detection and correction?
Error correcting codes are algorithms that allow data that is being read to be checked for errors and, when necessary, corrected on-the-fly. In case of an SRAM during a write operation, the error correction algorithm uses bits from the data word to incorporate parity check bits into the final word that will be stored in the internal memory array. These algorithms are superior to conventional parity-checking methods, where the errors are only detected but not corrected. In the case of ECC, whenever the data is read out, parity bits of the stored data are compared with parity bits of the data being read out. If a single-bit error has occurred, the above comparison will reveal this error. Thus, ECC allows for the detection of soft errors at a minimal cost in terms of circuit complexity and memory width. Figure 1 illustrates an ECC implementation.
Figure 1. ECC Implementation
Hamming code is one of the most popular algorithms for single-bit error detection and correction. Compared to other ECC schemes (for example, Viterbi decoding and Reed-Solomon codes), the Hamming Code circuit is less complex; it consumes the least power and provides the shortest decoding time. A Hamming Code is represented by (n, k), which implies that k-bit data words are mapped to n-bit code-words. The Hamming Code algorithm for single-error correction requires N+1 parity bits for 2^N bits of data.
For more information, refer to the following:
For more details on the ECC feature of Cypress’s 65-nm Asynchronous SRAMs, refer to AN88889 - Mitigating Single-Event Upsets Using Cypress’s 65-nm Asynchronous SRAM.