《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > WIMAX LDPC碼譯碼器的FPGA實(shí)現(xiàn)
WIMAX LDPC碼譯碼器的FPGA實(shí)現(xiàn)
來(lái)源:電子技術(shù)應(yīng)用2011年第3期
王秀敏,,張 洋,陳豪威,,付 娟
中國(guó)計(jì)量學(xué)院 信息工程學(xué)院,,浙江 杭州310018
摘要: 設(shè)計(jì)了基于TDMP-NMS算法的碼率碼長(zhǎng)可配置LDPC碼譯碼器,,支持WIMAX標(biāo)準(zhǔn)LDPC碼的譯碼。 通過(guò)插入最短的額外時(shí)鐘周期,,使得更新后的節(jié)點(diǎn)信息得到了及時(shí)利用,。采用一種工作于增量模式的基于填充算法的桶形移位寄存器結(jié)構(gòu),實(shí)現(xiàn)了對(duì)該標(biāo)準(zhǔn)中576,、768,、1152、2304 4種碼長(zhǎng)LDPC 碼譯碼的支持,。結(jié)果表明所設(shè)計(jì)的譯碼器完全能滿足WIMAX標(biāo)準(zhǔn)對(duì)數(shù)據(jù)吞吐率的要求,。
中圖分類號(hào): TN47
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2011)03-0044-04
Implementation of WIMAX LDPC decoder based on FPGA
Wang Xiumin,Zhang Yang,,Chen Haowei,F(xiàn)u Juan
College of Information Engineering, China Jiliang University, Hangzhou 310018,,China
Abstract: A code rate and code length reconfigurable LDPC decoder is proposed which is based on TDMP-NMS algorithm and supports WIMAX standard. The updated node information is used in timely by inserting the shortest extra tine slots. By adopting a filling algorithm based barrel shifter working in an incremental mode, the decoder can support the decoding of four code length LDPC in this standard:576,,768,1152,,2304. Results show that the decoder designed can fully meet the throughput requirement of WIMAX standard.
Key words : WIMAX,;LDPC decoder;FPGA,;TDMP,;normalized min sum algorithm

 

    全球微波互聯(lián)接入WIMAX是一種基于IEEE802.16e標(biāo)準(zhǔn)的無(wú)線城域網(wǎng)WMAN技術(shù),。該技術(shù)采用LDPC碼作為其信道編碼方案。WIMAX標(biāo)準(zhǔn)的LDPC碼由于其優(yōu)異的性能而引起了人們的廣泛關(guān)注,。Torben Brack等人根據(jù)該標(biāo)準(zhǔn)中各個(gè)碼率LDPC碼校驗(yàn)矩陣的不同特點(diǎn),,對(duì)碼率為1/2和2/3B的LDPC碼采用TDMP譯碼算法,對(duì)其他4種碼率的LDPC碼采用BP算法,。設(shè)計(jì)實(shí)現(xiàn)了一個(gè)可支持WIMAX標(biāo)準(zhǔn)中所有碼率和碼長(zhǎng)的LDPC碼譯碼器[1],。SHIH Xin Yu等人對(duì)LDPC碼的校驗(yàn)基矩陣進(jìn)行行列置換,使得變量節(jié)點(diǎn)和校驗(yàn)節(jié)點(diǎn)的處理在時(shí)間上可以部分重疊,,基于BP算法實(shí)現(xiàn)了支持該標(biāo)準(zhǔn)中碼率為1/2 的19種碼長(zhǎng)的LDPC碼的譯碼器[2],。
    重組網(wǎng)絡(luò)是部分并行LDPC碼譯碼器中的一個(gè)重要組成單元。對(duì)數(shù)移位寄存器結(jié)構(gòu)和雙向網(wǎng)絡(luò)僅適用于單個(gè)碼長(zhǎng),。為了實(shí)現(xiàn)對(duì)多種碼長(zhǎng)的支持[3],,采用了Benes網(wǎng)絡(luò),基于該網(wǎng)絡(luò)的部分并行譯碼器可支持?jǐn)U展因子小于該網(wǎng)絡(luò)輸入輸出端口數(shù)的各種碼長(zhǎng)LDPC碼的譯碼,。由于該網(wǎng)絡(luò)中各個(gè)開(kāi)關(guān)控制信號(hào)的產(chǎn)生是基于一種遞推的算法,,因此其復(fù)雜度較高。
    本文將TDMP算法運(yùn)用于WIMAX標(biāo)準(zhǔn)中所有6種碼率的LDPC碼的譯碼,,通過(guò)分析得出了各個(gè)碼率LDPC碼的變量節(jié)點(diǎn)后驗(yàn)LLR在前后兩次更新之間的最小時(shí)間間隔,,采用插入額外時(shí)鐘周期的方法使得更新后的節(jié)點(diǎn)信息得到了及時(shí)利用。設(shè)計(jì)了一種基于填充算法的桶形移位寄存器結(jié)構(gòu)的重組網(wǎng)絡(luò)單元,,實(shí)現(xiàn)了對(duì)該標(biāo)準(zhǔn)中576,、768、1152和2304 4種碼長(zhǎng)的支持,。采用了基于增量的循環(huán)移位模式,,降低了硬件實(shí)現(xiàn)復(fù)雜度和單次迭代處理的周期數(shù),提高了吞吐率,。
