The BCH encoder/decoder provides error correction code (ECC) capabilities for applications such as data storage and transmission. BCH is optimal for applications where errors are non-correlated (non-burst) such as NAND flash.
The Cyclic Design BCH IP encodes data into a 8191-bit codeword (2^13 Galois Field), enabling up to 900 data bytes per correction block with up to 16 bits of ECC. This enables support for current-generation MLC and next-generation SLC NAND flash devices that require correction over 512B blocks. Block size and ECC level can be dynamically changed for each correction operation, allowing flexibility in the design of the application controller.
The control interface is optimized around a 16-bit datapath to enable applications using DDR flash devices (8-bit can be supported with a thin wrapper to handle data multiplexing). The data interfaces are FIFO-oriented and a simple control interface eases integration into the application controller.
512B/ECC16 Nand Flash BCH Encoder/Decoder
Overview
Key Features
- 2-16 bit error correction
- 2-900 data bytes per block
- Low-latency, synchronous design
- Pipelined correction operation supports 3 concurrent corrections
- 16-bit data path (optional 8-bit wrapper available)
- LFSR supports shifting of 2, 4, or 8 bits per cycle.
- Chien Search supports 4, 8, or 16 corrections per cycle.
- Design verified in FPGA
Deliverables
- Verilog source and documentation
- Synthesizeable verilog testbench
Technical Specifications
Related IPs
- 1KB/ECC40 NAND Flash BCH Encoder/Decoder
- 1KB/ECC96 NAND Flash BCH Encoder/Decoder
- NAND Flash controller supporting MLC Flash with multi-bit correction BCH ECC code
- NAND Flash controller for synchronous ONFI 2.1 NAND device, SLC/MLC support with BCH code
- BCH encoder and decoder for NAND FLASH
- Complete memory system supporting any combinations of SDR SDRAM, DDR, DDR2, Mobile SDR, FCRAM, Flash, EEPROM, SRAM and NAND Flash, all in one IP core