2.2 Programmable Multibit Error Correction Code (PMECC) Overview

The PMECC controller embedded in Microchip SAM9X60 and SAM9X7 Series microprocessors is a programmable binary BCH encoder/decoder.

This controller can be used to generate redundancy information for both SLC and MLC NAND devices, as it supports redundancy for the correction of 2, 4, 8, 12 or 24 errors per data sector. The sector size is programmable and can be set to 512 or 1024 bytes. The PMECC module generates redundancy at encoding time when a write page operation is performed. The redundancy is appended to the page and written in the spare area. This operation is performed by the processor, which moves the content of the PMECCx registers into NAND Flash memory. The number of ECC bytes depends on the selected error correction capability. This operation is executed for each sector. At decoding time, the PMECC module calculates specific remainders from the received codeword, which are later used to locate and correct errors. When all remainders for a given sector have a zero (0x0) value, no error has occurred. When the remainders are different from zero, the codeword is corrupted, and further processing is required.