1 LDPC碼的譯碼算法
    LDPC碼的標(biāo)準(zhǔn)譯碼算法為BP算法,。TDMP及時(shí)利用了更新后的節(jié)點(diǎn)信息,加快了譯碼收斂速率,。中高信噪比條件下,,該算法成功譯碼所需的平均迭代次數(shù)僅是BP算法的一半。TDMP-NMS算法采用歸一化最小和算法更新TDMP算法中的校驗(yàn)節(jié)點(diǎn)信息,,簡(jiǎn)化了運(yùn)算復(fù)雜度,。該算法的譯碼處理步驟如下[3]:

(2)開(kāi)始繼續(xù)下一次迭代處理。
2 WIMAX 標(biāo)準(zhǔn)的LDPC碼譯碼器設(shè)計(jì)
2.1 譯碼器總體結(jié)構(gòu)

    根據(jù)前述TDMP-NMS譯碼算法,, 本文設(shè)計(jì)的部分并行LDPC碼譯碼器結(jié)構(gòu)如圖1所示,。整個(gè)譯碼器由后驗(yàn)LLR存儲(chǔ)單元、數(shù)據(jù)重組網(wǎng)絡(luò),、處理器陣列,、硬判決輸出單元及控制單元構(gòu)成,。為支持連續(xù)譯碼,信道信息的存儲(chǔ)由2組相同的工作于乒乓讀寫(xiě)模式的RAM完成,。數(shù)據(jù)重組網(wǎng)絡(luò)根據(jù)校驗(yàn)基矩陣中對(duì)應(yīng)的數(shù)值對(duì)從后驗(yàn)LLR存儲(chǔ)單元輸出的z個(gè)數(shù)據(jù)進(jìn)行循環(huán)移位后送入處理器陣列中相應(yīng)單元進(jìn)行處理,。處理器陣列由96個(gè)相同的處理器單元構(gòu)成,當(dāng)擴(kuò)展因子為z時(shí),,僅使能其中的z個(gè)處理單元,,并行處理更新對(duì)應(yīng)于1個(gè)超碼的z個(gè)SPC碼。 控制單元產(chǎn)生各個(gè)模塊的工作使能信號(hào)和控制信號(hào),。采用最大迭代次數(shù)停止準(zhǔn)則,,當(dāng)譯碼迭代次數(shù)達(dá)到設(shè)定的最大值時(shí),硬判決輸出單元對(duì)從后驗(yàn)LLR存儲(chǔ)單元中讀出的信息進(jìn)行硬判決并輸出譯碼結(jié)果,。

