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