基于ACE約束的S-IRA編譯碼器設(shè)計
摘要:考慮到結(jié)構(gòu)化非規(guī)則重復(fù)累積碼具有準(zhǔn)循環(huán)的結(jié)構(gòu)便于硬件實現(xiàn),采用了結(jié)構(gòu)化非規(guī)則重復(fù)累積碼進(jìn)行編碼器設(shè)計。準(zhǔn)循環(huán)矩陣的構(gòu)造采用了基于ACE約束的PEG填充構(gòu)造方法。結(jié)合所用碼型的特點(diǎn),設(shè)計出了簡單有效的編碼流程圖。譯碼方面,采用了分層修正最小和譯碼算法,并設(shè)計出了譯碼器結(jié)構(gòu)。
關(guān)鍵詞:結(jié)構(gòu)化非規(guī)則重復(fù)累積碼;分層修正最小和譯碼算法;編碼器結(jié)構(gòu);譯碼器結(jié)構(gòu)
O 引言
重復(fù)累積碼(Repeat-Accumulate Codes)是由D.Divsalar等人于1998年提出的,作為LDPC碼與Turbo碼的一個子集,在譯碼方面它具有LDPC碼優(yōu)異的性能以及并行譯碼的優(yōu)勢,在編碼方面又同時具有Turbo碼線性復(fù)雜度的特點(diǎn),因此受到廣泛關(guān)注。在實際應(yīng)用方面,歐洲D(zhuǎn)VB-S2標(biāo)準(zhǔn)中的信道編碼部分采用了RA碼的技術(shù)。經(jīng)過近幾年的研究,重復(fù)累積碼有了一些新的發(fā)展,如非規(guī)則重復(fù)累積碼(IRA)、擴(kuò)展重復(fù)累積碼(elRA)、累積重復(fù)累積碼(ARA)、結(jié)構(gòu)化的非規(guī)則重復(fù)累積碼(S-IRA)等,這些碼對RA碼的誤碼性能、誤碼平層、編碼復(fù)雜度以及碼率的靈活性等方面進(jìn)行了改善。
為了減少硬件實現(xiàn)的復(fù)雜度,提高編譯碼器的吞吐量,將校驗矩陣構(gòu)造成準(zhǔn)循環(huán)形式是一種普遍被采用的方法。因此,考慮到S-IRA碼具有準(zhǔn)循環(huán)形式,本文采用了基于ACE約束的S-IRA碼進(jìn)行編碼器設(shè)計,使用分層最小和譯碼算法進(jìn)行譯碼器設(shè)計。
1 編碼器設(shè)計
1.1 RA碼校驗矩陣設(shè)計
RA碼編碼就是將信息位u中的每一位重復(fù)q次,經(jīng)過交織以后輸入傳輸函數(shù)為的累加器,經(jīng)過累加即得到校驗位p,完成編碼。RA碼可分為非系統(tǒng)碼和系統(tǒng)碼兩類,RA碼與IRA碼系統(tǒng)碼的校驗矩陣可以表示為H=[H1H2]。H1的列重為{db,t},行重為{dc,i}。H2具有差分形式:
由于H2的差分形式,可以直接使用校驗矩陣H進(jìn)行編碼,為了降低編碼復(fù)雜度,將H1設(shè)計成準(zhǔn)循環(huán)形式,即為結(jié)構(gòu)化的IRA碼(S-IRA)。但如果將H1直接構(gòu)造成準(zhǔn)循環(huán)形式,H2的雙對角線形式會使構(gòu)造出的校驗矩陣最小漢明距離太小,而先構(gòu)造與H1相同大小的準(zhǔn)循環(huán)矩陣P,再將P進(jìn)行行交織得到H1則可以避免這個問題。
在設(shè)計校驗矩陣時,采用了中提出的基于近似環(huán)外信息度(Approximate Cycle Extrinsic Message Degree)約束的邊增長算法(PEG)來構(gòu)造準(zhǔn)循環(huán)矩陣P。
1.2 編碼器結(jié)構(gòu)
編碼器最復(fù)雜的部分在于信息位u通過準(zhǔn)循環(huán)矩陣PT,即進(jìn)行uPT的運(yùn)算。本文采用上海交通大學(xué)無線通信研究所LDPC小組提出的SRAA(shift-register-identity-matrix-ad-der-accumulator)結(jié)構(gòu)進(jìn)行uPT的運(yùn)算。
假設(shè)準(zhǔn)循環(huán)矩陣P的大小為M×Q行,K×Q列。其中Q×Q為P中循環(huán)置換矩陣和全零矩陣的大小。將信息序列u順序分成K段,每段長為Q比特,即u=(u1,u2,…,uK),其中。將準(zhǔn)循環(huán)矩陣P寫作:
其中Pi,j為P中的循環(huán)置換矩陣或者全零矩陣。在硬件中存儲P時,只需存儲每個Pi,j第一列“l(fā)”元素的位置,當(dāng)Pi,j為全零矩陣時,存儲的位置為O。
假設(shè)v=uPT,v=(v1,v2,…,vM),其中,有下式成立:
由(2)式以及(3)式,計算vi的電路如下:
圖中的第i個RAM儲存對應(yīng)循環(huán)置換矩陣的參數(shù),即的第一行“1”元素的位置,因此每個RAM存儲K個“1”元素位置。編碼時,每輸入Q個信息位,SRAA電路便從RAM中讀入循環(huán)置換矩陣的參數(shù)。
交織器使用一段RAM存儲交織順序,并按存儲的順序讀出SRAA中運(yùn)算結(jié)果v,即完成交織。
基于上面的SRAA計算電路本文提出了圖5所示的編碼器結(jié)構(gòu)。
為了使編碼連續(xù)進(jìn)行,在交織器之后以及編碼器輸出端使用乒乓RAM,如圖5中的RAMl和RAM2,以及RAM3和編碼流程可分為三步:
Stagel:串行輸入信息u,每個輸入的信息ui分成兩路,一路依次存入Bufferl緩存器,另一路輸入uPT計算電路,計算結(jié)果v保存在SRAA電路的寄存器中。
Stage2:從Buffer2中將信息位依次讀至RAMl、RAM2,Bufferl中的信息依次讀至Buffer2,而Bufferl中繼續(xù)存入新的信息位。交織器將uPT計算電路的計算結(jié)果按交織順序讀至累加器,并將產(chǎn)生的校驗位輸入RAM3、RAM4。
Stage3:將RAMl或RAM2中的信息位u以及RAM3或RAM4中的校驗位p依次讀出,完成碼字的串行輸出。
2 譯碼器設(shè)計
譯碼方面采用了LMMSA算法。為了便于硬件的并行處理,本文采用LMMSA譯碼算法,在分層上保證每層的列重至多為1。對于前面所提到的S-IRA碼,則可以對校驗矩陣按照每行為一層進(jìn)行分層,即從列上看每一層只有一個循環(huán)位移矩陣或全零矩陣。
針對上面提到的S-IRA碼本文提出了如圖6所示的譯碼器結(jié)構(gòu)。
其中Q=36,M=14,K=14,設(shè)計成輸入緩存部分以及外信息計算部分。其中外信息計算部分每次計算一層的校驗位,因此并行度為Q=36,將接收到的通過信道串行輸入的每個信息比特的接收值量化成7位定點(diǎn)數(shù),為了讓譯碼器能連續(xù)地接收通過信道傳遞的信息,輸入緩存部分也采用乒乓RAM的形式。由于外信息計算部分的并行度為Q=36,因此輸入緩存部分與下一級之間的每次輸出/輸出均為Q×7位。由于RAMl、RAM2儲存外信息值,因此直接對其中的外信息進(jìn)行硬判決。
對于外信息計算部分,由于每層的列重至多為1,因此每一個外信息計算單元可以在每一層的計算中更新該單元對應(yīng)行的外信息。
從輸入緩存部分輸入的外信息與RAMl中的相減得到,將存人RAM2,并輸入比較/選擇器。當(dāng)該行的全部計算完畢后,從比較/選擇器輸出,經(jīng)過乘法器得到的存入RAMl,并與緩存在RAM2中的相加,得到,即完成一次迭代。由于RAM2中的數(shù)據(jù)輸出可以連續(xù)地輸入輸出,因此在輸入完該次迭代的所有后,馬上可以接著輸入下一次迭代的,從而譯碼可以連續(xù)地進(jìn)行。
比較/選擇器的作用是計算,即2.1.3式的后半部分。由于輸出的絕對值只有兩種:最大值和次最大值,因此只需得到最大值和次最大值以及各自對應(yīng)的位置,并記錄對應(yīng)的正負(fù)符號,就可以完全確定。
在譯碼的橫向計算過程中,對于某一行,比較/選擇器首先初始化,其輸入端輸入前一級加法器輸出的,將輸入的符號存入符號寄存器(其中符號寄存器增加一位符號累加位,計算該行的符號),并將||首先與存儲器中的最小值比較,如果輸入值小于最小值存儲器中所存儲的值,則將最小值存儲器中所存儲的值存入次小值存儲器,然后將輸入值存入最小值存儲器,并在最小/次小選擇寄存器中記錄最小值位置,接著開始下一個值的比較;如果輸入值大于最小值存儲器中所存儲的值,則接著與次小值存儲器中的值比較,如果輸入值小于次小值存儲器中的值,則將輸入值存入次小值存儲器,接著進(jìn)行下一個輸入值的比較,如果輸入值大于次小值存儲器中的值,則直接進(jìn)行下一個輸入值的比較。當(dāng)該行所有都處理完畢后,則按照符號寄存器中的符號依次輸出,并按照最?。涡∵x擇寄存器中記錄選擇依次輸出最小值或次小值,即。
3 仿真結(jié)果及分析
圖lO中黑色曲線為本文提出的RA碼構(gòu)造方法所構(gòu)造出碼字的誤碼率曲線和誤幀率曲線。仿真選擇碼長為1008,碼率1/2,b=7,列重分布盡量符合密度進(jìn)化算法的結(jié)果。采用BPSK調(diào)制,AWGN信道,采用log-BP算法譯碼,最大迭代次數(shù)為50次。
紅色曲線為傳統(tǒng)的基于PEG邊增長算法構(gòu)造出碼字的誤碼率曲線和誤幀率曲線。為便于對比,仿真時選擇的碼長同樣為1008,碼率l/2,采用。BPSK調(diào)制,AWGN信道,采用log-BP算法譯碼,最大迭代次數(shù)為50次。
從仿真結(jié)果來看,本文提出的碼字構(gòu)造方法所構(gòu)造碼字的誤碼平層在10-6左右,而傳統(tǒng)的基于PEG邊增長算法構(gòu)造出碼字的誤碼平層則在10-7,性能要更好。這是因為在RA碼的校驗矩陣中存在一列列重為1的列,H2的雙對角形式使得其最小碼距太小,RmD碼便是針對這一問題而產(chǎn)生的。針對H2的優(yōu)化已有很多文章專門討論,文獻(xiàn)所介紹了幾種有效的處理方法。但本文所提的碼字構(gòu)造方法構(gòu)造簡單,便于硬件實現(xiàn)時的并行處理,有利于實現(xiàn)編譯碼器的高吞吐量。
對于不同碼長、碼率的S-IRA碼,都可以采用上面所提到的方法得到,當(dāng)然Q越小,資源消耗就越大。對于編碼器,碼長、碼率不同,則uPT需改變各個存儲器的大小,而計算電路則需改變SR從計算電路的數(shù)量。對于譯碼器同樣需要改變各個存儲器的大小以及外信息計算單元的數(shù)量。
4 結(jié)論
使用單位陣的循環(huán)移位矩陣作為非零子矩陣構(gòu)造LDPC碼的循環(huán)矩陣結(jié)構(gòu)十分適合于部分并行譯碼實現(xiàn),而RA碼則具有編碼復(fù)雜度低的特點(diǎn)。本文結(jié)合兩者的特點(diǎn)設(shè)計出了硬件實現(xiàn)時的編譯碼器結(jié)構(gòu),由于采用的循環(huán)矩陣結(jié)構(gòu)因而實現(xiàn)時可以占用很少的資源。