2.2 重組網(wǎng)絡(luò)的設(shè)計(jì)
    本設(shè)計(jì)所提出的重組網(wǎng)絡(luò)單元結(jié)構(gòu)支持對(duì)輸入數(shù)據(jù)個(gè)數(shù)為該網(wǎng)絡(luò)輸入輸出端口數(shù)的因子的數(shù)據(jù)序列的循環(huán)移位,。該結(jié)構(gòu)由數(shù)據(jù)填充單元和桶形移位寄存器單元構(gòu)成。為支持最大擴(kuò)展因子zmax=96碼長(zhǎng)的LDPC碼,, 本設(shè)計(jì)中桶形移位寄存器單元的輸入輸出數(shù)據(jù)端口數(shù)均為96,。填充單元在預(yù)處理階段用并行輸入的z個(gè)有效數(shù)據(jù)填充桶形移位寄存器的所有96個(gè)輸入端口,第nz+i個(gè)端口用第i個(gè)有效輸入數(shù)據(jù)填充,。其中n=0,,1,…,,(96/z)-1,,i=1,…,,z,。桶形移位寄存器單元對(duì)這96個(gè)數(shù)據(jù)根據(jù)輸入的循環(huán)移位值控制信號(hào)進(jìn)行循序移位。移位結(jié)束之后,,輸出端口的前z個(gè)數(shù)據(jù)即為所需的數(shù)據(jù)序列,。一個(gè)輸人輸出數(shù)據(jù)端口數(shù)均為12的重組網(wǎng)絡(luò),當(dāng)有效輸入數(shù)據(jù)個(gè)數(shù)為6,,循環(huán)移位值為3時(shí),,數(shù)據(jù)流圖如圖2所示。

    每次迭代處理過(guò)程中,,傳遞給處理器陣列的每個(gè)單元處理的變量節(jié)點(diǎn)后驗(yàn)LLR值是經(jīng)過(guò)數(shù)據(jù)重組網(wǎng)絡(luò)循環(huán)移位后的數(shù)據(jù)序列,。為使下一次迭代處理時(shí)輸入至該單元的數(shù)據(jù)是按原始順序排列的序列[4],采用了兩個(gè)重組網(wǎng)絡(luò),,一個(gè)用于將從變量節(jié)點(diǎn)LLR存儲(chǔ)器中的讀出數(shù)據(jù)進(jìn)行重組,,另一個(gè)用于將處理更新后的LLR后驗(yàn)數(shù)據(jù)進(jìn)行反重組,。為了降低硬件實(shí)現(xiàn)的復(fù)雜度,,同時(shí)減少單次迭代處理所需的時(shí)鐘周期,,提高譯碼器吞吐率,本設(shè)計(jì)將采用一種增量循環(huán)移位的方案[5],。采用該方案,,每次對(duì)從存儲(chǔ)器中讀出的z個(gè)變量節(jié)點(diǎn)后驗(yàn)LLR信息循環(huán)移位的值是本次該組數(shù)據(jù)所需移位的值與上一次所需移位值的模z的差值。經(jīng)處理器陣列處理更新后的后驗(yàn)LLR值不經(jīng)過(guò)重組網(wǎng)絡(luò)直接存儲(chǔ)至原單元,。
2.3 運(yùn)算單元設(shè)計(jì)
    為使譯碼器能夠支持WIAMX標(biāo)準(zhǔn)中的所有6種碼率,, 本文設(shè)計(jì)了如圖3所示的基于串行處理的運(yùn)算單元結(jié)構(gòu)。其中alpha 運(yùn)算單元接收以壓縮形式輸入的本超碼的內(nèi)信息ri,,0,,ri,1,,ind_min,,sign_j和變量節(jié)點(diǎn)j的后驗(yàn)LLR信息Pj,根據(jù)式(1)和式(2)計(jì)算出qij,。qij一路傳遞給alpha緩存單元用于后續(xù)的后驗(yàn)LLR更新,,一路傳遞給TC2SM轉(zhuǎn)換模塊,將以二進(jìn)制補(bǔ)碼表示的qij轉(zhuǎn)換為符號(hào)-絕對(duì)值的表示形式,,并傳遞給超碼內(nèi)信息處理更新單元,。該單元每個(gè)周期接收一個(gè)幅度值和符號(hào)值,根據(jù)該幅度值與當(dāng)前最小值min0和次小值min1的比較結(jié)果更新min0,,min1,,ind_min,將接收到的符號(hào)值存儲(chǔ)于寄存器并執(zhí)行模2累加運(yùn)算,。當(dāng)對(duì)應(yīng)于一個(gè)校驗(yàn)節(jié)點(diǎn)的所有變量節(jié)點(diǎn)信息接收完畢,,開(kāi)始執(zhí)行min0,min1的歸一化操作計(jì)算ri,,0和ri,,1,以及sign_j的更新,。該運(yùn)算完成之后開(kāi)始從alpha緩存單元中順序讀出之前存儲(chǔ)的qij,,根據(jù)(6)(7)完成變量節(jié)點(diǎn)后驗(yàn)LLR值Pj的更新??刂颇K的作用主要是根據(jù)當(dāng)前超碼校驗(yàn)節(jié)點(diǎn)的度數(shù)產(chǎn)生計(jì)算qij和更新ind_min,、Pj時(shí)所需的當(dāng)前變量節(jié)點(diǎn)的序號(hào)和各個(gè)模塊的工作使能信號(hào)。為減少控制單元的扇出,,本設(shè)計(jì)中采用8個(gè)運(yùn)算單元共享一個(gè)控制單元的模式,,整個(gè)處理器陣列96個(gè)運(yùn)算單元共使用了12個(gè)控制單元。

2.4 變量節(jié)點(diǎn)后驗(yàn)LLR信息的讀取
    對(duì)WIMAX 標(biāo)準(zhǔn)中碼率為1/2 和2/3B的LDPC碼,,通過(guò)改變各個(gè)超碼的迭代處理順序,,可以使得任何兩個(gè)相鄰的超碼沒(méi)有公共的變量節(jié)點(diǎn),,因此當(dāng)前超碼的處理不用等到前一個(gè)超碼迭代處理結(jié)束。在本設(shè)計(jì)中,,當(dāng)前一個(gè)超碼的變量節(jié)點(diǎn)后驗(yàn)LLR從相應(yīng)的存儲(chǔ)單元讀出完畢一個(gè)周期之后即開(kāi)始讀取當(dāng)前超碼的變量節(jié)點(diǎn)后驗(yàn)LLR信息,。對(duì)于其他碼率,通過(guò)分析其對(duì)應(yīng)的校驗(yàn)矩陣的特點(diǎn),,發(fā)現(xiàn)同一個(gè)變量節(jié)點(diǎn)在前后兩個(gè)相鄰超碼中的迭代處理順序最大相差3個(gè)周期,,如圖4中碼率為2/3的A碼第一個(gè)超碼和第二個(gè)超碼方框內(nèi)所示的數(shù)字對(duì)應(yīng)的一組z個(gè)變量節(jié)點(diǎn),在第一個(gè)超碼中的處理順序是第8,,在第二個(gè)超碼中的處理順序是第5,。 又由于從當(dāng)前超碼所有校驗(yàn)節(jié)點(diǎn)相鄰的變量節(jié)點(diǎn)后驗(yàn)LLR讀出完畢至第一組z個(gè)更新后的后驗(yàn)LLR輸出之間相差7個(gè)時(shí)鐘周期, 為了在當(dāng)前超碼處理時(shí)用到更新后的變量節(jié)點(diǎn)后驗(yàn)LLR信息,,本設(shè)計(jì)在對(duì)其他碼率的LDPC碼迭代處理時(shí),,當(dāng)前一個(gè)超碼對(duì)應(yīng)的所有變量節(jié)點(diǎn)讀出完畢10個(gè)周期之后開(kāi)始讀取下一個(gè)超碼的變量節(jié)點(diǎn)后驗(yàn)LLR信息。

3 實(shí)現(xiàn)結(jié)果及分析
    選擇CycloneII系列的FPGA芯片EP2C70F896C6作為目標(biāo)器件,, 編譯綜合后的結(jié)果顯示,,該譯碼器共消耗27 077個(gè)邏輯單元,最高工作頻率可達(dá)69 MHz,,在該工作頻率下,,譯碼器對(duì)該標(biāo)準(zhǔn)中碼長(zhǎng)為2 304的各碼率的LDPC碼譯碼迭代10次時(shí),所需的譯碼周期數(shù)分別為:
    1 011,、1 686,、985、1 520,、1 550,、1 257,對(duì)應(yīng)的譯碼吞吐率分別為:79 Mb/s,、63 Mb/s,、109 Mb/s、79 Mb/s,、78 Mb/s,、106 Mb/s,完全能夠滿足WIMAX標(biāo)準(zhǔn)數(shù)據(jù)吞吐率的要求,。
    在DE2-70開(kāi)發(fā)板上對(duì)所設(shè)計(jì)的譯碼器進(jìn)行了硬件測(cè)試,,測(cè)試系統(tǒng)結(jié)構(gòu)如圖5所示。

    譯碼數(shù)據(jù)及控制信號(hào)產(chǎn)生模塊產(chǎn)生譯碼器工作所需的譯碼數(shù)據(jù)和相關(guān)的控制信號(hào):碼率,、碼長(zhǎng),、最大迭代次數(shù)、輸入數(shù)據(jù)有效指示信號(hào)。譯碼器根據(jù)輸入的數(shù)據(jù)及控制信號(hào)進(jìn)行譯碼,。譯碼數(shù)據(jù)及控制信號(hào)產(chǎn)生模塊中有一個(gè)存儲(chǔ)一幀譯碼數(shù)據(jù)的ROM,。為了在Quartus2的SignalTap II Logic Analyzer中觀察到譯碼器的輸出信號(hào),該模塊周期性地從ROM中讀取譯碼數(shù)據(jù)和產(chǎn)生相應(yīng)的控制信號(hào),。本文對(duì)碼率為1/2,碼長(zhǎng)為2 304的LDPC碼進(jìn)行了測(cè)試,。測(cè)試中系統(tǒng)工作頻率為50 MHz,,邏輯分析儀的采樣時(shí)鐘為100 MHz,由輸入的50 MHz信號(hào)經(jīng)PLL倍頻得到,。得到譯碼器的譯碼輸出波形如圖6所示,。圖中hdd_en為輸出有效數(shù)據(jù)指示信號(hào),dout0 ~dout11為譯碼器并行輸出的96 bit數(shù)據(jù),,將該數(shù)據(jù)與原信息序列相比較,,結(jié)果完全相同,譯碼器工作正常,。

    本文設(shè)計(jì)實(shí)現(xiàn)了一種支持WIMAX標(biāo)準(zhǔn)的碼長(zhǎng),、碼率可配置LDPC碼譯碼器,通過(guò)設(shè)計(jì)一種基于串行工作模式的運(yùn)算單元,,實(shí)現(xiàn)了對(duì)該標(biāo)準(zhǔn)中所有碼率的支持,。通過(guò)設(shè)計(jì)一種基于填充算法的重組網(wǎng)絡(luò)單元實(shí)現(xiàn)了對(duì)該標(biāo)準(zhǔn)中擴(kuò)展因子為24、32,、48,、96的4種碼長(zhǎng)的支持。采用TDMP-NMS算法,,在提高譯碼收斂收率的同時(shí),,降低了硬件復(fù)雜度。實(shí)驗(yàn)結(jié)果表明,,所設(shè)計(jì)的譯碼器在50 Hz的時(shí)鐘頻率下工作正常,,完全能夠滿足WIMAX 標(biāo)準(zhǔn)數(shù)據(jù)吞吐率的要求。
參考文獻(xiàn)
[1] BRACK T,,ALLES M,,KIENLE F,et al.A synthesizable IP core for WIMAX 802.16E LDPC code decoding.IEEE 17th International Symposium on Personal,,Indoor and Mobile Radio Communications,,2006:1-5.
[2] SHIH Xin Yu,ZHAN Cheng zhou,,LIN Cheng Hung,,et al. An 8.29 mm2 52 mW Multi-Mode LDPC Decoder Design  for Mobile WiMAX System in 0.13 ?滋m CMOS Process. IEEE Journal of Solid-state Circuits,2008,43(3):672-683.
[3] XIAO Peng,,GOTO S.Implementation of LDPC decoder for  802.16e.IEEE 8th International Conference on ASIC(ASICON′09),,2009:501-504.
[4] OH D,KESHAB K.Parhi.Low-complexity switch network  for reconfigurable LDPC decoders.IEEE Transactions on Very Large Scale Integration(VLSI) Systems,,2010,,18(1):85-93.
[5] YANG Sun,KARKOOTI M,,JOSEPH R C.VLSI decoder  architecture for high throughput,,Variable Block-size and  Multi-rate LDPC Codes.IEEE International Symposium on Circuits and Systems(ISCAS 2007),2007:2104-2107.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。