TWI527383B - A Fast BCH Code Decoding Method - Google Patents

A Fast BCH Code Decoding Method Download PDF

Info

Publication number
TWI527383B
TWI527383B TW103130081A TW103130081A TWI527383B TW I527383 B TWI527383 B TW I527383B TW 103130081 A TW103130081 A TW 103130081A TW 103130081 A TW103130081 A TW 103130081A TW I527383 B TWI527383 B TW I527383B
Authority
TW
Taiwan
Prior art keywords
symptom
error
fast
decoding method
value
Prior art date
Application number
TW103130081A
Other languages
English (en)
Other versions
TW201611527A (zh
Inventor
Wang-sheng
Hua-Qing Zeng
Jin-Che Hong
Rui-Hong Xie
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed filed Critical
Priority to TW103130081A priority Critical patent/TWI527383B/zh
Publication of TW201611527A publication Critical patent/TW201611527A/zh
Application granted granted Critical
Publication of TWI527383B publication Critical patent/TWI527383B/zh

Links

Landscapes

  • Error Detection And Correction (AREA)

Description

一種快速BCH碼解碼方法
本發明係關於一種錯誤修正碼的解碼方法,特別是關於一種可大幅提高運算速度之BCH碼的解碼方法。
錯誤修正碼(Error Correcting Code,ECC)的原理係透過在原始的訊息(message)中加入若干的冗餘資料(redundancy)(此為編碼的過程,在此這屬於通道編碼),藉此,即可在訊息的接收端,利用這些多餘的資料判斷原始資料是否有錯誤,此部分則為解碼的過程,其中,BCH(Bose-Chaudhuri-Hocquenghem)碼是現今的錯誤修正碼技術中較被廣泛討論與研究的一種,在此討論的主要是二進制(binary)的BCH碼,一個典型的BCH碼通常表示成BCH(n,k,t),其中n為該訊息編碼後的長度,k為該訊息本身的長度,t則為該BCH碼可糾錯的最大數量,請參閱第一圖及第二圖所示分別為一種習知的BCH碼解碼演算法的步驟流程及硬體電路架構,此即知名的Berlekamp-Massey法,其係使用一症狀值計算器(syndrome calculator)10進行症狀值(syndrome)的計算,再利用一關鍵方程式解法器(key equation solver)11計算出錯誤位置多項式(error location polynimal),最後再透過一Chien搜尋電路12找出該錯誤位置多項式的根,即可找出錯誤位置,以下將略述此種演算法的計算過程:首先令c(x)及e(x)分別代表發送端發出的訊號及錯誤訊號,則r(x)=c(x)+e(x)即為接收端收到的訊號,再 令g(x)代表此BCH碼的生成多項式(generator polynomial),則依系統碼(systematic code)之編碼理論,可知c(x)=m(x)* x n-k +(m(x)* x n-k )mod g(x),其中,m(x)代表原始的訊息,如此,症狀值S k 可依下列公式來定義:S k =r k ),k=1~2t (1)
根據代數理論,一個有限場(finite field)的生成多項式為其所有最小多項式(minimal polynominal)的最小公倍式,即g(x)=LCM{φ1(x),φ2(x),...,φ2t(x)},在此令α12,...α2t 分別代表各最小多項式的根,則g(α k )=0,k=1~2t,可知c(α k )=0,那麼r k )=c k )+e k )=e k ),故症狀值S k =r k )=e(αk),由此也可知症狀值實際上僅與錯誤訊號有關;接下來,假設有v個錯誤,那麼錯誤多項式(即錯誤訊號)可表示成e(x)=exj1+ex j2+...+ex jv ,j1、j2…jv代表錯誤位置,則:S k =r k )=e(αk)=(αk) j1+(α k ) j2+...+(α k ) jv ,k=1~2t (2)
如此即可計算出所有的症狀值S k :進一步整理(2)式,可得到,k=1~2t,那麼錯誤位置多項式σ(x)可用下列公式來定義並求解:σ(x)=(x1)(x2)...(x k )=x v v-1 x v-1+...+σ1 x0=(x j1)(x j2)...(x jv ) (3)
最後,使用Chien搜尋法找出該錯誤位置多項式的根β1 j12 j2,...,β v jv ,則j1、j2…jv即為錯誤位置,如此即完成了錯誤修正碼的解碼動作;習知的BCH碼之解碼演算法,必須透過生成多項式的根來 計算症狀值,再利用症狀值來建立並求解錯誤位置多項式,最後還要使用Chien搜尋法解出該錯誤位置多項式的根,方能找出錯誤位置,不但步驟較為繁雜,在實現硬體電路時也會造成邏輯閘層數增多,進而導致整體運算效能與解碼速度降低,是故,如何針對上述缺失加以改進,即為本案發明人所欲解決之技術困難點所在。
有鑑於現有BCH碼的解碼演算法,因其步驟較為繁雜,而會導致整體運算效能與解碼速度降低,因此本發明之目的在於提供一種可大幅提高運算速度之BCH碼解碼方法。
為達成以上之目的,本發明係提供一種快速BCH碼解碼方法,係用以更正不大於t個BCH(n,k,t)碼之接收碼r(x)的錯誤,其步驟包含:一症狀值計算步驟,係利用長除法,由接收碼r(x)除以生成多項式所得到的暫態係數中,歸納出症狀值的並行生成公式,再由該並行生成公式計算出所有的症狀值;一錯誤位置計算步驟,首先係依照該症狀值計算步驟中所計算出的所有症狀值,建立個別元素錯誤之症狀模式,再分別依照不同的錯誤數量,合成所有錯誤狀況之症狀模式,如此即完成設計錯誤位置解碼器所需要的所有對應關係。
藉由上述步驟,本發明無需建立錯誤位置多項式及使用Chien搜尋法來求解錯誤位置多項式等繁複的演算步驟,除了可簡化整體解碼步驟,也可使用並行運算方式來實現硬體電路,同時可減少邏輯閘層數,進而使本發明可達到大幅提升運算效能及解碼速度之功效。
〔習用〕
10‧‧‧症狀值計算器
11‧‧‧關鍵方程式解法器
12‧‧‧Chien搜尋電路
〔本發明〕
30‧‧‧症狀值計算器
31‧‧‧錯誤位置解碼器
32‧‧‧t/2個錯誤症狀模式表
S1‧‧‧症狀值計算步驟
S2‧‧‧錯誤位置計算步驟
第一圖係習用BCH碼之解碼步驟流程示意圖。
第二圖係習用之BCH碼之解碼硬體電路架構方塊示意圖。
第三圖係本發明之步驟流程示意圖。
第四圖係本發明其第二實施例之步驟流程示意圖。
第五圖係本發明其第二實施例之硬體電路架構方塊示意圖。
請參閱第三圖所示,本發明係提供一種快速BCH碼解碼方法,係用以更正不大於t個BCH(n,k,t)碼之接收碼r(x)的錯誤,其步驟包含:一症狀值計算步驟S1,該症狀值計算步驟S1係利用長除法,由接收碼r(x)除以生成多項式g(x)所得到的暫態係數中,歸納出症狀值的並行生成公式(即通式),再由該並行生成公式計算出所有的症狀 值,在此,以及g0,g 1,...分別代表該接收碼r(x)及生成多項式g (x)其各次項的係數,則接收碼r(x)除以生成多項式g(x)的長除法運算,就可用下列的計算式來表達:
由上面的長除法運算式的暫態係數所顯示的關係(如各方框圈起處),可歸納出症狀值的並行生成公式如下:
底下為了說明上的方便,以BCH(7,4,1)碼為例,其生成多項式g(x)的係數g0,g 1,...g4分別為11010,又已知b=k=4,0≦a-b≦7-4-1=2,可知其所有的症狀值為s[0]到s[2],且症狀值s[0]可由該並行生成公式(即(4)式)計算並化整如下:
在症狀值s[a-b]的計算過程中,當化整到所有中的b=0 時,表示已計算到初始位元(即原始的訊息),即可停止計算,接下來,症狀值s[1]與s[2]也可運用相同的方法化整,得到的最終結果分別如下: ,至 此,本發明即已完成計算症狀值的動作流程;一錯誤位置計算步驟S2,該錯誤位置計算步驟S2首先係依照該症狀值計算步驟S1中所計算出的所有症狀值s[a-b],建立個別元素錯誤之症狀模式,然後,再分別依照不同的錯誤數量,合成所有錯誤狀況之症狀模式,如此即可完成設計解碼器所需要的所有對應關係,底下將以前面所討論的BCH(7,4,1)的例子來說明較詳細的動作流程: 首先,因,表示m0,m 2,m 3,m 4等元素 的係數為1,因此在代表這些元素的欄位內填入1,其餘元素的欄位則填入 0,而s[1]及s[2]也可依照相同的規則處理,如此吾人即可建立一包含所有個別元素(即m0m 6共七個元素,因整個碼的長度為7個位元)錯誤之症狀模式如下表一所示:
在此,某一個元素之所有症狀值s[a-b]的組合(在本實施例中,即s[0]~s[2])就是該元素的症狀模式,因此表一已建立此BCH碼之所有個別元素錯誤的症狀模式,完成以上步驟後,再分別依照不同的錯誤數量,合成所有錯誤狀況之症狀模式,就本實施例而言,由於此BCH碼所能糾正的錯誤數量為1,表一所列出的7種症狀模式即已代表所有可能的錯誤狀況之症狀模式,因此,若是m0這個位元出錯,則其症狀模式為(1,1,0),若是m 3出錯,其症狀模式則為(1,0,1),餘此類推,故由症狀模式便可找出錯誤位置,至此,本發明即已完成設計此一BCH(7,4,1)碼之錯誤位置解碼器所需要的所有對應關係(即所有錯誤狀況所對應到的症狀模式);接下來,再舉一個t>1的BCH碼如BCH(15,7,2)碼為例說明本發明的完整運算過程,首先,根據該並行生成公式計算出所有的症狀值s[a-b]如下(0≦a-b≦15-7-1=7,故所有的症狀值為s[0]到s[7],中間的化整過程省略):
依上面所算出的所有症狀值,建立一包含所有個別元素錯誤之症狀模式如下表二所示:
接下來,再分別依照不同的錯誤數量,合成所有錯誤狀況之症狀模式,因此一BCH碼為(15,7,2),表二所列出的15種症狀模式即為錯誤數量為1個位元時的錯誤狀況,所以剩下還需要算出錯誤數量為2個位元時的症狀模式,進一步整理(1)式,吾人可得:s(x)=r(x)mod g(x)=c(x)mod g(x)+e(x)mod g(x)=e(x)mod g(x)=e 1(x)mod g(x)+e 2(x)mod g(x)
可知,對於任一錯誤數量為t個位元時的症狀模式(t>1), 可由將該t個出錯的個別元素其症狀模式中相對應的症狀值做二元域相加而求得(即做modulo-2或XOR運算),舉例而言,若錯誤位置分別為(m0,m 1)、(m3,m 6)或(m 8,m 12)等三種錯誤狀況,則此三種錯誤狀況的症狀模式便可由個別元素的症狀模式相加而算出,如下表三所示:
利用表三所列的方法,我們就可以繼續求出其他錯誤數量為2時的所有錯誤狀況之症狀模式,在此不再一一列出,如此,吾人便可完成設計錯誤位置解碼器所有需要的對應關係,對本實施例的BCH(15,7,2)碼來說,所有對應關係的數量可運用排列組合公式來算出:,其中分別為錯誤數量為1及2時的對應關係數量,因此,對於任一個BCH(n,k,t)碼而言,其所有對應關係的數 量可用下列公式來求得:; 請參閱第三圖所示,不同於習用的BCH解碼方法係透過生成多項式的根來計算症狀值,本發明藉由利用生成多項式的係數與長除法來計算症狀值,因此無需建立錯誤位置多項式及使用Chien搜尋法來求解該錯誤位置多項式等繁複的演算步驟,除了整體解碼步驟較為直接簡單之外,也可使用並行(parallel)運算方式來實現硬體電路,同時可減少邏輯閘層數,進而使本發明可達到大幅提升運算效能及解碼速度之功效。
請再參閱第四圖及第五圖所示分別為本發明其第二實施例之步驟流程及硬體電路架構,係特別適用於錯誤數量t為偶數的情況(即t=2、4、6…),其與第一實施例的差異在於,在錯誤位置計算步驟S2中,當建立個別元素錯誤之症狀模式後,接下來,只需再合成錯誤數量為之所有錯誤狀況的症狀模式,最後,再將接收碼r(x)的症狀模式,以遞迴方式逐次與合成之單一錯誤狀況的症狀模式做二元域相加,直到相加後的結果可在合成的症狀模式中被找到為止,如此,即可找出所有的錯誤位置,底下為了說明的方便,以前述的BCH(15,7,2)碼為例來說明較詳細的演算過程:首先,建立個別元素錯誤之症狀模式(同上表二),然後,再合成錯誤數量為之所有錯誤狀況的症狀模式,在本範例中,因t=2,則為1,代表個別元素出錯的所有錯誤狀況,因此無需另行做合成動作,接下來,假設接收碼r(x)出錯的位置為(m3,m 6),參考表三與第五圖,可知本發明的症狀值計算器30可算出該接收碼r(x)的症狀模式為(1,0,1,0,1,1,1,1),由於其為同時有2個錯誤的症狀模式(即錯誤數量為t),因此必然無法在合成之個錯誤的症狀模式(即本發明的錯誤位置解碼器 31之個錯誤症狀模式表32)中被找到,所以接下來吾人便以遞迴方式,將接收碼r(x)的症狀模式,逐次與合成之單一錯誤狀況的症狀模式做二元域相加,再判斷相加後的結果是否可在合成之個錯誤症狀模式表32中被找到,在本範例中,就是將接收碼r(x)的症狀模式逐一與個別元素(m 0m 1m 2…)錯誤之症狀模式做二元域相加,由於接收碼r(x)的錯誤位置為(m3,m 6),因此,當加到m 3的症狀模式時,依XOR運算特性,可知m 3+m 6+m 3=m 6,也就是相加後的結果會變成(0,0,0,1,0,1,1,1)即m6的症狀模式,那麼此次相加後的結果就可在合成之個錯誤症狀模式表32(在本範例中,即表二)中被找到,則該錯誤位置解碼器31便可分別解出m 3m 6,至此,本發明即已完成錯誤位置解碼的動作流程,又,如欲將本實施例延伸至錯誤數量t為大於2的偶數時(例如t=4),只需依前述建立表三的方法,合成錯誤數量為(即2)之所有錯誤狀況的症狀模式,後續便可利用相同的動作原理解出所有的t個錯誤位置,在此不再重複贅述其步驟,本實施例與第一實施例相較,可具有減少硬體電路之邏輯閘數量及IC面積之優點,進而使本發明可兼具大幅降低硬體實現成本之功效。
惟上列詳細說明係針對本發明之較佳實施例的具體說明,該等實施例並非用以限制本發明之專利範圍,而凡未脫離本發明技藝精神所為之等效實施或變更,均應包含於本案之專利範圍中。
S1‧‧‧症狀值計算步驟
S2‧‧‧錯誤位置計算步驟

