本發(fā)明涉及信道糾錯(cuò)碼領(lǐng)域,更具體的說涉及一種適用于循環(huán)碼的譯碼方法,其可應(yīng)用(47,24,11)平方剩余碼。
背景技術(shù):
作為可靠性傳輸?shù)闹匾WC,自1948年香農(nóng)于“通信的數(shù)學(xué)原理”這一開創(chuàng)性的論文中提出信道編碼定理以來,信道糾錯(cuò)碼一直都受到學(xué)者們的廣泛關(guān)注。循環(huán)碼是最重要的糾錯(cuò)碼之一,包括Golay碼、Hamming碼、Bose Chaudhuri Hocquenghem(BCH)碼、平方剩余碼等。(47,24,11)平方剩余碼是其中一個(gè)重要的碼型,但由于受限于復(fù)雜的譯碼算法,該碼型一直未能在實(shí)際應(yīng)用中應(yīng)用。本發(fā)明基于循環(huán)碼的伽羅華域特性,提出一種低復(fù)雜度的(47,24,11)平方剩余碼譯碼算法。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的主要目的在于提供一種糾錯(cuò)能力為5的(47,24,11)平方剩余碼譯碼算法,其可應(yīng)用于(47,24,11)平方剩余碼譯碼上,可以有效降低(47,24,11)平方剩余碼在產(chǎn)品中的復(fù)雜度。
為了達(dá)成上述目的,本發(fā)明提供的方法是
一種低復(fù)雜度的(47,24,11)平方剩余碼譯碼方法,其特征在于:令生成多項(xiàng)式為g=(11110111011011100011000),1≤i≤46;0≤j≤46;接收碼字為r=(r0,r1,…,r46),譯碼的步驟包括,
步驟1:計(jì)算校正子s=rp+r23g(23)+r24g(24)+…+r46g(46),其中rp=(r0,r1,…,r22)和rm=(r23,r24,…,r46)。
步驟2:如果校正子的重量,即校正子s中1的數(shù)量,w(s)≤5,則錯(cuò)誤模式為e=(s|01×(n-k));此時(shí),糾正后的接收碼字為c′=r+e,譯碼成功。
步驟3:如果w(s)>5,意味著至少有1個(gè)錯(cuò)誤發(fā)生在rm;此時(shí)依次將rm中 的一個(gè)比特ri取反,并重新計(jì)算校正子s+=g(i)。如果w(s)≤4,則錯(cuò)誤模式為e=(s|01×(n-k))+1i;此時(shí),糾正后的接收碼字為c′=r+e,譯碼成功。
步驟4:如果w(s)>4,表示至少有兩個(gè)錯(cuò)誤發(fā)生在rm;此時(shí)依次將rm中的兩個(gè)比特ri和rj取反,并重新計(jì)算校正子s=s+g(i)+g(j)。如果w(s)≤3,則錯(cuò)誤模式為e=(s|01×(n-k))+1i+1j;此時(shí),糾正后的接收碼字為c′=r+e,譯碼成功。
一種低復(fù)雜度的(47,24,11)平方剩余碼譯碼方法,其特征在于:如果w(s)>3,則意味著最多兩個(gè)錯(cuò)誤發(fā)生在rp;此時(shí)將接收碼字左移或右移23比特,獲取一個(gè)移位后接收碼字,對于移位后接收碼字存在兩種情況:1)最多兩個(gè)錯(cuò)誤發(fā)生在rm;2)三個(gè)錯(cuò)誤發(fā)生在rm,其中一個(gè)發(fā)生在r23;此時(shí)譯碼步驟包括,
步驟1:計(jì)算移位后接收碼字校正子s=rp+r23g(23)+r24g(24)+…+r46g(46),其中rp=(r0,r1,…,r22)和rm=(r23,r24,…,r46)。
步驟2:如果校正子的重量,即校正子s中1的數(shù)量,w(s)≤5,則錯(cuò)誤模式為e=(s|01×(n-k));此時(shí),糾正后的接收碼字為c′=r+e;如果接收碼字左(右)移23比特,則糾正后的接收碼字右(左)移23比特,譯碼成功。
步驟3:如果w(s)>5,意味著至少有1個(gè)錯(cuò)誤發(fā)生在rm;此時(shí)依次將rm中的一個(gè)比特ri取反,并重新計(jì)算校正子s+=g(i)。如果w(s)≤4,則錯(cuò)誤模式為e=(s|01×(n-k))+1i;此時(shí),糾正后的接收碼字為c′=r+e;如果接收碼字左(右)移23比特,則糾正后的接收碼字右(左)移23比特,譯碼成功。
步驟4:如果w(s)>4,表示至少有兩個(gè)錯(cuò)誤發(fā)生在rm;此時(shí)依次將rm中的兩個(gè)比特ri和rj取反,并重新計(jì)算校正子s=s+g(i)+g(j)。如果w(s)≤3,則錯(cuò)誤模式為e=(s|01×(n-k))+1i+1j;此時(shí),糾正后的接收碼字為c′=r+e;如果接收碼字左(右)移23比特,則糾正后的接收碼字右(左)移23比特,譯碼成功。
步驟5:如果w(s)>3,此時(shí)依次將rm中的三個(gè)比特r23、ri和rj取反,并 重新計(jì)算校正子s=s+g(23)+g(i)+g(j)。如果w(s)≤2,則錯(cuò)誤模式為e=(s|01×(n-k))+123+1i+1j;此時(shí),糾正后的接收碼字為c′=r+e;如果接收碼字左(右)移23比特,則糾正后的接收碼字右(左)移23比特,譯碼成功。
一種低復(fù)雜度的(47,24,11)平方剩余碼譯碼方法,其特征在于:g(i)的計(jì)算步驟為,
步驟1:g(i-1)>>1為將g(i-1)右移1比特;
步驟2:表示g(i-1)的第22比特;如果為1,則g(i)=(g(i-1)>>1)+g;如果為0,則g(i)=(g(i-1)>>1)。
附圖說明
附圖1為低復(fù)雜度的(47,24,11)平方剩余碼譯碼流程圖。
具體實(shí)施方法
上述功能實(shí)現(xiàn)的技術(shù)方案結(jié)合附圖進(jìn)行進(jìn)一步的描述如下:
根據(jù)圖1所示的低復(fù)雜度的(47,24,11)平方剩余碼譯碼流程圖,其特征在于:
步驟1:令生成多項(xiàng)式為g=(11110111011011100011000),1≤i≤46;g(i-1)>>1為將g(i-1)右移1比特;表示g(i-1)的第22比特;如果為1,則g(i)=(g(i-1)>>1)+g;如果為0,則g(i)=(g(i-1)>>1);0≤j≤46;接收碼字為r=(r0,r1,…,r46),iter=0。
步驟2:計(jì)算校正子s=rp+r23g(23)+r24g(24)+…+r46g(46),其中rp=(r0,r1,…,r22)表示信息部分,rm=(r23,r24,…,r46)表示校驗(yàn)部分;
步驟3:如果校正子的重量,即校正子s中1的數(shù)量,w(s)≤5,則錯(cuò)誤模式為e=(s|01×(n-k));此時(shí),進(jìn)入步驟8。
步驟4:如果w(s)>5,意味著至少有1個(gè)錯(cuò)誤發(fā)生在rm;此時(shí)依次將rm中 的一個(gè)比特ri取反,并重新計(jì)算校正子s+=g(i)。如果w(s)≤4,則錯(cuò)誤模式為e=(s|01×(n-k))+1i;此時(shí),進(jìn)入步驟8。
步驟5:如果w(s)>4,表示至少有兩個(gè)錯(cuò)誤發(fā)生在rm;此時(shí)依次將rm中的兩個(gè)比特ri和rj取反,并重新計(jì)算校正子s=s+g(i)+g(j)。如果w(s)≤3,則錯(cuò)誤模式為e=(s|01×(n-k))+1i+1j;此時(shí),進(jìn)入步驟8。
步驟6:如果w(s)>3且iter=1,此時(shí)依次將rm中的三個(gè)比特r23、ri和rj取反,并重新計(jì)算校正子s=s+g(23)+g(i)+g(j)。如果w(s)≤2,則錯(cuò)誤模式為e=(s|01×(n-k))+123+1i+1j;此時(shí),進(jìn)入步驟8。
步驟7:如果w(s)>3且iter=0,則意味著最多兩個(gè)錯(cuò)誤發(fā)生在rp;此時(shí)將接收碼字左移或右移23比特,獲取一個(gè)移位后接收碼字,對于移位后接收碼字存在兩種情況:1)最多兩個(gè)錯(cuò)誤發(fā)生在rm;2)三個(gè)錯(cuò)誤發(fā)生在rm,其中一個(gè)發(fā)生在r23;此時(shí),進(jìn)入步驟2。
步驟8:糾正后的接收碼字為c′=r+e;如果iter=1,表示接收碼字左(右)移23比特,則將糾正后的接收碼字右(左)移23比特,譯碼成功。
使用實(shí)例:
實(shí)例1:
令發(fā)送碼字為,c=(00110100000100101001110011110101111001000000000);
令接收碼字為,r=(11110100000100101001111101110101111001000000000);
令錯(cuò)誤模式為,e=(11000000000000000000001110000000000000000000000);
我們發(fā)現(xiàn)總共發(fā)生5個(gè)錯(cuò)誤,其中2個(gè)在信息部分,3個(gè)在校驗(yàn)部分,具體的譯碼步驟如下述:
1.計(jì)算校正子:
s=(01001100110110010010101)。因?yàn)閣(s)=11>5,進(jìn)入步驟4。
2.因?yàn)樗械膚(s)>4,進(jìn)入步驟5。
3.當(dāng)i=23,j=24,則s=(11000000000000000000001)。因?yàn)閣(s)=3≤3,則e=(11000000000000000000001110000000000000000000000),進(jìn)入步驟8。
4.因?yàn)閕ter=0,此時(shí)譯碼后的接收碼字為:
c′=r+e=(00110100000100101001110011110101111001000000000)。譯碼成功。
實(shí)例2:
令發(fā)送碼字為,
c=(00101000111010110110111011110000110010000000000)。
令接收碼字為,
r=(11101000111010110110111101110000110010000000001)
令錯(cuò)誤模式為,
e=(11000000000000000000000110000000000000000000001)
我們發(fā)現(xiàn)總共發(fā)生5個(gè)錯(cuò)誤,其中3個(gè)在信息部分,2個(gè)在校驗(yàn)部分,具體的譯碼步驟如下述:
1.計(jì)算校正子:
s=(10100010000001010100101)。因?yàn)閣(s)=8>5,進(jìn)入步驟4。
2.因?yàn)樗械膚(s)>4,進(jìn)入步驟5。
3.因?yàn)樗械膚(s)>3,進(jìn)入步驟7。
4.因?yàn)閣(s)>3且iter=0,意味著最多2個(gè)錯(cuò)誤發(fā)生在rp;根據(jù)循環(huán)碼的定義,將接收碼字循環(huán)移位23個(gè)比特,獲取新的接收碼字,
r=(10111000011001000000000111101000111010110110111)。設(shè)置iter=1,進(jìn)入步驟2。
5.計(jì)算新接收碼字的校正子:
s=(01110001000000101010010)。因?yàn)閣(s)=8>5,進(jìn)入步驟4。
6.因?yàn)樗械膚(s)>4,進(jìn)入步驟5。
7.因?yàn)樗械膚(s)>3,進(jìn)入步驟6。
8.當(dāng)i=24,j=25,thens=(11000000000000000000000)。因?yàn)閣(s)=2≤2,then e=(11000000000000000000000111000000000000000000000),進(jìn)入步驟8。
9.有c′=r+e=(01111000011001000000000000101000111010110110111)。因?yàn)閕ter=1,向右循環(huán)移位c′23比特,獲取c′=(00101000111010110110111011110000110010000000000),此時(shí)譯碼成功。
本領(lǐng)域普通技術(shù)人員可以理解,實(shí)現(xiàn)上述實(shí)施例中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,所述的程序可以在存儲(chǔ)于計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,所述的存儲(chǔ)介質(zhì),如ROM/RAM、磁盤、光盤等。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。