《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 基于CMMB系統(tǒng)的LDPC譯碼器的設(shè)計與實(shí)現(xiàn)
基于CMMB系統(tǒng)的LDPC譯碼器的設(shè)計與實(shí)現(xiàn)
電子元器件應(yīng)用
李江林,于忠臣 北京工業(yè)大學(xué)
摘要: 摘要:根據(jù)CMMB中LDPC碼校驗(yàn)矩陣的結(jié)構(gòu)特點(diǎn),提出了一種部分并行譯碼結(jié)構(gòu)的實(shí)現(xiàn)方法,并在XILINX的VirtexIV的XC4VLX80型FPGA上實(shí)現(xiàn)了這種結(jié)構(gòu)。該設(shè)計充分利用了LDPC校驗(yàn)矩陣的規(guī)律,采用了一種適當(dāng)?shù)挠布Y(jié)構(gòu)和獨(dú)特
關(guān)鍵詞: FPGA VirtexIV XC4VLX80 CMMB LDPC
Abstract:
Key words :

摘要:根據(jù)CMMBLDPC碼校驗(yàn)矩陣的結(jié)構(gòu)特點(diǎn),提出了一種部分并行譯碼結(jié)構(gòu)的實(shí)現(xiàn)方法,并在XILINX的VirtexIVXC4VLX80FPGA上實(shí)現(xiàn)了這種結(jié)構(gòu)。該設(shè)計充分利用了LDPC校驗(yàn)矩陣的規(guī)律,采用了一種適當(dāng)?shù)挠布Y(jié)構(gòu)和獨(dú)特的存儲器調(diào)用控制策略,故可在保證高性能和較大吞吐率的情況下,以較少的硬件資源實(shí)現(xiàn)兩種碼率的復(fù)用。
關(guān)鍵詞:CMMB;中國移動多媒體廣播;LDPC碼;部分并行結(jié)構(gòu);譯碼器