Claims (9)

  1. 一種快速BCH碼解碼方法,係用以更正不大於t個BCH(n,k,t)碼之接收碼r(x)的錯誤,其步驟包含:一症狀值計算步驟,該症狀值計算步驟係利用長除法,由接收碼r(x)除以生成多項式g(x)所得到的暫態係數中,歸納出症狀值的並行生成公式,再由該並行生成公式計算出所有的症狀值;一錯誤位置計算步驟,該錯誤位置計算步驟首先係依照該症狀值計算步驟中所計算出的所有症狀值,建立個別元素錯誤之症狀模式,然後,再分別依照不同的錯誤數量,合成所有錯誤狀況之症狀模式,如此即完成設計錯誤位置解碼器所需要的所有對應關係。
  2. 如申請專利範圍第1項所述之快速BCH碼解碼方法,其中以及g0,g 1,...分別代表該接收碼r(x)及生成多項式g(x)其各次項的係數,則該症狀值s[a-b]的並行生成公式如下:,b=k,0≦a-b≦n-k-1。
  3. 如申請專利範圍第1項所述之快速BCH碼解碼方法,其中該錯誤位置計算步驟中,個別元素錯誤之症狀模式即為該個別元素之所有症狀值的組合。
  4. 如申請專利範圍第3項所述之快速BCH碼解碼方法,其中任一錯誤數量為t(t>1)時的症狀模式,即為該t個出錯的個別元素之症狀模式中相對應的症狀值做二元域相加。
  5. 如申請專利範圍第1項所述之快速BCH碼解碼方法,其中所有錯誤狀況的數量之計算公式如下:
  6. 一種快速BCH碼解碼方法,係用以更正t個BCH(n,k,t)碼之接收碼r(x)的錯誤,且t為偶數,其步驟包含:一症狀值計算步驟,該症狀值計算步驟係利用長除法,由接收碼r(x)除以生成多項式g(x)所得到的暫態係數中,歸納出症狀值的並行生成公式,再由該並行生成公式計算出所有的症狀值;一錯誤位置計算步驟,該錯誤位置計算步驟首先係依照該症狀值計算步驟中所計算出的所有症狀值,建立個別元素錯誤之症狀模式,然後,再合成錯誤數量為t/2之所有錯誤狀況的症狀模式,接下來,再將接收碼r(x)的症狀模式,以遞迴方式逐次與合成之單一錯誤狀況的症狀模式做二元域相加,直到相加後的結果可在合成的症狀模式中被找到為止。
  7. 如申請專利範圍第6項所述之快速BCH碼解碼方法,其中以 及g0,g 1,...分別代表該接收碼r(x)及生成多項式g(x) 其各次項的係數,則該症狀值s[a-b]的並行生成公式如下: ,b=k,0≦a-b≦n-k-1。
  8. 如申請專利範圍第6項所述之快速BCH碼解碼方法,其中該錯誤位置計算步驟中,個別元素錯誤之症狀模式即為該個別元素之所有症狀值的組合。
  9. 如申請專利範圍第8項所述之快速BCH碼解碼方法,其中錯誤數量為t/2之所有錯誤狀況的症狀模式,即為該t/2個出錯的個別元素之症狀模式中相對應的症狀值做二元域相加。
