專利名稱:一種面積緊湊且快速的bch并行譯碼方法
技術領域:
本發(fā)明涉及由博斯-查德赫利-霍昆格姆(Bose-Chaudhuri-Hocquenghem.即BCH)編碼發(fā)生器定義的差錯控制碼技術,特別是涉及在NandFlash型存儲設備控制芯片中的一種面積緊湊且快速的BCH并行譯碼方法。
背景技術:
BCH碼是一種能糾正多個隨機錯誤的循環(huán)碼,可以用生成多項式g(x)的根來描述。它是具有嚴格的代數(shù)結構,糾錯能力強,構造筒單,編碼較其他碼容易等特點的線性分組碼。
在NandFlash型結構大容量存儲設備的控制芯片中,由于NandFlash型結構的特點以及噪聲干擾等因素,傳輸?shù)臄?shù)據(jù)會出錯是不可避免的,為了保證數(shù)據(jù)讀出時能進行誤碼檢測和校正,通常都是當數(shù)據(jù)寫入存儲單元時,需要按一定規(guī)則人為地寫入一部分冗余數(shù)據(jù),用于差錯控制。BCH碼是可糾正多個隨機錯誤的碼,這與NandFlash存儲設備的常規(guī)出錯類型相符。采用超長BCH碼作為NandFlash控制器糾錯碼ECC單元的優(yōu)點是
(1 )在保護相同長度的數(shù)據(jù)時,對于給定的隨機錯誤數(shù),二進制BCH碼需占用的冗余數(shù)據(jù)空間通常要低于里德-索羅蒙RS (Reed - Solomn)碼;
(2) 在譯碼時,二進制BCH碼僅需搜索錯誤位置,待獲得錯誤位置后,只需將錯誤位取反即完成糾錯,而不必再計算錯誤值多項式,使得計算復雜度得到了大幅度的減小。
由BCH編碼原理可知,對于任意正整數(shù)m,設二進制BCH碼的標準碼長為N = (2m-l)比特,碼字為K比特,則該碼的相關參數(shù)為校驗元長為(N-K)比特;糾錯能力t》(N —K) /m (其中m>3);最小碼距dmin > 2t + 1。通常BCH碼的譯碼主要分為三步(1 )從接收碼字中計算伴隨式多項式的校正子Si(x);(2 )用伯利坎普-梅西BM(Berlekamp-Massey)迭代算法得到錯誤位置多項式L(x);
(3) 用Chien搜索法求解錯誤位置多項式的根,從而求解出錯誤位置,完成糾錯。
但是第二步中的BM算法需要復雜的有限域求逆運算,有限域的求逆運算要么需要復雜的硬件實現(xiàn)結構,要么釆用查表方式,需要在電路中加入ROM或Flash型存儲單元。伯頓(Burton H.)在1971年中提出了 一種針對二進制BCH碼的無求逆(Inversionless)伯利坎普-梅西算法IBM,簡化了算法實現(xiàn)。采用IBM迭代算法后,二進制BCH碼的譯碼步驟變更為(1 )從接收碼字中計算伴隨式多項式Si(x);
(2) 用IBM迭代算法得到常數(shù)項非"0"的差錯位置多項式L(x);
(3) 用Chien搜索算法求解錯誤位置多項式L(x)的根,從而完成糾錯。針對上述譯碼步驟(1)和(3), Chen Y.等人給出了伴隨式多項式運算
電路和并行Chien搜索電路(參見"Chen Y. and Parhi K.K.,Area efficient paralleldecider architecture for long BCH codes. IEEE Proceedings on ICASSP2004,2004:73-76.")。針對上述譯碼步驟(2),里德(Reed I.S.)等人將IBM算法擴展用于解非二進制BCH碼,并給出了 IBM算法的超大規(guī)模集成電路VLSI結構,當前這種實現(xiàn)結構被廣泛采用(參見"Reed I.S.,Shih M.T.,VLSIdesign of inverse-free Berlekamp-Massey algorithm. In IEE Proceedings onComputers and Digital Techniques,1991,138(5):295-298.")。張軍等人提出了超高速低復雜度IBM算法電路結構(參見"張軍,王志功,胡慶生等,高速Berklekamp-Massey算法結構及電路實現(xiàn)。電路與系統(tǒng)學報,2006 ,11(4):85-89."),降低了關鍵路徑延遲,采用了 2t + 1個二輸入有限域乘法器。
對于BCH碼的譯碼步驟(2),在有限域GF(2")上糾錯能力為t比特的BCH碼,采用里德等人的實現(xiàn)電路,實現(xiàn)結構需要3t-1個二輸入乘法器,根據(jù)不同的工藝庫,單個組合邏輯乘法電路的實現(xiàn)面積通常在1000門左右,3t-l個二輸入乘法器的實現(xiàn)代價將超過整個譯碼器電路的50%,若采用張軍等人的實現(xiàn)電路,雖然降低了關鍵路徑的延遲,但仍需采用2t+l個二輸入有限域乘法器,實現(xiàn)代價依然較大。
對于BCH碼的譯碼步驟(3 ),現(xiàn)有的并行Chien搜索電路對常用的BCH截短碼并沒有采取專門措施,需要對截去的空數(shù)據(jù)單元進行搜索,限制了錯誤位置的搜索速度。
由于在上述BCH碼的三個譯碼步驟的實現(xiàn)電路中,現(xiàn)有技術要么存在硬件實現(xiàn)面積大,要么關鍵路徑延遲時間長等問題,無法滿足大容量便攜式存儲系統(tǒng)的要求。
為避免上述現(xiàn)有技術的不足,中國專利申請200510134376.2公開了一種"BCH編碼中Galois擴域運算的快速實現(xiàn)方法",預先建立冪次表示和多項式表示之間各元素的對應關系;通過Galois擴域運算的兩種表示方法實現(xiàn)混合運算,提高了 BCH編譯碼的運算速度,降低了 Galois擴域運算軟件實現(xiàn)的復雜度。該算法針對軟件實現(xiàn)具有很好的適應性,然而這種Galois擴域運 算需要分多個步驟進行,并且需要兼容所有Galois擴域,因而它在硬件實現(xiàn) 面積和運算速度上都無法滿足當前大容量便攜式NandFlash存儲產品的需要。
中國專利申請200410005777.3還公開了 一種"快速糾雙錯BCH碼譯碼電 路",根據(jù)譯碼碼字的錯誤圖樣不大于2比特這一特點,給出了一種無需Chien 搜索算法,也不用查找表ROM,直接從伴隨式結果即可計算出錯誤位置的 快速譯碼算法。譯碼結構筒單,硬件復雜度低。然而,目前大容量NandFlash 存儲產品的容量在繼續(xù)不斷增大,數(shù)據(jù)傳輸錯誤發(fā)生的概率也隨之增加,2 比特的糾錯性能已經難以保證各種NandFlash產品的使用可靠性。
中國專利申請200710123852.X還公開了 "一種支持預搜索的面積緊湊型 BCH并行譯碼電路",根據(jù)IBM迭代算法中的結構設計,通過一輪多拍的實 現(xiàn)結構復用一個有限域GF(2,上的二輸入乘法器,從而使BCH碼譯碼的硬 件實現(xiàn)面積大幅度壓縮,其中每一輪迭代需要復用(31 + 2)次二輸入乘法器, 因此該二輸入乘法器一共被復用2t^3t + 2)次。雖然這種方法能使BCH碼的 譯碼電路最大化的壓縮面積,同時復用這些乘法器至少需要2f(3t + 2)個時 鐘周期,因此譯碼的時間也不可避免的延長了,仍然很難同時滿足目前大容 量NandFlash存儲產品對譯碼速度快和電路硬件實現(xiàn)面積d、等要求。
發(fā)明內容
本發(fā)明要解決的技術問題在于克服目前BCH碼譯碼電路要么譯碼速度 慢,要么硬件實現(xiàn)面積大等不足,提出一種新的BCH碼并行譯碼方法,使 VISL電路的BCH譯碼器實現(xiàn)面積大幅減小,同時譯碼的速度也得到了很大 的提高,使BCH譯碼過程中對硬件實現(xiàn)面積和運算速度取得了一個比較好 的平衡,擴大BCH譯碼電路的使用范圍,滿足不同的應用環(huán)境。
為達到上述目的,本發(fā)明采用的技術方案是 一種面積緊湊且快速的BCH 并行譯碼方法,通過BCH并行譯碼電路來實現(xiàn)讀取數(shù)據(jù)時的糾錯,所述BCH 并行譯碼電路主要由伴隨式校正子運算電路、錯誤位置多項式迭代電路和錯 誤地址搜索電路組成,BCH并行譯碼電路工作在有限域GF(2")上,首先利 用伴隨式校正子運算電路通過8比特碼字同時輸入的并行運算來完成伴隨式 校正子的計算,然后利用錯誤位置多項式迭代電路通過IBM迭代算法中的一 輪多拍方式得到錯誤位置多項式,最后利用錯誤地址搜索電路先采用4比特 預搜索方法進行錯誤地址的預搜索處理,然后再送入Chien搜索電路完成錯誤地址的搜索,從而求解出錯誤地址和錯誤圖樣,并將錯誤圖樣與錯誤地址 中的錯誤數(shù)據(jù)進行異或運算得到正確的碼字,其創(chuàng)新在于在采用一輪多拍 方式迭代運算錯誤位置多項式過程中,通過狀態(tài)機控制單元的配置邏輯與狀
態(tài)機相結合來復用有限域GF(2,上的一個混合運算器,該混合運算器由有限 域GF(2,上的一個二輸入乘法器和一個二輸入加法器構成,如果迭代輪數(shù)為 偶數(shù)2k時,該輪需要復用混合運算器2k + 1次,如果迭代輪數(shù)為奇數(shù)2k - 1 時,該輪需要復用混合運算器3k + 3次,其中,k為大于或等于l的整數(shù)。 上述技術方案中的有關內容解釋如下
1、上述方案中,所述狀態(tài)機有五種狀態(tài),分別為閑置狀態(tài)(Idle)、循環(huán) 返回狀態(tài)(Loop )、計算差值狀態(tài)(CalDespy )、更新變量狀態(tài)(UpdateLambda) 和結束迭代狀態(tài)(Done);狀態(tài)機控制單元通過狀態(tài)機的五種狀態(tài)來控制迭 代運算以及在迭代運算中選擇混合運算器的復用順序,當?shù)啍?shù)是奇數(shù)2k -l時,狀態(tài)機控制單元依次選通計算差值狀態(tài)(CalDespy)、更新變量狀態(tài) (UpdateLambda)和循環(huán)返回狀態(tài)(Loop ),其中,計算差值狀態(tài)(CalDespy) 中復用混合運算器的順序為, [(Sk Lock) + delta,], [(S2k Loc0) + deltak+2] ( 1 ) 表達式(1)中
" ,,表示使用混合運算器中的乘法器在有限域GF(2,上進行的乘運算;
"+ "表示使用混合運算器中的加法器逐比特模2加運算;
"S"表示伴隨式校正子;
"k"表示大于或等于1的整數(shù);
"Loc"表示錯誤位置多項式運算過程中的系數(shù);
"delta。,deltai,...,deltak+2,,分別表示上一次復用混合運算器的運算結果; 更新變量狀態(tài)(UpdateLambda)中復用混合運算器的順序為 (B1M delta), [(Lock gamma)+tmp0], (Bk-2 delta), [(Loc^ gamma) 十tmp!],(B0 delta), [(Loc! gamma)+tmpk], (Loc0 delta) (2) 表達式(2)中
" ,,表示有限域GF(2")上的乘運算;
"+ "表示逐比特模2加運算;
"k"表示大于或等于1的整數(shù);
"gamma"表示上一次奇數(shù)輪的更新變量狀態(tài)(UpdateLambda)中迭代 運算使用的"delta"值;
7"tmp。,tmpi,…,tmpk',分別表示上一次復用混合運算器的運算結果; "Loc,,表示錯誤位置多項式運算過程中的系數(shù); "B"表示"Loc"值或與"Loc"值相關的值;
"delta"表示狀態(tài)機出現(xiàn)的上一個狀態(tài)中最后 一次復用混合運算器的運 算結果;
當?shù)啍?shù)是偶數(shù)2k時,狀態(tài)機控制單元依次選通更新變量狀態(tài) (UpdateLambda )和循環(huán)返回狀態(tài)(Loop),其中,更新變量狀態(tài) (UpdateLambda)中復用混合運算器的順序與表達式(2)表示的順序相同。
2、 上述方案中,按照數(shù)據(jù)冗余位的長度來配置糾錯能力,其中糾錯能力 小于或等于數(shù)據(jù)冗余位的長度除以13后商的正整數(shù)。
3、 上述方案中,所述的伴隨式校正子運算電路,采用一個優(yōu)化后的13 比特除法器的實現(xiàn)結構,對每次接收的8比特數(shù)據(jù)din[O],din[l], din[7] 與13比特有限域中的最小多項式常量進行除法預處理,設Si(iG[l, 2t])為伴 隨式校正子運算結果,其具體的運算公式為SrMi[12] x (ai)12+ Mi[ll] x (ai)n+…+Mi
x(af,而又由二進制的BCH碼編碼原理可知S2i = (Si)2, 因此只需計算奇數(shù)項的伴隨式校正子。當糾錯能力為t比特時,需要同時計 算t個伴隨式校正子S,, S3, ..., Sn,而偶數(shù)項的伴隨式校正子可依次通 過平方計算可得,其中下標i取值范圍為1 2t的整數(shù)。 一共有2t個伴隨式校 正子。
4、 上述方案中,所述錯誤地址搜索電路,通過對接收的錯誤多項式系數(shù) Lod, Loc2, ... , Loct分別與有限域GF(2,上生成多項式的常量(a—4, oT5, a—6, a—7), (a—8, aM°, oT12, a—14), ... , (a-4t, a—5t, oT6t, 01—,對應進行有 限域GF(2")的乘法,其中t為糾錯能力,再分別與Loc。進行異或處理后送入 錯誤地址搜索電路進行4比特的預搜索,使搜索速度獲得很大的提升。
5、 本發(fā)明工作原理是譯碼碼字通過8比特并行伴隨式校正子運算電路 得到2t個伴隨式校正子Si (ie [1, 2t]),然后通過使能信號IBM—start使能錯 誤位置多項式迭代電路并把糾錯能力信號Cerror—num[5:0]送入錯誤位置多 項式迭代電路開始運算,求出錯誤位置多項式的各系數(shù)Loc0, LoCl,..., Loct并給出錯誤的個數(shù)Error—num,再通過使能信號Chien_start使能錯誤地 址搜索電路并把錯誤位置多項式的各系數(shù)Loco, LoCl, ... , Loct以及錯誤的 個數(shù)Error—num[5:0] —并送入錯誤地址搜索電路開始搜索出錯誤地址 CSadrs[9:0]和相應的錯誤圖樣CSdout[7:0]。最后將錯誤圖樣CSdout與錯誤地址CSadrs中的錯誤數(shù)據(jù)din[7:0]進行異或得到正確的碼字Correct data,完
成糾錯。
由于上述技術方案運用,本發(fā)明與現(xiàn)有技術相比具有下列優(yōu)點和效果
1、 硬件實現(xiàn)面積小。本發(fā)明在伴隨式校正子運算過程中對除法器通過對 有限域GF(2,上生成多項式的常量進行預計算,從而大大的減小了除法器的 面積。通過優(yōu)化之后的所有除法器的實現(xiàn)面積之和大約相當于3個二輸入乘 法器的實現(xiàn)面積;在IBM算法中通過狀態(tài)機控制單元對不同的狀態(tài)復用有限 域GF(2,上的一個混合運算器,該混合運算器由一個乘法器和一個加法器構 成,從而使電路的實現(xiàn)面積得到大幅度的壓縮,而在電路實現(xiàn)面積中,乘法 器的面積遠遠大于加法器,因此一個混合運算器的面積也約為一個乘法器的 實現(xiàn)面積。由此可見,本發(fā)明伴隨式校正子運算電路的面積與背景技術中提 及的200710123852.X專利申請相當,都屬于面積緊湊型電路。
2、 本發(fā)明可根據(jù)數(shù)據(jù)冗余位的長度靈活的配置糾錯能力。糾錯能力可以 選取小于或等于數(shù)據(jù)冗余位的長度除以13的商的任何一個正整數(shù)。
3、 本發(fā)明錯誤地址搜索速度快。通過對錯誤多項式各系數(shù)Loco, Lod, Loct的全組合邏輯的4比特的預處理,從而使錯誤地址搜索速度得到很大的 提南。
4、 適用面更廣。本發(fā)明在錯誤位置多項式電路中通過控制面積的方式進 行有效的優(yōu)化,使混合運算器的使用率最大化,但復用率最小化。該方法使 得電路實現(xiàn)面積和運算速度之間取得了比較好的平衡,從而能滿足不同應用 環(huán)境的要求。以目前NandFlash設備中比較常用的512字節(jié)數(shù)據(jù)類型為例, 如果糾錯能力為16比特時,根據(jù)中國專利申請200710123852.X公開的一種
"支持預搜索的面積緊湊型BCH并行譯碼電路",在錯誤位置多項式迭代電 路中需要復用2xi6x (3xl6 + 2) = 1600次乘法器,因此至少需要1600 個時鐘周期;如果糾錯能力為8比特時,則該錯誤位置多項式迭代電路中需 要復用416次乘法器,因此至少需要416個時鐘周期。而本發(fā)明通過對IBM 算法的有效優(yōu)化和重新構造,使得錯誤位置多項式電路中一共分別需要復用 801次和242次混合運算器,大約分別需要830個和260個時鐘周期即可完 成錯誤位置多項式的迭代運算,大大提高了迭代運算速度。
附圖1是本發(fā)明的整體電路結構框架圖
附圖2是本發(fā)明的伴隨式校正子運算電路框架圖
9附圖3是本發(fā)明的IBM算法實現(xiàn)電路框架圖
附圖4是本發(fā)明的Chien搜索算法實現(xiàn)電路框架圖
以上附圖中"e"表示有限域GF(2,上的加法," ,,表示有限域GF(213) 上的乘法,"a"表示逐比特異或運算,"&"表示有限域GF(2")上的逐比特 與運算。"+"表示逐比特模2加運算。
具體實施例方式
下面結合附圖及實施例對本發(fā)明作進一步描述
實施例 一種面積緊湊且快速的BCH并行譯碼方法,通過BCH并行譯 碼電路(如圖1至4所示)來實現(xiàn)讀取數(shù)據(jù)時的糾錯,所述BCH并行譯碼 電路主要由伴隨式校正子運算電路(即圖1中的伴隨式運算電路)、錯誤位 置多項式迭代電路(即圖1中的IBM算法電路)和錯誤地址搜索電路(即圖 1中的Chien搜索電路)組成。BCH并行譯碼電路工作在有限域GF(2")上, 首先利用伴隨式校正子運算電路通過8比特碼字同時輸入的并行運算來完成 伴隨式校正子的計算,然后利用錯誤位置多項式迭代電路通過IBM迭代算法 中的一輪多拍方式得到錯誤位置多項式,最后利用錯誤地址搜索電路先采用 全組合邏輯的4比特預搜索方法進行錯誤地址的預搜索處理,然后再送入 Chien搜索電路完成錯誤地址的搜索,從而求解出錯誤位置,完成糾錯,其 創(chuàng)新在于在采用一輪多拍方式迭代運算錯誤位置多項式過程中,通過狀態(tài) 機控制單元的配置邏輯與狀態(tài)機相結合來復用有限域GF(2,上的一個混合 運算器,該混合運算器由有限域GF(2")上的一個二輸入乘法器和一個二輸入 加法器構成,如果迭代輪數(shù)為偶數(shù)2k時,該輪需要復用混合運算器2k+l 次,如果迭代輪數(shù)為奇數(shù)2k-1時,該輪需要復用混合運算器3k+3次,其 中,k為大于或等于1的整數(shù)。
附圖l為整體電路框圖。圖中各信號的功能描述如下 輸入信號
clk:系統(tǒng)時鐘輸入信號;
rst—:復位信號,低電平有效;
Count [9:0]:碼字長度計數(shù)控制信號,位寬為10位; dinValid:有效數(shù)據(jù)輸入信號,高電平有效; encoding:編譯碼模式信號(1為編碼,0為譯碼); flashtype: flash類型選擇信號; din [7:0]:數(shù)據(jù)輸入端口 ,位寬為8位;searchlnit: IBM迭代運算初始化信號; Cerror一num [5:0]:纟4 4普禽fe力葉言f , <立f力6 4立;
輸出信號
Correct data [7:0].'正確的輸出碼字,位寬為8位; Error__num[5:0]:實際出現(xiàn)的錯誤個數(shù),位寬為6位; Codedone:伴隨式計算結束指示信號,高電平有效; IBMdone: IBM迭代結束指示信號,高電平有效; CSdone: Chien搜索結束指示信號,高電平有效;
CSdout[7:0]:錯誤圖樣輸出,與輸入值din異或完成糾錯,位寬為8位; CSadrs[9:0]:錯誤位置,位寬為10位; CSwe:糾錯指示信號,高電平有效; SearchF:超出糾錯能力指示信號,高電平有效; 內部信號
IBM_start : IBM迭代運算使能信號,高電平有效; Chien—start: Chien搜索使能信號,高電平有效; S0, S,, ... , S2t :伴隨式校正子,位寬都為13位; Loco, LoCl, ... , Loct :錯誤位置多項式各系數(shù),位寬都為13位; 圖2為伴隨式校正子運算電路,在同一個時鐘周期內將8比特的碼字以 并行的方式按從低到高位分別與中間變量mi[5], mi[6] , ... , mi[12]異或后 和mi[O], m丄l] , ... , mi[4]—起送入優(yōu)化后的除法器除以有限域GF(2")上 的最小多項式常量,將結果作為下一個時鐘周期的mi[O], mi[l], ... ,mi[12], 同時將結果分別與有限域GF(2,上的常量a, a、 ... , a"進行逐比特與運算, 最后再分別將逐比特與運算的十三個結果進行逐比特模2加運算,直到所有 碼字輸入結束,則最終的結果即為伴隨式校正子Si,又由二進制的BCH編碼 原理可知,S2l = (Si)2,因此只需計算奇數(shù)項的伴隨式校正子。當糾錯能力為t 比特時,需要同時計算t個伴隨式校正子Si, S3, ..., S2t—15而偶數(shù)項的伴隨 式校正子可依次通過平方計算可得,其中下標i取值范圍為l~2t的整數(shù)。一 共有2t個伴隨式校正子。
圖3是錯誤位置多項式迭代電路,IBM迭代運算通過狀態(tài)機控制單元選 通所要進行的狀態(tài)進行迭代運算,其中狀態(tài)機共有5種狀態(tài)形式,分別為閑 置狀態(tài)Idle是指處于閑置狀態(tài);循環(huán)返回狀態(tài)Loop是指完成一輪迭代運算 后準備下一輪迭代運算的過渡狀態(tài);計算差值狀態(tài)CalDespy是指計算差值delta的運算;更新變量狀態(tài)UpdateLambda是指IBM迭代過程中的更新中間 變量的過程,比如B0, B,, ... , Bt; gamma; delta以及錯誤多項式各系數(shù) Loc。, LocpLoct等;結束迭代狀態(tài)Done是指IBM迭代結束的狀態(tài)。 一輪IBM算法的迭代步驟具體實現(xiàn)如下
a、 首先判斷迭代輪數(shù)RR是奇數(shù)還是偶數(shù),如果該輪RR是奇數(shù)2k - 1 時,狀態(tài)機控制單元依次選通計算差值狀態(tài)CalDespy、更新變量狀態(tài) UpdateLambda和循環(huán)返回狀態(tài)Loop。在計算差值狀態(tài)CalDespy中,首先判 斷錯誤多項式系數(shù)更新指示信號loadlocation是否為1,若是則更新LIndex 所指向的錯誤位置多項式的系數(shù),計算伴隨式校正子與錯誤值多項式系數(shù)相 乘并加上上一次混合運算的結果,其中計算差值狀態(tài)CalDespy復用混合運算 器的順序為[(Sk.產LoCk+0+delta], [(Sk Lock)+delta],..., [(S2k Loc0)+delta], 而伴隨式的選取是由SIndex控制,而錯誤值多項式系數(shù)的選取則是由LIndex 控制,每一次混合運算后將結果作為下一次混合運算的delta,共進行k + 2 次混合運算。計算差值狀態(tài)CalDespy結束之后狀態(tài)機控制單元選通更新變量 狀態(tài)UpdateLambda更新IBM迭代過程中的中間變量Bo, B!, ... ,Bt,首先判 斷標志信號flag是否為1,若是則由LIndex控制將LoCi賦給Bi,否則將另一 中間變量Ab賦給Bi,再通過LIndex控制選擇Bi與delta相乘,得到相乘結 果為tmp,每次運算結束之后再通過LIndex控制選擇LoCi與gamma相乘并 加上上一次Bi與delta相乘的結果tmp,具體的復用混合運算器的順序依次 為(Bw delta), [(Lock gamma)+tmp], (Bk—2 delta), [(Loq^ gamma) +tmp],…,(B0 delta), [(Loq gamma)+tmp], (Loc0 delta)。共進4亍了 k+1次乘法運算和k次混合運算。更新變量狀態(tài)UpdateLambda結束之后, 狀態(tài)機控制單元將選通循環(huán)返回狀態(tài)Loop,首先判斷updategamma是否為1, 當updategamma高電平有效為1時將delta的4直貝武纟合gamma,然后開始下一 輪的迭代。
b、 如果該輪迭代的輪數(shù)是偶數(shù)2k時,狀態(tài)機控制單元依次選通更新變 量狀態(tài)UpdateLambda和循環(huán)返回狀態(tài)Loop 。選通更新變量狀態(tài) UpdateLambda后首先判斷標志信號flag是否為1,若是則由LIndex控制將 Loci賦給Bi,否則將另 一中間變量Ab賦給Bi,再通過LIndex控制選4奪Bi 與delta相乘,得到相乘結果為tmp,每次運算結束之后再通過LIndex控制 選擇Loq與gamma相乘并加上上一次B;與delta相乘的結果tmp,具體的復 用混合運算器的順序依次為(Bw delta), [(Lock gamma)+tmp], (Bk-2 delta), [(Locw gamma)+tmp], …,(B0 delta), [(Loc丄⑧ gamma)+tmp], (Loc。
delta)。共進行了 k+1次乘法運算和k次混合運算。更新變量狀態(tài) UpdateLambda結束之后,狀態(tài)^l4空制單元將選通循環(huán)返回狀態(tài)Loop,首先 判斷updategamma是否為1,當updategamma高電平有效為1日于將delta的葉直 賦給gamma,然后開始下一輪的迭代。
c、當?shù)拇螖?shù)等于2t+ 1時,狀態(tài)機控制單元選通結束迭代狀態(tài)Done, IBM迭代運算結束,同時圖1中的IBMdone信號置為有效,此時寄存器(圖 中未畫出)中的Loco, LoCl, ... , Loct即為錯誤位置多項式各系數(shù),將其送 入錯誤地址搜索電路。
圖4表示的是具有4比特預搜索的錯誤地址搜索電路,在進行Chien搜 索之前先進行預處理,預處理的方式如圖4所示是將錯誤多項式各系數(shù) LoCl, Loc2, ... , Loct分別與對應的有限域GF(2B)上生成多項式的常量(oT4, a—5, a—6, cT7), (of8, a—10, a—12, cT"),…,(a—4t, oT5t, oT6t, a—71)進行 有限域GF(2,的乘法,即錯誤多項式系數(shù)LoCi分別與常量(of4, a_5, a — 6, a一7)相乘分別得到Lod—o, Loq—15 Loq—2, Loc13;錯誤多項式系數(shù)Loc2分別 與常量(a—8, a—1C), a—12, a—")相乘分別得到Loc2—0, Loc2J, Loc2—2, Loc2」;...; 錯誤多項式系數(shù)Loct分別與常量(a—4t, cT5t, a—6t, a"t)相乘分別得到Loct—0, LocL1, Loct—2, Loct—3;然后計算Loc0+ Loc—0+ Loc2—0 + . + Loct—0的結果,再 判斷該結果是否為0,如果為0則loc[O]置為1,否則置為0;計算Loc。+Loc^ —i+Loc2—!+...+Loct—i的結果,再判斷該結果是否為O,如果為O則loc[l]置 為1,否則置為0;計算Loco+Loq—2+Loc2—2+...+Loct—2的結果,再判斷該 結果是否為O,如果為0則1oc[2]置為l,否則置為0;計算Loc。+LoCl—3+Loc2. —3+…+Loctj的結果,再判斷該結果是否為0,如果為0則1oc[3]置為1,否 則置為0。將1oc[3:0]送入CWen搜索電路從而完成4比特預搜索的運算過程。 在搜索過程中如果發(fā)現(xiàn)有錯,則圖1中的糾錯能力信號CSwe信號有效,同 時給出錯誤地址Csadrs (見圖1)和錯誤圖樣CSdout (見圖1 ),并將輸出錯 誤圖樣CSdout與錯誤地址CSadrs中的錯誤數(shù)據(jù)din[7:0]進行異或得到正確的 碼字Correct data (見圖1),當碼字全部輸入結束后,錯誤地址搜索電路的結 束信號CSdone信號有效(見圖1 );如果碼字出現(xiàn)的錯誤個數(shù)超過了糾錯能 力Cerror—num (見圖1 ),則搜索失敗SearchF信號有效(見圖1 ),也即糾錯 失敗,則要求碼字重傳或者拋棄。
以目前NandFlash設備中比較常用的512字節(jié)數(shù)據(jù)類型為例,選擇BCH(4304, 4096),糾錯能力為16比特,碼字為512字節(jié)即4096比特,形 式如"00 01 02 03 ... Of 10 ... ff00 01 02 03 ... Of 10 ... ff,共512字節(jié),數(shù)據(jù)
冗余位為26字節(jié)即208比特,現(xiàn)用Verilog HDL電路描述語言實現(xiàn)電路, 并在Synopsys公司的VCS環(huán)境下進行驗證,得到該碼字的26字節(jié)的數(shù)據(jù)冗 余位為
208,h db a7 b5 19 18 b4 aa 34 83 7c 26 94 4c 7b de 2e aa 0e 14 e8 dl ce 88 dl 5b59
將512字節(jié)碼字和26字節(jié)數(shù)據(jù)冗余位共538字節(jié)數(shù)據(jù)作為譯碼的輸入。
現(xiàn)人為的將第o字節(jié)的"oo"改為"or',將第16字節(jié)的"io"改為"ir,...,
將第240字節(jié)的改為"fl",共造成16個錯誤。譯碼后的顯示結果如 下
Pattern 0 :
Info: Error Deteced @ Add Data = 8'hf0(l 1110000)
Info: Error Deteced @ Add Data=8'heO(1110000CO
Info: Error Deteced @ Add Data =8'hd0(l 1010000)
Info: Error Deteced @ Add Data=8'hc0(11000000:>
Info: Error Deteced @ Add Data = 8'hb0(10110000)
Info: Error Deteced @ Add Data - 8'ha0(10100000)
Info: Error Deteced @ Add Data = 8'h90(l 0010000)
Info: Error Deteced @ Add Data = 8'h80(l 0000000)
Info: Error Deteced @ Add Data = 8'h70(01110000)
Info: Error Deteced @ Add Data = 8'h60(01100000)
240, Error Data = 8'hfl(11110001
=224, Error Data = 8'hel(11100001
208, Error Data = 8'hdl(11010001
=192, Error Data = 8'hc 1(11000001
176, Error Data = 8'hbl(10110001
=160, Error Data = 8'hal(10100001
144, Error Data = 8'h91(10010001
128, Error Data = 8'h81(10000001
=112, Error Data = 8'h71(01110001
=96, Error Data = 8'h61 (01100001
,Correct
,Correct
,Correct
,Correct
,Correct
,Correct
,Correct
,Correct
,Correct
Correct64, Error Data = 8'h41(01000001), Correct
48, Error Data = 8'h31(00110001), Correct
Info: Error Deteced @ Add = 80, Error Data = 8'h51(01010001), Correct Data = 8'h50(01010000)
Info: Error Deteced @ Add = Data = 8'h40(01000000)
Info: Error Deteced @ Add = Data =8'h3 0(00110000)
Info: Error Deteced @ Add = 32, Error Data = 8'h21(00100001), Correct Data = 8'h20(00100000)
Info: Error Deteced @ Add = 16, Error Data = 8'hl 1(00010001), Correct Data =8'hl 0(00010000)
Info: Error Deteced @ Add = 0, Error Data = 8'hO 1(00000001), Correct Data = 8'固(00000000)
Info: 16 Error Deteced
由上面糾錯信息可知糾錯功能完全正確。
上述實施例只為說明本發(fā)明的技術構思及特點,其目的在于讓熟悉此項 技術的人士能夠了解本發(fā)明的內容并據(jù)以實施,并不能以此限制本發(fā)明的保 護范圍。凡根據(jù)本發(fā)明精神實質所作的等效變化或修飾,都應涵蓋在本發(fā)明 的保護范圍之內。
權利要求
1、一種面積緊湊且快速的BCH并行譯碼方法,通過BCH并行譯碼電路來實現(xiàn)讀取數(shù)據(jù)時的糾錯,所述BCH并行譯碼電路主要由伴隨式校正子運算電路、錯誤位置多項式迭代電路和錯誤地址搜索電路組成,BCH并行譯碼電路工作在有限域GF(213)上,首先利用伴隨式校正子運算電路通過8比特碼字同時輸入的并行運算來完成伴隨式校正子的計算,然后利用錯誤位置多項式迭代電路通過IBM迭代算法中的一輪多拍方式得到錯誤位置多項式,最后利用錯誤地址搜索電路先采用4比特預搜索方法進行錯誤地址的預搜索處理,然后再送入Chien搜索電路完成錯誤地址的搜索,從而求解出錯誤地址和錯誤圖樣,并將錯誤圖樣與錯誤地址中的錯誤數(shù)據(jù)進行異或運算得到正確的碼字,其特征在于在采用一輪多拍方式迭代運算錯誤位置多項式過程中,通過狀態(tài)機控制單元的配置邏輯與狀態(tài)機相結合來復用有限域GF(213)上的一個混合運算器,該混合運算器由有限域GF(213)上的一個二輸入乘法器和一個二輸入加法器構成,如果迭代輪數(shù)為偶數(shù)2k時,該輪需要復用混合運算器2k+1次,如果迭代輪數(shù)為奇數(shù)2k-1時,該輪需要復用混合運算器3k+3次,其中,k為大于或等于1的整數(shù)。
2、 根據(jù)權利要求1所述的BCH并行譯碼方法,其特征在于所述狀態(tài)機 有五種狀態(tài),分別為閑置狀態(tài)(Idle)、循環(huán)返回狀態(tài)(Loop)、計算差值狀態(tài)(CalDespy)、更新變量狀態(tài)(UpdateLambda)和結束迭代狀態(tài)(Done);狀 態(tài)機控制單元通過狀態(tài)機的五種狀態(tài)來控制迭代運算以及在迭代運算中選褲, 混合運算器的復用順序,當?shù)啍?shù)是奇數(shù)2k- 1時,狀態(tài)機控制單元依次選 通計算差值狀態(tài)(CalDespy)、更新變量狀態(tài)(UpdateLambda)和循環(huán)返回狀 態(tài)(Loop),其中,計算差值狀態(tài)(CalDespy)中復用混合運算器的順序為 [(Sw Lock+1) + delta。], [(Sk Lock) + de闊,...,[(S2k Loc0) + deltak+2] ( 1 ) 表達式(1)中" "表示使用混合運算器中的乘法器在有限域GF(2,上進行的乘運算;"+ ,,表示使用混合運算器中的加法器逐比特模2加運算;"S"表示伴隨式校正子;"k"表示大于或等于1的整數(shù);"Loc"表示錯誤位置多項式運算過程中的系數(shù);"ddta。, delta,,..., deltak+2,,分別表示上一次復用混合運算器的運算結果; 更新變量狀態(tài)(UpdateLambda)中復用混合運算器的順序為 (Bw delta), [(Lock gamma)+tmp0], (Bk—2 delta), [(Loc^ gamma)+11—,…,(B0 delta), [(Loc, gamma)+tmpk], (Loc0 delta) (2) 表達式(2)中 " "表示有限域GF(2,上的乘運算; "+ ,,表示逐比特模2加運算; "k"表示大于或等于1的整數(shù);"gamma"表示上一次奇數(shù)輪的更新變量狀態(tài)(UpdateLambda )中迭代運 算使用的"delta"值;"tmpo,tmpi,...,tmpk"分別表示上一次復用混合運算器的運算結果; "Loc"表示錯誤位置多項式運算過程中的系數(shù); "B"表示"Loc"值或與"Loc"值相關的值;"delta"表示狀態(tài)機出現(xiàn)的上一個狀態(tài)中最后一次復用混合運算器的運算 結果;當?shù)啍?shù)是偶數(shù)2k時,狀態(tài)機控制單元依次選通更新變量狀態(tài) (UpdateLambda )和循環(huán)返回狀態(tài)(Loop ),其中,更新變量狀態(tài) (UpdateLambda)中復用混合運算器的順序與表達式(2)表示的順序相同。
3、根據(jù)權利要求1或2所述的BCH并行譯碼方法,其特征在于按照數(shù) 據(jù)冗余位的長度來配置糾錯能力,其中糾錯能力小于或等于數(shù)據(jù)冗余位的長度 除以13后商的正整數(shù)。
全文摘要
本發(fā)明涉及NandFlash型存儲設備控制芯片中的一種面積緊湊且快速的BCH并行譯碼方法,其特征在于在采用一輪多拍方式迭代運算錯誤位置多項式過程中,通過狀態(tài)機控制單元的配置邏輯與狀態(tài)機相結合來復用有限域GF(2<sup>13</sup>)上的一個混合運算器,該混合運算器由有限域GF(2<sup>13</sup>)上的一個二輸入乘法器和一個二輸入加法器構成,如果迭代輪數(shù)為偶數(shù)2k時,該輪需要復用混合運算器2k+1次,如果迭代輪數(shù)為奇數(shù)2k-1時,該輪需要復用混合運算器3k+3次,其中,k為大于或等于1的整數(shù)。本發(fā)明在錯誤位置多項式電路中通過控制面積的方式進行有效的優(yōu)化,使混合運算器的使用率最大化,但復用率最小化。該方法使得電路實現(xiàn)面積和運算速度之間取得了比較好的平衡,從而能滿足不同應用環(huán)境的要求。
文檔編號H03M13/00GK101488762SQ20091002452
公開日2009年7月22日 申請日期2009年2月10日 優(yōu)先權日2009年2月10日
發(fā)明者匡啟和, 林雄鑫, 肖佐楠, 茳 鄭, 鐘名富 申請人:蘇州國芯科技有限公司