0 引言
    低密度奇偶校驗(yàn)(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碼校驗(yàn)矩陣的特點(diǎn),采用了一種合適的硬件實(shí)現(xiàn)結(jié)構(gòu),因而在保證譯碼器較高性能和較快譯碼速度的情況下,以較低的硬件資源實(shí)現(xiàn)了兩種碼率的復(fù)用。

1 CMMB標(biāo)準(zhǔn)中的LDPC譯碼算法
1.1 CMMB中LDPC碼的主要特征
    CMMB采用規(guī)則的LDPC碼,兩種碼率的LDPC校驗(yàn)矩陣有類似的規(guī)律。CMMB中1/2碼率的LDPC碼校驗(yàn)矩陣為一個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的列子矩陣。從校驗(yàn)矩陣的特點(diǎn)可以看出,只要存儲器能存儲一個行或列子矩陣的非零元素,則利用這些非零元素,就可以恢復(fù)出整個校驗(yàn)矩陣,從而進(jìn)行譯碼。而且更為重要的是,對于同種碼率,行子矩陣組和列子矩陣組之間在非零元素位置上有著潛在的對應(yīng)關(guān)系。本文正是通過挖掘這種潛在的對應(yīng)關(guān)系,設(shè)計出了一種獨(dú)特的存儲器調(diào)用控制策略,并成功實(shí)現(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)行迭代更新,此更新分為校驗(yàn)節(jié)點(diǎn)更新和變量節(jié)點(diǎn)更新。其迭代譯碼步驟分為兩步。
    第一步是初始化,即對每個m和n,a.JPG
    其次是迭代過程。而每次迭代又包括以下3個步驟:
b.JPG
從而達(dá)到預(yù)定的迭代次數(shù)。否則重新更新Qm=n并開始下一輪迭代。上面式中的k表示第k次迭代。
    記集合N(m)表示與校驗(yàn)節(jié)點(diǎn)相連的所有變量節(jié)點(diǎn);集合M(n)表示與變量節(jié)點(diǎn)相連的所有校驗(yàn)節(jié)點(diǎn);N(m)\n表示N(m)中除去變量節(jié)點(diǎn)n,同理,M(n)\m表示M(n)中除去校驗(yàn)節(jié)點(diǎn)m。α一般取值為0.6~0.9,本系統(tǒng)中通過C模型浮點(diǎn)和定點(diǎn)仿真,可以得到α的最佳取值約為0.8,為了便于移位實(shí)現(xiàn),取值為0.7875或者0.8125均可。



2 CMMB中LDPC譯碼器的硬件實(shí)現(xiàn)
2.1 譯碼器總體結(jié)構(gòu)
    LDPC碼的譯碼器通常有串行結(jié)構(gòu)、并行結(jié)構(gòu)和部分并行結(jié)構(gòu)等。根據(jù)校驗(yàn)矩陣的特點(diǎn),LDPC部分并行譯碼結(jié)構(gòu)可簡單分為輸入和輸出存儲單元、VNU(變量節(jié)點(diǎn)運(yùn)算)單元、CNU(校驗(yàn)節(jié)點(diǎn)運(yùn)算)單元和中間結(jié)果存儲單元。其譯碼器結(jié)構(gòu)如圖1所示。為了便于ASIC實(shí)現(xiàn),本文采用單端口RAM,每塊RAM由一個控制器控制以實(shí)現(xiàn)不同碼率的地址初始化、讀RAM、寫RAM等操作。

c.JPG


2.2 輸入和輸出存儲單元
    檢測到輸入數(shù)據(jù)有效后,可把輸入的串行數(shù)據(jù)依次存到初始化RAM里。本譯碼器一共有36個初始化存儲器,每個存儲器的深度為256。第1個數(shù)據(jù)存到第1個RAM的0地址,第2個數(shù)據(jù)存到第2個RAM的0地址,依次類推,第37個數(shù)據(jù)再存到第1個RAM的1地址,直到一幀9216個數(shù)據(jù)全部存滿36個RAM。同樣,輸出存儲單元可采用類似的存儲器調(diào)度方式。為了實(shí)現(xiàn)譯碼的連續(xù)性,本設(shè)計在輸入和輸出部分使用了乒乓結(jié)構(gòu),即采用兩組相同的36個RAM交替操作方式。
2.3 VNU單元
    VNU單元用于完成兩部分工作:一是由校驗(yàn)節(jié)點(diǎn)和初始化信息來更新變量節(jié)點(diǎn)的值;二是對每一列進(jìn)行硬判決。檢驗(yàn)節(jié)點(diǎn)更新后的值將存儲到存儲單元R_Mem,而硬判決后的比特值則存到輸出存儲單元,直到滿足停止譯碼兩個條件之一時才可輸出碼字。第一次垂直更新時,不用輸入存儲單元Q_Mem的值,而只把輸入存儲單元里的初始值送到VNU單元進(jìn)行更新運(yùn)算即可。由于兩種碼率下LDPC檢驗(yàn)矩陣的列重都是3,因此,兩種碼率下的VNU個數(shù)都為36個,且每個VNU結(jié)構(gòu)也都是4輸入的VNU。每次運(yùn)算時,都必須讀輸入存儲單元和Q_Mem(除第一次迭代外)中的數(shù)據(jù)的運(yùn)算結(jié)果,但應(yīng)同時寫入R_Mem存儲單元中。本操作內(nèi)部采用流水線結(jié)構(gòu),每次迭代都延遲2個時鐘周期。由于讀地址都為0,而且讀地址每次加1,因此,執(zhí)行變量節(jié)點(diǎn)更新運(yùn)算共需花費(fèi)256+2個時鐘,垂直更新結(jié)構(gòu)的變量節(jié)點(diǎn)單元加法運(yùn)算器結(jié)構(gòu)如圖2所示。

d.JPG


2.4 CNU單元
    CNU單元也包括兩部分工作:一是由變量節(jié)點(diǎn)來更新校驗(yàn)節(jié)點(diǎn)的值,并將更新后的值存儲到外部存儲器;二是對每一行硬判決后的比特進(jìn)行校驗(yàn),以確定其是否滿足校驗(yàn)方程,也就是對每一行所對應(yīng)比特進(jìn)行異或,并看結(jié)果是否為零。若所有行的異或結(jié)構(gòu)都為零,則譯碼成功,退出迭代。在CMMB標(biāo)準(zhǔn)中,兩種碼率校驗(yàn)矩陣H的行重有所不同(分別為6和12)。為了能共用CNU模塊并且共享存儲器資源,筆者設(shè)計了12輸入的CNU單元,并且使用9個CNU單元并行計算。這樣,當(dāng)碼率為1/2時,1個CNU單元更新2行,9個正好更新18行;而當(dāng)碼率為3/4時,9個CNU單元更新9行。每個12輸入的CNU單元由2個6輸入CNU單元組成,通過1個選擇器可控制CNU輸出。l/2碼率時,2個6輸入CNU的輸出結(jié)果可直接作為12輸入CNU的輸出結(jié)果,然后經(jīng)緩存后送入Q_Mem;3/4碼率時,2個6輸入CNU的輸出再經(jīng)過一級比較器得出的結(jié)果,才作為12輸入CNU的輸出值送到Q_Mem存儲。為了方便比較最后一級比較器,可在復(fù)用已有的兩組6輸入輸出比較單元的同時,還得輸出兩組最小值。CNU單元電路采用流水線結(jié)構(gòu)來設(shè)計延時增加4個時鐘周期(1/2碼率)和5個時鐘周期(3/4碼率)。6輸入輸出CNU單元的結(jié)構(gòu)簡圖如圖3所示。

e.JPG


2.5 中間結(jié)果存儲單元(R_Mem和Q_Mem)
    由于兩種碼率時,校驗(yàn)矩陣第1個子矩陣中非零元素的位置不一樣。故在水平更新時,RAM的初始化地址也不一樣,需要用兩組初始地址值。對兩種碼率來說,第1個行子矩陣非零元素的個數(shù)都為108(18x6或9x12)。事實(shí)上,第1個列子矩陣非零元素的個數(shù)同樣為108(3x36)。第1個行子矩陣和第1個列子矩陣非零元素位置有著潛在的一一對應(yīng)的關(guān)系。舉例來說,第1行(下標(biāo)從0開始)6個1的列位置(下標(biāo)從0開始)分別為0,7,19,26,31,5664。若分析第5664列可以發(fā)現(xiàn)5664=157x36+12,即5664列是第12列的移位。第12列中非零位置對應(yīng)的行號為0,119,1783=99x18+1。第5664列中非零位置對應(yīng)的行號為1,826,2945。于是非零位置(1783,12)的映射為(1,5664)。這樣,通過挖掘行子矩陣和列子矩陣中每一個非零位置的對應(yīng)關(guān)系,就能準(zhǔn)確地得出VNU和CNU運(yùn)算單元數(shù)據(jù)之間的對應(yīng)關(guān)系。把這種對應(yīng)關(guān)系體現(xiàn)到memory的調(diào)度上來,就能準(zhǔn)確地從R_Mem和Q_Mem中取值以進(jìn)行水平和垂直更新。表1所列是中間結(jié)果存儲單元和寫地址的對應(yīng)關(guān)系。

f.JPG


    這里分別用了108個深度為256、寬度為6bits的單口RAM作為R_Mem和Q_Mem。當(dāng)進(jìn)行變量節(jié)點(diǎn)運(yùn)算時,VNU輸入可從Q_Mem中讀取,讀數(shù)時,首地址為0,VNU輸出寫入R_Mem中,寫順序首地址為黑體數(shù)字,運(yùn)算周期為256;當(dāng)所有變量節(jié)點(diǎn)更新后,接著是校驗(yàn)節(jié)點(diǎn)的運(yùn)算,同時
可進(jìn)行檢驗(yàn)方程運(yùn)算。此時,CNU輸入從R_Mem中讀取,讀數(shù)的首地址為0,CNU輸出寫入Q_Mem中,寫入順序首地址為黑體數(shù)字,運(yùn)算周期同樣為256。如此交替,便可完成迭代過程。上述例子中,(1,5664)和(1783,1)的對應(yīng)關(guān)系反映在存儲單元上,正如表1中的第2列所示。

3 譯碼器的性能分析及FPGA實(shí)現(xiàn)
    作者通過C語言模型和MATLAB模型對譯碼器進(jìn)行了浮點(diǎn)和定點(diǎn)仿真。為了達(dá)到性能和面積的平衡,位寬的取值為6 bits,而譯碼器性能只比浮點(diǎn)模型損失了約0.15 dB。在AWGN信道和BPSK的調(diào)制解調(diào)方式下,當(dāng)碼率為1/2,信噪比SNR為1.6 dB時,誤碼率已經(jīng)降至10-5以下。而在信噪比SNR為1.7 dB時,誤碼率已經(jīng)降至10-7以下;當(dāng)碼率為3/4時,在信噪比SNR為3.0 dB時,誤碼率可以降至10-6以下。
    本文按照上面所描述的硬件結(jié)構(gòu),采用XILINX的VirtexIV-XC4VLX80器件實(shí)現(xiàn)了CMMB標(biāo)準(zhǔn)中兩種碼率的LDPC譯碼,并且達(dá)到了和C定點(diǎn)模型同樣的性能。在ISE開發(fā)工具上對其進(jìn)行編譯時,其具體的資源利用情況如表2所列。

g.JPG


    從表2中可以看出,此結(jié)構(gòu)不僅完全地復(fù)用了存儲器資源,而且最大限度地復(fù)用了邏輯運(yùn)算單元。正是因?yàn)閮煞N碼率可復(fù)用RAM資源,使memory消耗較少,從而剩下大量的RAM資源可以用作CMMB其余部分(如解交織模塊)使用。LUT資源相對來說用得較多,這是由于并行結(jié)構(gòu)造成的,它有36個VNU和9個CNU交替進(jìn)行運(yùn)算。

