文獻標識碼: A
文章編號: 0258-7998(2012)07-0051-03
LDPC碼[1](Low-Density Parity-Check Code)已經(jīng)被證明是實用的好碼,因其優(yōu)異的糾錯性能和高效的迭代譯碼算法而具有廣闊的應用前景。QC-LDPC碼(Quasi-Cyclic LDPC Code)是根據(jù)系統(tǒng)化構造方法構造的一類非常重要的LDPC碼,目前已經(jīng)成為LDPC碼硬件實現(xiàn)研究的熱點??臻g數(shù)據(jù)系統(tǒng)委員會(CCSDS)推薦了多種碼長和碼率的QC-LDPC碼作為衛(wèi)星通信和深空通信的信道編碼標準[2]。
為滿足不同碼率的需要,同時考慮譯碼器應當具有低復雜度和低功耗,本文設計了一種基于改進分層譯碼算法的譯碼器結構,以滿足實際需要。
其中每個子矩陣Ai,j都是一個z×z的循環(huán)方陣,此方陣只可能是零矩陣、單位陣或者單位循環(huán)移位后的矩陣。
置信傳播算法[3-4]BP(Belief-propagation decoding algorithm)是很重要的一類基于LDPC碼的譯碼算法,因其具有嚴格的數(shù)學結構和良好的性能,可以對譯碼算法的性能做定量分析。修正最小和(MMSP)譯碼算法[5]實際采用的是BP算法機制,雖然具有較低復雜度并保持良好的性能,但在實際應用中會占用大量硬件資源,且譯碼延時較長?;贠MS(Offset Min-Sum)的分層譯碼算法[6]能保證信息馬上得到傳遞,從而改進信息的收斂性。
2 譯碼器的FPGA實現(xiàn)
2.1 譯碼器結構總體設計
譯碼器有三種不同的譯碼結構:全并行結構、串行結構和部分并行結構。部分并行結構避免了全并行結構資源消耗過大、硬件實現(xiàn)難度大的缺點,同時譯碼速率比串行結構快得多,十分適于實際應用。然而,部分并行結構對校驗矩陣中非零元素的分布有特定的要求,而現(xiàn)有的大多數(shù)LDPC碼其校驗矩陣中“l”的分布具有隨機性,因此譯碼器采用部分并行結構十分困難。
QC-LDPC校驗矩陣H的每行校驗子矩陣中所有行對應的校驗節(jié)點自然地被劃分為一個校驗節(jié)點集合,而且任意兩個集合Li和Lj,滿足Li∩Lj=?準。集合Li中的任意兩個校驗節(jié)點Ci、Cj不與相同的變量節(jié)點相連,因此可以并行地對每一集合中的校驗節(jié)點Ci進行更新。
為此,借鑒全并行結構的思想,對串形結構進行修改,增加譯碼器中的并行節(jié)點更新模塊(NUU)個數(shù),得到的部分并行結構共有b個NUU單元。b為循環(huán)子矩陣的行數(shù)。
QC-LDPC并行譯碼器模塊主要由以下幾個模塊構成:輸入緩沖模塊、控制模塊、節(jié)點更新模塊(NUU)、數(shù)據(jù)存儲模塊、數(shù)據(jù)重構模塊、校驗模塊和譯碼輸出緩沖模塊,如圖1所示。其中,控制模塊分別產(chǎn)生各子模塊的使能,它是譯碼器的核心控制模塊,控制著迭代的正確進行;NUU為譯碼器的核心運算模塊;數(shù)據(jù)緩沖模塊用來判斷譯碼器速率是否大于進入譯碼器的數(shù)據(jù)速率;數(shù)據(jù)存儲模塊完成中間數(shù)據(jù)的存儲;數(shù)據(jù)重構模塊將變量節(jié)點更新的輸出數(shù)據(jù)按照校驗節(jié)點運算的取數(shù)順序重新排列;校驗模塊用來校驗判決出的碼字是否滿足校驗矩陣。
2.2 節(jié)點更新模塊(NUU)
本文實現(xiàn)的譯碼器采用基于修正因子的分層譯碼算法,每一層的校驗節(jié)點處理完成以后,信息立即被用來更新變量節(jié)點。它的結果被用來提供給下一層的校驗節(jié)點處理。因而校驗節(jié)點處理模塊和變量節(jié)點處理模塊可以合并成同一個模塊,簡稱節(jié)點更新模塊NUU(Node Update Unit)。
本文只研究信息位k=1 024的QC-LDPC碼,其結構如表1所示。
圖2所示的模塊是每層b路并行處理單元中的一個,b為校驗矩陣H的循環(huán)子矩陣的行數(shù)。為了降低部分并行LDPC碼譯碼器中連接的復雜度,節(jié)點更新模塊(NUU)中節(jié)點更新的信息都采用數(shù)據(jù)串行方法。變量節(jié)點的度決定了校驗節(jié)點單元一次處理的節(jié)點數(shù),將校驗節(jié)點單元處理的節(jié)點數(shù)設為節(jié)點變量的最大值,可以通過邏輯選通來適應不同的碼率。
2.3 數(shù)據(jù)存儲模塊
本文對接收到的原始數(shù)據(jù)和計算過程產(chǎn)生的中間數(shù)據(jù)都采用了8 bit整數(shù)量化,其中1 bit為符號位,7 bit為數(shù)據(jù)位。將譯碼開始時外部輸入的數(shù)據(jù)存入判決信息存儲器時,將接收的前b個二進制數(shù)據(jù)的最高位依次級聯(lián)為一個b bit的數(shù)據(jù),存入判決信息存儲器1,地址為0;將前b個數(shù)據(jù)的次高位級聯(lián)為一個b bit的數(shù)據(jù),存入判決信息存儲器2;然后依次將b個數(shù)據(jù)剩下的相同位置的數(shù)據(jù)級聯(lián),存入判決信息存儲器2:7,地址為0;將接收的后b個數(shù)據(jù)按上述同樣的方式存入判決信息存儲器1:7,地址為1;當待譯碼字的所有數(shù)據(jù)都存入了判決信息存儲器后,就開始譯碼。圖3為數(shù)據(jù)存儲模塊框圖。
當開始譯碼時,再將存放在存儲器里的b個級聯(lián)的數(shù)據(jù)還原成b個7 bit的數(shù)據(jù)。而當信息需要傳遞給下一層時,按照校驗節(jié)點運算的取數(shù)順序重新排列判決信息在子矩陣中的位置,這個功能由數(shù)據(jù)重構模塊實現(xiàn)。
3 性能測試
3.1 誤碼率性能測試
首先由數(shù)字信號發(fā)生器對待譯碼字進行BPSK調制,然后由加噪儀對調制后的信號加噪(高斯白噪聲)。在信號的接收端對該信號經(jīng)行解調、同步后,將待譯碼字的信道軟信息輸入FPGA譯碼芯片。譯碼芯片將譯碼后的結果傳輸給誤碼儀進行誤碼比對,計算誤碼率。
圖4為8 bit整數(shù)量化譯碼的仿真結果,在譯碼過程中所有的數(shù)據(jù)長度都為8 bit,其中符號位1 bit,信息位7 bit。其中,1/2和2/3碼率的QC-LDPC碼,迭代的最大次數(shù)為25;4/5碼率的QC-LDPC碼,迭代的最大次數(shù)為20。
3.2 譯碼器布局布線后結果
按照本節(jié)的半并行碼結構,在Xilinx公司的Virtex4 vlx160芯片上分別實現(xiàn)了CCSDS推薦的三種不同碼率的QC-LDPC碼編碼器。經(jīng)過綜合布線后得到芯片內嵌的存儲單元,如表2所示。
3.3 譯碼速率性能測試
輸入緩沖模塊中的FIFO有溢出指示電平en_full,可用來判斷譯碼速率是否合適。若數(shù)據(jù)緩沖區(qū)沒有數(shù)據(jù)溢出,則逐步增加數(shù)字信號發(fā)生器的符號速率,一直增加到緩沖區(qū)溢出的臨界值。這時得到的數(shù)字信號發(fā)生器的信息比特速率就是該譯碼器在該信噪比條件下的最大譯碼速率。
最后測試結果:當1/2碼率QC-LDPC碼譯碼器在信噪比Eb/N0=2 dB時,譯碼速率為183 Mb/s;當2/3碼率QC-LDPC碼譯碼器在信噪比Eb/N0=2.7 dB時,譯碼速率為143 Mb/s;當4/5碼率QC-LDPC碼譯碼器在信噪比Eb/N0=3.6 dB時,譯碼速率為90 Mb/s。
隨著信噪比的增加,譯碼器譯完一個碼字的迭代次數(shù)將隨之減少,因此譯碼的速率會隨著信噪比的增加而增加,但是并不是完全成比例的增加。這是因為待譯碼字的輸入速率是受限的,隨著譯碼速率的增加,譯碼器將擁有超過其待譯碼字輸入速率的能力,此時譯碼的速率將不再增加。本文實現(xiàn)的譯碼器最高可實現(xiàn)200 Mb/s的譯碼速率。
在對CCSDS推薦的QC-LDPC碼研究的基礎上,設計了一種基于改進分層譯碼算法的部分并行結構QC-LDPC譯碼器,并給出了節(jié)點更新模塊和數(shù)據(jù)存儲模塊的結構。譯碼器性能測試表明,該結構譯碼速率高,設計模塊化,布線簡單,便于Xilinx綜合布線工具生成性能良好的可下載文件。
參考文獻
[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.