專利名稱:Flash控制器中BCH編譯碼的糾錯能力擴展方法
技術領域:
本發明涉及Flash控制器中的編譯碼糾錯方法,特別涉及在NandFlash型存儲設 備控制芯片中使用的一種BCH編譯碼的糾錯能力擴展方法。
背景技術:
在NandFlash型結構大容量存儲設備的控制芯片中,由于NandFlash型結構的特 點以及噪聲干擾等因素,傳輸的數據會出錯是不可避免的。為了保證數據讀出時能進行誤 碼檢測和校正,通常都是在數據寫入存儲單元時,需要寫入一部分冗余數據,在數據讀出 時用于糾錯。BCH碼是由博斯_查德赫利_霍昆格姆(Bose-Chaudhuri-Hocquenghem,即 BCH)編碼發生器定義的差錯控制碼技術,它是一種可糾正多個隨機錯誤的編譯碼方法,這 與NandFlash存儲設備的常規出錯類型相符。采用超長BCH碼作為NandFlash控制器糾錯 碼ECC單元的優點是(1)在保護相同長度的數據時,對于給定的隨機錯誤數,二進制BCH碼需占用的冗 余數據空間通常要低于里德_索羅蒙RS(Reed-Solomn)碼;(2)在譯碼時,二進制BCH碼僅需搜索錯誤位置,待獲得錯誤位置后,只需將錯誤 位取反即完成糾錯,而不必再計算錯誤值多項式,使得計算復雜度得到了大幅度的減小。由BCH編碼原理可知,對于任意正整數m,設二進制BCH碼的標準碼長為N = (2m-l)比特,信息元為K比特,則該碼的相關參數為校驗元長為(N-K)比特;糾錯能力 t彡(N-K)/m(其中m彡3);最小碼距dmin彡2t+l。BCH碼是一種能糾正多個隨機錯誤的循環碼,它的生成多項式與最小碼距之間有 密切的關系,可以用生成多項式g(x)的根來描述。它具有嚴格的代數結構,糾錯能力強,構 造簡單,人們可以根據所要求的糾錯能力t很容易構造出BCH碼,其編碼和解碼器也較其他 碼容易實現,是線性分組碼中應用最普遍的一類碼。目前在Flash控制器中,對NandFlash存儲設備的數據進行BCH編譯碼都是以 Flash扇區為單位進行處理。Flash扇區容量目前有528字節、540字節、1070字節、1080字 節等多種規格。對于前兩種格規的Flash扇區一般用來存儲512字節的數據量,對于后兩 種格規的Flash扇區一般用來存儲1024字節的數據量。據申請人了解,現有BCH譯碼電路針對不同的Flash扇區容量只提供如下幾種糾 錯能力1、針對528字節和540字節容量的Flash扇區,數據長度為512字節,糾錯能力 (最大糾錯個數)如下(1)固定可選的最大糾錯個數有8比特和16比特兩種。(2)可配置選擇的最大糾錯個數是8比特、12比特、14比特和16比特。2、針對1070字節和1080字節容量的Flash扇區,數據長度為1024字節,糾錯能 力只有固定可選的8比特、14比特、24比特、30比特和32比特種。由此可見,現有BCH譯碼電路的糾錯能力都是固定的或者是可配置的,其糾錯能力的擴展范圍受到很大的限制,可供選擇的余地不大。隨著相關技術的不斷更新, NandFlash型結構大容量存儲設備對糾錯能力的要求也在不斷提升,當糾錯能力超過可配 置的糾錯性能或者需要不斷提升的時候,只能重新修改算法或者修改電路來支持糾錯能力 更強的要求,這些都是十分耗時耗力的。
發明內容
本發明要解決的技術問題在于克服目前Flash控制器中的BCH編譯碼糾錯能力不可擴展的不足,提出了一種可分段糾錯的方法,很靈活方便的提高了 BCH譯碼糾錯能力,從 而擴大了 BCH譯碼電路的使用范圍,使其能滿足各種不同的應用環境。為達到上述目的,本發明采用的第一個技術方案是一種Flash控制器中BCH 編譯碼的糾錯能力擴展方法,其特征在于對于Flash扇區容納數據長度為1024字節的 NandFlash型存儲設備,在對數據進行BCH編碼時,把將要寫入每個Flash扇區的數據塊分 段成若干個子數據塊,每個子數據塊的數據長度相同,且都是128字節的η倍,η取1、2和 4中的一個整數,同時根據實際糾錯能力要求選擇糾錯能力值t,t的取值范圍為8 32比 特中的一個整數,然后根據以下公式(1)給每個子數據塊配備用于糾錯的冗余位冗余位長度的字節數=(14Xt)/8(1)式中t為糾錯能力值,當公式(1)的計算結果為整數時取該整數作為冗余位長度 的字節數,當公式(1)的結果有小數時取整數后加1作為冗余位長度的字節數;此外,對Flash扇區的數據塊分段以及配備用于糾錯的冗余位需滿足以下公式 (2)的要求(子數據塊的數據長度+冗余位長度)X子數據塊的數量SFlash扇區容量(2)式中子數據塊的數據長度為子數據塊的字節數;冗余位長度為冗余位長度的字節數;子數據塊的數量為所述Flash扇區的數據塊分段個數;Flash扇區容量為所述NandFlash型存儲設備中每個Flash扇區的可供存儲的字 節數;在對數據進行BCH譯碼時,一次讀出Flash扇區的數據,然后利用BCH譯碼電路單 獨對每個子數據塊以及所配備的冗余位進行BCH譯碼,從而實現對NandFlash型存儲設備 中Flash扇區數據糾錯能力的擴展。為達到上述目的,本發明采用的第二個技術方案是一種Flash控制器中BCH 編譯碼的糾錯能力擴展方法,其特征在于對于Flash扇區容納數據長度為512字節的 NandFlash型存儲設備,在對數據進行BCH編碼時,把將要寫入每個Flash扇區的數據塊分 段成若干個子數據塊,每個子數據塊的數據長度相同,且都是128字節的η倍,η取1和2中 的一個整數,同時根據實際糾錯能力要求選擇糾錯能力值t,t的取值范圍為8 32比特中 的一個整數,然后根據以下公式(1)給每個子數據塊配備用于糾錯的冗余位冗余位長度的字節數=(14Xt)/8(1)式中t為糾錯能力值,當公式(1)的計算結果為整數時取該整數作為冗余位長度 的字節數,當公式(1)的結果有小數時取整數后加1作為冗余位長度的字節數;
此外,對Flash扇區的數據塊分段以及配備用于糾錯的冗余位需滿足以下公式 (2)的要求(子數據塊的數據長度+冗余位長度)X子數據塊的數量<Flash扇區容量(2)式中子數據塊的數據長度為子數據塊的字節數;冗余位長度為冗余位長度的字節數;
子數據塊的數量為所述Flash扇區的數據塊分段個數;Flash扇區容量為所述NandFlash型存儲設備中每個Flash扇區的可供存儲的字 節數;在對數據進行BCH譯碼時,一次讀出Flash扇區的數據,然后利用BCH譯碼電路單 獨對每個子數據塊以及所配備的冗余位進行BCH譯碼,從而實現對NandFlash型存儲設備 中Flash扇區數據糾錯能力的擴展。上述技術方案中的有關內容解釋如下1、上述第一和第二技術方案中,所述t的取值范圍可以為8、14、24和30比特中的 一個整數。取值范圍也可以為8、12、24和30比特中的一個整數,甚至可以是其他,只要在 8 32比特中的任何一個整數均可。2、本發明原理是參見附圖1所示,在對Flash扇區數據BCH編譯碼中,通過將一 個大的數據塊分段成若干個小的子數據塊后,再單獨對每個小子數據塊進行BCH編譯碼, 從而實現對原有大數據塊糾錯能力的擴展。由于上述技術方案運用,本發明與現有技術相比具有下列優點和效果1、糾錯能力可擴展。通過對一個大數據塊采取分段的方式,分段成幾個小的子數 據塊,再分別對每一個分段的子段進行單獨編碼和譯碼,可以大幅度的擴展原大數據塊的 糾錯能力,從而可滿足對數據不同糾錯性能的要求。2、配置靈活而且方便。在電路實現時通過寄存器的設置,可分別選擇128、256、512 或1024字節不同的數據塊長度進行BCH譯碼;還可通過寄存器的配置來選擇對每一個已選 數據塊的糾錯能力為8、14、24或30比特,從而可以很靈活和方便的選擇不同長度的數據塊 進行不同糾錯能力的糾錯。3、成本更低。通過糾錯能力可擴展的配置,既可滿足現有的flash對糾錯模塊的 糾錯性能的要求,還可很方便的滿足將來因flash升級而對糾錯模塊性能提高的要求。本 發明只需對flash扇區的數據進行合理的分段,既可大幅度提升原有的糾錯性能,而不必 重新修改算法和重新設計譯碼電路,從而可以大大的節省人力和物力。
附圖1為本發明Flash扇區的數據塊分段原理框圖;附圖2為本發明的BCH譯碼電路整體結構框架圖。
具體實施例方式下面結合附圖及實施例對本發明作進一步描述實施例1 一種Flash控制器中BCH編譯碼的糾錯能力擴展方法
對于Flash扇區容納數據長度為1024字節的NandFlash型存儲設備,在對數據進 行BCH編碼時,把將要寫入每個Flash扇區的數據塊分段成若干個子數據塊,每個子數據塊 的數據長度相同,且都是128字節的η倍,ι!取1、2和4中的一個整數,同時根據實際糾錯 能力要求選擇糾錯能力值t,t的取值范圍為8 32比特中的一個整數,然后根據以下公式
(1)給每個子數據塊配備用于糾錯的冗余位冗余位長度的字節數=(14Xt)/8(1)式中t為糾錯能力值,當公式(1)的計算結果為整數時取該整數作為冗余位長度 的字節數,當公式(1)的結果有小數時取整數后加1作為冗余位長度的字節數;此外,對Flash扇區的數據塊分段以及配備用于糾錯的冗余位需滿足以下公式
(2)的要求(子數據塊的數據長度+冗余位長度)X子數據塊的數量<Flash扇區容量(2)式中子數據塊的數據長度為子數據塊的字節數;冗余位長度為冗余位長度的字節數;子數據塊的數量為所述Flash扇區的數據塊分段個數;Flash扇區容量為所述NandFlash型存儲設備中每個Flash扇區的可供存儲的字 節數;在對數據進行BCH譯碼時,一次讀出Flash扇區的數據,然后利用BCH譯碼電路單 獨對每個子數據塊以及所配備的冗余位進行BCH譯碼,從而實現對NandFlash型存儲設備 中Flash扇區數據糾錯能力的擴展。本發明通過數據的可分段操作,來實現糾錯能力的大幅度擴展。對單獨的一塊 128、256、512或1024字節的數據塊,其糾錯能力值t可在8 32比特范圍中選擇一個整 數,比如選擇8、14、24或30比特,相應的數據冗余位的長度也分別為14、25、42和53字節, 而冗余位的具體數值由BCH編碼方法決定。而當把一個1024字節的數據塊分段成8個128 字節數據子塊時(見圖1所示),雖然數據冗余位的長度也相應增加了 7倍,但由于現在的 Flash扇區容量的不斷擴大,因此增加的數據量還是在Flash扇區容量的范圍之內,所以其 糾錯能力可分別提高到8X8,8X14,8X24,8X30比特。當把一個1024字節的數據塊分 段成4個256字節數據子塊時,其糾錯能力可分別提高到4X8,4X14,4X24,4X30比特。 當把一個1024字節的數據塊分段成2個512字節數據子塊時,其糾錯能力可分別提高到 2X8,2X14,2X24,2X30比特。依此類推,對于512和256字節的數據塊都可通過分段方 式大幅的擴展其糾錯能力。若選擇一個長度為1024字節的數據塊進行BCH編譯碼而不進行分段糾錯,可直接 通過配置糾錯能力選擇8、14、24或30比特不同的糾錯能力進行編譯碼,即可滿足現有技術 的需要。若想對該1024字節數據塊進行更強的糾錯能力BCH編譯碼的話,在進行BCH編譯 碼時要將該1024字節數據塊選擇分段方式,可選的分段方式為128、256或512字節。若選 擇分段方式為512字節,即將 原有1024字節的數據塊自動分段成2個512字節的數據塊分 別進行編譯碼。而對一個單獨的1024字節的數據塊進行編譯碼時,其糾錯能力不超過30 比特,而若把一個單獨的1024字節的數據塊分段成2個512字節的數據塊時,因為對每一 個單獨的512字節的數據塊進行編譯碼時,其最大糾錯能力可達30比特,而兩個512字節的數據塊即可實現60比特的糾錯能力,從而大大的擴展了原有1024字節只有30比特的糾 錯能力。依次類推,還可將原1024字節的數據塊根據需要分段成若干個128字節或者若干 個256字節的子數據塊,從而可以靈活的擴展該1024字節數據塊的糾錯能力。同理,可對 512字節的數據塊進行128或256字節的子數據塊的分段,對256字節的數據塊進行128字 節的子數據塊的分段,從而擴展原有數據塊的糾錯能力。下面結構附圖2對本發明作進一步說明圖2為本發明的BCH譯碼電路整體結構框架圖。從圖中可以看出BCH譯碼電路有 三個子電路,分別是伴隨式校正子運算電路、錯誤位置多項式迭代電路和錯誤地址搜索電 路。其中,伴隨式校正子運算電路是通過信息元的輸入完成伴隨式校正子的計算電路;錯誤 位置多項式迭代電路是通過伴隨式校正子計算出錯誤位置多項式的電路;錯誤地址搜索電 路是Chien搜索電路,錯誤地址搜索電路通過伴隨式校正子運算電路所接收的數據長度選 擇信號來更新Chien搜索電路的搜索地址的起始位置和長度,從而完成錯誤地址的搜索。圖2中的各信號的功能描述如下1、輸入信號elk:系統時鐘輸入。rst 復位信號,低電平有效。Dinvalid 有效數據輸入指示信號,高電平有效。encoding 編譯碼模式(1為編碼,0為譯碼)。selcapacity[l:0]糾錯能力類型選擇信號。該值為3表示糾錯能力是30比特, 為2是24比特,為1是14比特,為0是8比特。sellength[l:0]數據保護長度選擇信號,該值為3表示輸入的數據長度為128字 節,為2表示256字節,為1表示512字節,為0表示1024字節。din[7:0]數據輸入端口,共8位。searchlnit 錯誤位置多項式迭代電路初始化信號。Cerror_num[5:0]糾錯能力。2、輸出信號Error_num[5:0]實際出現的錯誤個數。Codedone 伴隨式計算結束指示信號,高電平有效。BMdone 錯誤位置多項式迭代電路結束指示信號,高電平有效。CSdone =Chien搜索結束指示信號,高電平有效。CSdout [7:0]錯誤圖樣輸出,與輸入值din異或完成糾錯。CSadrs[10:0]錯誤位置。CSwe 糾錯指示信號,高電平有效。SearchF 超出糾錯能力指示信號,高電平有效。Correct data [7:0]正確的輸出碼字。3、內部信號BM_start 錯誤位置多項式迭代電路運算開始信號,高電平有效。Chien_start =Chien搜索開始信號,高電平有效。S1, S2, ... , S2t 伴隨式校正子,位寬都為14位。
Loc1, Loc2, ... , Loct 錯誤位置多項式各系數,位寬都為14位。為了提高譯碼速度,圖2中的三個子電路可采用并行或者流水線的方式可同時對 分段后的2個512字節的數據塊進行譯碼,大大的提高了譯碼速度,因此在不增加面積的同 時并不會因為分段后影響原數據塊的譯碼速度。實施例2 —種Flash控制器中BCH編譯碼的糾錯能力擴展方法
對于Flash扇區容納數據長度為512字節的NandFlash型存儲設備,在對數據進 行BCH編碼時,把將要寫入每個Flash扇區的數據塊分段成若干個子數據塊,每個子數據塊 的數據長度相同,且都是128字節的η倍,η取1和2中的一個整數,同時根據實際糾錯能力 要求選擇糾錯能力值t,t的取值范圍為8 32比特中的一個整數,然后根據以下公式(1) 給每個子數據塊配備用于糾錯的冗余位冗余位長度的字節數=(14Xt)/8(1)式中t為糾錯能力值,當公式(1)的計算結果為整數時取該整數作為冗余位長度 的字節數,當公式(1)的結果有小數時取整數后加1作為冗余位長度的字節數;此外,對Flash扇區的數據塊分段以及配備用于糾錯的冗余位需滿足以下公式 (2)的要求(子數據塊的數據長度+冗余位長度)X子數據塊的數量<Flash扇區容量(2)式中子數據塊的數據長度為子數據塊的字節數;冗余位長度為冗余位長度的字節數;子數據塊的數量為所述Flash扇區的數據塊分段個數;Flash扇區容量為所述NandFlash型存儲設備中每個Flash扇區的可供存儲的字 節數;在對數據進行BCH譯碼時,一次讀出Flash扇區的數據,然后利用BCH譯碼電路單 獨對每個子數據塊以及所配備的冗余位進行BCH譯碼,從而實現對NandFlash型存儲設備 中Flash扇區數據糾錯能力的擴展。上述實施例只為說明本發明的技術構思及特點,其目的在于讓熟悉此項技術的人 士能夠了解本發明的內容并據以實施,并不能以此限制本發明的保護范圍。凡根據本發明 精神實質所作的等效變化或修飾,都應涵蓋在本發明的保護范圍之內。
權利要求
一種Flash控制器中BCH編譯碼的糾錯能力擴展方法,其特征在于對于Flash扇區容納數據長度為1024字節的NandFlash型存儲設備,在對數據進行BCH編碼時,把將要寫入每個Flash扇區的數據塊分段成若干個子數據塊,每個子數據塊的數據長度相同,且都是128字節的n倍,n取1、2和4中的一個整數,同時根據實際糾錯能力要求選擇糾錯能力值t,t的取值范圍為8~32比特中的一個整數,然后根據以下公式(1)給每個子數據塊配備用于糾錯的冗余位冗余位長度的字節數=(14×t)/8(1)式中t為糾錯能力值,當公式(1)的計算結果為整數時取該整數作為冗余位長度的字節數,當公式(1)的結果有小數時取整數后加1作為冗余位長度的字節數;此外,對Flash扇區的數據塊分段以及配備用于糾錯的冗余位需滿足以下公式(2)的要求(子數據塊的數據長度+冗余位長度)×子數據塊的數量≤Flash扇區容量(2)式中子數據塊的數據長度為子數據塊的字節數;冗余位長度為冗余位長度的字節數;子數據塊的數量為所述Flash扇區的數據塊分段個數;Flash扇區容量為所述NandFlash型存儲設備中每個Flash扇區的可供存儲的字節數;在對數據進行BCH譯碼時,一次讀出Flash扇區的數據,然后利用BCH譯碼電路單獨對每個子數據塊以及所配備的冗余位進行BCH譯碼,從而實現對NandFlash型存儲設備中Flash扇區數據糾錯能力的擴展。
2.—種Flash控制器中BCH編譯碼的糾錯能力擴展方法,其特征在于對于Flash扇 區容納數據長度為512字節的NandFlash型存儲設備,在對數據進行BCH編碼時,把將要寫 入每個Flash扇區的數據塊分段成若干個子數據塊,每個子數據塊的數據長度相同,且都 是128字節的η倍,η取1和2中的一個整數,同時根據實際糾錯能力要求選擇糾錯能力值 t,t的取值范圍為8 32比特中的一個整數,然后根據以下公式(1)給每個子數據塊配備 用于糾錯的冗余位冗余位長度的字節數=(14Xt)/8 (1)式中t為糾錯能力值,當公式(1)的計算結果為整數時取該整數作為冗余位長度的字 節數,當公式(1)的結果有小數時取整數后加1作為冗余位長度的字節數;此外,對Flash扇區的數據塊分段以及配備用于糾錯的冗余位需滿足以下公式(2)的 要求(子數據塊的數據長度+冗余位長度)X子數據塊的數量< Flash扇區容量(2) 式中子數據塊的數據長度為子數據塊的字節數; 冗余位長度為冗余位長度的字節數; 子數據塊的數量為所述Flash扇區的數據塊分段個數;Flash扇區容量為所述NandFlash型存儲設備中每個Flash扇區的可供存儲的字節數;在對數據進行BCH譯碼時,一次讀出Flash扇區的數據,然后利用BCH譯碼電路單獨 對每個子數據塊以及所配備的冗余位進行BCH譯碼,從而實現對NandFlash型存儲設備中 Flash扇區數據糾錯能力的擴展。
3.根據權利要求1或2所述的糾錯能力擴展方法,其特征在于所述t的取值范圍為 8、14、24和30比特中的一個整數。
全文摘要
一種Flash控制器中BCH編譯碼的糾錯能力擴展方法,其特征在于對于NandFlash型存儲設備,在對Flash扇區數據BCH編譯碼中,通過將一個大的數據塊分段成若干個小的子數據塊后,再單獨對每個小子數據塊進行BCH編譯碼,從而實現對原有大數據塊糾錯能力的擴展。
文檔編號H03M13/15GK101800560SQ201010132749
公開日2010年8月11日 申請日期2010年3月17日 優先權日2010年3月17日
發明者林雄鑫, 王廷平, 肖佐楠, 鄭茳, 鐘名富 申請人:蘇州國芯科技有限公司