4 結(jié)束語
    本文設(shè)計的部分并行結(jié)構(gòu)的LDPC譯碼器能夠兼容不同碼率和不同校驗(yàn)矩陣行重的LDPC碼。運(yùn)用該譯碼結(jié)構(gòu)在XILINX的VirtexIVC4VLX80器件上可實(shí)現(xiàn)CMMB標(biāo)準(zhǔn)中兩種碼率的LDPC譯碼。事實(shí)上,針對校驗(yàn)矩陣的特點(diǎn),采用一種獨(dú)特的存儲器控制策略,可以最大限度地復(fù)用硬件資源,從而大大減少了譯碼器的資源消耗。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
篠田优中文在线播放第一区| 亚洲精品在线视频观看| 在线观看欧美日韩| 国产欧美日韩| 国产伦精品一区二区三区高清版| 欧美性天天影院| 欧美日韩色婷婷| 欧美日韩美女| 欧美丝袜一区二区| 国产精品二区三区四区| 国产精品红桃| 国产精品视频精品| 国产日韩精品一区观看| 国产偷久久久精品专区| 国产欧美一区在线| 国产一区二区高清不卡| 国产真实乱偷精品视频免| 国产主播一区二区| 激情综合久久| 91久久久久久久久| 亚洲精品国偷自产在线99热| 日韩亚洲一区二区| 亚洲校园激情| 欧美影院精品一区| 亚洲国产精品成人一区二区| 亚洲国产成人av| 91久久在线| 日韩亚洲欧美高清| 亚洲影音先锋| 久久久精品国产免费观看同学| 久久露脸国产精品| 欧美国产视频一区二区| 欧美日韩色一区| 国产乱理伦片在线观看夜一区| 国产一区二区三区在线免费观看 | 一个色综合导航| 亚洲伊人一本大道中文字幕| 亚洲欧美国产另类| 久久高清一区| 免费观看成人鲁鲁鲁鲁鲁视频| 欧美激情一区二区三区蜜桃视频 | 亚洲欧美在线免费| 欧美一区二区成人6969| 久久综合免费视频影院| 欧美激情国产日韩精品一区18| 欧美日韩国产123区| 国产精品欧美一区二区三区奶水| 国产亚洲精品v| 亚洲三级视频| 亚洲免费小视频| 亚洲黄网站黄| 亚洲一区久久| 另类激情亚洲| 欧美午夜理伦三级在线观看| 国产在线拍偷自揄拍精品| 亚洲日韩中文字幕在线播放| 午夜激情综合网| 亚洲久久一区| 性欧美超级视频| 欧美国产三级| 国产视频一区三区| 亚洲精品五月天| 欧美一区二区三区在| 亚洲精品综合精品自拍| 先锋亚洲精品| 欧美高清视频在线| 国产区精品视频| 亚洲人成久久| 久久aⅴ国产紧身牛仔裤| 亚洲深夜激情| 久久―日本道色综合久久| 欧美午夜精彩| 亚洲高清一二三区| 羞羞答答国产精品www一本| 在线性视频日韩欧美| 久久九九热re6这里有精品| 欧美日韩一区精品| 黄色日韩精品| 午夜精品av| 亚洲视频1区| 你懂的网址国产 欧美| 国产精品一区二区三区观看| 亚洲精品在线看| 亚洲国产成人av好男人在线观看| 午夜精品久久久久久久久 | 欧美日本韩国| 黄色成人av网站| 亚洲欧美日韩精品综合在线观看| 一本久久综合| 欧美激情成人在线| 一区二区亚洲| 羞羞色国产精品| 亚洲欧美精品| 欧美日韩亚洲高清一区二区| 伊人久久大香线蕉综合热线| 校园春色综合网| 亚洲欧美日韩国产一区| 欧美久久久久久久久| 亚洲丶国产丶欧美一区二区三区 | 久久在线免费观看视频| 国产欧亚日韩视频| 亚洲自拍啪啪| 亚洲免费在线观看视频| 欧美区在线播放| 亚洲国产日韩欧美在线动漫| 亚洲国产aⅴ天堂久久| 久久全球大尺度高清视频| 国产午夜亚洲精品羞羞网站| 亚洲一区3d动漫同人无遮挡| 亚洲视频综合| 欧美性理论片在线观看片免费| 亚洲另类一区二区| 99精品热6080yy久久| 欧美精品一卡| 亚洲美女中文字幕| 亚洲视频电影在线| 欧美亚男人的天堂| 国产精品99久久久久久白浆小说| 一本综合久久| 欧美日韩在线视频首页| 99re热这里只有精品视频| 中文日韩在线| 欧美午夜大胆人体| 亚洲婷婷综合久久一本伊一区| 亚洲一区二区成人在线观看| 国产精品扒开腿做爽爽爽视频| 一本色道久久综合亚洲精品高清 | 久久国产精品毛片| 久久久久高清| 在线成人中文字幕| 亚洲激情中文1区| 欧美激情一区二区三区四区| 亚洲日韩成人| 亚洲天堂成人| 国产精品日韩欧美| 欧美一区二区三区在线| 久久亚洲私人国产精品va| 在线观看三级视频欧美| 亚洲美女中文字幕| 欧美色图五月天| 午夜欧美大片免费观看| 久久综合给合| 亚洲巨乳在线| 性欧美xxxx大乳国产app| 国产一区二区在线观看免费播放| 久久精品青青大伊人av| 欧美成人综合网站| 日韩视频一区| 午夜久久tv| 精品成人一区二区三区| 99riav久久精品riav| 国产精品激情电影| 欧美一区在线视频| 欧美顶级少妇做爰| 一区二区欧美在线观看| 性欧美长视频| 黄网动漫久久久| 亚洲毛片在线| 国产精品视频第一区| 亚洲国产精品va| 欧美日韩小视频| 欧美伊久线香蕉线新在线| 欧美福利网址| 亚洲视频在线播放| 久久亚洲视频| 一区二区三区精品国产| 久久国产精品免费一区| 亚洲国产激情| 欧美一区二区三区免费视| 在线观看日韩av电影| 亚洲一本大道在线| 国产综合色产| 亚洲一区二区三区精品视频| 国外成人性视频| 一区二区三区高清在线 | 韩曰欧美视频免费观看| 一区二区免费看| 国产亚洲一区精品| 中文av字幕一区| 尤物视频一区二区| 亚洲一区国产| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲欧美一区二区三区在线| 依依成人综合视频| 亚洲欧美综合另类中字| 亚洲国产视频一区| 久久精品国产综合精品| 日韩亚洲欧美综合| 蜜臀99久久精品久久久久久软件| 亚洲一二三四区| 欧美激情网站在线观看| 羞羞漫画18久久大片| 欧美性片在线观看| 亚洲精品老司机| 国产亚洲精品久久久久婷婷瑜伽| 中文在线不卡| 亚洲国产日韩综合一区| 久久高清国产| 亚洲天堂网在线观看| 欧美噜噜久久久xxx|