基于CMMB系統(tǒng)的LDPC譯碼器的設(shè)計與實現(xiàn)
摘要:根據(jù)CMMB中LDPC碼校驗矩陣的結(jié)構(gòu)特點(diǎn),提出了一種部分并行譯碼結(jié)構(gòu)的實現(xiàn)方法,并在XILINX的VirtexIV的XC4VLX80型FPGA上實現(xiàn)了這種結(jié)構(gòu)。該設(shè)計充分利用了LDPC校驗矩陣的規(guī)律,采用了一種適當(dāng)?shù)挠布Y(jié)構(gòu)和獨(dú)特的存儲器調(diào)用控制策略,故可在保證高性能和較大吞吐率的情況下,以較少的硬件資源實現(xiàn)兩種碼率的復(fù)用。
關(guān)鍵詞:CMMB;中國移動多媒體廣播;LDPC碼;部分并行結(jié)構(gòu);譯碼器
0 引言
低密度奇偶校驗(Low Density Parity Check,LDPC)碼是由Gallager博士在1962年首次提出來的,由于LDPC碼的誤碼性能能夠逼近香農(nóng)限,因而在無線通信、衛(wèi)星通信等領(lǐng)域都得到了較多應(yīng)用。中國移動多媒體廣播(CMMB)中使用的就是LDPC糾錯編碼。在CMMB標(biāo)準(zhǔn)中,LDPC碼長為9216,可支持1/2和3/4兩種碼率。作者通過深入分析CMMB中LDPC碼校驗矩陣的特點(diǎn),采用了一種合適的硬件實現(xiàn)結(jié)構(gòu),因而在保證譯碼器較高性能和較快譯碼速度的情況下,以較低的硬件資源實現(xiàn)了兩種碼率的復(fù)用。
1 CMMB標(biāo)準(zhǔn)中的LDPC譯碼算法
1.1 CMMB中LDPC碼的主要特征
CMMB采用規(guī)則的LDPC碼,兩種碼率的LDPC校驗矩陣有類似的規(guī)律。CMMB中1/2碼率的LDPC碼校驗矩陣為一個4608x9216的矩陣,進(jìn)一步可劃分為256個18x9216行子矩陣。其中下一個行子矩陣是上一個行子矩陣的向右循環(huán)移36位,每一個行子矩陣的行重都為6;也可以把它劃分為256個4608x36列子矩陣,其中后一個列子矩陣是前一個列子矩陣的向下循環(huán)移18位,每一個列子矩陣的列重都為3。同理,3/4碼率的矩陣也可以進(jìn)行類似的劃分,可劃分為256個9x9216的行子矩陣,每個行子矩陣的行重為12;當(dāng)然,也可以分為256個2304x36,列重為3的列子矩陣。從校驗矩陣的特點(diǎn)可以看出,只要存儲器能存儲一個行或列子矩陣的非零元素,則利用這些非零元素,就可以恢復(fù)出整個校驗矩陣,從而進(jìn)行譯碼。而且更為重要的是,對于同種碼率,行子矩陣組和列子矩陣組之間在非零元素位置上有著潛在的對應(yīng)關(guān)系。本文正是通過挖掘這種潛在的對應(yīng)關(guān)系,設(shè)計出了一種獨(dú)特的存儲器調(diào)用控制策略,并成功實現(xiàn)了復(fù)用RAM的同時,滿足了兩種碼率的硬件結(jié)構(gòu)。
1.2 LDPC譯碼算法
常用的LDPC碼譯碼算法為置信度傳遞解碼算法(BP decoding)。該算法相對比較成熟,性能非常優(yōu)異。但是,BP算法中的f(x)函數(shù)包含對數(shù)運(yùn)算和指數(shù)運(yùn)算,這些復(fù)雜運(yùn)算大大增加了BP譯碼器的運(yùn)算量和復(fù)雜度。Fossorier等在1999年提出了一種min-sum譯碼算法,即利用一種近似的方法來處理BP算法中的f(x)函數(shù),以將對數(shù)和指數(shù)運(yùn)算化簡為乘法和比較運(yùn)算,從而減少了譯碼器的運(yùn)算量,但該方法在性能上也有一定損失。后來,Jinghu Chen和Fossorier又提出了修正的min-sum算法。在碼長較長的情況下,修正的min-sum算法比BP算法性能只差0.03~0.05 dB,而在算法復(fù)雜度上則只需要乘以一個常量修正因子?;谝陨戏治?,本文采用修正的min-sum算法來進(jìn)行迭代更新,此更新分為校驗節(jié)點(diǎn)更新和變量節(jié)點(diǎn)更新。其迭代譯碼步驟分為兩步。
第一步是初始化,即對每個m和n,
其次是迭代過程。而每次迭代又包括以下3個步驟:
從而達(dá)到預(yù)定的迭代次數(shù)。否則重新更新Qm=n并開始下一輪迭代。上面式中的k表示第k次迭代。
記集合N(m)表示與校驗節(jié)點(diǎn)相連的所有變量節(jié)點(diǎn);集合M(n)表示與變量節(jié)點(diǎn)相連的所有校驗節(jié)點(diǎn);N(m)\n表示N(m)中除去變量節(jié)點(diǎn)n,同理,M(n)\m表示M(n)中除去校驗節(jié)點(diǎn)m。α一般取值為0.6~0.9,本系統(tǒng)中通過C模型浮點(diǎn)和定點(diǎn)仿真,可以得到α的最佳取值約為0.8,為了便于移位實現(xiàn),取值為0.7875或者0.8125均可。
評論