專利名稱:非規(guī)則低密度奇偶校驗(yàn)碼的系統(tǒng)碼設(shè)計(jì)方法及其通信系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
非規(guī)則低密度奇偶校驗(yàn)碼的系統(tǒng)碼設(shè)計(jì)方法及其通信系統(tǒng)屬于通信信道編碼技術(shù)領(lǐng)域,特別涉及采用非規(guī)則低密度奇偶校驗(yàn)碼(ILDPC碼)用于糾正信道差錯(cuò)數(shù)據(jù)時(shí)的一種有效的ILDPC碼設(shè)計(jì)方法。
背景技術(shù):
數(shù)據(jù)在存貯以及傳輸過程中經(jīng)常會(huì)引發(fā)各種差錯(cuò)。產(chǎn)生這種差錯(cuò)的原因有隨機(jī)噪聲、解調(diào)過程中的同步丟失、無線傳輸中的多徑衰落、磁性存儲(chǔ)器中的磁道缺損等。這種突發(fā)錯(cuò)誤一般呈非周期性出現(xiàn)并且持續(xù)時(shí)間長(zhǎng)短不定。由于這些差錯(cuò)的存在,大大限制了特定帶寬下的信息傳輸速率和特定面積下存儲(chǔ)器的存儲(chǔ)容量。特別是在無線多媒體傳輸系統(tǒng)中,由于大量的數(shù)據(jù)要在帶寬有限且受到各種突發(fā)嚴(yán)重干擾的信道中以很高的可靠性傳輸,這一問題變得更加突出。
為了解決數(shù)據(jù)傳輸和存儲(chǔ)中的可靠性問題,通常采用信道編碼的方法。在當(dāng)前已有的信道編碼方法中,新近提出的ILDPC碼具有最為強(qiáng)大的糾錯(cuò)能力,具有很強(qiáng)的應(yīng)用前景。
ILDPC碼的基本原理為1.ILDPC碼的定義和參數(shù)ILDPC碼是一種二進(jìn)制分組碼,這種碼采用超稀疏矩陣作為校驗(yàn)矩陣。矩陣中每行(每列)中非零元素的個(gè)數(shù)非常稀少,且位置呈隨機(jī)分布。為了便于描述,定義一行(一列)中非零元素的個(gè)數(shù)為該行(列)的重量。由于ILDPC碼的校驗(yàn)矩陣為隨機(jī)生成的矩陣,各行(列)的重量不確定,因此采用重量分布式來描述這種矩陣。同一類ILDPC碼校驗(yàn)矩陣的列重量分布可以用分布式表示為λ(x)=Σj=1dvλjxj-1---(1)]]>式中λj表示重量為j的列在矩陣中所占的份量,dv為矩陣中列重量的最大的值。同樣,同一類ILDPC碼校驗(yàn)矩陣的行重量分布采用下式描述
ρ(x)=Σi=d0dcρixi-1---(2)]]>式中式中ρi表示重量為i的行在矩陣中所占的份量,d0為矩陣中行重量的最小值,dc為矩陣中行重量的最大值。由于ILDPC碼是分組碼,對(duì)于任何合法的碼字V,與校驗(yàn)矩陣H的乘積為零,即H·VT=0。作為一個(gè)例子,我們給出了一個(gè)具體的3×7維ILDPC碼校驗(yàn)矩陣與碼字V=[v1v2…v7]的乘積101101001001010111011·v1v2v3v4v5v6v7=0]]>由上式矩陣第一行與碼字V的乘積可知,v1+v3+v4+v6=0。由此,碼元v1、v3、v4和v6構(gòu)成了一個(gè)校驗(yàn)碼的約束。這些碼元在經(jīng)過調(diào)制、傳輸、解調(diào)以后可能出現(xiàn)差錯(cuò),可根據(jù)這個(gè)約束進(jìn)行軟譯碼,使每個(gè)碼元都得到一個(gè)該約束條件下其它碼元關(guān)于該碼元的取值信息,稱為外信息,具體的譯碼原理及步驟參見下一節(jié)第三部分。(外信息即所有同屬于一個(gè)碼字的其它碼元通過碼字的約束關(guān)系而得到的關(guān)于某一個(gè)碼元取值的信息。)類似地,校驗(yàn)矩陣每個(gè)行都形成一個(gè)校驗(yàn)約束,參與約束的碼元都可通過這種約束下的軟譯碼得到一個(gè)校驗(yàn)約束條件下關(guān)于該碼元的外信息。當(dāng)校驗(yàn)矩陣所有的行都完成相應(yīng)約束關(guān)系的軟譯碼后,從校驗(yàn)矩陣列方向上看,具有j個(gè)非零元素的第k列得到了j個(gè)關(guān)于碼元vk取值的外信息。比如,上面所列的校驗(yàn)矩陣的第一列有兩個(gè)非零元素,其中位于矩陣第1行第1列的非零元素通過第1行的校驗(yàn)約束可得到1個(gè)關(guān)于碼元v1取值的外信息,而位于矩陣第3行第1列的非零元素通過第3行的校驗(yàn)約束也可以得到1個(gè)關(guān)于碼元v1取值的外信息。這兩個(gè)外信息和解調(diào)后所得的碼元v1的軟信息一起組成了一個(gè)3個(gè)碼元的關(guān)于碼元v1的重復(fù)碼。采用下一節(jié)第二部分所述的譯碼原理,我們可以得到這3個(gè)碼元在這個(gè)重復(fù)碼約束下的外信息。所有列對(duì)應(yīng)的重復(fù)碼譯碼后得到的這些外信息再反饋回行方向的校驗(yàn)碼約束,則可以再次進(jìn)行下一輪的校驗(yàn)碼—重復(fù)碼的譯碼。通過這種循環(huán)迭代,ILDPC碼實(shí)現(xiàn)其譯碼。為了便于對(duì)譯碼過程進(jìn)行更加嚴(yán)謹(jǐn)?shù)拿枋觯x解調(diào)后所得一個(gè)碼元軟信息和校驗(yàn)矩陣對(duì)應(yīng)列非零元素通過行方向校驗(yàn)譯碼所得軟信息組成的重復(fù)碼約束關(guān)系為一個(gè)比特節(jié)點(diǎn),節(jié)點(diǎn)的階數(shù)即為該列非零元素的個(gè)數(shù);同時(shí)定義校驗(yàn)矩陣每行對(duì)應(yīng)的校驗(yàn)約束為一個(gè)校驗(yàn)節(jié)點(diǎn),節(jié)點(diǎn)的階數(shù)即為該行的非零元素個(gè)數(shù)。矩陣中的各個(gè)非零元素,既參與了比特節(jié)點(diǎn)的約束關(guān)系,又參與了校驗(yàn)節(jié)點(diǎn)的約束關(guān)系,因而可以定義矩陣非零元素所對(duì)應(yīng)的關(guān)系為連結(jié)這兩種節(jié)點(diǎn)的“連結(jié)線”。在迭代譯碼過程中,譯碼器利用矩陣的行和列所對(duì)應(yīng)的校驗(yàn)節(jié)點(diǎn)和比特節(jié)點(diǎn)的約束關(guān)系進(jìn)行迭代譯碼。在一次迭代過程中,首先利用比特節(jié)點(diǎn)的約束關(guān)系進(jìn)行譯碼,各比特節(jié)點(diǎn)的輸入為接收序列對(duì)應(yīng)的對(duì)數(shù)似然值(即各個(gè)元符號(hào)取“1”的概率除以取“0”的概率再取自然對(duì)數(shù)所得的值)以及相關(guān)校驗(yàn)節(jié)點(diǎn)在上一次迭代的輸出;隨后,比特節(jié)點(diǎn)的輸出通過“連結(jié)線”送到相應(yīng)的校驗(yàn)節(jié)點(diǎn),再利用校驗(yàn)節(jié)點(diǎn)的約束關(guān)系進(jìn)行譯碼。在這個(gè)過程中,一種節(jié)點(diǎn)的輸出成為另外一種節(jié)點(diǎn)的輸入,矩陣中非零元素所對(duì)應(yīng)的“連結(jié)線”成為了這兩種節(jié)點(diǎn)輸入輸出交換信息的“通道”。對(duì)于碼長(zhǎng)為N比特,列重量分布和行重量分布分別由(1)(2)兩式確定的ILDPC碼,其j階比特節(jié)點(diǎn)的個(gè)數(shù)為Nj=N·λj/jΣj=2dvλj/j=N·λj/j∫01λ(x)dx,2≤j≤dv---(3)]]>同理,i階校驗(yàn)節(jié)點(diǎn)的個(gè)數(shù)為Mi=M·ρi/iΣi=2dcρi/i=M·ρi/i∫01ρ(x)dx--2≤i≤dc---(4)]]>式中M為一個(gè)ILDPC碼字中校驗(yàn)碼元的長(zhǎng)度。
2.ILDPC碼的譯碼原理ILDPC碼的譯碼充分應(yīng)用了校驗(yàn)矩陣的超稀疏特性,通過比特節(jié)點(diǎn)和校驗(yàn)節(jié)點(diǎn)的約束關(guān)系計(jì)算并輸出外信息,并相互反饋,進(jìn)行迭代譯碼。當(dāng)前,ILDPC碼的譯碼方法主要為和積譯碼方法。這種方法的輸入為接收序列的對(duì)數(shù)似然值,并在對(duì)數(shù)空間下通過利用比特節(jié)點(diǎn)和校驗(yàn)節(jié)點(diǎn)的約束關(guān)系進(jìn)行迭代譯碼。此時(shí),比特節(jié)點(diǎn)的約束關(guān)系表現(xiàn)為“和”的形式,即各比特節(jié)點(diǎn)的輸出是各個(gè)輸入對(duì)數(shù)似然值的和;而相應(yīng)的校驗(yàn)節(jié)點(diǎn)則表現(xiàn)為某種“積”的形式,即各校驗(yàn)節(jié)點(diǎn)的輸出是各個(gè)輸入對(duì)數(shù)似然值的某種“連乘積”。由于這個(gè)特點(diǎn),該方法被稱之為和積譯碼方法。
1)接收序列的軟解調(diào)以二元輸入加性白高斯噪聲信道下的信息傳輸系統(tǒng)為例,長(zhǎng)為N-M比特的二進(jìn)制信息序列被ILDPC編碼器編成長(zhǎng)度為N比特的ILDPC碼字。隨后,該碼字被調(diào)制成取值為±1的符號(hào)序列在高斯信道中傳輸。在接收端,接收機(jī)經(jīng)過匹配濾波后得到了一串含噪聲干擾的長(zhǎng)度為N的實(shí)數(shù)序列R1N,隨后進(jìn)行信號(hào)解調(diào)。高斯信道、BPSK調(diào)制下,第i個(gè)碼元為1而經(jīng)調(diào)制和傳輸后接收機(jī)收到信號(hào)為Ri的概率為
P(Ri|vi=1)=12πσ2exp{-12σ2(Ri-1)2},--1≤i≤N---(5)]]>其中σ2為信道噪聲的標(biāo)準(zhǔn)方差。
同樣,第i個(gè)碼元為0而經(jīng)調(diào)制和傳輸后接收機(jī)收到信號(hào)為Ri的概率為P(Ri|vi=0)=12πσ2exp{-12σ2(Ri+1)2},--1≤i≤N---(6)]]>由貝葉斯定理,得到P(vi=1|Ri)=P(Ri|vi=1)·P(vi=1)P(Ri),---(7)]]>P(vi=0|Ri)=P(Ri|vi=0)·P(vi=0)P(Ri).---(8)]]>在發(fā)送過程中,碼元符號(hào)取0和1的概率相等。為了便于解調(diào)信號(hào)的輸出,通常采用對(duì)數(shù)似然比的形式表示接收到的第i個(gè)碼元取值的最大后驗(yàn)概率LLR(Ri)=lnP(vi=+1|Ri)P(vi=-1|Ri)---(9)]]>由以上各式,得LLR(Ri)=lnP(vi=+1|Ri)P(vi=-1|Ri)=lnP(Ri|vi=+1)P(Ri|vi=-1)]]>=ln12πσ2exp{-12σ2(Ri-1)2}12πσ2exp{-12σ2(Ri+1)2}=2σ2Ri]]>=sign(Ri)·|2σ2Ri|---(10)]]>式中Singn(·)為符號(hào)函數(shù)。上式中,第一項(xiàng)符號(hào)函數(shù)表示了由接收信號(hào)得到的原發(fā)送信號(hào)取值概率的比較結(jié)果。符號(hào)函數(shù)取正值表示原碼元符號(hào)為1的概率大于為0的概率;取負(fù)值則表示原碼元符號(hào)為0的概率大于為1的概率。而第二項(xiàng)絕對(duì)值的大小則表示了該符號(hào)取1的概率與取0的概率之間的差異程度。絕對(duì)值越大,則兩個(gè)概率值的差異越大。因此,(10)式根據(jù)每個(gè)接收信號(hào)提供了兩個(gè)信息,一個(gè)信息為原信號(hào)最可能取哪個(gè)值,另一個(gè)信息則表示了這種判斷的可靠程度。接收機(jī)的這種解調(diào)過程充分保留了原信號(hào)的信息,被稱為“軟解調(diào)”,或者“軟判決”,相應(yīng)的軟判決輸出稱為“軟信息”。
解調(diào)器輸出的軟信息被送到ILDPC譯碼器進(jìn)行譯碼。ILDPC譯碼器的譯碼充分利用了校驗(yàn)矩陣的超稀疏特性,將校驗(yàn)矩陣的約束關(guān)系分解為行的校驗(yàn)碼約束關(guān)系和列的重復(fù)碼約束關(guān)系,通過利用這兩種約束關(guān)系的相互反饋,進(jìn)行迭代譯碼。為了便于了解在這兩種約束關(guān)系下的譯碼過程,下面首先討論重復(fù)碼和校驗(yàn)碼的譯碼過程。
2)重復(fù)碼的約束關(guān)系及其譯碼重復(fù)碼的編碼即是將輸入的信息符號(hào)進(jìn)行N-1次重復(fù),從而得到一個(gè)長(zhǎng)為N的碼字V1N。因此,重復(fù)碼只有兩個(gè)合法碼字全0碼字01N和全1碼字11N。經(jīng)過調(diào)制、傳輸、解調(diào)以后,譯碼器根據(jù)調(diào)制器提供的軟信息進(jìn)行譯碼。在接收到的信號(hào)序列為R1N的前提下,根據(jù)重復(fù)碼的約束關(guān)系進(jìn)行譯碼,得到一個(gè)采用對(duì)數(shù)似然比表示的輸出序列U1N。其中,第i個(gè)符號(hào)最大后驗(yàn)概率取值的對(duì)數(shù)似然比為L(zhǎng)LR(ui)=lnp(vi=1|R1N)p(vi=0|R1N)=lnp(vi=1,R1N)p(vi=0,R1N)]]>=lnΣ1≤i′≤Ni′≠i···Σp(v1,v2,···,vi=1,···,vN,R1N)Σ1≤i′≤Ni′≠i···Σp(v1,v2,···,vi=0,···,vN,R1N)]]>=lnΣvi′∈V1Ni′≠i···Σp(v1,v2,···,vi=1,···,vN)·p(R1N|v1,v2,···,vi=1,···,vN)Σvi′∈V1Ni′≠i···Σp(v1,v2,···,vi=0,···,vN)·p(R1N|v1,v2,···,vi=0,···,vN)---(11)]]>由于重復(fù)碼只有全0和全1兩個(gè)碼字,因而上式中分子分母乘積項(xiàng)中的第一項(xiàng)只有在碼字分別為全1碼字和全0碼字時(shí),概率才不為0。從而,(11)式可以繼續(xù)化簡(jiǎn)為L(zhǎng)LR(ui)=lnp(R1N|V1N=11N)p(R1N|V1N=01N)=lnΠi′=1Np(Ri′|vi′=1)Πi′Np(Ri′|vi′=0)---(12)]]>=Σi′NLLR(vi′)=LLR(vi)+Σi′≠iLLR(vi′)]]>上式中結(jié)果的第一部分是碼元i接收信號(hào)的對(duì)數(shù)似然比值,為碼元本身所具有的信息,稱為“先驗(yàn)信息”;第二部分是碼字中其它碼元根據(jù)碼字的約束關(guān)系而提供的關(guān)于碼元i的取值信息,稱為“外信息”。由于先驗(yàn)信息為各個(gè)碼元本身就有,因而在譯碼過程中譯碼器只需給每個(gè)碼元反饋相應(yīng)的外信息。重復(fù)碼的譯碼關(guān)系可以采用圖1所示的一個(gè)節(jié)點(diǎn)圖來表示。
圖1中的節(jié)點(diǎn)共有N條連結(jié)線,對(duì)應(yīng)N個(gè)碼元。這些連結(jié)線既可以作為輸入也可以作為輸出,分別對(duì)應(yīng)N個(gè)碼元的輸入和譯碼輸出。在一次譯碼過程中,接點(diǎn)通過N條連結(jié)線收到以對(duì)數(shù)似然比的形式表示的解調(diào)信息序列,隨后,通過節(jié)點(diǎn)的運(yùn)算,譯碼結(jié)果也通過這些連結(jié)線輸出N個(gè)碼元的外信息。其中,每條連結(jié)線的輸出為其它各條連結(jié)線的輸入值的累加和。在對(duì)ILDPC碼譯碼的描述中,重復(fù)碼的這種譯碼節(jié)點(diǎn)也被稱為“比特節(jié)點(diǎn)”。
3)校驗(yàn)碼的約束關(guān)系及其譯碼以碼率為N-1/N的校驗(yàn)碼為例,長(zhǎng)為N-1個(gè)比特的信息序列經(jīng)過編碼后得到一個(gè)碼長(zhǎng)為N的校驗(yàn)碼,碼元之間的約束關(guān)系可以用如下的關(guān)系式表示v1v2…vN=0 (13)式中表示二進(jìn)制和,即二進(jìn)制邏輯中的“異或”。校驗(yàn)碼所得的碼字V1N經(jīng)過調(diào)制、傳輸、解調(diào)后,得到包含該碼字信息的一個(gè)軟信息序列LLR(R1N)。校驗(yàn)碼譯碼器即根據(jù)這個(gè)軟信息序列進(jìn)行譯碼。定義二元符號(hào)ei為碼字中除了第i個(gè)碼元vi外其它所有碼元的二進(jìn)制和,則由(13)式可得viei=0 (14)由二進(jìn)制的異或關(guān)系以及(14)式,得碼元vi與符號(hào)ei取值相同。因而,碼元vi與符號(hào)ei形成一個(gè)相當(dāng)于重復(fù)碼的關(guān)系。由上面重復(fù)碼所討論得到的結(jié)果可知,碼元vi通過譯碼后所得的后驗(yàn)信息為L(zhǎng)LR(v^i)=LLR(vi)+LLR(ei)---(15)]]>顯然,(15)式中的第二項(xiàng)就是在譯碼過程中譯碼器根據(jù)整個(gè)碼序列的約束關(guān)系反饋給碼元vi的外信息。下面,我們以碼長(zhǎng)為3的校驗(yàn)碼為例,推導(dǎo)外信息的表示式。不失一般性,我們討論第一個(gè)碼元的外信息表示式。在碼長(zhǎng)為3比特的情況下,符號(hào)e1取值為1的概率為p(e1=1)=p(v2=1)·p(v3=0)+p(v2=0)·p(v3=1)=p(v2=1)·(1-p(v3=1))+(1-p(v2=1))·p(v3=1) (16)=p(v2=1)+p(v3=1)-2p(v2=1)·p(v3=1)從而,1-2p(e1=1)=1-2p(v2=1)-2p(v3=1)+4p(v2=1)·p(v3=1) (17)=(1-2p(v2=1))·(1-2p(v3=1))引入一個(gè)函數(shù)Φ(x)=tanh(-12x)=exp(-12x)-exp(12x)exp(-12x)+exp(12x)=1-exp(x)1+exp(x)---(18)]]>那么,
Φ(LLR(e1))=Φ(lnp(e1=1)p(e1=0))=1-exp(lnp(e1=1)p(e1=0))1+exp(lnp(e1=1)p(e1=0))=1-2p(e1=1)---(19)]]>由(17)、(19)式,得碼元v1的外信息表示形式為L(zhǎng)LR(e1)=Φ-1(Φ(LLR(v2)·Φ(LLR(v3)) (20)(20)式可以推廣到任意一個(gè)碼元,也可以推廣到碼長(zhǎng)大于3比特的情況。在碼長(zhǎng)為N比特得情況下,碼元i的外信息為L(zhǎng)LR(ei)=Φ-1(Π1≤i′≤Ni′≠iΦ(LLR(vi)))---(21)]]>校驗(yàn)碼的這種譯碼運(yùn)算關(guān)系也可以采用一個(gè)節(jié)點(diǎn)來表示,如圖2所示圖2中節(jié)點(diǎn)具有N個(gè)連結(jié)線,對(duì)應(yīng)N個(gè)碼元;每根連結(jié)線既是輸入也是輸出。其中,輸入對(duì)應(yīng)于輸入到譯碼器的軟信息序列,輸出則是譯碼器通過運(yùn)算反饋給各個(gè)碼元符號(hào)的外信息。在一次譯碼中,每根連結(jié)線輸入該碼元解調(diào)后得到的軟信息到節(jié)點(diǎn),隨后節(jié)點(diǎn)通過運(yùn)算,給每個(gè)連結(jié)線一個(gè)外信息輸出。注意到,圖2中每根連結(jié)線的輸出是以其它所有連結(jié)線的輸入值作為輸入的運(yùn)算結(jié)果。在后續(xù)ILDPC碼的譯碼中,校驗(yàn)碼的這種譯碼節(jié)點(diǎn)被稱為“校驗(yàn)節(jié)點(diǎn)”。
4)ILDPC碼的譯碼過程信息序列經(jīng)過ILDPC碼的編碼、調(diào)制、傳輸后,由接收機(jī)進(jìn)行匹配濾波,得到相應(yīng)的包含ILDPC碼字信息的接收序列R1N,隨后這個(gè)序列被送到ILDPC碼譯碼器進(jìn)行糾錯(cuò)譯碼。在一次譯碼過程中,譯碼器首先對(duì)接收序列進(jìn)行解調(diào),把接收序列轉(zhuǎn)化為軟信息的形式;隨后,利用ILDPC碼的校驗(yàn)方程H·VT=0進(jìn)行譯碼。注意到ILDPC碼的校驗(yàn)矩陣為超稀疏矩陣,每行/列的非零元素個(gè)數(shù)非常稀少。由校驗(yàn)方程知,矩陣的每行ILDPC碼的乘積,實(shí)際上是與該行非零元素相乘的碼元的二進(jìn)制和。由校驗(yàn)碼的約束方程可知,這些碼元構(gòu)成了一個(gè)校驗(yàn)碼的約束。由于校驗(yàn)矩陣有M行,因而一共能得到M個(gè)校驗(yàn)碼。通過采用校驗(yàn)碼的譯碼方法,每個(gè)校驗(yàn)碼都可以在各自的約束關(guān)系下給各個(gè)碼元一個(gè)反映該碼元取值情況的外信息輸出。而對(duì)于校驗(yàn)矩陣的每一列,由于其元素在校驗(yàn)矩陣與碼字的乘法中只與同一個(gè)碼元相乘,而該列的每個(gè)非零元素都對(duì)應(yīng)一個(gè)校驗(yàn)碼對(duì)該碼元符號(hào)取值情況的輸出。于是,這些校驗(yàn)碼的輸出與接收到的碼元軟信息一起,構(gòu)成了一個(gè)重復(fù)碼的約束。由于校驗(yàn)矩陣共有N列,因而可以得到N個(gè)重復(fù)碼,分別與ILDPC碼字的N個(gè)碼元對(duì)應(yīng)。ILDPC碼的譯碼即是通過將校驗(yàn)矩陣的約束關(guān)系分解為這M個(gè)校驗(yàn)碼和N個(gè)重復(fù)碼的約束關(guān)系,通過這兩種碼的譯碼輸出相互反饋為對(duì)方的輸入,進(jìn)行并行迭代譯碼。由以上關(guān)于重復(fù)碼和校驗(yàn)碼的討論,ILDPC碼的譯碼網(wǎng)格圖可以由圖3表示首先,接收序列被譯碼器轉(zhuǎn)化為軟信息后,譯碼器將所有校驗(yàn)節(jié)點(diǎn)的初始輸出設(shè)為0,隨后根據(jù)接收序列的軟信息和校驗(yàn)節(jié)點(diǎn)的初始輸出進(jìn)行N個(gè)比特節(jié)點(diǎn)的同時(shí)譯碼。這些比特節(jié)點(diǎn)對(duì)各個(gè)碼元的外信息輸出,被通過連結(jié)線送到相應(yīng)的校驗(yàn)節(jié)點(diǎn),隨后M個(gè)節(jié)點(diǎn)同時(shí)進(jìn)行校驗(yàn)碼的譯碼,每個(gè)校驗(yàn)節(jié)點(diǎn)的對(duì)每個(gè)碼元符號(hào)的譯碼輸出都通過連結(jié)線反饋回相關(guān)的比特節(jié)點(diǎn)。在下一次迭代開始時(shí),每個(gè)比特節(jié)點(diǎn)都將自己所有的輸入累加,得到一個(gè)碼元的后驗(yàn)信息,隨后根據(jù)這個(gè)后驗(yàn)信息進(jìn)行硬判決譯碼。N個(gè)比特節(jié)點(diǎn)的硬判決譯碼得到一個(gè)碼字的估值信息序列。如果校驗(yàn)矩陣與這個(gè)估值信息序列的乘積為零,則譯碼器停止迭代譯碼并輸出這個(gè)估值作為譯碼結(jié)果;否則,譯碼器進(jìn)行下一次比特節(jié)點(diǎn)—校驗(yàn)節(jié)點(diǎn)的譯碼迭代,直到所得估值序列為一個(gè)合法ILDPC碼字或者達(dá)到最大迭代次數(shù)為止。譯碼器的輸出為最后一次得到的硬判決估值序列。
設(shè)rij為從校驗(yàn)節(jié)點(diǎn)i輸出到比特節(jié)點(diǎn)j的外信息,qij為從比特節(jié)點(diǎn)j到校驗(yàn)節(jié)點(diǎn)i的外信息,該和積譯碼方法的迭代過程包括如下步驟1)譯碼初始化對(duì)于接收到的實(shí)數(shù)序列R1N,對(duì)應(yīng)的ILDPC碼第j個(gè)碼元的初始接收值被譯碼器解調(diào)成對(duì)數(shù)似然比的形式LLR(Rj)=2σ2Rj,1≤j≤N---(22)]]>式中LLR表示取值為對(duì)數(shù)似然比,σ2為信道噪聲的標(biāo)準(zhǔn)方差。同時(shí),初始條件下校驗(yàn)節(jié)點(diǎn)沒有任何關(guān)于碼字的信息,故設(shè)置校驗(yàn)節(jié)點(diǎn)i輸出到比特節(jié)點(diǎn)j的外信息為L(zhǎng)LR(rij)=0 (23)2)若所得到的序列的硬判決結(jié)果不為一個(gè)合法的碼字(其中硬判決是指根據(jù)序列各個(gè)符號(hào)的對(duì)數(shù)似然值決定各個(gè)碼元符號(hào)的比特取值,對(duì)數(shù)似然值為正數(shù)則碼元取符號(hào)“1”,為負(fù)數(shù)則碼元取符號(hào)“0”),執(zhí)行一次和積譯碼的迭代過程為a)比特節(jié)點(diǎn)的譯碼在這種節(jié)點(diǎn)的約束關(guān)系下,輸出與輸入的關(guān)系為“和”的關(guān)系,即比特節(jié)點(diǎn)j到校驗(yàn)節(jié)點(diǎn)i的外信息輸出為L(zhǎng)LR(qij)=Σi′∈Col[j]i′≠iLLR(ri′j)+LLR(Rj)---(24)]]>式中Col[j]表示校驗(yàn)矩陣H第j列非零元素的位置集合。
b)校驗(yàn)節(jié)點(diǎn)的譯碼在校驗(yàn)節(jié)點(diǎn)的約束關(guān)系下,輸出與輸入的關(guān)系為某種“積”的關(guān)系,即校驗(yàn)節(jié)點(diǎn)i輸出到比特節(jié)點(diǎn)j的外信息為
LLR(rij)=Φ-1(Πj′∈Row[i]j′≠jΦ(LLR(qij′)))---(25)]]>式中Row[i]表示校驗(yàn)矩陣H第i行非零元素的位置集合,并且Φ(x)=tanh(-12x)---(26)]]>3)迭代后所得的第j個(gè)比特節(jié)點(diǎn)的譯碼結(jié)果為該節(jié)點(diǎn)所有輸入的和LLR(v^j)=Σi′∈Col[j]LLR(ri′j)+LLR(Rj)---(27)]]>對(duì)所得到的譯碼結(jié)果進(jìn)行如下的硬判決,然后轉(zhuǎn)移到第二步。其中第j個(gè)碼元符號(hào)的硬判決為 4)如果需要進(jìn)行下一個(gè)碼字的譯碼,跳轉(zhuǎn)到第一步;否則,結(jié)束譯碼。
ILDPC碼的譯碼充分利用了比特節(jié)點(diǎn)和校驗(yàn)節(jié)點(diǎn)的性質(zhì),以及接收序列的所有信息,因而可以得到接近理論極限的譯碼性能,同時(shí)迭代過程的延時(shí)很小,適合惡劣信道下的高速數(shù)據(jù)傳輸。因此,LDPC碼在寬帶無線多媒體通信系統(tǒng)、高清晰度數(shù)字電視系統(tǒng)、DAB/DVB系統(tǒng)、磁存儲(chǔ)器系統(tǒng)等多種系統(tǒng)中都具有很強(qiáng)的應(yīng)用前景。由此,LDPC碼的設(shè)計(jì)在近年成為了研究熱點(diǎn)。
3.ILDPC碼的設(shè)計(jì)ILDPC碼是一種隨機(jī)碼,不像卷積碼或者BCH碼那樣有確定的生成多項(xiàng)式。因此必須根據(jù)ILDPC碼的碼長(zhǎng)、碼率、行/列重量分布式等參數(shù)生成具體的校驗(yàn)矩陣和生成矩陣,才能在實(shí)際系統(tǒng)中應(yīng)用。
現(xiàn)有的ILDPC碼譯碼的設(shè)計(jì)方法有兩種。方法一為全隨機(jī)填充法。對(duì)于碼長(zhǎng)為N,校驗(yàn)比特長(zhǎng)為M的ILDPC碼,這種方法首先產(chǎn)生一個(gè)M×N維的全零矩陣,并根據(jù)ILDPC碼的行/列重量分布式,確定矩陣每列/行應(yīng)有的非零元素個(gè)數(shù)。隨后,并采用隨機(jī)的方法逐行選取一組零元素,并將它們置換為非零元素。如果這一置換沒有使校驗(yàn)矩陣產(chǎn)生周期為4的小循環(huán),即矩陣中同一列的任意兩個(gè)非零元素不和矩陣任意其它列中的任意兩個(gè)非零元素同時(shí)具有相同的行位置,則置換保留,隨后進(jìn)行下一列的置換;如果置換帶來了周期為4的小循環(huán),則置換無效,再重新隨機(jī)選取一組零元素進(jìn)行置換,直到得到滿足條件的列為止。在所有的列都得到滿足要求的置換后,校驗(yàn)矩陣再在保持各非零元素列位置不變以及不產(chǎn)生周期為4的小循環(huán)的前提下調(diào)整非零元素的行位置,使得非零元素在各行的分布也滿足要求。這種方法設(shè)計(jì)的ILDPC碼可以有很好的糾錯(cuò)性能,但是在進(jìn)一步的編譯碼器硬件實(shí)現(xiàn)時(shí)只能采用全并行結(jié)構(gòu),實(shí)現(xiàn)復(fù)雜度隨著碼長(zhǎng)的增長(zhǎng)而呈指數(shù)次方增長(zhǎng),并且和/積譯碼單元之間的連線極易造成擁塞,因而可以實(shí)現(xiàn)的最大碼長(zhǎng)只有一兩千比特,不能完全滿足實(shí)際應(yīng)用的需要。
方法二為半隨機(jī)法。這種方法通過級(jí)聯(lián)的方式產(chǎn)生LDPC碼的校驗(yàn)矩陣對(duì)于碼長(zhǎng)N=Nb·L,其中L為擴(kuò)展系數(shù),校驗(yàn)比特?cái)?shù)為M=Mb·L的ILDPC碼,首先根據(jù)和/積節(jié)點(diǎn)分布式生成維數(shù)為Mb×Nb的基校驗(yàn)矩陣,隨后,對(duì)于矩陣的每一個(gè)元素,都擴(kuò)展為一個(gè)L×L矩陣基矩陣中的零元素?cái)U(kuò)展為L(zhǎng)×L維全零陣,非零元素則采用經(jīng)過偽隨機(jī)交織后的L×L維單位陣進(jìn)行擴(kuò)展。這種方法得到的校驗(yàn)矩陣具有比較好的硬件實(shí)現(xiàn)結(jié)構(gòu),但是對(duì)碼型的設(shè)計(jì)提出了很高的要求。如果碼型設(shè)計(jì)得不好,則很容易產(chǎn)生明顯的性能損失。此外,方法二現(xiàn)有的技術(shù)得到的都是非系統(tǒng)碼,對(duì)應(yīng)的編碼器結(jié)構(gòu)復(fù)雜,同樣難于實(shí)現(xiàn)。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足之處,提出了一種面向硬件實(shí)現(xiàn)的非規(guī)則ILDPC碼的系統(tǒng)碼設(shè)計(jì)方法及其通信系統(tǒng)。這種設(shè)計(jì)方法采用兩級(jí)級(jí)聯(lián)構(gòu)造方法,即首先采用隨機(jī)生成法得到一個(gè)基校驗(yàn)矩陣Hb,隨后將基矩陣的每個(gè)元素都擴(kuò)展為一個(gè)方塊子矩陣,由此得到了ILDPC碼的校驗(yàn)矩陣。與方法二不同的是,本發(fā)明考慮了編碼器的要求,在生成基校驗(yàn)矩陣時(shí)首先對(duì)行/列重量分布式進(jìn)行變換再作為基矩陣的重量分布式。隨后,在矩陣擴(kuò)展時(shí),本方法除了采用全零矩陣和偽隨機(jī)交織單位陣以外,還引入了行/列非零元素個(gè)數(shù)大于1的特殊矩陣E,用于產(chǎn)生系統(tǒng)碼 通過E矩陣的引入,可以得到系統(tǒng)ILDPC碼,使得編碼器具有很簡(jiǎn)單的結(jié)構(gòu),非常便于硬件實(shí)現(xiàn)。此外,本發(fā)明在產(chǎn)生偽隨機(jī)交織單位陣時(shí),還引入了一種基于伽羅華域域元素乘方的交織方法,在保證沒有帶來譯碼性能損失的同時(shí)也便于硬件實(shí)現(xiàn)時(shí)的存儲(chǔ)模塊尋址。
本發(fā)明的思路為,它在矩陣擴(kuò)展時(shí)引入了行/列非零元素個(gè)數(shù)大于1的特殊子矩陣,使得所得到的ILDPC碼為系統(tǒng)碼,同時(shí)矩陣擴(kuò)展所用的偽隨機(jī)交織單位陣由一種基于伽羅華域域元素乘方的交織方法得到,具體而言,它依次含有如下步驟(1)行/列重量分布式預(yù)變換對(duì)于碼長(zhǎng)N=Nb·L,校驗(yàn)比特?cái)?shù)為M=Mb·L的ILDPC碼,在基矩陣產(chǎn)生前首先對(duì)LDPC碼的行/列重量分布式進(jìn)行預(yù)變換,得到,Mb×Nb維基矩陣的行/列重量分布式;(2)生成基矩陣根據(jù)得到的基矩陣行/列重量分布式,基矩陣左邊的Mb×Mb模塊為單位陣,右邊的Mb×(Nb-Mb)模塊中的列/行中的非零元素采用隨機(jī)填充的方法產(chǎn)生;(3)矩陣擴(kuò)展對(duì)于基矩陣中的每個(gè)元素,都擴(kuò)展成一個(gè)L×L維子矩陣。其中,基矩陣中的零元素?cái)U(kuò)展成L×L維零陣,基矩陣左邊Mb×Mb模塊中的非零元素?cái)U(kuò)展成為L(zhǎng)×L維E陣,而對(duì)于基矩陣右邊Mb×(Nb-Mb)模塊中的非零元素,我們采用隨機(jī)搜索的方法選取一組參數(shù){k∈{0,1,2,3},αj0,αj1∈GF(2p)},根據(jù)所選參數(shù)產(chǎn)生如下所述的交織器a) k=0時(shí)行方向i1≤i≤n;列方向ai1·(αi0)j0≤j≤n;b) k=1時(shí)行方向n+1-i1≤i≤n;列方向αi1·(αi0)j0≤j≤n;c) k=2時(shí)行方向i1≤i≤n;列方向n+1-αi1·(αi0)j0≤j≤n;d) k=3時(shí),行方向n+1-i1≤i≤n;列方向n+1-αi1·(αi0)j0≤j≤n;采用上述交織器對(duì)L×L維單位陣進(jìn)行交織,隨后將所得偽隨機(jī)交織單位陣用于替換基矩陣中的相應(yīng)元素,如果這一替換不產(chǎn)生周期為4的小循環(huán),則替換保留;否則,重新產(chǎn)生一組參數(shù)并產(chǎn)生相應(yīng)的偽隨機(jī)交織單位陣,再次進(jìn)行替換,直到不產(chǎn)生周期為4的小循環(huán)為止。
本發(fā)明的特征在于通過這種方法得到的ILDPC碼,具有很好的結(jié)構(gòu),可以以很低的復(fù)雜度實(shí)現(xiàn)其編解碼器;同時(shí),這種ILDPC碼亦保證了ILDPC碼的糾錯(cuò)性能。作為一個(gè)例子,表一給出了分別采用本發(fā)明的方法和方法1設(shè)計(jì)的行/列重量分布式分別為λ(x)=0.002526+0.636564x+0.240607x2+0.120303x4和ρ(x)=0.469375x5+0.530625x6的、碼長(zhǎng)為8128比特、碼率為1/2的ILDPC碼在BIAWGN信道各種Eb/N0下的糾錯(cuò)性能。其中采用本發(fā)明設(shè)計(jì)時(shí)Nb=64,Mb=32,L=127。
表1.兩種譯碼算法在BIAWGN信道下的糾錯(cuò)性能。
由表1可見,本發(fā)明的方法產(chǎn)生的ILDPC碼在性能上與方法一所得的ILDPC碼幾乎一致??梢姡捎帽痉椒軌蚴笽LDPC碼具有很好的硬件結(jié)構(gòu)的同時(shí)保持其良好的糾錯(cuò)性能,大大提高了ILDPC碼的實(shí)用性。
實(shí)驗(yàn)證明,通過這種方法得到的ILDPC校驗(yàn)矩陣,與方法一產(chǎn)生的校驗(yàn)矩陣相比,在譯碼性能上沒有損失;與方法二相比,得到了更好的譯碼性能,同時(shí)也得到了系統(tǒng)ILDPC碼,在譯碼器具有簡(jiǎn)單硬件結(jié)構(gòu)的同時(shí)編碼器也具有很簡(jiǎn)單的硬件實(shí)現(xiàn)結(jié)構(gòu),可以以很低的復(fù)雜度實(shí)現(xiàn)譯碼器和編碼器。
圖1.重復(fù)碼的譯碼節(jié)點(diǎn)圖。
圖2.校驗(yàn)碼的譯碼節(jié)點(diǎn)圖。
圖3.ILDPC碼的譯碼網(wǎng)格圖。
圖4.實(shí)現(xiàn)與(E-1)T矩陣相乘的卷積電路。
圖5.本發(fā)明所述方法的程序流程圖。
圖6.應(yīng)用本發(fā)明設(shè)計(jì)的ILDPC碼糾正傳輸差錯(cuò)的通信系統(tǒng)框圖。
圖7.基于本發(fā)明所得ILDPC碼生成矩陣的ILDPC編碼器。
圖8.基于本發(fā)明所得ILDPC碼校驗(yàn)矩陣的ILDPC譯碼器。
圖9.和節(jié)點(diǎn)處理單元VNCU電路圖。
圖10.積節(jié)點(diǎn)處理單元CNCU電路圖。
具體實(shí)施例方式
本發(fā)明提出的ILDPC碼的設(shè)計(jì)方法分成兩個(gè)部分首先構(gòu)造Mb×Nb維的基矩陣,隨后對(duì)于基矩陣的每一個(gè)元素,都擴(kuò)展成為一個(gè)L×L維子矩陣,從而得到了M×N維校驗(yàn)矩陣。
1.基矩陣的構(gòu)造對(duì)于Mb×Nb基矩陣Hb,由ILDPC碼的行/列重量分布式可以得到對(duì)應(yīng)j階和節(jié)點(diǎn)和i階積節(jié)點(diǎn)的個(gè)數(shù)為nb(j)=Nb·λj/j∫01λ(x)dx---(30)]]>及mb(i)=Mb·ρi/i∫01ρ(x)dx---(31)]]>由于在矩陣的擴(kuò)展中引入了行/列非零元素個(gè)數(shù)大于1的矩陣,基矩陣中各階和/積節(jié)點(diǎn)的數(shù)量分布式必須進(jìn)行相應(yīng)的調(diào)整,以使得經(jīng)過矩陣擴(kuò)展后所得校驗(yàn)矩陣滿足行/列重量分布式。對(duì)于本發(fā)明所考慮的ILDPC碼,基矩陣的各階和節(jié)點(diǎn)數(shù)量分布式變?yōu)?類似地,基矩陣的各階積節(jié)點(diǎn)列重量分布式變?yōu)?此外,考慮到系統(tǒng)碼的特點(diǎn),我們采用下式所示的結(jié)構(gòu)設(shè)計(jì)基矩陣
Hb=...IMb×Mbπ(PMb×nb′(3)PMb×nb′(4)···PMb×nb′(dv))...---(34)]]>式中IMb×Mb是一個(gè)Mb×Mb維單位陣, 是一個(gè)Mb×nb′(j)維、每列有j個(gè)非零元素的二元矩陣,π(·)代表一個(gè)列方向上的隨機(jī)交織器?;仃嚨?amp;pi;(PMb×nb′(3)PMb×nb′(4)···PMb×nb′(dv))]]>部分可以采用如下的隨機(jī)填充法得到a)定義一個(gè)Mb×Nb全零二元校驗(yàn)矩陣,隨后將矩陣左邊的Mb×Mb部分變換成為單位陣IMb×Mb;b)然后,對(duì)矩陣中的第k列(Mb<k≤Nb),從Nb個(gè)列重量中不放回地隨機(jī)抽出一個(gè)作為該列的重量,設(shè)為L(zhǎng)k。隨后,從該列的Mb個(gè)行位置中隨機(jī)選取Lk個(gè),并將對(duì)應(yīng)位置的零元素置換為非零元素‘1’。如果這一置換使H矩陣產(chǎn)生了周期為4的小循環(huán),則刪除掉這一列的所有非零元素并重新選取Lk個(gè)行位置進(jìn)行非零元素置換,直到使該列得到不產(chǎn)生周期為4的小循環(huán)的Lk個(gè)非零元素為止。
c)列方向上的非零元素生成完成以后,需要在Mb個(gè)行方向上對(duì)π(PMb×nb′(3)PMb×nb′(4)···PMb×nb′(dv))]]>部分的非零元素進(jìn)行調(diào)整,使得非零元素在行方向上也達(dá)到所規(guī)定的分布。調(diào)整方法為在保持列位置不變的條件下將非零元素從數(shù)量過多的行調(diào)整到數(shù)量過少的行,在這一過程中同樣要避免產(chǎn)生周期為4的小循環(huán)。
2.矩陣擴(kuò)展考慮伽羅華域GF(2p),其中p為素?cái)?shù)。設(shè)α為域GF(2p)中的一個(gè)本源元素并且擴(kuò)展系數(shù)L=2p-1,那么域GF(2p)中的所有元素可以表示成為0=α∞,1=α0,α1,α2,…,αL-1。此外,由于p為素?cái)?shù),由伽羅華域的有關(guān)定理可知,對(duì)于滿足0<j0<L,0≤j1<L兩個(gè)整數(shù)j0,j1,序列αj1·(αj0)0,αj1·(αj0)1,···,αj1·(αj0)L-1]]>組成了域GF(2p)的所有非零元素。進(jìn)一步假設(shè)域元素α的值為f(α),那么由域元素序列αj1·(αj0)0,αj1·(αj0)1,···,αj1·(αj0)L-1]]>所對(duì)應(yīng)的值序列f(αj1·(αj0)0),f(αj1·(αj0)1),···,f(αj1·(αj0)L-1)]]>則為正整數(shù)序列1,2,…,L的一個(gè)偽隨機(jī)交織。同樣,序列L+1-f(αj1·(αj0)0),L+1-f(αj1·(αj0)1),···,L+1-f(αj1·(αj0)L-1)]]>也是正整數(shù)序列1,2,…,L的一個(gè)偽隨機(jī)交織。在碼的擴(kuò)展中,我們采用這兩種偽隨機(jī)序列對(duì)單位陣進(jìn)行列交織,得到所需要的偽隨機(jī)單位交織陣。
在基矩陣的擴(kuò)展中,我們采用如下策略(1)基矩陣Hb中的每個(gè)零元素,擴(kuò)展成一個(gè)L×L維全零陣;(2)基矩陣中IMb×Mb部分的每個(gè)非零元素,都擴(kuò)展成一個(gè)L×L維E陣;(3)對(duì)于基矩陣中π(PMb×nb′(3)PMb×nb′(4)···PMb×nb′(dv))]]>部分的每個(gè)非零元素,則采用一個(gè)L×L維偽隨機(jī)單位交織陣進(jìn)行擴(kuò)展,在擴(kuò)展中必須避免產(chǎn)生周期為4的小循環(huán)。其中,在用于單位陣交織的偽隨機(jī)序列由一組參數(shù){k∈{0,1,2,3},αj0,αj1∈GF(2p)}根據(jù)如下方式產(chǎn)生a)k=0時(shí)行方向i1≤i≤n;列方向αi1·(αi0)j0≤j≤n;b)k=1時(shí)行方向n+1-i1≤i≤n;列方向αi1·(αi0)j0≤j≤n;c)k=2時(shí)行方向i1≤i≤n;列方向n+1-αi1·(αi0)j0≤j≤n;d)k=3時(shí),行方向n+1-i1≤i≤n;列方向n+1-αi1·(αi0)j0≤j≤n;由此,我們得到了ILDPC碼的校驗(yàn)矩陣 從而,ILDPC碼的生成矩陣可以表示成為 由上式可見,所得到的ILDPC碼為系統(tǒng)碼。其中 為上三角矩陣。設(shè)信息序列為X1×(N-M),則ILDPC碼的編碼過程可以表示為
C=X1×(N-M)×G]]> 由于矩陣 是一個(gè)由L×L維子矩陣組成的超稀疏矩陣,信息序列與該矩陣的乘積同樣可以部分并行的結(jié)構(gòu)實(shí)現(xiàn),此外,由于(E-1)T是上三角矩陣,與該矩陣的乘積可以采用一個(gè)簡(jiǎn)單的卷積電路通過時(shí)分復(fù)用的方式實(shí)現(xiàn)。因此,整個(gè)編碼器的復(fù)雜度非常低,非常利于VLSI實(shí)現(xiàn)。
實(shí)施例本實(shí)施例為在清華同方PC機(jī)上用軟件實(shí)現(xiàn)本發(fā)明提出的ILDPC碼設(shè)計(jì)方法,如圖5所示,包括以下步驟程序開始后,首先進(jìn)入初始化狀態(tài)501。在這一步驟中,首先生成一個(gè)Mb×Nb維全零基矩陣Hb,同時(shí)根據(jù)ILDPC碼行/列重量分布式以及基矩陣的參數(shù),由(30)-(33)式確定基矩陣中各階和/積節(jié)點(diǎn)的數(shù)量以及基矩陣各行/各列應(yīng)有的非零元素個(gè)數(shù)。完成這些操作后,程序跳轉(zhuǎn)到步驟502,開始生成基矩陣的非零元素。在這一步,首先將全零矩陣左邊Mb×Mb部分對(duì)角線的0元素置換成1,由此得到IMb×Mb。隨后在步驟503-508,通過隨機(jī)搜索的方法產(chǎn)生基矩陣右邊Nb-Mb列的非零元素對(duì)于這一部分的每列,根據(jù)初始化時(shí)設(shè)定的非零元素個(gè)數(shù),隨機(jī)選取列中相應(yīng)個(gè)零元素并把它們置換成1。如果這一組置換不產(chǎn)生周期為4的小循環(huán),則置換保留,隨后進(jìn)行下一列非零元素的生成;如果產(chǎn)生了周期為4的小循環(huán),則刪除這一組置換,然后再重新選取一組零元素進(jìn)行置換,直到得到滿足要求的列為止。在所有的列都完成非零元素的生成以后,程序跳轉(zhuǎn)到步驟509,開始進(jìn)行行方向的非零元素調(diào)整,使得各行的非零元素在數(shù)量上也滿足初始化所設(shè)定的值。具體步驟為在步驟512,計(jì)算基矩陣第i行的非零元素個(gè)數(shù)Ni,然后判斷是否小于該行所設(shè)定的值Ni0。如果不是,則跳轉(zhuǎn)到步驟511,程序轉(zhuǎn)到基矩陣下一行繼續(xù)進(jìn)行調(diào)整;如果Ni<Ni0,則跳轉(zhuǎn)到步驟513,從基矩陣各行中尋找非零元素個(gè)數(shù)大于設(shè)定值的行i′。隨后在步驟515,從i′行中選取一個(gè)列位置大于Mb的行上的非零元素,并將該元素轉(zhuǎn)移到第i行的同列位置。在步驟516,判斷這一轉(zhuǎn)移沒有帶來周期為4的小循環(huán)。如果這一轉(zhuǎn)移沒有帶來周期為4的小循環(huán),則程序跳轉(zhuǎn)到步驟514,調(diào)整保留,Ni+1,隨后程序跳轉(zhuǎn)到步驟512,繼續(xù)判斷第i行的元素是否仍然小于所設(shè)定的值;如果這一轉(zhuǎn)移帶來了周期為4的小循環(huán),則程序跳轉(zhuǎn)到步驟517,非零元素的調(diào)整被刪除,程序在步驟518判斷i′行是否所有列位置大于Mb的非零元素都都已嘗試過調(diào)整到第i行。如果不是,則跳轉(zhuǎn)到步驟515,繼續(xù)從i′行中選取另一個(gè)列位置大于Mb的非零元素并將該元素轉(zhuǎn)移到第i行的同列位置;如果是,則程序跳轉(zhuǎn)到步驟513,重新隨機(jī)選取非零元素個(gè)數(shù)大于設(shè)定值的行i″,從中選取一個(gè)列位置大于Mb的非零元素調(diào)整到第i行,直到第i行的非零元素個(gè)數(shù)滿足要求。當(dāng)所有的行的非零元素個(gè)數(shù)滿足要求以后,所得的基矩陣就是所求的基矩陣。隨后,程序進(jìn)入到步驟519,開始進(jìn)行矩陣擴(kuò)展。首先,在步驟519,程序產(chǎn)生一個(gè)M×N維的全零矩陣H,并分成Mb×Nb個(gè)L×L維子矩陣,每個(gè)子矩陣與基矩陣的一個(gè)元素相對(duì)應(yīng)。隨后,在步驟520,將基矩陣中IMb×Mb部分非零元素所對(duì)應(yīng)的H矩陣的子模塊替換成E。完成這一操作后,程序在步驟521-525通過隨機(jī)交織法對(duì)基矩陣右邊Nb-Mb列的非零元素所對(duì)應(yīng)的H矩陣模塊進(jìn)行非零元素填充。對(duì)于基矩陣右邊Nb-Mb列的每個(gè)非零元素,程序隨機(jī)選取一組參數(shù){k∈{0,1,2,3},αj0,αj1∈GF(2p)},根據(jù)上一節(jié)所提的方法對(duì)L×L維單位陣進(jìn)行交織,并將所得交織單位陣替換到H矩陣對(duì)應(yīng)模塊。如果這一替換不產(chǎn)生周期為4的小循環(huán),則替換保留,隨后進(jìn)行下一非零元素對(duì)應(yīng)模塊的非零元素的生成;如果產(chǎn)生了周期為4的小循環(huán),則刪除這一組替換,然后再重新選取一組參數(shù)產(chǎn)生交織單位陣,對(duì)相應(yīng)模塊進(jìn)行置換,直到得到滿足要求的模塊為止。當(dāng)基矩陣右邊Nb-Mb列所有的非零元素都完成了相應(yīng)H矩陣模塊的擴(kuò)展,則得到了如(35)式所示的校驗(yàn)矩陣。在步驟526,程序輸出所得到的校驗(yàn)矩陣。隨后程序轉(zhuǎn)移到在步驟527,由校驗(yàn)矩陣生成如(36)式的生成矩陣。到此,完成了一個(gè)ILDPC碼的設(shè)計(jì)。
參照?qǐng)D6,采用本發(fā)明方法設(shè)計(jì)的ILDPC碼糾正傳輸差錯(cuò)的通信系統(tǒng)包括一個(gè)產(chǎn)生數(shù)字信息流的信源61,如圖7所示的ILDPC編碼器63,傳輸信道65,以及如圖8所示的糾正傳輸錯(cuò)誤的ILDPC譯碼器67。
在本例中,信源61產(chǎn)生的攜帶信息的數(shù)據(jù)符號(hào)流62被送往ILDPC碼編碼器63,ILDPC編碼器63根據(jù)(38)式對(duì)信息序列進(jìn)行編碼。采用本發(fā)明所得生成矩陣的編碼器如圖7所示,它采用Mb路并行的部分并行結(jié)構(gòu),包括輸入存儲(chǔ)器陣列MEMI,校驗(yàn)比特生成陣列PCBGU,以及輸出多路選擇器Multiplex。定義Q為基矩陣Hb中非零元素的個(gè)數(shù),輸入存儲(chǔ)器陣列MEMI由Q-Mb個(gè)長(zhǎng)度為L(zhǎng)的存儲(chǔ)器組成,每個(gè)存儲(chǔ)器與基校驗(yàn)矩陣Hb右邊部分π(PMb×nb′(3)PMb×nb′(4)···PMb×nb′(dv))]]>的1個(gè)非零元素一一對(duì)應(yīng)。所有存儲(chǔ)器的輸入端都通過總線的方式實(shí)現(xiàn)與編碼器數(shù)據(jù)輸入端的連接,矩陣π(PMb×nb′(3)PMb×nb′(4)···PMb×nb′(dv))]]>同一列非零元素所對(duì)應(yīng)的存儲(chǔ)器都具有相同的寫入尋址模式;而矩陣π(PMb×nb′(3)PMb×nb′(4)···PMb×nb′(dv))]]>第i(1≤i≤Mb)行的非零元素所對(duì)應(yīng)的所有存儲(chǔ)器則連接到第i個(gè)校驗(yàn)比特生成單元PCBGUi,各個(gè)存儲(chǔ)器根據(jù)所對(duì)應(yīng)的單位交織陣的交織參數(shù)生成各自的數(shù)據(jù)讀出尋址模式。校驗(yàn)比特生成陣列有Mb個(gè)校驗(yàn)比特生成單元,它們通過Mb路并行的方式實(shí)現(xiàn)輸入信息序列X1×(N-M)與校驗(yàn)陣 的乘積,每路以串行的方式實(shí)現(xiàn)L個(gè)比特的乘積。隨后,每個(gè)PCBGU單元再通過一個(gè)圖4所示的卷積電路實(shí)現(xiàn)與E矩陣的乘積,從而得到Mb路長(zhǎng)為L(zhǎng)的校驗(yàn)序列。最后輸入到編碼器的信息序列以及由Mb個(gè)PCBGU單元生成的校驗(yàn)序列通過時(shí)分復(fù)用的方式從多路選擇器Multiplex中輸出,由此得到一個(gè)ILDPC碼的碼字。具體而言,一個(gè)ILDPC編碼器的編碼過程包括兩個(gè)步驟1)信息序列輸入由于編碼器采用Mb并行方案,長(zhǎng)為N-M比特的信息序列被分成Nb-Mb個(gè)長(zhǎng)度為L(zhǎng)比特的信息模塊,這些模塊通過分時(shí)模式輸入到相應(yīng)的MEMI存儲(chǔ)器模塊中,與此同時(shí)這些信息比特作為ILDPC碼字的信息序列部分從多路選擇器輸出。具體而言,在第i個(gè)長(zhǎng)為L(zhǎng)個(gè)時(shí)鐘周期的時(shí)隙里,第i個(gè)長(zhǎng)為L(zhǎng)比特的信息序列模塊輸入到所有與矩陣π(PMb×nb′(3)PMb×nb′(4)···PMb×nb′(dv))]]>第i列非零元素對(duì)應(yīng)的存儲(chǔ)器中;同時(shí)在這L個(gè)時(shí)鐘周期里,該信息序列模塊通過多路選擇器輸出。由于一共有Nb-Mb個(gè)長(zhǎng)度為L(zhǎng)的信息序列模塊,輸入過程共需要(Nb-Mb)·L個(gè)時(shí)鐘周期。在這一過程的最后一個(gè)時(shí)鐘周期里,校驗(yàn)比特生成模塊PCBGU中所有卷積電路的寄存器清零。
2)校驗(yàn)比特序列的生成及輸出這一階段編碼器通過Mb路并行的方式生成ILDPC碼的校驗(yàn)比特序列。這一過程共需要Mb·L個(gè)時(shí)鐘周期,在第j個(gè)長(zhǎng)為L(zhǎng)個(gè)時(shí)鐘周期的時(shí)隙里,校驗(yàn)比特生成模塊第j個(gè)單元PCBGUj生成相應(yīng)的校驗(yàn)比特模塊。與PCBGUj連接的各個(gè)存儲(chǔ)器按照各自的讀出尋址模式將所存儲(chǔ)的信息比特輸出到PCBGUj,PCBGUj所生成的校驗(yàn)比特從多路選擇器輸出。當(dāng)所有PCBGU都完成相應(yīng)的校驗(yàn)比特模塊生成并輸出后,ILDPC編碼器的一個(gè)編碼過程完成。
編碼后的ILDPC碼流64在傳輸信道65傳輸過程中受到干擾而產(chǎn)生差錯(cuò),包含傳輸差錯(cuò)的碼流66被糾正傳輸錯(cuò)誤的ILDPC碼譯碼器67所接收。ILDPC碼譯碼器67采用本發(fā)明方法設(shè)計(jì)的校驗(yàn)矩陣進(jìn)行接收序列的譯碼。
如圖8所示,ILDPC碼譯碼器采用Nb路和節(jié)點(diǎn)并行和Mb路積節(jié)點(diǎn)并行的部分并行結(jié)構(gòu),由和節(jié)點(diǎn)處理陣列VNCU、積節(jié)點(diǎn)處理陣列CNCU、輸入輸出存儲(chǔ)陣列MEMIO、和節(jié)點(diǎn)存儲(chǔ)陣列MEMV以及積節(jié)點(diǎn)存儲(chǔ)陣列MEMC五個(gè)模塊構(gòu)成。和節(jié)點(diǎn)處理陣列VNCU共有Nb個(gè)并行的和節(jié)點(diǎn)處理單元,如圖9所示,每個(gè)單元各含有一個(gè)多路求和電路,它的輸入端為一個(gè)碼元解調(diào)軟信息的輸入端LLR_in以及j個(gè)從對(duì)應(yīng)積節(jié)點(diǎn)輸入到該和節(jié)點(diǎn)的數(shù)據(jù)輸入端x1_in~xj_in,即所述和節(jié)點(diǎn)處理陣列VNCU第j個(gè)處理單元VNCUj的一個(gè)輸入端與MEMV中與基矩陣第i第j列非零元素對(duì)應(yīng)的存儲(chǔ)器的輸出端相連;相互串聯(lián)的一個(gè)加法器和一個(gè)ROM存儲(chǔ)的Φ(x)函數(shù)表格,共有j個(gè),其中,j個(gè)加法器的“+”端都與上述多路求和電路輸出端相連,而“-”端分別與各個(gè)輸入端xj_in相連,而j個(gè)ROM表格的輸出端即為x1_out~xj_out,它們是從該和節(jié)點(diǎn)輸出到對(duì)應(yīng)積節(jié)點(diǎn)的迭代數(shù)據(jù)。每個(gè)和節(jié)點(diǎn)處理單元在每次和積譯碼迭代中都采用串行的方式完成L個(gè)和節(jié)點(diǎn)的運(yùn)算,同時(shí)計(jì)算對(duì)應(yīng)L個(gè)碼元的迭代譯碼結(jié)果;積節(jié)點(diǎn)處理陣列CNCU共有Mb個(gè)并行的處理單元,如圖10所示,每個(gè)單元各含有一個(gè)多路求和器,它的輸入端為i個(gè)從對(duì)應(yīng)和節(jié)點(diǎn)輸入到該積節(jié)點(diǎn)的數(shù)據(jù)輸入端x1_in~xi_in,即所述和節(jié)點(diǎn)處理陣列CNCU第i個(gè)處理單元CNCUi的一個(gè)輸入端與MEMC中與基矩陣第i第j列非零元素對(duì)應(yīng)的存儲(chǔ)器的輸出端相連;相互串聯(lián)的一個(gè)加法器和一個(gè)ROM存儲(chǔ)的Φ-1(x)函數(shù)表格,共有i個(gè),其中,i個(gè)加法器的“+”端都與上述多路求和電路輸出端相連,而“-”端分別與x1_in~xi_in各個(gè)輸入端相連,而i個(gè)ROM表格的輸出端即為x1_out~xi_out,它們是從該積節(jié)點(diǎn)輸出到對(duì)應(yīng)和節(jié)點(diǎn)的迭代數(shù)據(jù),也就是說,MEMV中基矩陣第i第j列非零元素對(duì)應(yīng)的存儲(chǔ)器的輸入端是連接到和節(jié)點(diǎn)處理陣列CNCU第i個(gè)處理單元CNCUi的一個(gè)輸出端的。每個(gè)積節(jié)點(diǎn)處理單元在每次和積譯碼迭代中也都采用串行的方式完成L個(gè)積節(jié)點(diǎn)的運(yùn)算。由于譯碼器采用Nb路并行方案,接收序列軟信息和譯碼結(jié)果都被分成Nb段長(zhǎng)為L(zhǎng)的模塊。輸入輸出存儲(chǔ)陣列MEMIO共有2·Nb個(gè)長(zhǎng)為L(zhǎng)的存儲(chǔ)器,其中的Nb個(gè)用于存儲(chǔ)輸入的接收序列軟信息,另外的Nb個(gè)存儲(chǔ)器用于存儲(chǔ)迭代譯碼后得到的譯碼結(jié)果。所有Nb個(gè)用于存儲(chǔ)接收序列軟信息的存儲(chǔ)器的輸入端都以總線方式與譯碼器數(shù)據(jù)輸入端連接,而存儲(chǔ)第j個(gè)接收軟信息模塊的存儲(chǔ)器的輸出端連接到第j個(gè)和節(jié)點(diǎn)處理單元的一個(gè)輸入端;所有Nb個(gè)用于迭代譯碼結(jié)果的存儲(chǔ)器的輸出端也是采用總線方式連接到譯碼器譯碼輸出端,而第j個(gè)存儲(chǔ)器的輸入端則連接到第j個(gè)和節(jié)點(diǎn)處理單元的相應(yīng)輸出端。和節(jié)點(diǎn)存儲(chǔ)陣列MEMV和積節(jié)點(diǎn)存儲(chǔ)陣列MEMC分別由Q+Mb個(gè)長(zhǎng)度為L(zhǎng)的存儲(chǔ)器組成,其中MEMV陣列的存儲(chǔ)器用于存儲(chǔ)迭代譯碼中從積節(jié)點(diǎn)輸出到和節(jié)點(diǎn)的數(shù)據(jù),而MEMC陣列的存儲(chǔ)器用于存儲(chǔ)迭代運(yùn)算中從和節(jié)點(diǎn)輸出到積節(jié)點(diǎn)的數(shù)據(jù)?;r?yàn)矩陣Hb右邊部分π(PMb×nb′(3)PMb×nb′(4)···PMb×nb′(dv))]]>的每個(gè)非零元素都在MEMV和MEMC陣列中分別有1個(gè)存儲(chǔ)器與之對(duì)應(yīng);而基校驗(yàn)矩陣Hb左邊部分IMb×Mb的每個(gè)非零元素都在MEMV和MEMC陣列中分別有兩個(gè)存儲(chǔ)器與之對(duì)應(yīng),其中一個(gè)存儲(chǔ)器用于存儲(chǔ)E矩陣對(duì)角線非零元素所對(duì)應(yīng)的和/積節(jié)點(diǎn)輸出結(jié)果,而另外一個(gè)存儲(chǔ)器則用于存儲(chǔ)次對(duì)角線非零元素所對(duì)應(yīng)的和/積節(jié)點(diǎn)輸出結(jié)果。此外,MEMV陣列中與基矩陣第i行第j列非零元素對(duì)應(yīng)的存儲(chǔ)器,它的輸入端連接到積節(jié)點(diǎn)處理陣列第i個(gè)處理單元CNCUi的一個(gè)輸出端,而它輸出端則連接到和節(jié)點(diǎn)處理陣列第j個(gè)處理單元VNCUj的一個(gè)輸入端。相應(yīng)地,MEMC模塊中與基矩陣第i行第j列非零元素對(duì)應(yīng)的存儲(chǔ)器,它的輸入端連接到和節(jié)點(diǎn)處理陣列第j個(gè)處理單元VNCUj的一個(gè)輸出端,而它輸出端則連接到積節(jié)點(diǎn)處理陣列第i個(gè)處理單元CNCUi的一個(gè)輸入端?;谶@個(gè)結(jié)構(gòu),ILDPC碼譯碼器的一次譯碼過程包括如下步驟1)初始化接收序列軟信息以Nb路并行的方式輸入到MEMIO的對(duì)應(yīng)存儲(chǔ)器中。由于每段數(shù)據(jù)序列的長(zhǎng)度為L(zhǎng),因而這一過程共需要L個(gè)時(shí)鐘周期。與此同時(shí),MEMV和MEMC陣列的所有存儲(chǔ)器也在這L個(gè)時(shí)鐘周期里執(zhí)行一次清零。
2)迭代譯碼譯碼器每執(zhí)行一次迭代譯碼需要2·L個(gè)時(shí)鐘周期。其中前面L個(gè)時(shí)鐘周期執(zhí)行和節(jié)點(diǎn)運(yùn)算,數(shù)據(jù)從MEMV陣列和MEMIO存儲(chǔ)接收軟信息序列的存儲(chǔ)器中依次讀出到各個(gè)和節(jié)點(diǎn)處理單元,隨后所得的和節(jié)點(diǎn)運(yùn)算輸出被按照特定的尋址模式寫入到MEMC陣列相應(yīng)的存儲(chǔ)器中,所得的迭代譯碼結(jié)果則按順序?qū)懭氲組EMIO陣列相應(yīng)的存儲(chǔ)器中。在后面的L個(gè)時(shí)鐘周期譯碼器執(zhí)行積節(jié)點(diǎn)運(yùn)算,譯碼數(shù)據(jù)從MEMC陣列的存儲(chǔ)器中按照相應(yīng)的尋址模式讀出到各個(gè)積節(jié)點(diǎn)處理單元,所得輸出則分別寫入到MEMV陣列各個(gè)存儲(chǔ)器中。
3)譯碼輸出經(jīng)過特定次數(shù)的譯碼迭代后,譯碼器將存儲(chǔ)在MEMEIO陣列相應(yīng)存儲(chǔ)器中的譯碼結(jié)果輸出。這一過程同樣需要L個(gè)時(shí)鐘周期。
ILDPC碼譯碼器67采用本發(fā)明的方法設(shè)計(jì)的校驗(yàn)矩陣對(duì)接收序列進(jìn)行糾錯(cuò)譯碼,輸出的碼流68為正確的數(shù)字信息流。
本發(fā)明的效果是,通過在矩陣擴(kuò)展時(shí)引入了行/列非零元素個(gè)數(shù)大于1的特殊子矩陣,以及由一種基于伽羅華域域元素乘方的交織方法得到的偽隨機(jī)交織單位陣,使得所得到的ILDPC碼為系統(tǒng)碼,并且使得所得到的ILDPC碼與采用方法一生成的IDLPC碼相比沒有明顯的性能損失。與方法二相比,我們提出的構(gòu)造方法有效避免了糾錯(cuò)性能上的損失,同時(shí)顯著降低了編碼復(fù)雜度。采用我們的設(shè)計(jì)方法,所得的ILDPC碼編解碼器具有很簡(jiǎn)單的硬件實(shí)現(xiàn)結(jié)構(gòu),可以在單片XILINX FPGA上實(shí)現(xiàn)碼長(zhǎng)為8128比特的非規(guī)則LDPC碼,并且編/譯碼器的編/譯碼速度可以達(dá)到100Mb/s以上,對(duì)應(yīng)的高斯信道下的糾錯(cuò)性能為Eb/N0=1.3dB時(shí)譯碼輸出BER達(dá)到10-5,完全滿足各種無線通信系統(tǒng)的需要,具有很廣泛的應(yīng)用前景。
權(quán)利要求
1.非規(guī)則低密度奇偶校驗(yàn)碼的系統(tǒng)碼設(shè)計(jì)方法,其特征在于,它是通過一臺(tái)PC機(jī)依次按照以下步驟實(shí)現(xiàn)的;(1),初始化根據(jù)設(shè)定的Mb×Nb維全零基矩陣和ILDPC即非規(guī)則低密度奇偶校驗(yàn)碼行/列重量分布式參數(shù)按下式確定基矩陣中各階和/積節(jié)點(diǎn)的數(shù)量以及基矩陣各行/列應(yīng)有的非零元素個(gè)數(shù);根據(jù)ILDPC碼的行/列重量分布參數(shù)以及相應(yīng)的分布式得到下列對(duì)應(yīng)j階和節(jié)點(diǎn)和i階積節(jié)點(diǎn)的個(gè)數(shù)nb(j)、mb(i)分別為nb(j)=Nb·λj/j∫01λ(x)dx,]]>mb(i)=Mb·ρi/i∫01ρ(x)dx;]]>其中,λj為非零元素個(gè)數(shù)即重量為j的列在矩陣中所占的份量,dv為矩陣中列重量的最大的值;ρi表示重量為i的行在矩陣中所占的份量,d0為矩陣中行重量的最小值,dc為矩陣中行重量的最大值;對(duì)于上述ILDPC碼,上述nb(j)、mb(i)預(yù)變換為Mb×Nb維基矩陣的各階和節(jié)點(diǎn)、各階積節(jié)點(diǎn)的個(gè)數(shù)nb′(j)、mb′(i) (2),生成基矩陣的非零元素(2.1),把全零矩陣左邊Mb×Mb部分對(duì)角線的‘0’元素置換成‘1’,得到Mb×Mb維單位陣IMb×Mb;(2.2),根據(jù)上述設(shè)定的nb′(j)和mb′(i),通過隨機(jī)搜索的方法產(chǎn)生基矩陣右邊Nb-Mb列的非零元素(2.2.1),列方向上非零元素的置換對(duì)矩陣中的第k列(Mb<k≤Nb),從Nb個(gè)列重量中隨機(jī)抽出一個(gè)列重量Lk作為該列的重量,再從該列的Mb個(gè)行位置中隨機(jī)選取Lk個(gè)行位置,并把該Lk個(gè)行位置中的零元素置換為非零元素‘1’;若這一置換使矩陣產(chǎn)生了眾知的周期為4的小循環(huán),則刪除掉這一列的所有非零元素并重新選取Lk個(gè)位置進(jìn)行非零元素置換,直到使該列得到不產(chǎn)生周期為4的小循環(huán)的Lk個(gè)非零元素為止;重復(fù)上述步驟,直到所有的列方向上都完成非零元素的生成為止;(2.2.2),行方向上的非零元素的置換,即在避免產(chǎn)生周期為4的小循環(huán)的條件下,把非零元素從數(shù)量過多的行調(diào)整到數(shù)量過少的行計(jì)算基矩陣第i行的非零元素個(gè)數(shù)Ni,然后判斷是否小于該行所設(shè)定的值Ni0;若Ni<Ni0,則轉(zhuǎn)到基矩陣下一行繼續(xù)進(jìn)行調(diào)整;如果Ni<Ni0,則從基矩陣各行中尋找非零元素個(gè)數(shù)大于設(shè)定值的行i’;隨后從i’行中選取一個(gè)列位置大于Mb的非零元素,并將該元素轉(zhuǎn)移到第i行的同列位置,再判斷這一轉(zhuǎn)移沒有帶來周期為4的小循環(huán)如果這一轉(zhuǎn)移沒有帶來周期為4的小循環(huán),則調(diào)整保留,使i行的Ni加1;若有則非零元素被刪除;如此循環(huán),一直到i’行所有列位置大于Mb的非零元素都已經(jīng)嘗試過都已嘗試過調(diào)整到第i行相應(yīng)的元素為零的列上為止;再接著重新隨機(jī)選取非零元素個(gè)數(shù)大于設(shè)定值的行i″,重復(fù)以上步驟,直到第i行的非零元素個(gè)數(shù)滿足要求;當(dāng)所有的行的非零元素個(gè)數(shù)滿足要求以后,所得的基矩陣就是所求的基矩陣,該基矩陣可用下式表示Hb=···IMb×Mbπ(PMb×nb′(3)PMb×nb′(4)···PMb×nb′(dv))···]]>其中, 是一個(gè)Mb×Mb維單位陣,PMb×nb′(j)(3≤j≤dv)]]>是一個(gè)Mb×nb′(j)維、每列有j個(gè)非零元素的二元矩陣,π(·)代表一個(gè)列方向上的偽隨機(jī)交織;(3),矩陣的擴(kuò)展首先,程序產(chǎn)生一個(gè)M×N維的全零矩陣H,并分成Mb×Nb個(gè)L×L維子矩陣,使每個(gè)子矩陣與基矩陣的一個(gè)元素相對(duì)應(yīng);再把基矩陣中 部分非零元素所對(duì)應(yīng)的H矩陣的子模塊替換成一個(gè)行/列非零元素個(gè)數(shù)大于1的特殊矩陣E,可用下式表示 再通過隨機(jī)交織法對(duì)基矩陣右邊Nb-Mb列的非零元素所對(duì)應(yīng)的H矩陣模塊進(jìn)行非零元素填充,其具體步驟為先對(duì)基矩陣右邊Nb-Mb列的每個(gè)非零元素,程序用以下方式選取一組參數(shù){k∈{0,1,2,3},αj0,αj1∈GF(2p)},]]>構(gòu)成一個(gè)偽隨機(jī)交織器k=0時(shí)行方向i1≤i≤n;列方向αi1·(αi0)j:0≤j≤n;]]>k=1時(shí)行方向n+1-i1≤i≤n;列方向αi1·(αi0)j:0≤j≤n;]]>k=2時(shí)行方向i1≤i≤n;列方向n+1-αi1·(αi0)j:0≤j≤n;]]>k=3時(shí),行方向n+1-i1≤i≤n;列方向n+1-αi1·(αi0)j:0≤j≤n;]]>其中,GF(2p)為伽羅華域,p為素?cái)?shù),α為域GF(2p)中的一個(gè)本源元素,且L=2p-1;然后,用上述所得偽隨機(jī)交織器對(duì)L×L維單位陣進(jìn)行交織,得到一個(gè)偽隨機(jī)交織單位陣,再把它用于替換基矩陣中右邊相應(yīng)元素所對(duì)應(yīng)的H矩陣模塊;若這一替換不產(chǎn)生周期為4的小循環(huán),則替換保留,重新產(chǎn)生一組參數(shù)并產(chǎn)生相應(yīng)的偽隨機(jī)交織單位陣,進(jìn)行下一基矩陣右邊Nb-Mb列非零元素所對(duì)應(yīng)H矩陣模塊的替換;若替換產(chǎn)生了周期為4的小循環(huán),則替換刪除,重新產(chǎn)生一組參數(shù)并產(chǎn)生相應(yīng)的偽隨機(jī)交織單位陣,再次進(jìn)行替換,直到不產(chǎn)生周期為4的小循環(huán)為止;于是得到下述ILDPC碼的校驗(yàn)矩陣 相應(yīng)地,ILDPC碼的生成矩陣可以表示成為 2.ILDPC碼糾正傳輸差錯(cuò)的通信系統(tǒng),其特征在于,它依次由產(chǎn)生數(shù)字信息流的信源、ILDPC編碼器、傳輸信道以及糾正傳輸錯(cuò)誤的ILDPC譯碼器串連而成,其中ILDPC編碼器采用Mb路并行的部分并行結(jié)構(gòu),它依次由輸入存儲(chǔ)器陣列MEMI,校驗(yàn)比特生成器PCBGU,以及輸出多路選擇器Multiplex串聯(lián)構(gòu)成,其中MEMI由Q-Mb個(gè)長(zhǎng)度為L(zhǎng)的存儲(chǔ)器組成,每個(gè)存儲(chǔ)器與基校驗(yàn)矩陣Hb右邊部分π(PMb×nb′(3)PMb×nb′(4)···PMb×nb′(dv))]]>的1個(gè)非零元素一一對(duì)應(yīng);所有存儲(chǔ)器的輸入端都通過總線的方式實(shí)現(xiàn)與編碼器數(shù)據(jù)輸入端的連接,矩陣π(PMb×nb′(3)PMb×nb′(4)···PMb×nb′(dv))]]>同一列非零元素所對(duì)應(yīng)的存儲(chǔ)器都具有相同的寫入尋址模式;校驗(yàn)比特生成器PCBGU,它有Mb個(gè)校驗(yàn)比特生成單元,第k個(gè)校驗(yàn)比特生成模塊PCBGUk與上述矩陣π(PMb×nb′(3)PMb×nb′(4)···PMb×nb′(dv))]]>第k行的非零元素所對(duì)應(yīng)的所有存儲(chǔ)器的輸出端相連,1≤k≤Mb;所述的每一個(gè)校驗(yàn)比特生成單元PCBGUk都由一個(gè)多路求和器與一個(gè)卷積電路串聯(lián)而成,所述卷積電路由一個(gè)加法器與一個(gè)寄存器串聯(lián)而成,而寄存器的輸出端又與上述加法器的另外一個(gè)輸入端相連;多路選擇器Multiplex具有以Mb+1個(gè)數(shù)據(jù)輸入端和一個(gè)數(shù)據(jù)輸出端,它的輸入端分別連接到編碼器信息比特輸入端以及Mb個(gè)校驗(yàn)比特生成單元的輸出端,輸出端即為編碼器的輸出端;在編碼過程中,多路選擇器通過時(shí)分復(fù)用的方式實(shí)現(xiàn)Mb+1路數(shù)據(jù)的合路;ILDPC譯碼器,它的輸入信號(hào)為來自傳輸信道的包含差錯(cuò)的碼流,該ILDPC譯碼器是一個(gè)采用Nb路和節(jié)點(diǎn)以及Mb路積節(jié)點(diǎn)并行的部分并行結(jié)構(gòu),它由和節(jié)點(diǎn)處理陣列VNCU、積節(jié)點(diǎn)處理陣列CNCU、輸入輸出存儲(chǔ)陣列MEMIO、和節(jié)點(diǎn)存儲(chǔ)陣列MEMV以及積節(jié)點(diǎn)存儲(chǔ)陣列MEMC構(gòu)成,其中和節(jié)點(diǎn)存儲(chǔ)陣列MEMV和積節(jié)點(diǎn)存儲(chǔ)陣列MEMC分別由Q+Mb個(gè)長(zhǎng)度為L(zhǎng)的存儲(chǔ)器組成,其中,MEMV陣列的存儲(chǔ)器用于存儲(chǔ)迭代譯碼中從積節(jié)點(diǎn)輸出且經(jīng)過處理后到和節(jié)點(diǎn)的數(shù)據(jù),而MEMC陣列的存儲(chǔ)器用于存儲(chǔ)迭代運(yùn)算中從和節(jié)點(diǎn)輸出且經(jīng)過處理后到積節(jié)點(diǎn)的數(shù)據(jù);基校驗(yàn)矩陣Hb右邊部分π(PMb×nb′(3)PMb×nb′(4)···PMb×nb′(dv))]]>的每個(gè)非零元素都在MEMV和MEMC陣列中有1個(gè)存儲(chǔ)器與之對(duì)應(yīng),而基校驗(yàn)矩陣Hb左邊部分 的每個(gè)非零元素都在MEMV和MEMC陣列中分別有兩個(gè)存儲(chǔ)器與之對(duì)應(yīng),其中一個(gè)存儲(chǔ)器用于存儲(chǔ)E矩陣對(duì)角線非零元素所對(duì)應(yīng)的和/積節(jié)點(diǎn)輸出結(jié)果,而另外一個(gè)存儲(chǔ)器則用于存儲(chǔ)次對(duì)角線非零元素所對(duì)應(yīng)的和/積節(jié)點(diǎn)輸出結(jié)果;和節(jié)點(diǎn)處理陣列VNCU共有Nb個(gè)并行的運(yùn)算單元,每個(gè)單元各含有一個(gè)多路求和電路,它的輸入端為一個(gè)碼元解調(diào)軟信息的輸入端LLR_in以及j個(gè)從對(duì)應(yīng)積節(jié)點(diǎn)輸入到該和節(jié)點(diǎn)的數(shù)據(jù)輸入端x1_in~xj_in,即所述和節(jié)點(diǎn)處理陣列VNCU第j個(gè)處理單元VNCUj的一個(gè)輸入端與MEMV中與基矩陣第i第j列非零元素對(duì)應(yīng)的存儲(chǔ)器的輸出端相連;相互串聯(lián)的一個(gè)加法器和一個(gè)ROM表格,共有j個(gè),其中,j個(gè)加法器的“+”端都與上述多路求和電路輸出端相連,而“-”端分別與各個(gè)輸入端xj_in相連,而j個(gè)ROM表格的輸出端即為x1_out~xj_out,它們是從該和節(jié)點(diǎn)輸出到對(duì)應(yīng)積節(jié)點(diǎn)的迭代數(shù)據(jù);Mb個(gè)積節(jié)點(diǎn)處理陣列CNCU,每個(gè)單元各含有一個(gè)多路求和器,它的輸入端為i個(gè)從對(duì)應(yīng)和節(jié)點(diǎn)輸入到該積節(jié)點(diǎn)的數(shù)據(jù)輸入端x1_in~xi_in,即所述和節(jié)點(diǎn)處理陣列CNCU第i個(gè)處理單元CNCUi的一個(gè)輸入端與MEMC中與基矩陣第i第j列非零元素對(duì)應(yīng)的存儲(chǔ)器的輸出端相連;相互串聯(lián)的一個(gè)加法器和一個(gè)ROM表格,共有i個(gè),其中,i個(gè)加法器的“+”端都與上述多路求和電路輸出端相連,而“-”端分別與x1_in~xi_in各個(gè)輸入端相連,而i個(gè)ROM表格的輸出端即為x1_out~xi_out,它們是從該積節(jié)點(diǎn)輸出到對(duì)應(yīng)和節(jié)點(diǎn)的迭代數(shù)據(jù),也就是說,MEMV中基矩陣第i第j列非零元素對(duì)應(yīng)的存儲(chǔ)器的輸入端是連接到和節(jié)點(diǎn)處理陣列CNCU第i個(gè)處理單元CNCUi的一個(gè)輸出端的;輸入輸出存儲(chǔ)陣列MEMIO由2×Nb個(gè)長(zhǎng)為L(zhǎng)的存儲(chǔ)器構(gòu)成,其中Nb個(gè)存儲(chǔ)器用于存儲(chǔ)從信道解調(diào)器輸入到ILDPC譯碼器的碼元解調(diào)軟信息,這些存儲(chǔ)器的輸入端采用總線方式連接形成ILDPC譯碼器的數(shù)據(jù)輸入端,而它們的輸出端分別連接到Nb個(gè)和節(jié)點(diǎn)處理單元的LLR_in輸入端;另外的Nb個(gè)存儲(chǔ)器用于存儲(chǔ)譯碼器迭代譯碼結(jié)果,它們的輸出端分別與Nb個(gè)和節(jié)點(diǎn)處理單元VNCUj的dec_out輸出端連接,而它們的輸出端采用總線方式連接形成ILDPC譯碼器的數(shù)據(jù)輸出端;所述的ILDPC編譯碼器采用現(xiàn)場(chǎng)可編程邏輯門陣列FPGA實(shí)現(xiàn)。
全文摘要
非規(guī)則低密度奇偶校驗(yàn)碼的系統(tǒng)碼設(shè)計(jì)方法及其通信系統(tǒng)屬于通信信道編碼技術(shù)領(lǐng)域,其特征在于,它提出了一種面向硬件實(shí)現(xiàn)的非規(guī)則LDPC碼的系統(tǒng)碼的設(shè)計(jì)方法首先用半隨機(jī)生成法得到一個(gè)基校驗(yàn)矩陣H
文檔編號(hào)H03M13/09GK1558556SQ20041003923
公開日2004年12月29日 申請(qǐng)日期2004年2月9日 優(yōu)先權(quán)日2004年2月9日
發(fā)明者殷柳國, 陸建華 申請(qǐng)人:清華大學(xué)