文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2012)07-0051-03
LDPC碼[1](Low-Density Parity-Check Code)已經(jīng)被證明是實(shí)用的好碼,,因其優(yōu)異的糾錯(cuò)性能和高效的迭代譯碼算法而具有廣闊的應(yīng)用前景。QC-LDPC碼(Quasi-Cyclic LDPC Code)是根據(jù)系統(tǒng)化構(gòu)造方法構(gòu)造的一類(lèi)非常重要的LDPC碼,,目前已經(jīng)成為L(zhǎng)DPC碼硬件實(shí)現(xiàn)研究的熱點(diǎn),。空間數(shù)據(jù)系統(tǒng)委員會(huì)(CCSDS)推薦了多種碼長(zhǎng)和碼率的QC-LDPC碼作為衛(wèi)星通信和深空通信的信道編碼標(biāo)準(zhǔn)[2],。
為滿足不同碼率的需要,,同時(shí)考慮譯碼器應(yīng)當(dāng)具有低復(fù)雜度和低功耗,本文設(shè)計(jì)了一種基于改進(jìn)分層譯碼算法的譯碼器結(jié)構(gòu),,以滿足實(shí)際需要,。
其中每個(gè)子矩陣Ai,j都是一個(gè)z×z的循環(huán)方陣,,此方陣只可能是零矩陣,、單位陣或者單位循環(huán)移位后的矩陣。
置信傳播算法[3-4]BP(Belief-propagation decoding algorithm)是很重要的一類(lèi)基于LDPC碼的譯碼算法,因其具有嚴(yán)格的數(shù)學(xué)結(jié)構(gòu)和良好的性能,,可以對(duì)譯碼算法的性能做定量分析,。修正最小和(MMSP)譯碼算法[5]實(shí)際采用的是BP算法機(jī)制,雖然具有較低復(fù)雜度并保持良好的性能,,但在實(shí)際應(yīng)用中會(huì)占用大量硬件資源,,且譯碼延時(shí)較長(zhǎng)?;贠MS(Offset Min-Sum)的分層譯碼算法[6]能保證信息馬上得到傳遞,,從而改進(jìn)信息的收斂性。
2 譯碼器的FPGA實(shí)現(xiàn)
2.1 譯碼器結(jié)構(gòu)總體設(shè)計(jì)
譯碼器有三種不同的譯碼結(jié)構(gòu):全并行結(jié)構(gòu),、串行結(jié)構(gòu)和部分并行結(jié)構(gòu),。部分并行結(jié)構(gòu)避免了全并行結(jié)構(gòu)資源消耗過(guò)大、硬件實(shí)現(xiàn)難度大的缺點(diǎn),,同時(shí)譯碼速率比串行結(jié)構(gòu)快得多,,十分適于實(shí)際應(yīng)用。然而,,部分并行結(jié)構(gòu)對(duì)校驗(yàn)矩陣中非零元素的分布有特定的要求,,而現(xiàn)有的大多數(shù)LDPC碼其校驗(yàn)矩陣中“l”的分布具有隨機(jī)性,因此譯碼器采用部分并行結(jié)構(gòu)十分困難,。
QC-LDPC校驗(yàn)矩陣H的每行校驗(yàn)子矩陣中所有行對(duì)應(yīng)的校驗(yàn)節(jié)點(diǎn)自然地被劃分為一個(gè)校驗(yàn)節(jié)點(diǎn)集合,,而且任意兩個(gè)集合Li和Lj,滿足Li∩Lj=?準(zhǔn),。集合Li中的任意兩個(gè)校驗(yàn)節(jié)點(diǎn)Ci、Cj不與相同的變量節(jié)點(diǎn)相連,,因此可以并行地對(duì)每一集合中的校驗(yàn)節(jié)點(diǎn)Ci進(jìn)行更新,。
為此,借鑒全并行結(jié)構(gòu)的思想,,對(duì)串形結(jié)構(gòu)進(jìn)行修改,,增加譯碼器中的并行節(jié)點(diǎn)更新模塊(NUU)個(gè)數(shù),得到的部分并行結(jié)構(gòu)共有b個(gè)NUU單元,。b為循環(huán)子矩陣的行數(shù),。
QC-LDPC并行譯碼器模塊主要由以下幾個(gè)模塊構(gòu)成:輸入緩沖模塊、控制模塊,、節(jié)點(diǎn)更新模塊(NUU),、數(shù)據(jù)存儲(chǔ)模塊、數(shù)據(jù)重構(gòu)模塊,、校驗(yàn)?zāi)K和譯碼輸出緩沖模塊,,如圖1所示。其中,控制模塊分別產(chǎn)生各子模塊的使能,,它是譯碼器的核心控制模塊,,控制著迭代的正確進(jìn)行;NUU為譯碼器的核心運(yùn)算模塊,;數(shù)據(jù)緩沖模塊用來(lái)判斷譯碼器速率是否大于進(jìn)入譯碼器的數(shù)據(jù)速率,;數(shù)據(jù)存儲(chǔ)模塊完成中間數(shù)據(jù)的存儲(chǔ);數(shù)據(jù)重構(gòu)模塊將變量節(jié)點(diǎn)更新的輸出數(shù)據(jù)按照校驗(yàn)節(jié)點(diǎn)運(yùn)算的取數(shù)順序重新排列,;校驗(yàn)?zāi)K用來(lái)校驗(yàn)判決出的碼字是否滿足校驗(yàn)矩陣,。
2.2 節(jié)點(diǎn)更新模塊(NUU)
本文實(shí)現(xiàn)的譯碼器采用基于修正因子的分層譯碼算法,每一層的校驗(yàn)節(jié)點(diǎn)處理完成以后,,信息立即被用來(lái)更新變量節(jié)點(diǎn),。它的結(jié)果被用來(lái)提供給下一層的校驗(yàn)節(jié)點(diǎn)處理。因而校驗(yàn)節(jié)點(diǎn)處理模塊和變量節(jié)點(diǎn)處理模塊可以合并成同一個(gè)模塊,,簡(jiǎn)稱(chēng)節(jié)點(diǎn)更新模塊NUU(Node Update Unit),。
本文只研究信息位k=1 024的QC-LDPC碼,其結(jié)構(gòu)如表1所示,。
圖2所示的模塊是每層b路并行處理單元中的一個(gè),,b為校驗(yàn)矩陣H的循環(huán)子矩陣的行數(shù)。為了降低部分并行LDPC碼譯碼器中連接的復(fù)雜度,,節(jié)點(diǎn)更新模塊(NUU)中節(jié)點(diǎn)更新的信息都采用數(shù)據(jù)串行方法,。變量節(jié)點(diǎn)的度決定了校驗(yàn)節(jié)點(diǎn)單元一次處理的節(jié)點(diǎn)數(shù),將校驗(yàn)節(jié)點(diǎn)單元處理的節(jié)點(diǎn)數(shù)設(shè)為節(jié)點(diǎn)變量的最大值,,可以通過(guò)邏輯選通來(lái)適應(yīng)不同的碼率,。
2.3 數(shù)據(jù)存儲(chǔ)模塊
本文對(duì)接收到的原始數(shù)據(jù)和計(jì)算過(guò)程產(chǎn)生的中間數(shù)據(jù)都采用了8 bit整數(shù)量化,其中1 bit為符號(hào)位,,7 bit為數(shù)據(jù)位,。將譯碼開(kāi)始時(shí)外部輸入的數(shù)據(jù)存入判決信息存儲(chǔ)器時(shí),將接收的前b個(gè)二進(jìn)制數(shù)據(jù)的最高位依次級(jí)聯(lián)為一個(gè)b bit的數(shù)據(jù),,存入判決信息存儲(chǔ)器1,,地址為0;將前b個(gè)數(shù)據(jù)的次高位級(jí)聯(lián)為一個(gè)b bit的數(shù)據(jù),,存入判決信息存儲(chǔ)器2,;然后依次將b個(gè)數(shù)據(jù)剩下的相同位置的數(shù)據(jù)級(jí)聯(lián),存入判決信息存儲(chǔ)器2:7,,地址為0,;將接收的后b個(gè)數(shù)據(jù)按上述同樣的方式存入判決信息存儲(chǔ)器1:7,地址為1,;當(dāng)待譯碼字的所有數(shù)據(jù)都存入了判決信息存儲(chǔ)器后,,就開(kāi)始譯碼,。圖3為數(shù)據(jù)存儲(chǔ)模塊框圖。
當(dāng)開(kāi)始譯碼時(shí),,再將存放在存儲(chǔ)器里的b個(gè)級(jí)聯(lián)的數(shù)據(jù)還原成b個(gè)7 bit的數(shù)據(jù),。而當(dāng)信息需要傳遞給下一層時(shí),按照校驗(yàn)節(jié)點(diǎn)運(yùn)算的取數(shù)順序重新排列判決信息在子矩陣中的位置,,這個(gè)功能由數(shù)據(jù)重構(gòu)模塊實(shí)現(xiàn),。
3 性能測(cè)試
3.1 誤碼率性能測(cè)試
首先由數(shù)字信號(hào)發(fā)生器對(duì)待譯碼字進(jìn)行BPSK調(diào)制,然后由加噪儀對(duì)調(diào)制后的信號(hào)加噪(高斯白噪聲),。在信號(hào)的接收端對(duì)該信號(hào)經(jīng)行解調(diào),、同步后,將待譯碼字的信道軟信息輸入FPGA譯碼芯片,。譯碼芯片將譯碼后的結(jié)果傳輸給誤碼儀進(jìn)行誤碼比對(duì),,計(jì)算誤碼率。
圖4為8 bit整數(shù)量化譯碼的仿真結(jié)果,,在譯碼過(guò)程中所有的數(shù)據(jù)長(zhǎng)度都為8 bit,,其中符號(hào)位1 bit,信息位7 bit,。其中,,1/2和2/3碼率的QC-LDPC碼,迭代的最大次數(shù)為25,;4/5碼率的QC-LDPC碼,,迭代的最大次數(shù)為20。
3.2 譯碼器布局布線后結(jié)果
按照本節(jié)的半并行碼結(jié)構(gòu),,在Xilinx公司的Virtex4 vlx160芯片上分別實(shí)現(xiàn)了CCSDS推薦的三種不同碼率的QC-LDPC碼編碼器,。經(jīng)過(guò)綜合布線后得到芯片內(nèi)嵌的存儲(chǔ)單元,如表2所示,。
3.3 譯碼速率性能測(cè)試
輸入緩沖模塊中的FIFO有溢出指示電平en_full,,可用來(lái)判斷譯碼速率是否合適。若數(shù)據(jù)緩沖區(qū)沒(méi)有數(shù)據(jù)溢出,,則逐步增加數(shù)字信號(hào)發(fā)生器的符號(hào)速率,一直增加到緩沖區(qū)溢出的臨界值,。這時(shí)得到的數(shù)字信號(hào)發(fā)生器的信息比特速率就是該譯碼器在該信噪比條件下的最大譯碼速率,。
最后測(cè)試結(jié)果:當(dāng)1/2碼率QC-LDPC碼譯碼器在信噪比Eb/N0=2 dB時(shí),譯碼速率為183 Mb/s,;當(dāng)2/3碼率QC-LDPC碼譯碼器在信噪比Eb/N0=2.7 dB時(shí),,譯碼速率為143 Mb/s;當(dāng)4/5碼率QC-LDPC碼譯碼器在信噪比Eb/N0=3.6 dB時(shí),,譯碼速率為90 Mb/s,。
隨著信噪比的增加,,譯碼器譯完一個(gè)碼字的迭代次數(shù)將隨之減少,因此譯碼的速率會(huì)隨著信噪比的增加而增加,,但是并不是完全成比例的增加,。這是因?yàn)榇g碼字的輸入速率是受限的,隨著譯碼速率的增加,,譯碼器將擁有超過(guò)其待譯碼字輸入速率的能力,,此時(shí)譯碼的速率將不再增加。本文實(shí)現(xiàn)的譯碼器最高可實(shí)現(xiàn)200 Mb/s的譯碼速率,。
在對(duì)CCSDS推薦的QC-LDPC碼研究的基礎(chǔ)上,,設(shè)計(jì)了一種基于改進(jìn)分層譯碼算法的部分并行結(jié)構(gòu)QC-LDPC譯碼器,并給出了節(jié)點(diǎn)更新模塊和數(shù)據(jù)存儲(chǔ)模塊的結(jié)構(gòu),。譯碼器性能測(cè)試表明,,該結(jié)構(gòu)譯碼速率高,設(shè)計(jì)模塊化,,布線簡(jiǎn)單,,便于Xilinx綜合布線工具生成性能良好的可下載文件。
參考文獻(xiàn)
[1] GALLAGER R G.Low density parity-check codes[J].IEEE Trans.Inf.Theory,,1962,,8(1):21-28.
[2] The consultative committee for space data systems.131.1-O-2 low density parity check codes for use in near-earth and deep space applications[S].Washington D.C,USA,,CCSDS,,2007.
[3] KSCHISCHANG F R,F(xiàn)REY B J,,LOELIGER H A.Factor graphs and the sum-product algorithm[J].IEEE Transaction. Information.Theory,,2001(47):498-519.
[4] FREY B J,KSCHISCHANG F R.Probability propagation and iterative decoding[C].In Proceeding.34th Allerton Conference.On Communication,,Control,,and Computing,Monticello,,Illinois,,Oct.1996.
[5] Zhang Luoming,Gui Lin,,Xu Youyun,,et al.Configurable multi-rate decoder architecture for QC-LDPC codes based broadband broadcasting system[J].IEEE Transactons on broadcasting,2008,,54(2):226-235.
[6] GUNNAM K K,,CHOI G S,Wang Weihuang,,et al. Decoding of quasic-cyclic LDPC codes using an on-the-fly computation[C].Signals,,Systems and Computers,,2006. ACSSC’06,2006(1):1192-1199.