BCH Error Detection and Correction for SRAM

The Bose, Chaudhuri, and Hocquenghem (BCH) codes form a large class of powerful random error-correcting cyclic codes. This class of codes is a remarkable generalization of the Hamming code for multiple-error correction.

BCH codes are used in varied applications such as satellite communications, compact disc players, DVDs, disk drives, solid-state drives, two-dimensional bar codes, SRAMs, etc.

This project proposes building a designated BCH IP core, which can be configured to perform either BCH encoding or BCH decoding in real-time conditions. The IP (intellectual property) will have 3 main interfaces: BCH channel, SRAM and APB. It will support a flexible in/out configuration, i.e. handling dataflow in both direction, e.g. Channel-to-SRAM or SRAM-to-Channel. The IP is triggered by the host software through APB registers, and interrupts back the host when calculation is completed

Design goals and challenges

- Learning the basics of Verilog RTL coding language (commonly used in the industry).
- Learning the basics of communication protocols, hereby AMBA APB.
- Learning common coding standards which are commonly used in the industry.
- Practice in coding design using arch. spec., ramping up an advanced accelerator as an IP.