摘 要: 針對NAND Flash應用,完成了并行化BCH編譯碼器硬件設計。采用寄存器傳輸級硬件描述語言,利用LFSR電路、計算伴隨式、求解關鍵方程、Chien搜索算法等技術方法完成了BCH編譯碼算法在FPGA上的硬件實現(xiàn)。相比于傳統(tǒng)串行實現(xiàn)方案,采用并行化實現(xiàn)提高了編譯碼器的速度。搭建了基于SoPC技術的嵌入式驗證平臺,在Nios處理器的控制下能快速高效地完成對BCH編譯碼算法的驗證,具有測試環(huán)境可配置、測試向量覆蓋率高、測試流程智能化的特點。
關鍵詞: 并行化;BCH;FPGA;優(yōu)化;SoPC
隨著科技進步和信息化的快速發(fā)展,如何在海量數(shù)據(jù)存儲中確保數(shù)據(jù)不出錯成為眾人關心的問題。作為廣泛應用于U盤、固態(tài)硬盤等電子產(chǎn)品的一種非易失性存儲介,NAND Flash 由于其結構的特殊性,在進行擦寫操作時易產(chǎn)生錯誤,故需要引入錯誤校驗機制。早期使用SLC工藝的NAND Flash通常采用漢明碼(ECC)校驗,但是無法糾正1 bit以上的錯誤?,F(xiàn)今的MLC工藝多采用BCH糾錯,但每頁產(chǎn)生的錯誤往往超過2 bit,甚至達到4 bit。國內外對BCH糾錯的研究已展開,參考文獻[1-2]采用串行結構完成譯碼器設計,實現(xiàn)簡單,但最大時鐘頻率小、速度慢,無法滿足高速的需要。參考文獻[3-4]中提出并行化結構,提高了設計速度和數(shù)據(jù)吞吐量,但電路實現(xiàn)討論不充分。參考文獻[5]中通過ASIC制備芯片并進行測試驗證,但此方法周期長、費用高。
針對以上問題,本文基于Altera公司的CycloneII EP2C35系列FPGA完成了并行化BCH(8184,7976,16)碼編譯器設計,并利用SoPC Builder搭建了驗證平臺,在Nios II處理器的控制下能高效地完成BCH編譯碼算法的驗證,具有測試環(huán)境可配置、測試向量覆蓋率高、測試流程智能化的特點。
1 BCH編譯碼FPGA設計
結合實際使用NAND Flash的情況, 16 bit糾錯是NAND Flash使用的趨勢。本設計采用并行化結構實現(xiàn)16 bit BCH碼算法。
1.1 并行BCH編碼器的設計
BCH編碼器通過除法電路得到余數(shù)作為系統(tǒng)碼的校驗位,實現(xiàn)公式為:
2 基于SoPC技術的驗證系統(tǒng)
搭建了基于SoPC技術的嵌入式驗證平臺, NiosⅡProcessor通過AVALON總線以AVALON—SLERVER協(xié)議與RAM_CONTROLLER以及BCH_IP外設進行通信,控制編譯碼模塊工作,如圖4所示。其中data_cnt為傳輸碼元數(shù),eob信號為傳輸碼元結束信號,sob為開始傳輸原碼信號,data信號為傳輸原碼數(shù)據(jù)。