專(zhuān)利名稱(chēng)::用于BCH譯碼器的高速低延時(shí)Berlekamp-Massey迭代譯碼電路的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明大體上涉及一種糾錯(cuò)譯碼電路。更具體地,本發(fā)明指示一種具有低延時(shí)特性的Berlekamp-Massey(BM)迭代譯碼電路,用于實(shí)現(xiàn)高速NandFlash存儲(chǔ)設(shè)備的BCH糾錯(cuò)譯碼器,也可以應(yīng)用于通信系統(tǒng)中的BCH糾錯(cuò)譯碼器。
背景技術(shù):
:BCH碼是1959年由Hocquenghem,1960年由Bose和Chandhari分別獨(dú)立提出的一種能糾正多個(gè)隨機(jī)錯(cuò)誤的循環(huán)碼;BCH碼是迄今為止所發(fā)現(xiàn)的一類(lèi)很好的線(xiàn)性糾錯(cuò)碼類(lèi),它的糾錯(cuò)能力強(qiáng),被廣泛應(yīng)用于電子通信信息領(lǐng)域。近年來(lái)隨著工藝的進(jìn)步,線(xiàn)寬降低,NandFlash的存儲(chǔ)密度不斷增大,而產(chǎn)生錯(cuò)誤的概率也越來(lái)越大。目前新一代的MLC(Multi-levelcell)NandFlash已經(jīng)由需要糾正4位(bit)錯(cuò)誤提高到需要糾正8位(bit)錯(cuò)誤,這就使得NandFlash控制器需要采用糾錯(cuò)能力更強(qiáng)的BCH碼?,F(xiàn)有的BCH譯碼過(guò)程通常分為3步,第一步,接收輸入碼字,計(jì)算校正子;第二步,基于校正子,利用無(wú)逆運(yùn)算的BM(InversionlessBM)算法計(jì)算錯(cuò)誤位置方程;第三步,利用錯(cuò)誤位置方程搜索錯(cuò)誤位置,以對(duì)錯(cuò)誤值進(jìn)行糾錯(cuò)。然而B(niǎo)CH碼的糾錯(cuò)能力越強(qiáng),BCH解碼器的設(shè)計(jì)就越復(fù)雜,解碼所需時(shí)間就越長(zhǎng);尤其是BCH中BM迭代譯碼步驟的延時(shí)是與糾錯(cuò)能力的平方成正比的。在高速固態(tài)存儲(chǔ)系統(tǒng)中,BCH解碼的延時(shí)直接導(dǎo)致存儲(chǔ)系統(tǒng)的帶寬和IOPS(I/Ooperationspersecond)的降低,整個(gè)存儲(chǔ)系統(tǒng)的延時(shí)增大,上層軟件的10操作等待時(shí)間變長(zhǎng)。所以在高糾錯(cuò)能力下,如何有效降低BM算法帶來(lái)的延時(shí),已經(jīng)成為本領(lǐng)域最為關(guān)注的問(wèn)題之一。中國(guó)專(zhuān)利申請(qǐng)200910024526.2(CN101488762A)公開(kāi)了"一種面積緊湊且快速的BCH并行譯碼方法",采用一輪多拍方式迭代運(yùn)算錯(cuò)誤位置多項(xiàng)式,通過(guò)狀態(tài)機(jī)控制單元的配置邏輯與狀態(tài)機(jī)相結(jié)合來(lái)復(fù)用由一個(gè)二輸入有限域乘法器和一個(gè)有限域加法器組成的計(jì)算單元。中國(guó)專(zhuān)利申請(qǐng)200910046088.X(CN101478314A)公開(kāi)了一種"根據(jù)NandFlash多余空間來(lái)配置糾錯(cuò)能力的BCH解碼器",采用無(wú)逆簡(jiǎn)化BM算法迭代算法模塊,求解出錯(cuò)誤位置方程的各系數(shù);并使用多個(gè)無(wú)限域乘法器,實(shí)現(xiàn)偶數(shù)伴隨式的計(jì)算,無(wú)逆運(yùn)算的BM算法。以上兩篇專(zhuān)利中所涉及到的譯碼電路,都存在較大譯碼延時(shí)。中國(guó)專(zhuān)利申請(qǐng)200910024526.2中采用狀態(tài)機(jī)的控制方式反復(fù)調(diào)用一個(gè)有限域計(jì)算單元,計(jì)算延時(shí)過(guò)大,另外電路中眾多的伴隨式和錯(cuò)誤多項(xiàng)式系數(shù)的排序是通過(guò)狀態(tài)機(jī)來(lái)判斷并輸入給計(jì)算單元的,因此需要采用龐大的多路選通器來(lái)實(shí)現(xiàn),這種實(shí)現(xiàn)方式將造成電路占用面積過(guò)大。中國(guó)專(zhuān)利申請(qǐng)200910046088.X中的迭代譯碼電路采用串行迭代方式,解碼所需要的延時(shí)較大。
發(fā)明內(nèi)容本發(fā)明公開(kāi)一種高速、低延時(shí)的BM(Berlekamp-Massey)迭代譯碼電路,目的在于解決傳統(tǒng)BCH譯碼器中BM迭代譯碼環(huán)節(jié),在糾錯(cuò)位個(gè)數(shù)增多情況下,速度變慢,延時(shí)增大的問(wèn)題。為了解決上述目的,本發(fā)明所采用伴隨式計(jì)算處理電路和并行迭代譯碼電路,節(jié)省了BCH譯碼算法的計(jì)算量,加快了譯碼速度;減少了傳統(tǒng)BM迭代譯碼所需的時(shí)鐘周期個(gè)數(shù)和電路邏輯門(mén)數(shù)。為高速NandFlash存儲(chǔ)設(shè)備提供糾錯(cuò)能力強(qiáng),延時(shí)小,糾錯(cuò)數(shù)據(jù)吞吐量大的BM迭代譯碼電路。本發(fā)明實(shí)現(xiàn)了一種用于BCH譯碼器的高速低延時(shí)BM迭代譯碼電路,包括奇數(shù)伴隨式計(jì)算電路(102)、偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104)以及并行迭代譯碼電路(106);所述奇數(shù)伴隨式計(jì)算電路(102)用于接收BCH編碼的輸入數(shù)據(jù),以及計(jì)算所述BCH編碼的輸入數(shù)據(jù)的奇數(shù)伴隨式;耦合到奇數(shù)伴隨式計(jì)算電路(102)的輸出端的所述偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104),用于計(jì)算所述BCH編碼的輸入數(shù)據(jù)的偶數(shù)伴隨式,并將計(jì)算得到的奇數(shù)伴隨式與偶數(shù)伴隨式輸出給并行迭代譯碼電路(106),當(dāng)BCH編碼輸入數(shù)據(jù)可糾正t位錯(cuò)誤時(shí),所述偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104)在第1至第t-l次循環(huán)中的第j次循環(huán)中,當(dāng)j《V2時(shí),輸出伴隨式S2j+1、S2j、S2j—:......Sn當(dāng)j>t/2時(shí),輸出t+1個(gè)伴隨式S2j+1、S2j、S2j—工......S2j—t+2、S2j—1+1;若伴隨式S2j+1、S2j、S2j—工......S工的數(shù)量不足t+1個(gè),余下部分的輸出為任意值;在t-l次循環(huán)的每次中,包括k個(gè)周期,每個(gè)周期輸出依序號(hào)從大到小輸出p個(gè)伴隨式,k為正整數(shù),p*k=t+1;所述并行迭代譯碼電路(106)基于無(wú)逆運(yùn)算的BM算法利用所述偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104)輸出的伴隨式計(jì)算錯(cuò)誤位置多項(xiàng)式系數(shù);并行迭代譯碼電路(106)包括第一乘法器組(502)、第二乘法器組(508)、第三乘法器組(509)、多輸入加法器(503)、加法器組(510)、錯(cuò)誤多項(xiàng)式寄存器(511)、錯(cuò)誤多項(xiàng)式位置緩存(512)、輔助多項(xiàng)式緩存(513)、非零差值寄存器(507)以及迭代差值寄存器(504),所述乘法器和加法器均為GF域內(nèi)運(yùn)算器;對(duì)應(yīng)于所述偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104)的t-l次循環(huán),所述并行迭代譯碼電路(106)進(jìn)行t-l次迭代計(jì)算,以及所述并行迭代譯碼電路(106)還進(jìn)行第t次迭代計(jì)算,在每次迭代計(jì)算的k個(gè)周期的每個(gè)周期中,第一乘法器組(502)將所述偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104)的輸出與錯(cuò)誤多項(xiàng)式寄存器(511)存儲(chǔ)的值相乘,多輸入加法器(503)計(jì)算第一乘法器組(502)輸出的p個(gè)積與所述多輸入加法器(503)的前一周期的計(jì)算結(jié)果的和,第三乘法器組(509)將錯(cuò)誤位置多項(xiàng)式緩存(512)的p個(gè)值分別與非零差值寄存器(507)的值相乘,第二乘法器組(508)將輔助多項(xiàng)式緩存(513)的p個(gè)值分別與迭代差值寄存器(504)的值相乘,加法器組(510)將第二乘法器(508)輸出與第三乘法器(509)輸出相加,得到p個(gè)和,并輸出給錯(cuò)誤多項(xiàng)式寄存器(511),判斷迭代差值寄存器(504)是否等于零或者錯(cuò)誤位置多項(xiàng)式的維數(shù)是否大于迭代次數(shù)j:如果迭代差值寄存器(504)不等于零并且錯(cuò)誤位置多項(xiàng)式的維數(shù)不大于迭代次數(shù)j,則將迭代差值寄存器(504)的值存儲(chǔ)到非零差值寄存器(507)中,錯(cuò)誤多項(xiàng)式寄存器(511)的輸出寄存在錯(cuò)誤位置多項(xiàng)式緩存(512)中,錯(cuò)誤位置多項(xiàng)式緩存(512)將前一周期計(jì)算得到的錯(cuò)誤位置多項(xiàng)式輸出給輔助多項(xiàng)式緩存(513);如果迭代差值寄存器(504)等于零或者錯(cuò)誤位置多項(xiàng)式的維數(shù)大于迭代次數(shù)j,則不更新非零差值寄存器507內(nèi)的值,也不更新輔助多項(xiàng)式緩存(513);以及在每次迭代計(jì)算的最后一個(gè)周期,用多輸入加法器(503)的輸出值,對(duì)迭代差值寄存器(504)進(jìn)行更新。本發(fā)明還公開(kāi)了一種GF(213)域的平方計(jì)算電路,包括13個(gè)信號(hào)輸入端,13個(gè)信號(hào)輸出端對(duì)第1信號(hào)輸入端與第12信號(hào)輸入端求異或,結(jié)果由第1信號(hào)輸出端輸出;對(duì)第8信號(hào)輸入端與第12信號(hào)輸入端以及第13信號(hào)輸入端求異或,結(jié)果由第2信號(hào)輸出端輸出;對(duì)第2信號(hào)輸入端與第8信號(hào)輸入端求異或,結(jié)果由第3信號(hào)輸出端輸出;對(duì)第9信號(hào)輸入端與第12信號(hào)輸入端以及第13信號(hào)輸入端求異或,結(jié)果由第4信號(hào)輸出端輸出;對(duì)第3信號(hào)輸入端、第8信號(hào)輸入端、第9信號(hào)輸入端、第12信號(hào)輸入端、第13信號(hào)輸入端求異或,結(jié)果由第5信號(hào)輸出端輸出;對(duì)第8信號(hào)輸入端與第10信號(hào)輸入端求異或,結(jié)果由第6信號(hào)輸出端輸出;對(duì)第4信號(hào)輸入端、第9信號(hào)輸入端、第10信號(hào)輸入端與第13信號(hào)輸入端求異或,結(jié)果由第7信號(hào)輸出端輸出;對(duì)第9信號(hào)輸入端與第11信號(hào)輸入端求異或,結(jié)果由第8信號(hào)輸出端輸出;對(duì)第5信號(hào)輸入端、第10信號(hào)輸入端與第11信號(hào)輸入端求異或,結(jié)果由第9信號(hào)輸出端輸出;對(duì)第IO信號(hào)輸入端與第12信號(hào)輸入端求異或,結(jié)果由第IO信號(hào)輸出端輸出;對(duì)第6信號(hào)輸入端、第ll信號(hào)輸入端與第12信號(hào)輸入端求異或,結(jié)果由第11信號(hào)輸出端輸出;對(duì)第11信號(hào)輸入端與第13信號(hào)輸入端求異或,結(jié)果由第12信號(hào)輸出端輸出;對(duì)第7信號(hào)輸入端、第12信號(hào)輸入端與第13信號(hào)輸入端求異或,結(jié)果由第13信號(hào)輸出端輸出。本發(fā)明還公開(kāi)了一種BCH譯碼器的高速BM迭代譯碼器,包括奇數(shù)伴隨式計(jì)算電路(102)、偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104)以及并行迭代譯碼電路(106);所述奇數(shù)伴隨式計(jì)算電路(102)用于接收BCH編碼的輸入數(shù)據(jù),以及計(jì)算所述BCH編碼的輸入數(shù)據(jù)的奇數(shù)伴隨式;耦合到奇數(shù)伴隨式計(jì)算電路(102)的輸出端的所述偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104),用于當(dāng)所述BCH編碼的輸入數(shù)據(jù)的奇數(shù)伴隨式不全為0時(shí),計(jì)算所述BCH編碼的輸入數(shù)據(jù)的偶數(shù)伴隨式,并將計(jì)算得到的奇數(shù)伴隨式與偶數(shù)伴隨式輸出給并行迭代譯碼電路(106);所述偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104)包括2t-2個(gè)第一排序寄存器單元RSi(i#p-l)和1個(gè)第二排序寄存器單元RSp—pp表示所述偶數(shù)伴隨式計(jì)算及伴隨式排序電路(104)的并行度,所述的BM迭代譯碼電路的糾錯(cuò)能力為t,以及,所述2t-2個(gè)第一排序寄存器單元RSi(i#p-1)的每個(gè)接收排序寄存器單元RS卜p和排序寄存器單元RSi+t+3—p的輸出,所述第二排序寄存器單元RSP—工接收第一排序寄存器單元RS2t—2和排序寄存器單元RSt、RSt—pRSt—2......RS3的輸出,以及來(lái)自所述奇數(shù)伴隨式計(jì)算電路(102)的奇數(shù)伴隨式S1;在所述偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104)的t-1次循環(huán)的每次的第一周期,選擇排序寄存器單元RSi+w—p的輸出作為所述第一排序寄存器單元RSi(i#p-1)的輸出,在每次循環(huán)的其他k-l個(gè)周期,選擇排序寄存器單元RSi—p的輸出作為所述第一排序寄存器單元RSi(i#p-1)的輸出;在t次循環(huán)的每次的第一周期,對(duì)應(yīng)于循環(huán)次數(shù),依次計(jì)算伴隨式Sp排序寄存器單元RSt、RSt—pRSt—2......RS4、RS3的輸出的平方,作為第二排序寄存器單元RSP—i的輸出,在每次循環(huán)的其他k-l個(gè)周期,選擇第一排序寄存器單元RS2t—2的輸出作為第二排序寄存器單元RSP—i的輸出;排序寄存器單元RSpRS2......RSp—pRSp的輸出作為所述偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104)的輸出,以及k*p=t+l,k、p均為正整數(shù);所述并行迭代譯碼電路(106)基于無(wú)逆運(yùn)算的BM算法利用所述偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104)輸出的奇數(shù)伴隨式與偶數(shù)伴隨式計(jì)算錯(cuò)誤位置多項(xiàng)式系數(shù);并行迭代譯碼電路(106)包括第一乘法器組(502)、第二乘法器組(508)、第三乘法器組(509)、多輸入加法器(503)、加法器組(510)、錯(cuò)誤多項(xiàng)式寄存器(511)、錯(cuò)誤多項(xiàng)式位置緩存(512)、輔助多項(xiàng)式緩存(513)、非零差值寄存器(507)以及迭代差值寄存器(504),所述乘法器和加法器均為GF域內(nèi)運(yùn)算器;對(duì)應(yīng)于所述偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104)的t-l次循環(huán),所述并行迭代譯碼電路(106)進(jìn)行t-l次迭代計(jì)算,以及所述并行迭代譯碼電路(106)還進(jìn)行第t次迭代計(jì)算,在每次迭代計(jì)算的k個(gè)周期的每個(gè)周期中,第一乘法器組(502)將所述偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104)的輸出與錯(cuò)誤多項(xiàng)式寄存器(511)存儲(chǔ)的值相乘,多輸入加法器(503)計(jì)算第一乘法器組(502)輸出的p個(gè)積與所述多輸入加法器(503)的前一周期的計(jì)算結(jié)果的和,第三乘法器組(509)將錯(cuò)誤位置多項(xiàng)式緩存(512)的p個(gè)值分別與非零差值寄存器(507)的值相乘,第二乘法器組(508)將輔助多項(xiàng)式緩存(513)的p個(gè)值分別與迭代差值寄存器(504)的值相乘,加法器組(510)將第二乘法器(508)輸出與第三乘法器(509)輸出相加,得到p個(gè)和,并輸出給錯(cuò)誤多項(xiàng)式寄存器(511),判斷迭代差值寄存器(504)是否等于零或者錯(cuò)誤位置多項(xiàng)式的維數(shù)是否大于迭代次數(shù)j:如果迭代差值寄存器(504)不等于零并且錯(cuò)誤位置多項(xiàng)式的維數(shù)不大于迭代次數(shù)j,則將迭代差值寄存器(504)的值存儲(chǔ)到非零差值寄存器(507)中,錯(cuò)誤多項(xiàng)式寄存器(511)的輸出寄存在錯(cuò)誤位置多項(xiàng)式緩存(512)中,錯(cuò)誤位置多項(xiàng)式緩存(512)將前一周期計(jì)算得到的錯(cuò)誤位置多項(xiàng)式輸出給輔助多項(xiàng)式緩存(513);如果迭代差值寄存器(504)等于零或者錯(cuò)誤位置多項(xiàng)式的維數(shù)大于迭代次數(shù)j,則不更新非零差值寄存器507內(nèi)的值,也不更新輔助多項(xiàng)式緩存(513);以及在每次迭代計(jì)算的最后一個(gè)周期,用多輸入加法器(503)的輸出值,對(duì)迭代差值寄存器(504)進(jìn)行更新。本發(fā)明還公開(kāi)了一種用于BCH譯碼器的BM迭代譯碼電路,包括奇數(shù)伴隨式計(jì)算電路(102)、偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104)以及并行迭代譯碼電路(106);所述奇數(shù)伴隨式計(jì)算電路(102)用于接收BCH編碼的輸入數(shù)據(jù),以及計(jì)算所述BCH編碼的輸入數(shù)據(jù)的奇數(shù)伴隨式;所述偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104),計(jì)算所述BCH編碼的輸入數(shù)據(jù)的偶數(shù)伴隨式,在一個(gè)周期內(nèi),將P個(gè)伴隨式按照順序輸出給并行迭代譯碼電路(106),其中P為所述BCH譯碼器的并行度;所述并行迭代譯碼電路(106),用于計(jì)算所述BCH編碼的輸入數(shù)據(jù)的錯(cuò)誤方程式系數(shù),其特征在于,在一個(gè)時(shí)鐘周期內(nèi),所述并行迭代譯碼電路(106)將p個(gè)伴隨式轉(zhuǎn)化為P個(gè)錯(cuò)誤方程系數(shù)。本發(fā)明極大程度的減少了求解錯(cuò)誤位置方程所需的時(shí)鐘周期,降低了電路系統(tǒng)解延時(shí),有效提高了BCH解碼器的數(shù)據(jù)吞吐量。當(dāng)連同附圖閱讀時(shí),通過(guò)參考后面對(duì)示出性的實(shí)施例的詳細(xì)描述,將最佳地理解本發(fā)明以及優(yōu)選的使用模式和其進(jìn)一步的目的和優(yōu)點(diǎn),其中附圖包括圖1示出了本發(fā)明的迭代譯碼電路基本結(jié)構(gòu)示意圖2示出了本發(fā)明的奇數(shù)伴隨式計(jì)算電路;圖3示出了本發(fā)明的偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(糾錯(cuò)能力t=15,并行度P=4);圖4示出了本發(fā)明的求解錯(cuò)誤位置多項(xiàng)式的迭代譯碼流程圖;圖5示出了本發(fā)明的并行迭代譯碼電路結(jié)構(gòu)圖(糾錯(cuò)能力t二15,并行度p二4);圖6示出了本發(fā)明的偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路;圖7示出了本發(fā)明的并行迭代譯碼電路結(jié)構(gòu)圖。具體實(shí)施例方式圖1是示出了本發(fā)明Berlekamp-Massey迭代譯碼電路的基本結(jié)構(gòu)示意圖。本發(fā)明所設(shè)計(jì)的迭代電路主要包含三個(gè)部分,奇數(shù)伴隨式的計(jì)算電路102、偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路104、并行迭代譯碼電路106。當(dāng)攜帶多位校驗(yàn)位信息的二進(jìn)制BCH編碼數(shù)據(jù)101輸入到迭代譯碼電路時(shí),首先由奇數(shù)伴隨式計(jì)算電路102計(jì)算出該BCH編碼數(shù)據(jù)的奇數(shù)伴隨式103,當(dāng)數(shù)據(jù)中沒(méi)有錯(cuò)誤位時(shí),所有奇數(shù)伴隨式均為O,跳出迭代譯碼。當(dāng)數(shù)據(jù)中出現(xiàn)錯(cuò)誤位時(shí),奇數(shù)伴隨式不全為0,此時(shí)將奇數(shù)伴隨式輸入到偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路104,求出偶數(shù)伴隨式,并且按照一定順序并行輸出伴隨式105(包括奇數(shù)伴隨式和偶數(shù)伴隨式)。該伴隨式的輸出作為并行迭代譯碼電路106的輸入,由并行迭代譯碼電路106計(jì)算出錯(cuò)誤位置方程107。1.奇數(shù)伴隨式計(jì)算電路BCH譯碼的第一個(gè)步驟為計(jì)算伴隨式?!獋€(gè)長(zhǎng)度為n位的二進(jìn)制發(fā)送碼字C(x)可以用多項(xiàng)式表示為<formula>formulaseeoriginaldocumentpage10</formula>其中cn—ncn—2......c。G(0,1),為二進(jìn)制發(fā)送碼字的編碼。通過(guò)信道后,譯碼器接收到的數(shù)據(jù)為R(x)=C(x)+E(x)=(rn—p11—.+r1x+r0)其中E(x)=(en—lXn—、..+elX+e。)是信道產(chǎn)生的錯(cuò)誤圖樣,因此伴隨式可以表示為Si=R(ai)二C(ai)+E(ai)二E(a"式中Si為伴隨式,ai多項(xiàng)式方程C(x)的根(C(ai)=0),因此對(duì)于無(wú)信道錯(cuò)誤(E(x)=0)的BCH輸入數(shù)據(jù)來(lái)說(shuō),伴隨式為O,即Si=0。伴隨式的計(jì)算公式可以轉(zhuǎn)換成Si=R(a0=rn—!(a"n—2(a"n—2+巧ai+r。-------------(1)=((rn—!ai+rn—2)a、+r》ai+r0這表明可以通過(guò)乘法-加法循環(huán)計(jì)算操作來(lái)求得伴隨式。將輸入數(shù)據(jù)的最高位rn—工與a1相乘(GF域乘法),計(jì)算結(jié)果與下一個(gè)輸入數(shù)據(jù)位rn—2相加;計(jì)算結(jié)果再與a1相乘...以此類(lèi)推,直到最后一位r。,計(jì)算完成。圖2是示出了本發(fā)明的奇數(shù)伴隨式計(jì)算電路,其中輸入并行數(shù)據(jù)201為BCH編碼字節(jié)(8bit),該數(shù)據(jù)中可能包含多個(gè)錯(cuò)誤位。對(duì)于能夠糾正t個(gè)錯(cuò)誤位的二進(jìn)制BCH編碼,需要計(jì)算t個(gè)奇數(shù)伴隨式,SnS3,S5......S2t—1Q當(dāng)BCH編碼數(shù)據(jù)并行輸入到奇數(shù)伴隨計(jì)算電路時(shí),首先經(jīng)過(guò)RC(a0組合邏輯電路202計(jì)算出8次乘法-加法循環(huán)計(jì)算的結(jié)果RC(a0=((Rn—邁(a0ai+rn—邁—》ai+rn—邁—2)a、+rn—邁—7)ai+rn—邁—8所屬領(lǐng)域技術(shù)人員將容易意識(shí)到的是,這里每次輸入一個(gè)字節(jié)(8比特)的BCH編碼數(shù)據(jù),以及對(duì)該1字節(jié)BCH編碼輸入,由RC(a0組合邏輯電路202執(zhí)行的乘法-加法循環(huán)計(jì)算的次數(shù)相應(yīng)為8(與每次輸入的比特?cái)?shù)相同),僅僅是為便于表達(dá)的需要而作為舉例,也可以采用其他比特?cái)?shù)B作為輸入數(shù)據(jù)的數(shù)量,并相應(yīng)地進(jìn)行B次乘法-加法循環(huán)計(jì)算。在圖2的奇數(shù)伴隨式計(jì)算電路的計(jì)算過(guò)程中,在一個(gè)周期內(nèi),RC(ai)計(jì)算電路202計(jì)算((Rn—m(a0a、—邁—》a4;邁—2)a、+rn—『7)a、—邁—8,其中rn—邁—"rn-m-2...rn—m—8為輸入的一個(gè)字節(jié)的8個(gè)比特,ICm(a0為前一次計(jì)算存儲(chǔ)在寄存器203中的數(shù)據(jù),RC(ai)的計(jì)算結(jié)果為R^—8(ai)存儲(chǔ)在寄存器203中;在下一個(gè)周期,當(dāng)另外一個(gè)字節(jié)的數(shù)據(jù)輸入時(shí),同樣進(jìn)布此操作,依次循環(huán),直到最后一個(gè)字節(jié)數(shù)據(jù)輸入完成,寄存器內(nèi)的數(shù)據(jù)即為該BCH編碼數(shù)據(jù)的奇數(shù)伴隨式204。根據(jù)前面公式,當(dāng)無(wú)錯(cuò)誤出現(xiàn)時(shí)Si=0;因此當(dāng)奇數(shù)伴隨式全為O時(shí),表明數(shù)據(jù)無(wú)錯(cuò)誤需要糾正,跳出該迭代譯碼電路。當(dāng)奇數(shù)伴隨式不全為0時(shí),這些奇數(shù)伴隨式將會(huì)被發(fā)送到偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路104進(jìn)行處理。2.偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路104的主要特點(diǎn)是,伴隨式在按照一定順序并行輸出的同時(shí),只采用一個(gè)GF域平方計(jì)算單元,逐次計(jì)算出偶數(shù)伴隨式。對(duì)于BCH編碼偶數(shù)伴隨式求解有如下GF域計(jì)算公式,《<formula>formulaseeoriginaldocumentpage11</formula>根據(jù)該公式由S工可以計(jì)算出S2(^-f),由^可以計(jì)算出S4,由Ss可以計(jì)算出圖3是示出了本發(fā)明的偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路104,該圖舉例說(shuō)明了一個(gè)糾錯(cuò)能力為15bit,并行輸出4個(gè)伴隨式的電路結(jié)構(gòu)。在初始時(shí),圖3中所描述的排序寄存器陣列300,將奇數(shù)伴隨式載入排序寄存器單元,之后在時(shí)鐘驅(qū)動(dòng)下排序寄存器陣列300,進(jìn)行14次循環(huán),每個(gè)循環(huán)包含4個(gè)周期,每個(gè)周期可以并行輸出4個(gè)伴隨式,每次循環(huán)輸出16個(gè)伴隨式。其中排序寄存器單元R^,RS3,RS2,RS"提供排序寄存器陣列的輸出,伴隨式輸出的方式在表1中示出。其中,以第1次循環(huán)的第一個(gè)時(shí)鐘周期為例,在該時(shí)鐘周期中,在排序寄存器單元14輸出S3,在RS3輸出S2,在R&輸出S"的輸出不考慮(表示為NA)。因而,表1中詳細(xì)描述了排序寄存器陣列300在14個(gè)循環(huán)中的每一周期內(nèi),排序寄存器單元RS4、RS3、RS2以及RS工輸出的內(nèi)容。表1伴隨式并行輸出順序<table>tableseeoriginaldocumentpage12</column></row><table>在表1中,j為循環(huán)次數(shù),S2j(Sj2)表示由S,.通過(guò)GF域平方運(yùn)算單元324計(jì)算出下面結(jié)合圖3介紹偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路104的詳細(xì)實(shí)施例。圖3中附圖標(biāo)記310指示排序寄存器單元RSi(i#3),標(biāo)記320指示排序寄存器單元RS3,具有計(jì)算偶數(shù)伴隨式的功能。對(duì)于RSi(i^3)排序單元310,其輸入為Ri—4313和&+14314,R卜4313和Ri+14314分別是RS卜4和RSi+14排序寄存器單元的輸出,其中i是周期為29的循環(huán)標(biāo)識(shí),并且R卜4=R卜4+29(當(dāng)i-4《0時(shí)),Ri+14=Ri+14—29(當(dāng)i+14>29時(shí))R卜4313和Ri+14314通過(guò)MUX選通器312連接到寄存器311上,排序寄存器單元RSji#3)的輸出信號(hào)為Ri315。RS3排序寄存器單元320的輸入分為兩部分,第一部分輸入為信號(hào)S15R15,R14...R3其中S工是伴隨式S15而R15,R14...R3分別是排序寄存器單元RS15,RS14...RS3的輸出,他們通過(guò)一個(gè)MUX選通器323輸入到GF域平方計(jì)算單元324,計(jì)算出偶數(shù)伴隨式;RS3排序寄存器單元320的第二部分輸入為R28,用于移位排序。兩部分輸入通過(guò)一個(gè)MUX選通器325連接到寄存器326上,RS3排序寄存器單元320的輸出為R3。如前所述,RSpRS^RS^RSa作為伴隨式并行輸出303連接到后級(jí)并行迭代譯碼電路106。下面再次參看上述表l,并結(jié)合圖3,以說(shuō)明本發(fā)明的偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路104的工作過(guò)程。偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路可以分為循環(huán)排序移位和周期排序移位兩種工作過(guò)程。在每次循環(huán)的第1個(gè)周期進(jìn)行循環(huán)排序移位。MUX選通器312選擇Ri+14314作為RSji#3)中寄存器311的輸入信號(hào);MUX選通器325按照循環(huán)次數(shù)i,對(duì)應(yīng)于i=1,2...14,依次選擇SnR15,R14......R4,R3作為GF域平方計(jì)算單元324的輸入,由GF域平方計(jì)算單元324計(jì)算出偶數(shù)伴隨式;MUX選通器325選擇GF域平方計(jì)算單元324的輸出作為R&中寄存器326的輸入。在每次循環(huán)的第2,3,4周期進(jìn)行周期排序移位。MUX選通器312選擇R卜4313作為RSji#3)中寄存器311的輸入信號(hào),MUX選通器325選擇R28作為RS3中寄存器326的輸入??蛇x地,在此時(shí)可禁用MUX選通器323以及GF域平方計(jì)算單元324,以降低譯碼器的功耗。為進(jìn)一步提高GF域平方計(jì)算的速度,本發(fā)明還設(shè)計(jì)了一種全新的GF域平方計(jì)算單元324,用于計(jì)算偶數(shù)伴隨式,對(duì)于GF(213)域平方計(jì)算單元,可以按照如下方法進(jìn)行計(jì)算GF(213)域的平方。c[9],c[8],c[7],c[5],c[4],c[3],c[2],c[l],,a[8],a[7],a[5],a[4],a[3],a[2],a[l],a則;設(shè)。={c[12],c[ll],c[lO],c則;a={a[12],a[ll],a[10],a[9]c[O]=a[Ora[ll];c[l]=a[7ra[ll]~a[12];c[2]=a[l]~a[7];c[3]=a[8ra[ll]~a[12];c[4]=a[2ra[7ra[8]~a[ll]c[5]=a[7]~a[9];c[6]=a[3ra[8ra[9]'a[12]c[7]=a[8ra[10];c[8]=a[4ra[9]~a[10];c[9]=a[9]~a[ll];c[10]==a[5]~a[10]~a[ll];c[ll]==a[10]~a[12];c[12]==a[6]~a[ll]~a[12];其中"c"為GF域平方計(jì)算結(jié)果可知,GF域平方計(jì)算單元電路,可以通過(guò)-系列異或門(mén)來(lái)實(shí)現(xiàn)。與現(xiàn)有技術(shù)相比,所述偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路的優(yōu)勢(shì)在于1)采用GF域平方計(jì)算單元,替代GF域乘法計(jì)算單元,與GF域乘法電路相比,GF域平方電路占用的電路邏輯門(mén)不到GF域乘法電路占用邏輯門(mén)數(shù)的3%,中國(guó)專(zhuān)利申請(qǐng)200910046088.X中用于計(jì)算偶數(shù)伴隨式所采用的便是GF域乘法器。2)采用排序寄存器的方式,實(shí)現(xiàn)伴隨式按照一定順序輸出。避免采用復(fù)雜的狀態(tài)機(jī)或處理器指令來(lái)實(shí)現(xiàn)伴隨式輸出,簡(jiǎn)化了電路結(jié)構(gòu),提高了運(yùn)行速度,減少了電路占用面積。3)將平方計(jì)算嵌入到寄存器排序步驟中,串行計(jì)算偶數(shù)伴隨式,只需要1個(gè)平方計(jì)算單元就可以實(shí)現(xiàn)偶數(shù)伴隨式的逐次計(jì)算。避免采用多個(gè)GF域乘法單元同時(shí)計(jì)算偶數(shù)伴隨式,大大降低了硬件的面積。3.并行迭代譯碼電路圖4示出了本發(fā)明求解錯(cuò)誤位置方程的迭代譯碼流程圖,圖5示出了本發(fā)明并行迭代譯碼電路結(jié)構(gòu)圖。本發(fā)明采用了無(wú)GF域逆運(yùn)算的簡(jiǎn)化BM算法,求解出錯(cuò)誤位置方程的系數(shù)。迭代譯碼電路接收并行輸入的伴隨式(按照表1所示的排列順序),通過(guò)乘法器組,加法器組,以及環(huán)狀循環(huán)電路并行計(jì)算出錯(cuò)誤位置方程的系數(shù)。對(duì)于糾錯(cuò)能力為15的迭代譯碼電路,整個(gè)過(guò)程,需要迭代15次,每次迭代包含4個(gè)周期,在最后一次迭代計(jì)算出錯(cuò)誤位置方程的16個(gè)系數(shù)。在本實(shí)施例中,下面文字將結(jié)合圖4和圖5對(duì)迭代譯碼電路的組成和工作原理進(jìn)行詳細(xì)描述。設(shè)o(x)為錯(cuò)誤位置多項(xiàng)式,t(x)為輔助多項(xiàng)式,A為迭代差值,S為非零迭代差值,Deg為多項(xiàng)式的維數(shù),j為迭代次數(shù),t為糾錯(cuò)能力。在迭代計(jì)算的開(kāi)始,需要對(duì)相關(guān)寄存器進(jìn)行初始值設(shè)定401,o(-"(x)=t(-"(x)=1,A(0)=S"S=1即設(shè)定錯(cuò)誤位置多項(xiàng)式緩存512和輔助多項(xiàng)式緩存513為1,設(shè)定錯(cuò)誤多項(xiàng)式寄存器511為l,設(shè)定非零差值S507為1,設(shè)定寄存器505為0,設(shè)定迭代差值A(chǔ)寄存器504為S"其中S工由奇數(shù)伴隨式計(jì)算電路求得。參看圖4,整個(gè)迭代電路主要涉及兩種計(jì)算,求解迭代差值A(chǔ)的計(jì)算步驟402和求錯(cuò)誤位置多項(xiàng)式系數(shù)o的計(jì)算步驟403。在迭代譯碼電路中這兩個(gè)計(jì)算步驟通過(guò)環(huán)狀循環(huán)電路能夠同時(shí)進(jìn)行。下面,分別對(duì)其加以詳細(xì)介紹。A.求解迭代差值A(chǔ)的計(jì)算步驟402首先,如表1及圖3所示出的,偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路104能夠每個(gè)周期將4個(gè)伴隨式輸入501,按照順序輸入到并行迭代譯碼電路106的"乘法器組1"502。在第j次迭代的第一個(gè)時(shí)鐘周期,"乘法器組1"502包含4個(gè)GF(213)域乘法器,能夠?qū)㈠e(cuò)誤多項(xiàng)式寄存器511中的4個(gè)多項(xiàng)式系數(shù)。。(j),。/J'),。2(j),03")和輸入的4個(gè)伴隨式S2j+1,S2j,S2j—pS2j—2在GF域內(nèi)相乘,得到4個(gè)相乘結(jié)果。。(j)S2j+1,。/J、j,。2(j)S2j—p。3(j)S2j—2(當(dāng)來(lái)自偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路104的輸出為NA時(shí),相應(yīng)的GF域乘法結(jié)果計(jì)為0),將4個(gè)相乘結(jié)果和寄存器505所寄存的上個(gè)時(shí)鐘周期的計(jì)算結(jié)果,通過(guò)多輸入加法器503將5個(gè)輸入求和;在第二個(gè)時(shí)鐘周期計(jì)算出。4(j)S2j—3,。5(j)S2j—4,。6(j)S2j—5,。7(j)S2j—6,由多輸入加法器503,將4個(gè)相乘結(jié)果和寄存器505所寄存的上個(gè)時(shí)鐘周期的計(jì)算結(jié)果進(jìn)行求和。在經(jīng)歷第j次迭代(循環(huán))的4個(gè)周期后,也就是每次迭代(循環(huán))地最后14一個(gè)周期,得到迭代差值A(chǔ)""=§^/&/+w;該迭代差值寄存在迭代差值寄存器504內(nèi),而在每次迭代(循環(huán))內(nèi),迭代差值A(chǔ)寄存器504的值保持不變。圖3偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路中每次循環(huán)包含的4個(gè)周期相對(duì)應(yīng),表1中的第j次循環(huán)對(duì)應(yīng)于圖4的譯碼過(guò)程的第j次迭代。在第15次迭代時(shí),并行迭代譯碼電路,只計(jì)算o"'(x),不計(jì)算迭代差值A(chǔ),不需要輸入的伴隨式;因此偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路需要經(jīng)歷14次循環(huán),而并行迭代譯碼電路則需要進(jìn)行15次迭代。B.求錯(cuò)誤位置多項(xiàng)式系數(shù)o(j)(x)的計(jì)算步驟403求錯(cuò)誤位置多項(xiàng)式系數(shù)o(J')(x)的計(jì)算步驟403是和求解迭代差值A(chǔ)的計(jì)算步驟402同時(shí)進(jìn)行的,下面介紹求解錯(cuò)誤位置多項(xiàng)式系數(shù)的詳細(xì)步驟。對(duì)應(yīng)于偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路104的每個(gè)輸出周期,判斷迭代差值是否等于零或者o(J)(x)多項(xiàng)式的維數(shù)是否大于迭代次數(shù)j,即A=0或Degoj(x)>j——(布爾表達(dá)式1)對(duì)布爾表達(dá)式1的判斷結(jié)果,如果"否",通過(guò)MUX506將迭代差值A(chǔ)寄存器504記錄到非零差值寄存器507內(nèi);在第j次迭代過(guò)程中,"乘法器組2"508的輸入為輔助多項(xiàng)式緩存513和迭代差值寄存器504,計(jì)算出A(j)x2t卜2"-"(x),A(j)x2t卜,1)(x),A(j)x2t,1)(x),A(J')x2tD(x);"乘法器組3"509的輸入為錯(cuò)誤位置多項(xiàng)式緩存512和非零差值寄存器507,計(jì)算出S。i(j—"(x),S。i+1(j—"(x),S。i+2(j—"(x),S。i+3(」-"(x),最后由"加法器組"510,并行計(jì)算o(J')(x)=S0(j—"(x)+A(J')x、(J'—"(x),得到o(J')(x)多項(xiàng)式的4個(gè)系數(shù)。i(J'),。i+1(j),。i+2(j),Oi+3(J'),記錄在錯(cuò)誤多項(xiàng)式寄存器511中,錯(cuò)誤多項(xiàng)式寄存器511的輸出連接到"乘法器組1"502的輸入,同時(shí)錯(cuò)誤多項(xiàng)式寄存器511的輸出也寄存在錯(cuò)誤位置多項(xiàng)式緩存512中。對(duì)于上次迭代(第j-1次迭代)計(jì)算得到的o(i—",錯(cuò)誤位置多項(xiàng)式緩存512將其輸出給輔助多項(xiàng)式緩存513,即圖4中的"J')(x)=0(j—"405。t(j)(x)將在下一次迭代(第j+1次迭代)中作為"乘法器組2"508的輸入。布爾表達(dá)式1的判斷結(jié)果,如果"是",通過(guò)MUX506將非零差值寄存器507內(nèi)的值重新寄存,而不是更新為迭代差值A(chǔ)寄存器504的值;由"乘法器組2"508,"乘法器組3"509和"加法器組"510,并行計(jì)算o(J)(x)=So(J—"(X)+A(J')x2t(j—"(x)403,得到o(j)(x)多項(xiàng)式的4個(gè)系數(shù)。i(J'),oi+1(j),oi+2(j),Oi+3(J'),記錄在錯(cuò)誤多項(xiàng)式寄存器511中,輸出給"乘法器組l"502,并寄存在錯(cuò)誤位置多項(xiàng)式緩存512中;輔助多項(xiàng)式緩存513內(nèi)的值不需要更新,即圖4中的"J')(x)=x"j—"(x)407。經(jīng)過(guò)第j次迭代的4周期,計(jì)算出錯(cuò)誤多項(xiàng)式的所有16個(gè)系數(shù)(每個(gè)周期計(jì)算出。(j)(x)多項(xiàng)式的4個(gè)系數(shù)。i(J),oi+1(j),oi+2(j),oi+3(j)),即得到錯(cuò)誤位置多項(xiàng)式WO)=oY5jc15+o"/4x14...o"/x+W=5'o"0-1)(x)+A""(x)在圖4中的步驟408,將迭代次數(shù)加"1",在步驟409,判斷迭代次數(shù)j是否小于糾錯(cuò)能力"t"。如果"是"繼續(xù)下一次迭代操作,對(duì)于一個(gè)糾錯(cuò)能力為15的BM迭代譯碼,需要進(jìn)行15次迭代;如果"否",表明迭代已經(jīng)完成,得到錯(cuò)誤位置多項(xiàng)式o(x),在步驟410判斷o(x)的維數(shù)是否大于"t",如果"是"表明該段代碼錯(cuò)誤位個(gè)數(shù)大于最大糾錯(cuò)能力,如果"否",則o(x)為該BCH編碼的錯(cuò)誤位置多項(xiàng)式。與現(xiàn)有技術(shù)相比,所述并行迭代譯碼電路的優(yōu)勢(shì)在于1)每次能夠并行處理多個(gè)伴隨式,減少了求解方程的時(shí)鐘周期,降低了電路系統(tǒng)解延時(shí);對(duì)于實(shí)現(xiàn)具有15位糾錯(cuò)能力的BM譯碼,采用狀態(tài)機(jī)或CPU指令方式實(shí)現(xiàn)需要幾百到數(shù)千個(gè)時(shí)鐘周期。而采用串行譯碼方式至少需要240個(gè)時(shí)鐘周期,而采用并行度為4的譯碼方式只需要60個(gè)時(shí)鐘周期就可以得到錯(cuò)誤位置方程。與中國(guó)專(zhuān)利申請(qǐng)200910024526.2中所描述的性能相比,在16bit糾錯(cuò)能力下,采用狀態(tài)機(jī)方式進(jìn)行譯碼,需要830個(gè)時(shí)鐘周期才能完成錯(cuò)誤位置多項(xiàng)式的BM迭代運(yùn)算。2)采用環(huán)狀循環(huán)電路,將錯(cuò)誤多項(xiàng)式系數(shù)的計(jì)算和迭代差值的計(jì)算緊密銜接,可以同時(shí)計(jì)算迭代差值和錯(cuò)誤位置多項(xiàng)式系數(shù)。3個(gè)GF域乘法器組一直處于工作狀態(tài),迭代過(guò)程中沒(méi)有時(shí)鐘周期處于等待狀態(tài),有效地減少了譯碼電路的延時(shí)。3)與采用狀態(tài)機(jī)或CPU指令方式實(shí)現(xiàn)BM譯碼相比,本并行迭代電路需要很少的面積,而且具有更高的譯碼速度;4)在實(shí)現(xiàn)相同糾錯(cuò)數(shù)據(jù)吞吐量的情況下,本發(fā)明所采用的并行迭代電路結(jié)構(gòu)在占用芯片面積上具有明顯的優(yōu)勢(shì)。4.糾錯(cuò)能力和并行度以上對(duì)偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路和并行迭代譯碼電路的描述只針對(duì)糾錯(cuò)能力為15bit,并行度為4的一個(gè)例子進(jìn)行說(shuō)明;通過(guò)舉例的方式對(duì)可糾正15位錯(cuò)誤的BM迭代電路譯碼過(guò)程進(jìn)行了一次完整描述,目的是便于理解迭代電路的工作原理。在此基礎(chǔ)上,所屬領(lǐng)域技術(shù)人員將容易意識(shí)到,對(duì)于具有t位糾錯(cuò)能力的偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路104,可以根據(jù)實(shí)際需要設(shè)計(jì)出具有其他并行度和周期數(shù)的排序電路,以及可得到相應(yīng)并行度的并行迭代譯碼電路。循環(huán)次數(shù)J,并行度p和周期數(shù)k與糾錯(cuò)能力t滿(mǎn)足如下關(guān)系循環(huán)次數(shù)J=t-l,并行度pX周期數(shù)k=t+l其中J,p,k,t均為自然數(shù),因此t+l為p的倍數(shù),因此p可以等于1到t+l中任意一個(gè)可以整除t+l的自然數(shù)。例如,對(duì)于15bit糾錯(cuò)能力,可以設(shè)計(jì)出循環(huán)次數(shù)為14,每次循環(huán)包含8個(gè)周期,每個(gè)周期并行輸出2個(gè)伴隨式的排序電路;也可以設(shè)計(jì)出循環(huán)次數(shù)為14,每次循環(huán)包含1個(gè)周期,每個(gè)周期并行輸出16個(gè)伴隨式的排序電路。對(duì)于糾錯(cuò)能力為8bit,可以設(shè)計(jì)出循環(huán)次數(shù)為7,每次循環(huán)包含3個(gè)周期,每個(gè)周期并行輸出3個(gè)伴隨式的排序電路。圖6示出了偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路,具有通用意義。圖中t為糾錯(cuò)能力,P為并行度,m為排序寄存器陣列的行數(shù),連續(xù)p個(gè)寄存器被劃分為一行,2t-l個(gè)RS寄存器單元共排列成m個(gè)滿(mǎn)行,滿(mǎn)足如下關(guān)系;2t+p<mXp《2t-l在圖6中,RS表示寄存器單元,RSji#p-l)寄存器單元具有周期排序移位和循環(huán)排序移位的功能,RSP—工寄存器單元,除了具有周期排序移位和循環(huán)排序移位的功能外,還具有偶數(shù)伴隨式計(jì)算的功能,表2列出了具有糾錯(cuò)能力為t,并行度為p的伴隨式的輸出順序。圖6中所示電路的工作方式與前面所敘述的偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(t=15,p=4)的工作方式一致,在此不再作重復(fù)描述。表2糾錯(cuò)能力為t,并行度為p的伴隨式輸出順序<table>tableseeoriginaldocumentpage17</column></row><table>對(duì)于具有t位糾錯(cuò)能力的并行迭代譯碼電路106,可以根據(jù)實(shí)際需要設(shè)計(jì)出具有其他并行度和周期數(shù)的迭代譯碼電路。其中迭代次數(shù)J,并行度P和周期數(shù)k滿(mǎn)足如下關(guān)系迭代次數(shù)J=t,并行度pX周期數(shù)k=t+1其中J,p,k,t均為自然數(shù),因此t+1為p的倍數(shù),因此p可以等于1到t+1中任意一個(gè)可以整除t+l的自然數(shù)。例如,對(duì)于15bit糾錯(cuò)能力,可以設(shè)計(jì)出迭代次數(shù)為15,每次迭代包含8個(gè)周期,并行度為2的迭代譯碼電路;也可以設(shè)計(jì)出循環(huán)次數(shù)為15,每次循環(huán)包含1個(gè)周期,并行度為16的迭代譯碼電路。對(duì)于糾錯(cuò)能力為8bit,可以設(shè)計(jì)出循環(huán)次數(shù)為8,每次循環(huán)包含3個(gè)周期,并行度為3的迭代譯碼電路。也可以采用包含執(zhí)行計(jì)算指令的微處理器的電路系統(tǒng)來(lái)實(shí)現(xiàn)偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路,并按照如表2所示出的伴隨式輸出順序,以向并行迭代譯碼電路輸出伴隨式。由于參照前述公式(1)可以容易地得到微處理器指令實(shí)現(xiàn)的BCH碼的伴隨式計(jì)算方法,因而為使本說(shuō)明書(shū)保持簡(jiǎn)潔,而不復(fù)贅述。圖7是示出了本發(fā)明的并行迭代譯碼電路結(jié)構(gòu)圖。為了滿(mǎn)足并行度p的計(jì)算,乘法器組由P個(gè)GF域乘法器組成,加法器組由p個(gè)GF域加法器組成,其工作方式和流程與前面所敘述的具有15位糾錯(cuò)能力并行度為p的并行迭代譯碼電路一致。對(duì)于糾錯(cuò)能力為t,并行度為p的BM迭代譯碼電路所需時(shí)鐘周期T為<formula>formulaseeoriginaldocumentpage17</formula>需要強(qiáng)調(diào)的是,偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路104和并行迭代譯碼電路106,需要具有相同的并行度p。在糾錯(cuò)能力t不變的情況下,并行度p越大,譯碼所需時(shí)鐘周期越少,BM譯碼電路的延時(shí)越?。煌瑫r(shí)并行度P越大,譯碼電路所占用的電路面積越大。因此,在實(shí)際應(yīng)用中可以根據(jù)譯碼系統(tǒng)對(duì)延時(shí)和電路占用面積的需求,靈活選取并行度。利用本發(fā)明中所公開(kāi)的譯碼電路,已實(shí)現(xiàn)了具有15位和8位糾錯(cuò)能力的BCH譯碼電路。對(duì)于具有15位糾錯(cuò)能力BCH譯碼電路,其數(shù)據(jù)吞吐量大于2GB/s,工作在250MHz時(shí)鐘頻率時(shí),平均BM迭代譯碼延時(shí)只有250ns。對(duì)于具有8位糾錯(cuò)能力的BCH譯碼電路,其數(shù)據(jù)吞吐量大于4.5GB/s,工作在250MHz時(shí)鐘頻率時(shí),平均BM迭代譯碼延時(shí)只有100ns。該電路已用于實(shí)現(xiàn)高速固態(tài)存儲(chǔ)設(shè)備的ECC模塊的設(shè)計(jì),提高了存儲(chǔ)系統(tǒng)的帶寬和IOPS,降低了整個(gè)存儲(chǔ)系統(tǒng)的延時(shí),減少上層軟件的IO操作等待時(shí)間。已經(jīng)為了示出和描述的目的而展現(xiàn)了對(duì)本發(fā)明的描述,并且不旨在以所公開(kāi)的形式窮盡或限制本發(fā)明。對(duì)所屬領(lǐng)域技術(shù)人員,許多調(diào)整和變化是顯而易見(jiàn)的。權(quán)利要求一種用于BCH譯碼器的高速低延時(shí)BM迭代譯碼電路,包括奇數(shù)伴隨式計(jì)算電路(102)、偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104)以及并行迭代譯碼電路(106);所述奇數(shù)伴隨式計(jì)算電路(102)用于接收BCH編碼的輸入數(shù)據(jù),以及計(jì)算所述BCH編碼的輸入數(shù)據(jù)的奇數(shù)伴隨式;耦合到奇數(shù)伴隨式計(jì)算電路(102)的輸出端的所述偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104),用于計(jì)算所述BCH編碼的輸入數(shù)據(jù)的偶數(shù)伴隨式,并將計(jì)算得到的奇數(shù)伴隨式與偶數(shù)伴隨式輸出給并行迭代譯碼電路(106),當(dāng)BCH編碼輸入數(shù)據(jù)可糾正t位錯(cuò)誤時(shí),所述偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104)在第1至第t-1次循環(huán)中的第j次循環(huán)中,當(dāng)j≤t/2時(shí),輸出伴隨式S2j+1、S2j、S2j-1......S1,當(dāng)j>t/2時(shí),輸出t+1個(gè)伴隨式S2j+1、S2j、S2j-1......S2j-t+2、S2j-t+1;若伴隨式S2j+1、S2j、S2j-1......S1的數(shù)量不足t+1個(gè),余下部分的輸出為任意值;在t-1次循環(huán)的每次中,包括k個(gè)周期,每個(gè)周期輸出依序號(hào)從大到小輸出p個(gè)伴隨式,k為正整數(shù),p*k=t+1;所述并行迭代譯碼電路(106)基于無(wú)逆運(yùn)算的BM算法利用所述偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104)輸出的伴隨式計(jì)算錯(cuò)誤位置多項(xiàng)式系數(shù);并行迭代譯碼電路(106)包括第一乘法器組(502)、第二乘法器組(508)、第三乘法器組(509)、多輸入加法器(503)、加法器組(510)、錯(cuò)誤多項(xiàng)式寄存器(511)、錯(cuò)誤多項(xiàng)式位置緩存(512)、輔助多項(xiàng)式緩存(513)、非零差值寄存器(507)以及迭代差值寄存器(504),所述乘法器和加法器均為GF域內(nèi)運(yùn)算器;對(duì)應(yīng)于所述偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104)的t-1次循環(huán),所述并行迭代譯碼電路(106)進(jìn)行t-1次迭代計(jì)算,以及所述并行迭代譯碼電路(106)還進(jìn)行第t次迭代計(jì)算,在每次迭代計(jì)算的k個(gè)周期的每個(gè)周期中,第一乘法器組(502)將所述偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104)的輸出與錯(cuò)誤多項(xiàng)式寄存器(511)存儲(chǔ)的值相乘,多輸入加法器(503)計(jì)算第一乘法器組(502)輸出的p個(gè)積與所述多輸入加法器(503)的前一周期的計(jì)算結(jié)果的和,第三乘法器組(509)將錯(cuò)誤位置多項(xiàng)式緩存(512)的p個(gè)值分別與非零差值寄存器(507)的值相乘,第二乘法器組(508)將輔助多項(xiàng)式緩存(513)的p個(gè)值分別與迭代差值寄存器(504)的值相乘,加法器組(510)將第二乘法器(508)輸出與第三乘法器(509)輸出相加,得到p個(gè)和,并輸出給錯(cuò)誤多項(xiàng)式寄存器(511),判斷迭代差值寄存器(504)是否等于零或者錯(cuò)誤位置多項(xiàng)式的維數(shù)是否大于迭代次數(shù)j如果迭代差值寄存器(504)不等于零并且錯(cuò)誤位置多項(xiàng)式的維數(shù)不大于迭代次數(shù)j,則將迭代差值寄存器(504)的值存儲(chǔ)到非零差值寄存器(507)中,錯(cuò)誤多項(xiàng)式寄存器(511)的輸出寄存在錯(cuò)誤位置多項(xiàng)式緩存(512)中,錯(cuò)誤位置多項(xiàng)式緩存(512)將前一周期計(jì)算得到的錯(cuò)誤位置多項(xiàng)式輸出給輔助多項(xiàng)式緩存(513);如果迭代差值寄存器(504)等于零或者錯(cuò)誤位置多項(xiàng)式的維數(shù)大于迭代次數(shù)j,則不更新非零差值寄存器507內(nèi)的值,也不更新輔助多項(xiàng)式緩存(513);以及在每次迭代計(jì)算的最后一個(gè)周期,用多輸入加法器(503)的輸出值,對(duì)迭代差值寄存器(504)進(jìn)行更新。2.根據(jù)權(quán)利要求1所述的BM迭代譯碼器,其中,在每次迭代計(jì)算之后,將迭代次數(shù)j加"l",判斷迭代次數(shù)j是否小于糾錯(cuò)能力"t";如果"是",則繼續(xù)下一次迭代計(jì)算,如果"否",完成該次迭代計(jì)算,在錯(cuò)誤位置多項(xiàng)式緩存(512)中得到錯(cuò)誤位置多項(xiàng)式。3.根據(jù)權(quán)利要求1或2所述的BM迭代譯碼器,其中,當(dāng)所述BCH編碼的輸入數(shù)據(jù)的奇數(shù)伴隨式不全為0時(shí),所述偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104)并行計(jì)算所述BCH編碼的輸入數(shù)據(jù)的偶數(shù)伴隨式,并將計(jì)算得到的奇數(shù)伴隨式與偶數(shù)伴隨式輸出給并行迭代譯碼電路(106)。4.根據(jù)權(quán)利要求1-3之一所述的BM迭代譯碼器,其中所述偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104),包括如權(quán)利要求6所述的GF(213)域的平方計(jì)算電路,用于計(jì)算伴隨式的平方以得到相應(yīng)的偶數(shù)伴隨式。5.根據(jù)權(quán)利要求l-4之一所述的BM迭代譯碼器,其中第一乘法器組(502)包含p個(gè)乘法器,其中每個(gè)乘法器的輸入是偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104)的輸出之一與錯(cuò)誤多項(xiàng)式寄存器(511)的輸出之一;第二乘法器組(508)包含p個(gè)乘法器,其中每個(gè)乘法器的輸入是輔助多項(xiàng)式緩存(513)的輸出之一與迭代差值寄存器(504)的輸出;第三乘法器組(509)包含p個(gè)乘法器,其中每個(gè)乘法器的輸入是錯(cuò)誤位置多項(xiàng)式緩存(512)的輸出之一與非零差值寄存器(507)的輸出;加法器組(510)包含p個(gè)加法器,其中每個(gè)加法器的輸入是第二乘法器組(508)的輸出之一與第三乘法器組(509)的輸出之一。6.—種GF(213)域的平方計(jì)算電路,包括13個(gè)信號(hào)輸入端,13個(gè)信號(hào)輸出端對(duì)第l信號(hào)輸入端與第12信號(hào)輸入端求異或,結(jié)果由第l信號(hào)輸出端輸出;對(duì)第8信號(hào)輸入端與第12信號(hào)輸入端以及第13信號(hào)輸入端求異或,結(jié)果由第2信號(hào)輸出端輸出;對(duì)第2信號(hào)輸入端與第8信號(hào)輸入端求異或,結(jié)果由第3信號(hào)輸出端輸出;對(duì)第9信號(hào)輸入端與第12信號(hào)輸入端以及第13信號(hào)輸入端求異或,結(jié)果由第4信號(hào)輸出端輸出;對(duì)第3信號(hào)輸入端、第8信號(hào)輸入端、第9信號(hào)輸入端、第12信號(hào)輸入端、第13信號(hào)輸入端求異或,結(jié)果由第5信號(hào)輸出端輸出;對(duì)第8信號(hào)輸入端與第10信號(hào)輸入端求異或,結(jié)果由第6信號(hào)輸出端輸出;對(duì)第4信號(hào)輸入端、第9信號(hào)輸入端、第10信號(hào)輸入端與第13信號(hào)輸入端求異或,結(jié)果由第7信號(hào)輸出端輸出;對(duì)第9信號(hào)輸入端與第11信號(hào)輸入端求異或,結(jié)果由第8信號(hào)輸出端輸出;對(duì)第5信號(hào)輸入端、第10信號(hào)輸入端與第11信號(hào)輸入端求異或,結(jié)果由第9信號(hào)輸出端輸出;對(duì)第IO信號(hào)輸入端與第12信號(hào)輸入端求異或,結(jié)果由第IO信號(hào)輸出端輸出;對(duì)第6信號(hào)輸入端、第11信號(hào)輸入端與第12信號(hào)輸入端求異或,結(jié)果由第11信號(hào)輸出端輸出;對(duì)第ll信號(hào)輸入端與第13信號(hào)輸入端求異或,結(jié)果由第12信號(hào)輸出端輸出;對(duì)第7信號(hào)輸入端、第12信號(hào)輸入端與第13信號(hào)輸入端求異或,結(jié)果由第13信號(hào)輸出端輸出。7.—種BCH譯碼器的高速BM迭代譯碼器,包括奇數(shù)伴隨式計(jì)算電路(102)、偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104)以及并行迭代譯碼電路(106);所述奇數(shù)伴隨式計(jì)算電路(102)用于接收BCH編碼的輸入數(shù)據(jù),以及計(jì)算所述BCH編碼的輸入數(shù)據(jù)的奇數(shù)伴隨式;耦合到奇數(shù)伴隨式計(jì)算電路(102)的輸出端的所述偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104),用于當(dāng)所述BCH編碼的輸入數(shù)據(jù)的奇數(shù)伴隨式不全為0時(shí),計(jì)算所述BCH編碼的輸入數(shù)據(jù)的偶數(shù)伴隨式,并將計(jì)算得到的奇數(shù)伴隨式與偶數(shù)伴隨式輸出給并行迭代譯碼電路(106);所述偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104)包括2t-2個(gè)第一排序寄存器單元RSji#p-l)和l個(gè)第二排序寄存器單元RSp—np表示所述偶數(shù)伴隨式計(jì)算及伴隨式排序電路(104)的并行度,所述的BM迭代譯碼電路的糾錯(cuò)能力為t,以及,所述2t-2個(gè)第一排序寄存器單元RSi(i#p-l)的每個(gè)接收排序寄存器單元RS卜p和排序寄存器單元RSi+t+3—p的輸出,所述第二排序寄存器單元RSP—工接收第一排序寄存器單元RS2t—2和排序寄存器單元RSt、RSt—pRSt—2......RS3的輸出,以及來(lái)自所述奇數(shù)伴隨式計(jì)算電路(102)的奇數(shù)伴隨式S1;在所述偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104)的t-l次循環(huán)的每次的第一周期,選擇排序寄存器單元RSi+t+3—p的輸出作為所述第一排序寄存器單元RSi(i#p-l)的輸出,在每次循環(huán)的其他k-l個(gè)周期,選擇排序寄存器單元RSi—p的輸出作為所述第一排序寄存器單元RSi(i#p-l)的輸出;在t次循環(huán)的每次的第一周期,對(duì)應(yīng)于循環(huán)次數(shù),依次計(jì)算伴隨式S^排序寄存器單元RSt、RSt—pRSt—2......RS4、RS3的輸出的平方,作為第二排序寄存器單元RSP—i的輸出,在每次循環(huán)的其他k-l個(gè)周期,選擇第一排序寄存器單元RS^2的輸出作為第二排序寄存器單元RSP—i的輸出;排序寄存器單元RSpRS2......RSP—pRSP的輸出作為所述偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104)的輸出,以及bp=t+l,k、p均為正整數(shù);所述并行迭代譯碼電路(106)基于無(wú)逆運(yùn)算的BM算法利用所述偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104)輸出的奇數(shù)伴隨式與偶數(shù)伴隨式計(jì)算錯(cuò)誤位置多項(xiàng)式系數(shù);并行迭代譯碼電路(106)包括第一乘法器組(502)、第二乘法器組(508)、第三乘法器組(509)、多輸入加法器(503)、加法器組(510)、錯(cuò)誤多項(xiàng)式寄存器(511)、錯(cuò)誤多項(xiàng)式位置緩存(512)、輔助多項(xiàng)式緩存(513)、非零差值寄存器(507)以及迭代差值寄存器(504),所述乘法器和加法器均為GF域內(nèi)運(yùn)算器;對(duì)應(yīng)于所述偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104)的t-l次循環(huán),所述并行迭代譯碼電路(106)進(jìn)行t-l次迭代計(jì)算,以及所述并行迭代譯碼電路(106)還進(jìn)行第t次迭代計(jì)算,在每次迭代計(jì)算的k個(gè)周期的每個(gè)周期中,第一乘法器組(502)將所述偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104)的輸出與錯(cuò)誤多項(xiàng)式寄存器(511)存儲(chǔ)的值相乘,多輸入加法器(503)計(jì)算第一乘法器組(502)輸出的p個(gè)積與所述多輸入加法器(503)的前一周期的計(jì)算結(jié)果的和,第三乘法器組(509)將錯(cuò)誤位置多項(xiàng)式緩存(512)的p個(gè)值分別與非零差值寄存器(507)的值相乘,第二乘法器組(508)將輔助多項(xiàng)式緩存(513)的p個(gè)值分別與迭代差值寄存器(504)的值相乘,加法器組(510)將第二乘法器(508)輸出與第三乘法器(509)輸出相加,得到p個(gè)和,并輸出給錯(cuò)誤多項(xiàng)式寄存器(511),判斷迭代差值寄存器(504)是否等于零或者錯(cuò)誤位置多項(xiàng)式的維數(shù)是否大于迭代次數(shù)j:如果迭代差值寄存器(504)不等于零并且錯(cuò)誤位置多項(xiàng)式的維數(shù)不大于迭代次數(shù)j,則將迭代差值寄存器(504)的值存儲(chǔ)到非零差值寄存器(507)中,錯(cuò)誤多項(xiàng)式寄存器(511)的輸出寄存在錯(cuò)誤位置多項(xiàng)式緩存(512)中,錯(cuò)誤位置多項(xiàng)式緩存(512)將前一周期計(jì)算得到的錯(cuò)誤位置多項(xiàng)式輸出給輔助多項(xiàng)式緩存(513);如果迭代差值寄存器(504)等于零或者錯(cuò)誤位置多項(xiàng)式的維數(shù)大于迭代次數(shù)j,則不更新非零差值寄存器507內(nèi)的值,也不更新輔助多項(xiàng)式緩存(513);以及在每次迭代計(jì)算的最后一個(gè)周期,用多輸入加法器(503)的輸出值,對(duì)迭代差值寄存器(504)進(jìn)行更新。8.—種用于BCH譯碼器的BM迭代譯碼電路,包括奇數(shù)伴隨式計(jì)算電路(102)、偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104)以及并行迭代譯碼電路(106);所述奇數(shù)伴隨式計(jì)算電路(102)用于接收BCH編碼的輸入數(shù)據(jù),以及計(jì)算所述BCH編碼的輸入數(shù)據(jù)的奇數(shù)伴隨式;所述偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104),計(jì)算所述BCH編碼的輸入數(shù)據(jù)的偶數(shù)伴隨式,在一個(gè)周期內(nèi),將P個(gè)伴隨式按照順序輸出給并行迭代譯碼電路(106),其中p為所述BCH譯碼器的并行度;所述并行迭代譯碼電路(106),用于計(jì)算所述BCH編碼的輸入數(shù)據(jù)的錯(cuò)誤方程式系數(shù),其特征在于,在一個(gè)時(shí)鐘周期內(nèi),所述并行迭代譯碼電路(106)將p個(gè)伴隨式轉(zhuǎn)化為p個(gè)錯(cuò)誤方程系數(shù)。9.根據(jù)權(quán)利要求8所述的BM迭代譯碼電路的糾錯(cuò)能力為t,所述偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104)和并行迭代譯碼電路(106)具有相同的并行度p,所述偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路(104)在t-l次循環(huán)中輸出伴隨式,在t-l次循環(huán)的每次中,包括k個(gè)周期;所述并行度p和周期數(shù)k與糾錯(cuò)能力t滿(mǎn)足如下關(guān)系pXk=t+l其中p,k,t均為自然數(shù)。全文摘要本發(fā)明公開(kāi)了一種用于BCH解碼器的高速低延時(shí)的Berlekamp-Massey迭代譯碼電路,該迭代譯碼電路包括由接收到的BCH編碼輸入數(shù)據(jù),計(jì)算出奇數(shù)伴隨式;利用偶數(shù)伴隨式逐次計(jì)算及伴隨式排序電路,計(jì)算出偶數(shù)伴隨式并將伴隨式按照特定順序并行輸出;最后通過(guò)并行迭代譯碼電路,并行計(jì)算出錯(cuò)誤位置方程。與現(xiàn)有技術(shù)相比,此譯碼電路具有極低的延時(shí),提高了BCH解碼器的糾錯(cuò)能力和帶寬。文檔編號(hào)H03M13/15GK101777922SQ20101003371公開(kāi)日2010年7月14日申請(qǐng)日期2010年1月12日優(yōu)先權(quán)日2010年1月12日發(fā)明者殷雪冰申請(qǐng)人:殷雪冰