TWI523437B - Bch碼編碼與癥狀計算共用設計電路及決定該共用設計電路的方法 - Google Patents
Bch碼編碼與癥狀計算共用設計電路及決定該共用設計電路的方法 Download PDFInfo
- Publication number
- TWI523437B TWI523437B TW103114945A TW103114945A TWI523437B TW I523437 B TWI523437 B TW I523437B TW 103114945 A TW103114945 A TW 103114945A TW 103114945 A TW103114945 A TW 103114945A TW I523437 B TWI523437 B TW I523437B
- Authority
- TW
- Taiwan
- Prior art keywords
- code
- matrix
- symptom
- calculation result
- design circuit
- Prior art date
Links
Landscapes
- Error Detection And Correction (AREA)
Description
本發明關於一種共用設計電路及決定該電路的方法,特別是本發明關於一種BCH碼編碼與癥狀計算共用設計電路及決定該電路的方法。
BoSe-Chaudhuri-Hocquenghem(BCH)碼是非常普遍使用於儲存與通訊設備的錯誤更正碼,BCH碼能偵測及修正由於存儲設備通道中的噪聲和缺陷,隨機發生的錯誤。對於BCH碼的編碼,常利用線性反饋移位暫存器與某些邏輯積體電路的組合來實現。而對於BCH碼的解碼而言,相較於編碼是複雜了許多。請見第1圖,解碼流程可解說如下:在接收一碼字後(S01),依照特定的多項式計算該碼字的癥狀碼(S02)。接著,依照該癥狀碼,可以找到一錯誤位置多項式(S03)。接下來,藉由計算該錯誤位置多項式的根,可以得到錯誤位置數字(S04)。最後,修正該錯誤碼字以獲得正確訊號資料(S05)。
習知的線性反饋移位暫存器電路設計如第2圖所
示。為了加速運算,該電路設計通常是採平行化,同時計算多筆輸入位元資料。圖中p表示可同時計算在第j個時脈輸入的R’(j)中的p位元資料,經編碼後,輸出結果Z(j)。如果碼長有n位元,則編碼流程會在[n/p]個時脈後完成。
在一個BCH碼的解碼器中,也有類似的迭代計算
架構,比如說癥狀碼計算單元。對一個具有t個錯誤修正能力的癥狀碼計算單元而言,每個癥狀碼Si可由以下方程式所計算獲得。
上述的方程式可以用矩陣的形式表示,因此,可以在推導的過程中找到相同子運算式。在電路的實現方面,藉由適當的共用硬體,該些相同子運算式可以被精省,同時達到降低硬體複雜度的目標。此外,由於BCH碼的編碼器也是應用類似的迭代運算方式運作,若是編碼解碼不是同時進行,編碼器與癥狀碼計算單元可共用暫存器,這能再進一步
節省面積成本。許多前案都有揭露類似的設計,比如美國專利第6,405,339號、7,743,311號、8,418,021號等。但這些專利所提出的硬體複雜度還是太高,對於時下追求更輕薄短小的電子設備而言,還是有再改進的空間。
如上所述,在BCH碼的編碼與徵狀碼計算的共用設計電路現有方案中,硬體的複雜度偏高且面積成本大。因此,一種適合共用設計電路能夠降低硬體的複雜度,最好能有效減少相同子運算單元的BCH碼的編碼與徵狀碼計算的共用設計電路是非常迫切需要的。
依照本發明的一種態樣,一種用於BCH碼編碼與癥狀計算共用設計電路,可進行p個平行運算,包含:一編碼單元,用以將具有k位元的一訊息,經一第一迭代運算後編碼成具有n位元的BCH碼碼字,該第一迭代運算在每一時脈中依次接收p位元,並於[n/p]時脈後輸出該BCH碼碼字;一癥狀碼計算單元,用以將具有n位元的一BCH碼碼字,經一第二迭代運算後得到2t個m位元的癥狀碼,該第二迭代運算在每一時脈中依次接收p位元,並於[n/p]時脈後輸出該癥狀碼;複數個多工器,每一多工器用以接收該第一迭代運算所產生的一第一中間計算結果與該第二迭代運算所產生的一第二中間計算結果,當第一迭代運算進行時,輸出該第一中間計算結果;當第二迭代運算進行時,輸出該第二中間計算結果;及複數個
暫存器,每一暫存器用以接收來自對應多工器的第一中間計算結果或第二中間計算結果,或來自對應癥狀碼計算單元的第二中間計算結果,及在收到該第一中間計算結果或第二中間計算結果後的一時脈中,輸出該第一中間計算結果到該編碼單元或該第二中間計算結果到該癥狀碼計算單元。其中k、n、p與t為正整數,n大於k。m為GF(2m)中2的次方。
依照本案構想,該第一迭代運算獲得Z(j)的運算
值及完整BCH碼字,其中Z(j)=Fp×[Z(j-1)+R'(j)],其中Z(0)中所有元素皆為0。
依照本案構想,該第一迭代運算滿足一矩陣F”之
運算,其中,F'=[Fp的首P欄|Fp],m為一正整
數。
依照本案構想,該第二迭代運算獲得G(j)的運算
值及完整癥狀碼,其中
,其中
G(j)=[g1(j)g3(j)…g2t-1(j)],G(j)表示第二迭代運算的第j次迭代計算中,m×t個第二中間計算結果,R(j)=[r 0(j)r 1(j)...r p-1(j)],R(j)表示在第j次迭代計算中,癥狀碼計算單元收到該碼字的p個位元,S(j)表示在第j次迭代計算中輸出的癥狀碼計算值;矩陣XR為一p×mt的二進制矩陣,XG為一個mt×mt的二進制矩陣,XS為一個mt×2mt的二進制矩陣。
依照本案構想,該矩陣XR、XG與XG定義如下:XR=[C1 C3…C2t-1],
,α 0...α m-1為GF(2 m )中的元素
,I為單位矩陣,Bw表示零矩陣與
單位矩陣外的運算矩陣,w為2的正整數次方但小於或等於
依照本案構想,該多工器的數量要大於編碼單元
可編成的BCH碼之R值,其中R=n-k+1。該暫存器的數量要大於或等於m×t個。該第一中間計算結果與第二中間計算結果是1位元訊號。
依照本發明的另一種態樣,一種用於決定BCH碼編碼與癥狀計算共用設計電路的方法,包含步驟:依照平行計算數量p與癥狀碼數量2t,建立XR、XG與XS;建立FP;建立F’;建立F”;建立矩陣[XSRG F”];及設計滿足矩陣[XSRG F”]運算的電路,其中k、n、p與t為正整數,n大於k,XR=[C1 C3…C2t-1],C2t-1=
,α 0...α m-1為GF(2 m )中的元素
,I為單位矩陣,Bw表示零矩陣與
單位矩陣外的運算矩陣,w為2的正整數次方但小於或等於
,F'=[Fp的首P欄|Fp],
R=n-k+1,g’R-1、g’R-2...g’0為一生成多項式g(x)=xR+g' R-1xR-1+g' R-2xR-2+…+g' 2x2+g' 1x1+g' 0的係數。
10‧‧‧共用設計電路
100‧‧‧編碼單元
200‧‧‧癥狀碼計算單元
300‧‧‧多工器
400‧‧‧暫存器
第1圖為習知BCH碼的解碼流程。
第2圖顯示習知的線性反饋移位暫存器電路設計。
第3圖顯示習知的癥狀碼計算單元。
第4圖為依照本發明的BCH碼編碼與癥狀計算共用設計電路。
第5圖描繪該共用設計電路在編碼時的運作。
第6圖描繪該共用設計電路在癥狀碼計算時的運作。
第7圖為決定該共用設計電路的方法。
本發明將藉由參照下列的實施例而更具體地描述。
首先,讓吾人更進一步了解BCH碼的編碼流程。對於一編成具有n位元的BCH碼碼字,其中包含k位元訊息。在編碼過程中,是應用了以下的生成多項式:g(x)=xR+g' R-1xR-1+g' R-2xR-2+…+g' 2x2+g' 1x1+g' 0其中R=n-k+1。當使用能同時進行p個平行運算的編碼器編碼時,一具有該k位元訊息的n位元初始處理資料以p位元為單位切割成R’(1)、R’(2)...R’(n/p)(R’(n/p)不一定為p位元),依次在每一時脈中輸入至編碼器中進行運算。以一個通式來看,在第j個時脈中(1≦j≦n/p)輸出的運算值為:Z(j)=Fp×[Z(j-1)+R'(j)]應當注意的是Z(0)中所有元素皆為0。在此,為了運算表示方便,
R’(j)為第j個p位元,Z(j)則包含了R位元,分別以Z0(j)、Z1(j)...ZR-1(j)來表示。
而其它式中諸表示式進一步描述如下:
令F'=[Fp的首P欄|Fp],可以得到Z(j)的轉置矩陣:
滿足此運算的電路,即可達到第2圖中的編碼作業。
再回頭看癥狀碼計算。Yungjoo Lee等人於2012年IEEE國際期刊所公開的論文,論文名稱為Small-area parallel syndrome calculation for strong BCH decoding,其中討論到一個用於癥狀碼計算單元,尋找並刪除相同子運算式的方案。根據該論文,一具有p個癥狀碼平行計算能力的癥狀碼計算單元將需要[n/p]個時脈完成癥狀碼計算,它也包含2t個子單元以同時產生2t個癥狀碼。在第j個時脈中,該癥狀碼計算單元所計算得到的癥狀碼S(j)可以下面的式子表示:
在上式中,S(j)是一個1×2mt二進制矩陣,表示在第j次迭代計算中輸出的2t個癥狀碼計算值,每一個癥狀碼計算值有m位
元,m為非零正整數且為GF(2m)中2的次方。G(j)為一1×mt二進制矩陣,表示在第j次迭代計算中,m×t個暫時的中間計算結果。G(j)可以表示為以下:G(j)=[g1(j)g3(j)…g2t-1(j)]g1(j)、g3(j)...g2t-1(j)表示來自迭代計算中的第奇數次暫時結果,每一者皆是1×m二進制矩陣,含有m位元。
R(j)為一1×p的二進制矩陣,表示在第j次迭代計
算中,癥狀碼計算單元收到該碼字的p個位元r 0(j)、r 1(j)...r p-1(j),以矩陣式表示如:R(j)=[r 0(j)r 1(j)...r p-1(j)]。
XR為關於輸入碼字的一個p×mt的二進制矩陣。
XR可以表示為:XR=[C1 C3…C2t-1],C2t-1又可表示為:
α 0...α m-1為GF(2 m )中的元素。
XG為一個mt×mt的二進制矩陣,代表該方法中固定的乘法運算。XG可以表示為:
其中,A(2t-1)p可表示為
XS為一mt×2mt的二進制矩陣,其中又包含了許
多m×m的單位矩陣與m×m的運算矩陣。Xs可以下方矩陣式表示:
I表示單位矩陣,Bw為運算矩陣B2、B4...等的通式,w為2的正整數次方但小於或等於2t。每一Bw可表示為:
在Yungjoo Lee等人的論文描述,很明顯的,依
照該法所實現的癥狀碼計算單元,已經減少了許多相同子運算式。此時,若能結合BCH編碼單元,則有機會減少電路設計的面積成本。
按照上述的推論,令,加上XSRG
可得Y=[XSRG F"](P+mt)×(3mt+Rt)。應用矩陣Y的電路,配合適當的緩衝器與電路切換,一種BCH碼編碼與癥狀碼計算共用設計電路就能實現。
是故,本發明提出上述的BCH碼編碼與癥狀碼計
算共用設計電路。請見第4圖,該圖描繪一BCH碼編碼與癥狀碼計算共用設計電路10架構。該共用設計電路10包含了一編碼單元100、一癥狀碼計算單元200、R個多工器300及t×m個暫存器400。共用設計電路10具有同時進行p個平行運算的能力,可用於將具有k位元的一訊息,經編碼後成為具有n位元的BCH碼碼字;又或在收到一具有n位元的BCH碼碼字,可以對其進行癥狀碼計算。BCH碼編碼與癥狀碼計算在適當的電路切換下,彼此不會衝突。
編碼單元100能執行以獲得Z(j)的運算值及完整
BCH碼字Z,故滿足F”。是故,在第j個時脈(第j次迭代計算)中,R’(j)的p個輸入r’0(j)、r’1(j)、r’2(j)…r’(p-1)(j)依序輸入到共用設計電路10中。經由迭代計算,在第[n/p]次運算後,完整BCH碼字Z(Z0、Z1...ZR-1)可由共用設計電路10輸出。由於編碼作業和癥狀碼計算共用部分迭代運算的多工器300與暫存器400,在接收輸入訊號時,要分清楚運算是編碼還是癥狀碼計算,這個工作由多工器300所進行。請見第5圖。當R’(j)輸入後,中間計算結果Z0(j)、Z1(j)...ZR-1(j)各自輸入不同之多工器300中;而各多工器300僅選擇來自編碼單元100的訊號輸出(中間計算結果),而不選擇來自癥狀碼計算單元200的訊號(即虛線箭號的部分)。各別由多工器300輸出的訊號,輸入到對應的一個暫存器400。該些暫存器400又在第j+1個時脈中,將該些訊號再輸入至編碼單元100中進行運算。
當進行癥狀碼計算時,癥狀碼計算單元200運
作。癥狀碼計算單元200能執行以獲得G(j)的運算值及完整癥狀碼S,故滿足XSRG。是故,在第j個時脈(第j次迭代計算)中,R(j)的p個輸入r0(j)、r1(j)、r2(j)…r(p-1)(j)依序輸入到共用設計電路10中。經由迭代計算,在第[n/p]次運算後,完整癥狀碼S(S1(1)、S1(2)、...S1(2)...S2t(m))可由共用設計電路10輸出。其中S的下標括號內數字或字母,表示某癥狀碼的對應該數字或字母的位元。比如S2t(m)就是癥狀碼S2t的第m個位元。
由於編碼作業和癥狀碼計算共用部分迭代運算的多工器300與暫存器400,在接收輸入訊號時,要分清楚是運算編碼還是癥狀碼計算,這個工作亦由多工器300所進行。請見第6圖。
當R(j)輸入後,中間計算結果g1(1)(j)、g1(2)(j)...g2t-1(m)(j)各自輸入不同之多工器300中;而各多工器300僅選擇來自編碼單元100的訊號輸出(中間計算結果),而不選擇來自癥狀碼計算單元200的訊號(即虛線箭號的部分)。各別由多工器300輸出的訊號,輸入到對應的一個暫存器400。該些暫存器400又在第j+1個時脈中,將該些訊號再輸入至癥狀碼計算單元200中進行運算。由於一次輸出的位元數量有m×t個,大於R。故,某些輸出值可不經多工器300,直接輸出到暫存器400中。也因此,暫存器400的數量至少要為m×t個。
請再參閱第4圖,有幾點事項要注意。首先,本
發明可以應用在不同的BCH編碼上,即,碼長n及攜帶訊息k
的位元數是可變的,R值也會隨著變化。又因為多工器300的數量是與R值息息相關,所以在設計多工器300時,它的數量最好是要大於所可編成的BCH碼之R值。第4圖到第6圖所示的多工器300數量僅有R個,實作上並不限於此。此外,癥狀碼位元的數量,2tm,和碼長n沒有對應關係,第4圖顯示2tm大於n亦僅是示例性,2tm也有可能小於n。最後,第4圖顯示ZR-1(j)與g3(2)(j)共用一個多工器300,可以推導出R=m+2。然而,這也僅是眾多組合的一種情形,並非一成不變的。R與m的差值可能是任何數目。
由上述對於BCH碼編碼與癥狀計算共用設計電
路的介紹,可以得到以下決定該共用設計電路的方法:首先,依照平行計算數量與癥狀碼數量,建立XR、XG與XS。(步驟S11)。之後依序建立FP(步驟S2)、F’(步驟S13)與F”(步驟S14)。依照上述建立的資料,建立矩陣[XSRG F”](步驟S15)。最後,設計滿足矩陣[XSRG F”]運算的電路(步驟S16)。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
10‧‧‧共用設計電路
100‧‧‧編碼單元
200‧‧‧癥狀碼計算單元
300‧‧‧多工器
400‧‧‧暫存器
Claims (9)
- 一種用於BCH碼編碼與癥狀計算共用設計電路,可進行p個平行運算,包含:一編碼單元,用以將具有k位元的一訊息,經一第一迭代運算後編碼成具有n位元的BCH碼碼字,該第一迭代運算在每一時脈中依次接收p位元,並於[n/p]時脈後輸出該BCH碼碼字;一癥狀碼計算單元,用以將具有n位元的一BCH碼碼字,經一第二迭代運算後得到2t個m位元的癥狀碼,該第二迭代運算在每一時脈中依次接收p位元,並於[n/p]時脈後輸出該癥狀碼;複數個多工器,每一多工器用以接收該第一迭代運算所產生的一第一中間計算結果與該第二迭代運算所產生的一第二中間計算結果,當第一迭代運算進行時,輸出該第一中間計算結果;當第二迭代運算進行時,輸出該第二中間計算結果;及複數個暫存器,每一暫存器用以接收來自對應多工器的第一中間計算結果或第二中間計算結果,或來自對應癥狀碼計算單元的第二中間計算結果,及在收到該第一中間計算結果或第二中間計算結果後的一時脈中,輸出該第一中間計算結果到該編碼單元或該第二中間計算結果到該癥狀碼計算單元, 其中k、n、p與t為正整數,n大於k,m為GF(2m)中2的次方。
- 如申請專利範圍第1項所述之共用設計電路,其中該第一迭代運算獲得Z(j)的運算值及完整BCH碼字,其中Z(j)=Fp×[Z(j-1)+R'(j)],Z(0)中所有元素皆為0,其中
- 如申請專利範圍第2項所述之共用設計電路,其中該第一迭代運算滿足一矩陣F”之運算,其中
- 如申請專利範圍第1項所述之共用設計電路,其中該第二迭代運算獲得G(j)的運算值及完整癥狀碼,其中
- 如申請專利範圍第4項所述之共用設計電路,其中該矩陣XR、XG與XG定義如下:XR=[C1 C3…C2t-1], ,α 0...α m-1為GF(2 m )中的元素 ,
- 如申請專利範圍第1項所述之共用設計電路,其中該多工器的數量要大於編碼單元可編成的BCH碼之R值,其中R=n-k+1。
- 如申請專利範圍第1項所述之共用設計電路,其中該暫存器的數量要大於或等於m×t個。
- 如申請專利範圍第1項所述之共用設計電路,其中該第一中間計算結果與第二中間計算結果是1位元訊號。
- 一種用於決定BCH碼編碼與癥狀計算共用設計電路的方法,包含步驟:依照平行計算數量p與癥狀碼數量2t,建立XR、XG與XS;建立FP; 建立F’;建立F”;建立矩陣[XSRG F”];及設計滿足矩陣[XSRG F”]運算的電路,其中k、n、p與t為正整數,n大於k,XR=[C1 C3…C2t-1], ,α 0...α m-1為GF(2 m )中的元素 ,
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW103114945A TWI523437B (zh) | 2014-04-25 | 2014-04-25 | Bch碼編碼與癥狀計算共用設計電路及決定該共用設計電路的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW103114945A TWI523437B (zh) | 2014-04-25 | 2014-04-25 | Bch碼編碼與癥狀計算共用設計電路及決定該共用設計電路的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201541874A TW201541874A (zh) | 2015-11-01 |
TWI523437B true TWI523437B (zh) | 2016-02-21 |
Family
ID=55220631
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103114945A TWI523437B (zh) | 2014-04-25 | 2014-04-25 | Bch碼編碼與癥狀計算共用設計電路及決定該共用設計電路的方法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI523437B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI822952B (zh) * | 2019-03-29 | 2023-11-21 | 英商Arm股份有限公司 | 迭代運算的處理 |
-
2014
- 2014-04-25 TW TW103114945A patent/TWI523437B/zh active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI822952B (zh) * | 2019-03-29 | 2023-11-21 | 英商Arm股份有限公司 | 迭代運算的處理 |
Also Published As
Publication number | Publication date |
---|---|
TW201541874A (zh) | 2015-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9998148B2 (en) | Techniques for low complexity turbo product code decoding | |
JP4320418B2 (ja) | 復号装置および受信装置 | |
US8352847B2 (en) | Matrix vector multiplication for error-correction encoding and the like | |
KR101227264B1 (ko) | Ldpc 코드용 디코더 | |
US8335974B2 (en) | Binary BCH decoders | |
US10439643B2 (en) | Reed-Solomon decoders and decoding methods | |
US7870468B1 (en) | Reed-solomon decoder using a configurable arithmetic processor | |
US9614550B2 (en) | Parallel BCH coding circuit, encoder and method | |
US9337869B2 (en) | Encoding and syndrome computing co-design circuit for BCH code and method for deciding the same | |
KR102519667B1 (ko) | 일반화된 텐서곱(gtp) 코드의 효율적인 인코딩 방법 및 그 장치 | |
TWI523437B (zh) | Bch碼編碼與癥狀計算共用設計電路及決定該共用設計電路的方法 | |
US9455747B1 (en) | Parallel chien search with folding and a symbolized minimal polynomial combinational network (S-MPCN) | |
US20180006664A1 (en) | Methods and apparatus for performing reed-solomon encoding by lagrangian polynomial fitting | |
US9467173B2 (en) | Multi-code Chien's search circuit for BCH codes with various values of m in GF(2m) | |
US9459836B2 (en) | Simplified inversionless berlekamp-massey algorithm for binary BCH code and circuit implementing therefor | |
JP5385944B2 (ja) | 復号器 | |
Perrone et al. | High-throughput one-channel RS (255,239) decoder | |
TWI551059B (zh) | 用於具有不同GF(2m)中m值的BCH碼之多模式秦式搜尋電路 | |
TWI514778B (zh) | 用於bch碼字之縮短秦式搜尋演算法延時的方法及電路 | |
Srivastava et al. | Efficient Berlekamp-Massey based recursive decoder for Reed-Solomon codes | |
JP2012124888A (ja) | 復号装置及び復号方法 | |
US10879933B2 (en) | Reed solomon decoder and semiconductor device including the same | |
JP4755238B2 (ja) | 復号器 | |
RU2591474C1 (ru) | Параллельный реконфигурируемый кодер бчх кодов | |
Yang et al. | An area-efficient BCH codec with echelon scheduling for NAND flash applications |