專利名稱:一種糾錯(cuò)能力為2的擴(kuò)展里德—所羅門碼的譯碼方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種許多大容量存儲(chǔ)器采用的里德-所羅門碼對(duì)數(shù)據(jù)進(jìn)行處理作為差錯(cuò)控制的方法,特別是涉及一種糾錯(cuò)能力為2的擴(kuò)展里德-所羅門碼的譯碼方法。
背景技術(shù):
在信息的傳輸和存儲(chǔ)中,由于信道或者環(huán)境噪聲的干擾,往往會(huì)導(dǎo)致傳輸和存儲(chǔ)的信息發(fā)生錯(cuò)誤。1948年,香農(nóng)提出了信息論。其中,“有擾離散信道的信道編碼定理”指出通過增加信息的冗余進(jìn)行差錯(cuò)控制的技術(shù),即信息數(shù)據(jù)在傳輸和存儲(chǔ)前進(jìn)行編碼,在接收和提取數(shù)據(jù)時(shí)通過冗余信息譯碼,糾正在傳輸和存儲(chǔ)過程中發(fā)生的錯(cuò)誤。人們研究出了多種碼字和編譯碼方法。1960年,REED和SOLOMON提出了里德-所羅門碼,簡(jiǎn)稱RS碼。RS碼具有優(yōu)秀的糾突發(fā)錯(cuò)誤的能力,在無線通信和存儲(chǔ)系統(tǒng)中應(yīng)用廣泛。
由于RS碼自身的特點(diǎn),RS碼的譯碼方法本身比較復(fù)雜,譯碼方法的工程實(shí)現(xiàn)比較困難,工程成本較高,且難以達(dá)到理想的譯碼速度。一種RS碼的譯碼器能否工程實(shí)現(xiàn)以及工程實(shí)現(xiàn)的代價(jià)和效果如何,往往成為該RS碼是否實(shí)用的決定因素。而RS譯碼器的工程實(shí)現(xiàn)也成為工程技術(shù)人員研究和實(shí)踐的焦點(diǎn)。
大容量存儲(chǔ)器廣泛應(yīng)用于航天、工業(yè)、消費(fèi)電子等領(lǐng)域的數(shù)據(jù)存儲(chǔ)。惡劣的環(huán)境將造成存儲(chǔ)數(shù)據(jù)發(fā)生不可預(yù)見的錯(cuò)誤;在消費(fèi)電子領(lǐng)域的磁、光存儲(chǔ)介質(zhì),也會(huì)由于物理破損造成數(shù)據(jù)丟失和損壞。因此,數(shù)據(jù)的正確可靠和高速存取技術(shù)是大容量存儲(chǔ)器的關(guān)鍵技術(shù)之一。目前,許多大容量存儲(chǔ)器都采用了RS碼對(duì)數(shù)據(jù)進(jìn)行處理作為差錯(cuò)控制的措施。但是,由于大容量存儲(chǔ)器自身的特點(diǎn),如要求保證相當(dāng)高的存儲(chǔ)容量,高速數(shù)據(jù)存取,控制復(fù)雜邏輯等等,都要求采用一種簡(jiǎn)單高效的RS碼字和有效的譯碼方法,運(yùn)算速度快,而且易于工程實(shí)現(xiàn)。
發(fā)明內(nèi)容
本發(fā)明的目的在于為了克服由于RS碼的譯碼方法復(fù)雜,不利于工程實(shí)現(xiàn)或者實(shí)現(xiàn)的譯碼器速度較慢的缺點(diǎn),從而提供一種能夠?qū)Υ笕萘看鎯?chǔ)器中經(jīng)過RS(256,252)編碼的數(shù)據(jù)進(jìn)行高速糾錯(cuò)譯碼,糾正兩個(gè)字節(jié)以內(nèi)的錯(cuò)誤,整個(gè)糾錯(cuò)譯碼電路全部在可編程邏輯器件(可以是FPGA)芯片中實(shí)現(xiàn)的里德-所羅門碼的糾錯(cuò)譯碼方法,該方法適用于糾錯(cuò)能力為2的擴(kuò)展RS碼。
本發(fā)明所述的糾錯(cuò)譯碼方法中所涉及的各項(xiàng)參數(shù)為S(S0,S1,S2,S3)伴隨式(Syndrome);H校驗(yàn)矩陣;R待譯碼的數(shù)據(jù)塊;FIFO先入先出緩存;n每個(gè)待譯碼的數(shù)據(jù)塊中碼字的個(gè)數(shù);k每個(gè)待譯碼的數(shù)據(jù)塊中信息元的個(gè)數(shù);B0、B1、B2、E、CO0、CO1輔助參數(shù),其中B1、B2用于錯(cuò)誤情況的判斷;B0、B1、B2還是第五種情況下求解錯(cuò)誤發(fā)生位置的二元一次方程的系數(shù);E為第四種錯(cuò)誤情況下的一個(gè)錯(cuò)誤值,CO0、CO1是第五種錯(cuò)誤情況下的錯(cuò)誤值計(jì)算方程的系數(shù);α有限域的本原元;RS(n-1,k)擴(kuò)展前的原RS碼,原碼僅能糾正1個(gè)碼字的錯(cuò)誤。
RS(n,k)擴(kuò)展后的RS碼,是通過增加一個(gè)附加校驗(yàn)碼字?jǐn)U展而來的。該附加校驗(yàn)碼字為前面n-1個(gè)碼字的代數(shù)和。擴(kuò)展后碼塊共有n個(gè)碼字,且n-k=4,能夠糾正兩個(gè)碼字的錯(cuò)誤。
本發(fā)明所提供的一種里德-所羅門碼的糾錯(cuò)譯碼方法,包括如下步驟(1)首先將待譯碼數(shù)據(jù)塊輸入計(jì)算伴隨式計(jì)算電路,計(jì)算伴隨式S(S0,S1,S2,S3);同時(shí),將輸入的RS編碼數(shù)據(jù)R(x)存入FIFO(先入先出緩存);其中存儲(chǔ)數(shù)據(jù)的多項(xiàng)式表達(dá)式R(x)=rn-1xn-1+...+r1x1+r0,其中r0為附加校驗(yàn)碼字;由信道編碼理論,伴隨式SS=R·HT=(S0,S1,S2,S3)=(r0,r1,...,rn-1)·HT;(2)計(jì)算下一步驟(3)和步驟(4)所需要的輔助參數(shù)B0、B1、B2、E、CO0和CO1;計(jì)算公式如下
B0=S12+S0S2]]>B1=S22+S1S3]]>B2=S1S2+S0S3E=S1S2/S3CO0=B0S1/B2CO1=B1S0/B2(3)根據(jù)步驟(1)所得到的伴隨式S(S0,S1,S2,S3),和步驟(2)所得到的輔助參數(shù),來判斷錯(cuò)誤碼字的個(gè)數(shù)和錯(cuò)誤碼字出現(xiàn)的位置或范圍,再選擇錯(cuò)誤值和錯(cuò)誤位置不同的計(jì)算模式;(4)根據(jù)步驟(3)的判斷情況,再求出錯(cuò)位置和相應(yīng)的錯(cuò)誤值;(5)將緩存的數(shù)據(jù)與對(duì)應(yīng)位置的錯(cuò)誤值相加,進(jìn)行糾錯(cuò);截除糾錯(cuò)后數(shù)據(jù)的所有校驗(yàn)碼字,完成譯碼。
在上述技術(shù)方案的步驟(3)中,所述的判斷依據(jù)第一種情況,說明本塊數(shù)據(jù)是正確的,沒有發(fā)生過錯(cuò)誤,不需要進(jìn)行糾錯(cuò);第二種情況,說明本塊數(shù)據(jù)發(fā)生了一個(gè)錯(cuò)誤,出現(xiàn)在附加校驗(yàn)碼字,也就是最后一個(gè)碼字發(fā)生了錯(cuò)誤;第三種情況,說明本塊數(shù)據(jù)發(fā)生了一個(gè)錯(cuò)誤,出現(xiàn)在附加校驗(yàn)碼字以外的某一個(gè)碼字,也就是前n-1個(gè)碼字發(fā)生了一個(gè)錯(cuò)誤;第四種情況,說明本塊數(shù)據(jù)發(fā)生了兩個(gè)錯(cuò)誤,出現(xiàn)在附加校驗(yàn)碼字和某非附加校驗(yàn)碼字,也就是前n-1碼字中某一個(gè)碼字發(fā)生了錯(cuò)誤,同時(shí)最后一個(gè)碼字也發(fā)生了錯(cuò)誤;第五種情況,說明本塊數(shù)據(jù)發(fā)生了兩個(gè)錯(cuò)誤,出現(xiàn)在附加校驗(yàn)碼字以外的兩個(gè)碼字,也就是說前n-1碼字中某兩個(gè)碼字發(fā)生了錯(cuò)誤;其他情況。對(duì)于發(fā)生兩個(gè)以上錯(cuò)誤的其他任何情況,超出RS(n,k)碼的糾錯(cuò)和檢錯(cuò)能力,譯碼器不能識(shí)別,仍視為第五種情況,見表1;在上述技術(shù)方案的步驟(4)中,根據(jù)步驟(3)的判斷結(jié)果和步驟(1)、(2)的計(jì)算結(jié)果,分情況進(jìn)行糾錯(cuò)處理對(duì)于第一種情況,直接輸出緩存數(shù)據(jù),不做處理;對(duì)于第二種情況,附加校驗(yàn)字節(jié)出現(xiàn)錯(cuò)誤,其錯(cuò)誤值為S0;對(duì)于第三種情況,非附加校驗(yàn)字節(jié)出現(xiàn)了一個(gè)錯(cuò)誤,其錯(cuò)誤值為S0。差錯(cuò)位置方程S2+S1αi=0的解,即為發(fā)生錯(cuò)誤的位置αi;
對(duì)于第四種情況,附加校驗(yàn)字節(jié)的錯(cuò)誤值是E+S0,非附加校驗(yàn)字節(jié)的錯(cuò)誤值是E,差錯(cuò)位置方程S2+S1αi=0的解,即為非附加校驗(yàn)字節(jié)中發(fā)生錯(cuò)誤的位置αi;對(duì)于第五種情況,差錯(cuò)位置方程B0(αi)2+B2αi+B1=0的兩個(gè)解αi和αj為發(fā)生錯(cuò)誤的位置,對(duì)應(yīng)的錯(cuò)誤值分別為CO1α-i+CO0和CO1α-j+CO0。
本發(fā)明方法的優(yōu)點(diǎn)在于本發(fā)明所提供的糾錯(cuò)譯碼方法采用糾錯(cuò)能力為兩個(gè)字節(jié)的RS(256,252)碼。因?yàn)镽S(256,252)碼是RS(255,252)碼通過增加一個(gè)附加校驗(yàn)字節(jié)得到的擴(kuò)展碼,使得大容量存儲(chǔ)器的糾錯(cuò)能力從1個(gè)字節(jié)提高到2個(gè)字節(jié),該糾錯(cuò)能力已足夠能滿足空間探測(cè)、工業(yè)控制和磁、光介質(zhì)的存儲(chǔ)設(shè)備差錯(cuò)控制的需要,而且譯碼比較簡(jiǎn)單。另一個(gè)選擇RS(256,252)碼的重要原因是,在256字節(jié)存儲(chǔ)數(shù)據(jù)中,有252字節(jié)的信息數(shù)據(jù),僅有4字節(jié)數(shù)據(jù)是額外增加的校驗(yàn)字節(jié),在整個(gè)存儲(chǔ)數(shù)據(jù)中占很小的比例,所以采用這種差錯(cuò)控制編譯碼對(duì)存儲(chǔ)容量影響很小。同時(shí),數(shù)字存儲(chǔ)設(shè)備的存儲(chǔ)單位一般是2的整數(shù)次冪,存取指令的操作單位也往往是以2的整數(shù)次冪。而RS(256,252)碼通過擴(kuò)展,把每塊碼字的長(zhǎng)度從255增加為256字節(jié),即2的8次冪,使用起來非常方便。該方法糾錯(cuò)能力強(qiáng),譯碼簡(jiǎn)單,并且譯碼速度快,特別是易于工程實(shí)現(xiàn)。
圖1是本發(fā)明提供的一種糾錯(cuò)譯碼的方法的流程圖;圖2是實(shí)施本發(fā)明方法的一種RS(256,252)碼糾錯(cuò)譯碼系統(tǒng)組成框圖。
圖3是實(shí)施本發(fā)明方法的系統(tǒng)中的RS(256,252)碼糾錯(cuò)譯碼芯片電路框圖。
圖4是實(shí)施本發(fā)明方法的系統(tǒng)中的伴隨式計(jì)算電路框圖。
圖5是實(shí)施本發(fā)明方法的系統(tǒng)中的有限域乘除運(yùn)算電路框圖。
圖6A,圖6B,圖6C分別是實(shí)施本發(fā)明方法的系統(tǒng)中的有限域GF(28)元素乘以α,α2和α3的電路框圖。
圖7是實(shí)施本發(fā)明方法的系統(tǒng)中芯片的一種工作時(shí)序信號(hào)波形圖。
圖面說明1 輸入接口電路2 糾錯(cuò)譯碼電路 3 糾錯(cuò)譯碼電路4 輸出接口電路5 伴隨式計(jì)算電路6 輔助參數(shù)計(jì)算電路7 錯(cuò)誤情況判斷電路8 FIFO電路 9 錯(cuò)誤值按錯(cuò)誤位置輸出電路10 糾錯(cuò)譯碼電路11 錯(cuò)誤字節(jié)計(jì)數(shù)電路91 糾錯(cuò)選擇電路a0,a1,a2,a3,a4,a5,a6,a7 1位寄存器b0,b1,b2,b3,b4,b5,b6,b7 1位寄存器c0,c1,c2,c3,c4,c5,c6,c7 1位寄存器具體實(shí)施方式
下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明做進(jìn)一步詳細(xì)描述。
以RS(256,252)碼為例,使用本發(fā)明所述的方法進(jìn)行RS(256,252)碼的糾錯(cuò)譯碼,RS(256,252)是從RS(255,252)擴(kuò)展得到的糾錯(cuò)能力為2的擴(kuò)展里德-所羅門碼。
現(xiàn)有一塊正確的RS(256,252)碼碼字?jǐn)?shù)據(jù),共256字節(jié)數(shù)據(jù),按照輸入順序?yàn)?1)8’h01;(2)8′h02;(3)8′h02;(4)8′h04;(5)8′h0F;(6)8′hF0;(7)-(251)8′h00;(252)8′h81;(253)8′h86;(254)8′h66;(255)8′h06;(256)8′h9D;上述數(shù)據(jù)都以16進(jìn)制表示,“8”表示每次輸入數(shù)據(jù)的寬度,即位數(shù),“h”表示十六進(jìn)制,其中第七字節(jié)到第二百五十一字節(jié)的數(shù)據(jù)值都是8’h00。
實(shí)施例1使用本發(fā)明所述的譯碼方法對(duì)RS(256,252)碼進(jìn)行糾錯(cuò)譯碼,在本實(shí)施例中假設(shè)RS(256,252)碼字中沒有錯(cuò)誤。糾錯(cuò)譯碼過程如下。
1)首先將待譯碼數(shù)據(jù)塊輸入伴隨式計(jì)算電路,計(jì)算伴隨式S(S0,S1,S2,S3);同時(shí),將輸入的RS編碼數(shù)據(jù)R(x)存入FIFO(先入先出緩存);在本實(shí)施例中就是要將256字節(jié)數(shù)據(jù)存入先入先出緩存,并計(jì)算關(guān)于這些數(shù)據(jù)的伴隨式,得到伴隨式的結(jié)果S0=S1=S2=S3=0。
2)根據(jù)步驟1)的伴隨式計(jì)算結(jié)果S(S0,S1,S2,S3),計(jì)算步驟3)和步驟4)需要的輔助參數(shù)B0、B1、B2、E、CO0和CO1,計(jì)算公式為B0=S12+S0S2,]]>B0=S22+S1S3,]]>B2=S1S2+S0S3,E=S1S2/S3,CO0=B0S1/B2,CO1=B1S0/B2;從上述伴隨式的結(jié)果很容易知道以上輔助參數(shù)的值為0或不存在。
3)從步驟1)和2)的計(jì)算結(jié)果S(S0,S1,S2,S3)和B1、B2,根據(jù)錯(cuò)誤情況判斷表1,來確定錯(cuò)誤碼字的個(gè)數(shù)和錯(cuò)誤碼字出現(xiàn)的位置或范圍,本發(fā)明方法共有以下五種判斷情況第一種情況,如果S0=S1=S2=S3=0,說明本塊數(shù)據(jù)是正確的,沒有發(fā)生過錯(cuò)誤,不需要進(jìn)行糾錯(cuò);第二種情況,如果S0≠0,S1=S2=S3=0,說明本塊數(shù)據(jù)發(fā)生了一個(gè)錯(cuò)誤,出現(xiàn)在附加校驗(yàn)碼字;第三種情況,如果S1≠0,S2≠0,S3≠0,B1=B2=0,說明本塊數(shù)據(jù)發(fā)生了一個(gè)錯(cuò)誤,出現(xiàn)在附加校驗(yàn)碼字以外的某一個(gè)碼字;第四種情況,如果S1≠0,S2≠0,S3≠0,B1=0,B2≠0,說明本塊數(shù)據(jù)發(fā)生了兩個(gè)錯(cuò)誤,出現(xiàn)在附加校驗(yàn)碼字和某非附加校驗(yàn)碼字;第五種情況,如果S1≠0,S2≠0,S3≠0,B1≠0,說明本塊數(shù)據(jù)發(fā)生了兩個(gè)錯(cuò)誤,出現(xiàn)在附加校驗(yàn)碼字以外的兩個(gè)碼字;其他情況,對(duì)于發(fā)生兩個(gè)以上錯(cuò)誤的其他任何情況,超出RS(n,k)碼的糾錯(cuò)和檢錯(cuò)能力,譯碼器不能識(shí)別,仍視為第五種情況;在本實(shí)施例中,由步驟1)中伴隨式的計(jì)算結(jié)果判斷應(yīng)該是第一種情況,即本塊數(shù)據(jù)是正確的,沒有發(fā)生過錯(cuò)誤,不需要進(jìn)行糾錯(cuò)。
4)根據(jù)3)的判斷結(jié)果,計(jì)算錯(cuò)誤位置和對(duì)應(yīng)位置出現(xiàn)的錯(cuò)誤值;本發(fā)明方法共有五種不同的處理情況對(duì)于第一種情況,直接輸出緩存數(shù)據(jù),不做處理;對(duì)于第二種情況,附加校驗(yàn)字節(jié)出現(xiàn)錯(cuò)誤,其錯(cuò)誤值為S0;對(duì)于第三種情況,非附加校驗(yàn)字節(jié)出現(xiàn)了一個(gè)錯(cuò)誤,其錯(cuò)誤值為S0,差錯(cuò)位置方程S2+S1αi=0的解,即為發(fā)生錯(cuò)誤的位置αi;對(duì)于第四種情況,附加校驗(yàn)字節(jié)的錯(cuò)誤值是E+S0,非附加校驗(yàn)字節(jié)的錯(cuò)誤值是E,差錯(cuò)位置方程S2+S1αi=0的解,即為非附加校驗(yàn)字節(jié)中發(fā)生錯(cuò)誤的位置αi;對(duì)于第五種情況,差錯(cuò)位置方程B0(αi)2+B2αi+B1=0的兩個(gè)解αi和αj為發(fā)生錯(cuò)誤的位置,對(duì)應(yīng)的錯(cuò)誤值分別為CO1α-i+CO0和CO1α-j+CO0。
具體到本實(shí)施例,由步驟3)判斷出本實(shí)施例屬于第一種情況,故直接輸出緩存數(shù)據(jù)。
5)將緩存中的數(shù)據(jù)與錯(cuò)誤值相加,進(jìn)行糾錯(cuò);最后截除校驗(yàn)碼字,完成糾錯(cuò)譯碼。
在本實(shí)施例中,數(shù)據(jù)沒有發(fā)生錯(cuò)誤,故本步驟可跳過。
最終的譯碼結(jié)果(1)8’h01;(2)8′h02;(3)8′h02;(4)8′h04;(5)8′h0F;(6)8′hF0;(7)-(251)8′h00;(252)8′h81。
實(shí)施例2本實(shí)施例中,如果上述正確的RS(256,252)碼碼字的第256字節(jié)的數(shù)據(jù)發(fā)生了錯(cuò)誤,從8′h9D變成了8′h0D。使用本發(fā)明所述的譯碼方法對(duì)其進(jìn)行糾錯(cuò)譯碼。
1)首先將待譯碼數(shù)據(jù)塊輸入伴隨式計(jì)算電路,計(jì)算伴隨式S(S0,S1,S2,S3),同時(shí),將輸入的RS編碼數(shù)據(jù)R(x)存入FIFO(先入先出緩存)。在本實(shí)施例中,伴隨式計(jì)算結(jié)果為S0=8′h90≠0,S1=S2=S3=0。
2)根據(jù)步驟1)的伴隨式計(jì)算結(jié)果S(S0,S1,S2,S3),計(jì)算步驟3)和步驟4)需要的輔助參數(shù)B0、B1、B2、E、CO0和CO1,計(jì)算公式為B0=S12+S0S2,]]>B1=S22+S1S3,]]>B2=S1S2+S0S3,E=S1S2/S3,CO0=B0S1/B2,CO1=B1S0/B2。
在本實(shí)施例中,各個(gè)輔助參數(shù)為0或不存在。
3)從步驟1)和2)的計(jì)算結(jié)果S(S0,S1,S2,S3)和B1、B2,根據(jù)錯(cuò)誤情況判斷表1,來確定錯(cuò)誤碼字的個(gè)數(shù)和錯(cuò)誤碼字出現(xiàn)的位置,各種可能的判斷情況在實(shí)施例1中已經(jīng)做了詳細(xì)描述。在本實(shí)施例中,由S0=8′h90≠0,S1=S2=S3=0,判斷出本塊數(shù)據(jù)發(fā)生了一個(gè)錯(cuò)誤,出現(xiàn)在附加校驗(yàn)碼字。
4)根據(jù)3)的判斷結(jié)果,計(jì)算錯(cuò)誤位置和對(duì)應(yīng)位置出現(xiàn)的錯(cuò)誤值;在本實(shí)施例中,錯(cuò)誤發(fā)生在附加校驗(yàn)碼字,錯(cuò)誤值為S0,即8’h90。
5)將緩存中的數(shù)據(jù)與錯(cuò)誤值相加,進(jìn)行糾錯(cuò);最后截除校驗(yàn)碼字,完成糾錯(cuò)譯碼。在本實(shí)施例中,即將最后1個(gè)字節(jié)8′h0D“加上(異或)”錯(cuò)誤值8’h90,得到正確值8’h9D,完成糾錯(cuò),最后截除校驗(yàn)碼字,輸出數(shù)據(jù)。得到(1)8’h01;
(2)8′h02;(3)8′h02;(4)8′h04;(5)8′h0F;(6)8′hF0;(7)-(251)8′h00;(252)8′h81;實(shí)施例3本實(shí)施例中,如果上述正確的RS(256,252)碼碼字的第1個(gè)字節(jié)的數(shù)據(jù)發(fā)生了錯(cuò)誤,從8′h01變成了8′h0A。使用本發(fā)明所述的譯碼方法對(duì)其進(jìn)行糾錯(cuò)譯碼。
1)首先將待譯碼數(shù)據(jù)塊輸入伴隨式計(jì)算電路,計(jì)算伴隨式S(S0,S1,S2,S3);同時(shí),將輸入的RS編碼數(shù)據(jù)R(x)存入FIFO(先入先出緩存);在本實(shí)施例中就是要將256字節(jié)數(shù)據(jù)存入先入先出緩存,并計(jì)算關(guān)于這些數(shù)據(jù)的伴隨式,結(jié)果為S0=8’h0B≠0,S1=8′h8B≠0,S2=8′hCB≠0,S3=8′hEB≠0。
2)根據(jù)步驟1)的伴隨式計(jì)算結(jié)果S(S0,S1,S2,S3),計(jì)算步驟3)和步驟4)需要的輔助參數(shù)B0、B1、B2、E、CO0和CO1,計(jì)算公式為B0=S12+S0S2,]]>B1=S22+S1S3,]]>B2=S1S2+S0S3,E=S1S2/S3,CO0=B0S1/B2,CO1=B1S0/B2。
本實(shí)施例中,輔助參數(shù)的計(jì)算結(jié)果為B1=B2=0。
3)從步驟1)和2)的計(jì)算結(jié)果S(S0,S1,S2,S3)和B1、B2,根據(jù)錯(cuò)誤情況判斷表1,來確定錯(cuò)誤碼字的個(gè)數(shù)和錯(cuò)誤碼字出現(xiàn)的位置,各種可能的判斷情況在實(shí)施例1中已經(jīng)做了詳細(xì)描述。在本實(shí)施例中,由上述的伴隨式結(jié)果和輔助參數(shù),可知本塊數(shù)據(jù)發(fā)生了一個(gè)錯(cuò)誤,出現(xiàn)在附加校驗(yàn)碼字以外的某一個(gè)碼字。
4)根據(jù)3)的判斷結(jié)果,計(jì)算錯(cuò)誤位置和對(duì)應(yīng)位置出現(xiàn)的錯(cuò)誤值;本實(shí)施例中,錯(cuò)誤值是S0,即8’h0B,由差錯(cuò)位置方程S2+S1αi=0求發(fā)生錯(cuò)誤的位置αi,可知本實(shí)施例中錯(cuò)誤碼字出現(xiàn)的位置是在碼字的第1個(gè)字節(jié)。
5)將緩存中的數(shù)據(jù)與錯(cuò)誤值相加,進(jìn)行糾錯(cuò);最后截除校驗(yàn)碼字,完成糾錯(cuò)譯碼。在本實(shí)施例中,第1個(gè)字節(jié)8′h0A“加上(異或)”錯(cuò)誤值8’h0B,得到正確值8’h01,最后截除校驗(yàn)字節(jié),得到(1)8’h01;(2)8′h02;(3)8′h02;(4)8′h04;(5)8′h0F;(6)8′hF0;(7)-(251)8′h00;
(252)8′h81。
實(shí)施例4本實(shí)施例中,如果上述正確的RS(256,252)碼碼字的第3字節(jié)和第256字節(jié)的數(shù)據(jù)都發(fā)生了錯(cuò)誤,前者從8′h02變成了8′h8A,后者從8’h9D變成了8’h62。使用本發(fā)明所述的譯碼方法對(duì)其進(jìn)行糾錯(cuò)譯碼。
1)首先將待譯碼數(shù)據(jù)塊輸入伴隨式計(jì)算電路,計(jì)算伴隨式S(S0,S1,S2,S3);同時(shí),將輸入的RS編碼數(shù)據(jù)R(x)存入FIFO(先入先出緩存);在本實(shí)施例中就是要將256字節(jié)數(shù)據(jù)存入先入先出緩存,并計(jì)算關(guān)于這些數(shù)據(jù)的伴隨式,結(jié)果為S0=8’h77,S1=8′h11≠0,S2=8′hAF≠0,S3=8′h71≠0。
2)根據(jù)步驟1)的伴隨式計(jì)算結(jié)果S(S0,S1,S2,S3),計(jì)算步驟3)和步驟4)需要的輔助參數(shù)B0、B1、B2、E、CO0和CO1,計(jì)算公式為B0=S12+S0S2,]]>B1=S22+S1S3,]]>B2=S1S2+S0S3,E=S1S2/S3,CO0=B0S1/B2,CO1=B1S0/B2。
本實(shí)施例中,B1=0,B2=8′h13≠0,E=8’h88。
3)從步驟1)和2)的計(jì)算結(jié)果S(S0,S1,S2,S3)和B1、B2,根據(jù)錯(cuò)誤情況判斷表1,來確定錯(cuò)誤碼字的個(gè)數(shù)和錯(cuò)誤碼字出現(xiàn)的位置,各種可能的判斷情況在實(shí)施例1中做了詳細(xì)描述。本實(shí)施例中,由S1≠0,S2≠0,S3≠0,B1=0,B2≠0,說明本塊數(shù)據(jù)發(fā)生了兩個(gè)錯(cuò)誤,出現(xiàn)在附加校驗(yàn)碼字和某非附加校驗(yàn)碼字。
4)根據(jù)3)的判斷結(jié)果,計(jì)算錯(cuò)誤位置和對(duì)應(yīng)位置出現(xiàn)的錯(cuò)誤值;本實(shí)施例中,附加校驗(yàn)字節(jié)的錯(cuò)誤值是E+S0=8′h88+8′h77=8′hFF,非附加校驗(yàn)字節(jié)的錯(cuò)誤值是E=8’h88,差錯(cuò)位置方程S2+S1αi=0的解,就是非附加校驗(yàn)字節(jié)中發(fā)生錯(cuò)誤的位置αi,計(jì)算結(jié)果為第3個(gè)字節(jié)發(fā)生錯(cuò)誤。
5)將緩存中的數(shù)據(jù)與錯(cuò)誤值相加,進(jìn)行糾錯(cuò);最后截除校驗(yàn)碼字,完成糾錯(cuò)譯碼。本實(shí)施例中,第3個(gè)字節(jié)8′h8A“加上(異或)”錯(cuò)誤值8’h88,得到正確值8’h02,最后1個(gè)字節(jié)8’h62加上8’hFF,得到正確值8’h9D。將數(shù)據(jù)截除校驗(yàn)字節(jié),得到(1)8’h01;(2)8′h02;(3)8′h02;(4)8′h04;(5)8′h0F;(6)8′hF0;(7)-(251)8′h00;
(252)8′h81。
實(shí)施例5本實(shí)施例中,如果上述正確的RS(256,252)碼碼字的第1字節(jié)和第4字節(jié)的數(shù)據(jù)都發(fā)生了錯(cuò)誤,前者從8′h01變成了8′h9E,后者從8’h04變成了8’hFB。使用本發(fā)明所述的譯碼方法對(duì)其進(jìn)行糾錯(cuò)譯碼。
1)首先將待譯碼數(shù)據(jù)塊輸入伴隨式計(jì)算電路,計(jì)算伴隨式S(S0,S1,S2,S3);同時(shí),將輸入的RS編碼數(shù)據(jù)R(x)存入FIFO(先入先出緩存);本實(shí)施例中,伴隨式的計(jì)算結(jié)果為S1=8′h72≠0,S2=8′h90≠0,S3=8′h14≠0。
2)根據(jù)步驟1)的伴隨式計(jì)算結(jié)果S(S0,S1,S2,S3),計(jì)算步驟3)和步驟4)需要的輔助參數(shù)B0、B1、B2、E、CO0和CO1,計(jì)算公式為B0=S12+S0S2,]]>B1=S22+S1S3,]]>B2=S1S2+S0S3,E=S1S2/S3,CO0=B0S1/B2,CO1=B1S0/B2。
本實(shí)施例中,B1=8′hA8≠0,CO0=8’h41,CO1=8’h6F。
3)從步驟1)和2)的計(jì)算結(jié)果S(S0,S1,S2,S3)和B1、B2,根據(jù)錯(cuò)誤情況判斷表1,來確定錯(cuò)誤碼字的個(gè)數(shù)和錯(cuò)誤碼字出現(xiàn)的位置,各種可能的判斷情況在實(shí)施例1中做了詳細(xì)描述。本實(shí)施例中,S1≠0,S2≠0,S3≠0,B1≠0,說明本塊數(shù)據(jù)發(fā)生了兩個(gè)錯(cuò)誤,出現(xiàn)在附加校驗(yàn)碼字以外的兩個(gè)碼字。
4)根據(jù)3)的判斷結(jié)果,計(jì)算錯(cuò)誤位置和對(duì)應(yīng)位置出現(xiàn)的錯(cuò)誤值;本實(shí)施例中,由差錯(cuò)位置方程B0(αi)2+B2αi+B1=0的兩個(gè)解αi和αj求出發(fā)生錯(cuò)誤的位置,對(duì)應(yīng)的錯(cuò)誤值分別為 CO1α-i+CO0和CO1α-j+CO0。將相關(guān)值代入,可知發(fā)生錯(cuò)誤的碼字分別為第1個(gè)字節(jié)和第4個(gè)字節(jié),錯(cuò)誤值分別為8’h9F和8’hFF。
5)將緩存中的數(shù)據(jù)與錯(cuò)誤值相加,進(jìn)行糾錯(cuò);最后截除校驗(yàn)碼字,完成糾錯(cuò)譯碼。本實(shí)施例中,第1個(gè)字節(jié)8′h9E“加上(異或)”錯(cuò)誤值8’h9F,得到正確值8’h01,第4個(gè)字節(jié)8’hFB加上8’hFF,得到正確值8’h04。最后截除校驗(yàn)字節(jié)得到(1)8’h01;(2)8′h02;(3)8′h02;(4)8′h04;(5)8′h0F;(6)8′hF0;(7)-(251)8′h00;
(252)8′h81。
本發(fā)明的糾錯(cuò)方法是在參見圖2所做的系統(tǒng)上進(jìn)行的,本實(shí)施例提供的RS(256,252)碼糾錯(cuò)譯碼系統(tǒng),包括輸入接口電路1,糾錯(cuò)譯碼電路2和3,以及輸出接口電路4。輸入接口電路1一方面與具體的系統(tǒng)環(huán)境相連接,從系統(tǒng)中得到時(shí)鐘、復(fù)位、讀寫控制、片選等控制信號(hào)和數(shù)據(jù)/地址信號(hào),另一方面與糾錯(cuò)譯碼電路2和3相連,供給糾錯(cuò)譯碼電路正確的數(shù)據(jù)輸入和糾錯(cuò)譯碼使能信號(hào)。輸出接口電路4與糾錯(cuò)譯碼電路2和3相連接,獲得糾錯(cuò)譯碼結(jié)果,并給下級(jí)設(shè)備輸出串行數(shù)據(jù)和串行數(shù)據(jù)時(shí)鐘。
糾錯(cuò)譯碼電路是本實(shí)施例提供的芯片的核心。參見圖3。256字節(jié)數(shù)據(jù)進(jìn)入伴隨式計(jì)算電路5計(jì)算伴隨式,數(shù)據(jù)同時(shí)進(jìn)入FIFO電路8。輔助參數(shù)計(jì)算電路6與電路5連接,根據(jù)伴隨式計(jì)算電路5的輸出來計(jì)算輔助參數(shù)。錯(cuò)誤情況判斷電路7分別與伴隨式計(jì)算電路5和輔助參數(shù)計(jì)算電路6相連接,根據(jù)伴隨式計(jì)算電路5和輔助參數(shù)計(jì)算6的計(jì)算結(jié)果,電路7判斷256字節(jié)數(shù)據(jù)的錯(cuò)誤情況。錯(cuò)誤位置按錯(cuò)誤位置輸出電路9與電路7相連接,根據(jù)錯(cuò)誤情況判斷電路7的輸出結(jié)果,錯(cuò)誤值按錯(cuò)誤位置輸出電路9中的糾錯(cuò)選擇電路91選擇不同的子模塊92,93,94或95,按照錯(cuò)誤位置輸出錯(cuò)誤值。最后各個(gè)子模塊的輸出通過多路選擇96輸出。FIFO電路8的輸出和電路9的輸出都連接到糾錯(cuò)譯碼電路10,實(shí)現(xiàn)糾錯(cuò)譯碼。錯(cuò)誤字節(jié)計(jì)數(shù)電路11與錯(cuò)誤情況判斷電路7相連,獲得錯(cuò)誤字節(jié)個(gè)數(shù),累加后輸出。
在糾錯(cuò)譯碼電路中,伴隨式計(jì)算電路5參見圖4。在每個(gè)時(shí)鐘周期內(nèi),S0與輸入的并行數(shù)據(jù)累加;S1、S2和S3寄存器中上次計(jì)算的結(jié)果分別乘以α,α2和α3,并與8位并行數(shù)據(jù)相加,結(jié)果仍保存回原寄存器。256個(gè)時(shí)鐘周期以后,各個(gè)寄存器中保存的就是伴隨式計(jì)算結(jié)果。
伴隨式計(jì)算電路5中有限域GF(28)元素乘以α,α2和α3的電路參見圖6A,圖6B,圖6C。
輔助參數(shù)計(jì)算電路6中乘法和除法運(yùn)算的實(shí)現(xiàn),利用有限域GF(28)元素與其本身相對(duì)于本原元的冪次之間的對(duì)應(yīng)關(guān)系,通過查表把域元素映射成自己的指數(shù),把乘法和除法操作轉(zhuǎn)換成模255的加法和減法操作,最后再把模加減運(yùn)算的結(jié)果映射回有限域。每次運(yùn)算都通過兩次查表和一次模加完成。該電路所實(shí)現(xiàn)的正變換和反變換需要兩個(gè)映射表,每個(gè)表用256字節(jié)的RAM實(shí)現(xiàn)。由于有限域元素0無法進(jìn)行映射,所以,當(dāng)進(jìn)行運(yùn)算的元素中有一個(gè)為0時(shí),不需要映射和模255加減的運(yùn)算,直接輸出計(jì)算結(jié)果0。雖然如果除數(shù)為0計(jì)算結(jié)果也是0,沒有物理意義,但是通過除法電路計(jì)算得到的參數(shù)(E、CO0和CO1)的使用條件,保證了在進(jìn)行這些除法計(jì)算的時(shí)候除數(shù)不為0,計(jì)算結(jié)果正確。
這樣的實(shí)現(xiàn)方式不僅節(jié)省了可編程邏輯器件芯片中寶貴的邏輯資源,而且充分利用了芯片的塊RAM資源。實(shí)現(xiàn)的乘法和除法電路最多只需要4個(gè)時(shí)鐘周期,但是這種實(shí)現(xiàn)方式要求芯片具有一定的塊RAM容量。具體實(shí)現(xiàn)電路參見圖5。
錯(cuò)誤值按錯(cuò)誤位置輸出電路9,其中的子模塊93,94和95中計(jì)算錯(cuò)誤位置的電路,和子模塊95中計(jì)算錯(cuò)誤值的電路,都是通過圖6A,圖6B和圖6C中的有限域GF(28)元素乘以α,α2和α3電路實(shí)現(xiàn)的。
圖7是糾錯(cuò)譯碼電路的時(shí)序信號(hào)波形圖。圖中CLK為時(shí)鐘信號(hào),RST為復(fù)位信號(hào),ENIN為輸入使能信號(hào),RS為輸入待糾錯(cuò)譯碼數(shù)據(jù),ECASE為錯(cuò)誤情況,M為糾錯(cuò)譯碼后數(shù)據(jù),ENOUT為輸出使能。每塊256字節(jié)數(shù)據(jù)輸入糾錯(cuò)譯碼電路后經(jīng)過14個(gè)時(shí)鐘周期,輸出第一個(gè)經(jīng)過糾錯(cuò)譯碼的字節(jié);經(jīng)過13個(gè)時(shí)鐘周期,該電路可以開始接收新一批256字節(jié)數(shù)據(jù);每個(gè)待糾錯(cuò)字節(jié)進(jìn)入糾錯(cuò)譯碼電路后經(jīng)過270個(gè)時(shí)鐘周期,輸出相應(yīng)的糾錯(cuò)譯碼結(jié)果。
表1 錯(cuò)誤情況判斷表其中,“/”表示在判斷時(shí)不考慮該值
權(quán)利要求
1.一種糾錯(cuò)能力為2的擴(kuò)展RS碼的譯碼方法,包括如下步驟1)首先將待譯碼數(shù)據(jù)塊輸入計(jì)算伴隨式計(jì)算電路,計(jì)算伴隨式S(S0,S1,S2,S3);同時(shí),將輸入的RS編碼數(shù)據(jù)R(x)存入先入先出緩存FIFO;其中存儲(chǔ)數(shù)據(jù)的多項(xiàng)式表達(dá)式R(x)=rn-1xn-1+…+r1x1+r0,其中r0為附加校驗(yàn)碼字;由信道編碼理論,伴隨式SS=R·HT=(S0,S1,S2,S3)=(r0,r1,…,rn-1)·HT;2)根據(jù)步驟1)的伴隨式計(jì)算結(jié)果S(S0,S1,S2,S3),計(jì)算步驟3)和步驟4)需要的輔助參數(shù)B0、B1、B2、E、CO0和CO1;其中計(jì)算公式為B0=S12+S0S2;]]>B1=S22+S1S3;]]>B2=S1S2+S0S3;E=S1S2/S3;CO0=B0S1/B2;CO1=B1S0/B2;3)從步驟1)的計(jì)算結(jié)果S(S0,S1,S2,S3),和步驟2)所得到的輔助參數(shù)B1、B2,根據(jù)錯(cuò)誤情況判斷表,來判斷錯(cuò)誤碼字的個(gè)數(shù)和錯(cuò)誤碼字出現(xiàn)的位置或范圍,再選擇錯(cuò)誤值和錯(cuò)誤位置不同的計(jì)算模式;4)根據(jù)步驟3)的判斷結(jié)果,再計(jì)算錯(cuò)誤位置和對(duì)應(yīng)位置出現(xiàn)的錯(cuò)誤值;5)將緩存中的數(shù)據(jù)與步驟4)所得到的錯(cuò)誤值相加,進(jìn)行糾錯(cuò);最后截除校驗(yàn)碼字,完成糾錯(cuò)譯碼。
2.根據(jù)權(quán)利要求1所述的一種糾錯(cuò)能力為2的擴(kuò)展RS碼的譯碼方法,其特征在于步驟(3)中,所述的判斷依據(jù)第一種情況,說明本塊數(shù)據(jù)是正確的,沒有發(fā)生過錯(cuò)誤,不需要進(jìn)行糾錯(cuò);第二種情況,說明本塊數(shù)據(jù)發(fā)生了一個(gè)錯(cuò)誤,出現(xiàn)在附加校驗(yàn)碼字,也就是最后一個(gè)碼字發(fā)生了錯(cuò)誤;第三種情況,說明本塊數(shù)據(jù)發(fā)生了一個(gè)錯(cuò)誤,出現(xiàn)在附加校驗(yàn)碼字以外的某一個(gè)碼字,也就是前n-1個(gè)碼字發(fā)生了一個(gè)錯(cuò)誤;第四種情況,說明本塊數(shù)據(jù)發(fā)生了兩個(gè)錯(cuò)誤,出現(xiàn)在附加校驗(yàn)碼字和某非附加校驗(yàn)碼字,也就是前n-1碼字中某一個(gè)碼字發(fā)生了錯(cuò)誤,同時(shí)最后一個(gè)碼字也發(fā)生了錯(cuò)誤;第五種情況,說明本塊數(shù)據(jù)發(fā)生了兩個(gè)錯(cuò)誤,出現(xiàn)在附加校驗(yàn)碼字以外的兩個(gè)碼字,也就是說前n-1碼字中某兩個(gè)碼字發(fā)生了錯(cuò)誤;其他情況。對(duì)于發(fā)生兩個(gè)以上錯(cuò)誤的其他任何情況,超出RS(n,k)碼的糾錯(cuò)和檢錯(cuò)能力,譯碼器不能識(shí)別,仍視為第五種情況。
3.根據(jù)權(quán)利要求2所述的一種糾錯(cuò)能力為2的擴(kuò)展RS碼的譯碼方法,其特征在于在對(duì)于第一種情況,直接輸出緩存數(shù)據(jù),不做處理。
4.根據(jù)權(quán)利要求2所述的一種糾錯(cuò)能力為2的擴(kuò)展RS碼的譯碼方法,其特征在于對(duì)于第二種情況,附加校驗(yàn)字節(jié)出現(xiàn)錯(cuò)誤,其錯(cuò)誤值為S0。
5.根據(jù)權(quán)利要求2所述的一種糾錯(cuò)能力為2的擴(kuò)展RS碼的譯碼方法,其特征在于對(duì)于第三種情況,非附加校驗(yàn)字節(jié)出現(xiàn)了一個(gè)錯(cuò)誤,其錯(cuò)誤值為S0,差錯(cuò)位置方程S2+S1αi=0的解,即為發(fā)生錯(cuò)誤的位置αi。
6.根據(jù)權(quán)利要求2所述的一種糾錯(cuò)能力為2的擴(kuò)展RS碼的譯碼方法,其特征在于對(duì)于第四種情況,附加校驗(yàn)字節(jié)的錯(cuò)誤值是E+S0,非附加校驗(yàn)字節(jié)的錯(cuò)誤值是E,差錯(cuò)位置方程S2+S1αi=0的解,即為非附加校驗(yàn)字節(jié)中發(fā)生錯(cuò)誤的位置αi。
7.根據(jù)權(quán)利要求2所述的一種糾錯(cuò)能力為2的擴(kuò)展RS碼的譯碼方法,其特征在于對(duì)于第五種情況,差錯(cuò)位置方程B0(αi)2+B2αi+B1=0的兩個(gè)解αi和αj為發(fā)生錯(cuò)誤的位置,對(duì)應(yīng)的錯(cuò)誤值分別為CO1α-i+CO0和CO1α-j+CO0。
8.根據(jù)權(quán)利要求1所述的一種糾錯(cuò)能力為2的擴(kuò)展RS碼的譯碼方法,其特征在于根據(jù)發(fā)生錯(cuò)誤的碼字個(gè)數(shù)和錯(cuò)誤出現(xiàn)的范圍,選擇不同的錯(cuò)誤值和錯(cuò)誤位置計(jì)算方式進(jìn)行糾錯(cuò)譯碼。
全文摘要
本發(fā)明涉及一種糾錯(cuò)能力為2的擴(kuò)展里德-所羅門碼的糾錯(cuò)譯碼方法,包括計(jì)算待糾錯(cuò)數(shù)據(jù)的伴隨式,同時(shí)將數(shù)據(jù)存入先入先出緩存;根據(jù)伴隨式計(jì)算結(jié)果,計(jì)算輔助參數(shù);由伴隨式計(jì)算結(jié)果和輔助參數(shù),確定錯(cuò)誤碼字的個(gè)數(shù)和錯(cuò)誤碼字出現(xiàn)的范圍;由不同的錯(cuò)誤情況,計(jì)算錯(cuò)誤位置和對(duì)應(yīng)位置出現(xiàn)的錯(cuò)誤值;將緩存中的數(shù)據(jù)與錯(cuò)誤值相加,進(jìn)行糾錯(cuò);最后截除校驗(yàn)碼字,完成糾錯(cuò)譯碼。本發(fā)明方法可以快速實(shí)現(xiàn)對(duì)糾錯(cuò)能力為2的擴(kuò)展里德-所羅門碼的譯碼,并易于工程實(shí)現(xiàn)。
文檔編號(hào)G11B20/18GK1773864SQ20041009080
公開日2006年5月17日 申請(qǐng)日期2004年11月12日 優(yōu)先權(quán)日2004年11月12日
發(fā)明者張玉良, 曹松, 陳小敏, 孫輝先 申請(qǐng)人:中國(guó)科學(xué)院空間科學(xué)與應(yīng)用研究中心