TW103130081A 2014-09-01 2014-09-01 A Fast BCH Code Decoding Method TWI527383B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
TW103130081A TWI527383B (zh) 2014-09-01 2014-09-01 A Fast BCH Code Decoding Method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW103130081A TWI527383B (zh) 2014-09-01 2014-09-01 A Fast BCH Code Decoding Method

Publications (2)

Publication Number Publication Date
TW201611527A TW201611527A (zh) 2016-03-16
TWI527383B true TWI527383B (zh) 2016-03-21

Family

ID=56085318

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103130081A TWI527383B (zh) 2014-09-01 2014-09-01 A Fast BCH Code Decoding Method

Country Status (1)

Country Link
TW (1) TWI527383B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI603190B (zh) * 2016-09-30 2017-10-21 旺宏電子股份有限公司 用以尋找一碼字中錯誤位置的方法及電子裝置

Also Published As

Publication number Publication date
TW201611527A (zh) 2016-03-16

Similar Documents

Publication Publication Date Title
US10243589B2 (en) Multi-bit error correction method and apparatus based on a BCH code and memory system
US9166623B1 (en) Reed-solomon decoder
KR102352158B1 (ko) 리스트 디코딩 생성을 통한 이진 bch 코드들의 bm-기반 빠른 체이스 디코딩에서 빠른 다항식 업데이트를 위한 방법을 수행하기 위한 asic
US8694872B2 (en) Extended bidirectional hamming code for double-error correction and triple-error detection
CN101621299A (zh) 一种突发纠错的方法、设备和装置
Kim et al. Product Reed-Solomon codes for implementing NAND flash controller on FPGA chip
WO2013189274A1 (zh) 一种用于并行bch编码的电路、编码器及方法
WO2011000176A1 (zh) 错误修正码的编码及解码方法以及编码解码器
Subbiah et al. Area-effcient re-encoding scheme for NAND Flash Memory with multimode BCH Error correction
TWI527383B (zh) A Fast BCH Code Decoding Method
Potey et al. Error Detection and Correction Capability for BCH Encoder using VHDL
Tiwari et al. Design and implementation of Reed Solomon Decoder for 802.16 network using FPGA
WO2012092902A2 (zh) 一种译码方法和译码装置
US8943391B2 (en) Cyclic code decoding method and cyclic code decoder
Al Azad et al. A compact and fast FPGA based implementation of encoding and decoding algorithm using Reed Solomon codes
Pandey et al. Comparative performance analysis of block and convolution codes
KR101636406B1 (ko) 저지연 신드롬 계산을 위한 bch 디코더의 전처리 장치 및 방법
US20100031126A1 (en) System and method for using the universal multipole for the implementation of a configurable binary bose-chaudhuri-hocquenghem (BCH) encoder with variable number of errors
Choudhari et al. Reed solomon code for WiMAX network
TWI776483B (zh) 循環碼之編碼與解碼方法
Nabipour et al. Error Detection Mechanism Based on Bch Decoder and Root Finding of Polynomial Over Finite Fields
Elumalai et al. Encoder And Decoder For (15113) and (63394) Binary BCH Code With Multiple Error Correction
Kavian et al. High speed Reed-Solomon decoder with pipeline architecture
Ramasethu et al. A class of optimized encoder for block codes [articol]
Jose et al. FPGA implementation of encoder and decoder for Golay code

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees