| The development of architecture and manufacturing process in NAND Flash reducesthe memory cost, but it makes the NAND Flash memory more possible to have randomerrors at the same time, so the error correction algorithm of stronger error correctioncapability needs to be studied. BCH code is a kind of linear block codes in the finite fieldcorrection, and it is able to correct a plurality of random errors in the NAND Flash. Thisdissertation designed a NAND Flash Controller which is based on BCH code.Firstly, this dissertation introduces the development history of the NAND Flash, theprinciple of the dislocation generation in the NAND Flash and basic knowledge aboutBCH error-correcting codes. It also gives in detail the overall architecture of NAND Flashcontroller, analyses the basic theory of BCH code, and introduces the memory storagestructure, external interface and operation timing of the NAND Flash.Secondly, according to the theoretical basis of the BHC code identified in thisdissertation, the parameters of the BCH codec module for (8640,8192,32) are ascertained.By calculating the BCH code minimum polynomial and polynomial, an8bit parallel BCHencoder is designed in this dissertation. Combined with the characteristics of data flow ofBCH decoder, this dissertation designs an8bit parallel BCH decoder using two levels ofassembly line.Then, this dissertation designs the main control module of NAND Flash controllerafter analyzing its timing constraints. It gives the overall architecture and modulecontroller. Also the dissertation introduces its register group, the design process of themain control logic, and the method to read data, write data, and realize block erase.Finally, the simulation results of the BCH codec and the NAND Flash controller areanalyzed. Also, the whole system is verified in the FPGA development board under theclock of12.5MHz. These analyses show that all functions of this NAND Flash controllermeet the design requirements, and it is able to correct all errors at each1KB data if theerrors are less than32bits. |