T-MMB系統(tǒng)中LDPC碼譯碼器的FPGA設(shè)計與實現(xiàn)
摘要:本文設(shè)計了一種符合手機電視T-MMB標(biāo)準(zhǔn)的信道譯碼解決方案,并進行了MATLAB仿真和FPGA的實現(xiàn)。同時針對部分并行結(jié)構(gòu)的準(zhǔn)循環(huán)低密度校驗(QC-LDPC)碼譯碼器,提出了基于塊RAM的高效存儲方法。該方法既可以同時讀取用于運算的校驗節(jié)點信息或變量節(jié)點信息,又可以實現(xiàn)在同一塊RAM中存儲不同子矩陣對應(yīng)的校驗節(jié)點信息或變量節(jié)點信息,不僅避免了塊RAM資源的浪費,而且減少了譯碼器實現(xiàn)所需的存儲資源數(shù)量。在Xilinx公司Virtex-4系列的FPGA上的實現(xiàn)結(jié)果表明,與傳統(tǒng)的子矩陣與塊RAM一對一存儲的譯碼結(jié)構(gòu)相比,本文提出的QC-LDPC碼譯碼器設(shè)計方法能夠在減少塊RAM數(shù)量的同時有效地提高系統(tǒng)的時鐘頻率和譯碼吞吐量。
本文引用地址:http://butianyuan.cn/article/146837.htm引言
隨著移動網(wǎng)絡(luò)的迅速發(fā)展,移動多媒體廣播業(yè)務(wù)已經(jīng)成為炙手可熱的發(fā)展熱點。國際上流行的數(shù)字移動多媒體廣播標(biāo)準(zhǔn)主要有三個:歐洲的DVB-H,美國的MediaFLO和韓國的T-DMB。而中國在2006年9月,由北京新岸線軟件科技有限公司提出了新一代地面移動媒體廣播(Terrestrial Mobile Multimedia Broadcasting,簡稱T-MMB)系統(tǒng)。該系統(tǒng)具有獨立自主知識產(chǎn)權(quán),相比于其他制式具有頻譜利用率高、復(fù)雜度低、功耗小、頻點可用性好、兼容性好等優(yōu)點[1]。T-MMB系統(tǒng)是基于多載波OFDM調(diào)制的無線通信系統(tǒng),采用LDPC碼作為信道編碼技術(shù),無需級聯(lián)外碼就可以保障系統(tǒng)的接收性能,從而提高了系統(tǒng)的頻譜效率,降低接收機復(fù)雜度[2]。
低密度校驗(Low-Density Parity-Check,LDPC)碼是一種基于稀疏校驗矩陣的線性分組碼,具有逼近香農(nóng)極限的譯碼性能[3,4]。準(zhǔn)循環(huán)低密度校驗(QC-LDPC)碼是低密度校驗碼的一種,其生成矩陣和校驗矩陣都具有準(zhǔn)循環(huán)的特點,在保持較好譯碼性能的基礎(chǔ)上大大降低了譯碼器實現(xiàn)的復(fù)雜度,易于用FPGA實現(xiàn)。LDPC碼譯碼器的研究工作一直是LDPC碼研究的一個重要方向。
LDPC碼的譯碼是一個不斷迭代的消息傳遞過程。譯碼過程中需要存儲大量的信息,包括各節(jié)點的初始信息、外信息和后驗信息等[5]。LDPC碼較強的糾錯性能一般是建立在較長碼長基礎(chǔ)上的,這會增加譯碼算法實現(xiàn)過程中的存儲器容量,增加硬件資源成本與開銷[5]。為了有效解決LDPC碼譯碼器的高存儲量問題,本文在QC-LDPC碼基礎(chǔ)上,基于歸一化最小和譯碼算法,設(shè)計出一種能夠有效降低存儲量的譯碼器結(jié)構(gòu),并應(yīng)用FPGA實現(xiàn)。與傳統(tǒng)的譯碼器相比,本文提出的譯碼器結(jié)構(gòu)能節(jié)省75%的存儲空間,同時提升系統(tǒng)的時鐘頻率和譯碼吞吐量。
T-MMB系統(tǒng)的總體設(shè)計
本文搭建的T-MMB系統(tǒng)總體架構(gòu)如圖1所示。按照圖1建模,進行MATLAB仿真并進行譯碼器的FPGA實現(xiàn)。業(yè)務(wù)數(shù)據(jù)經(jīng)過1/2碼率的LDPC碼編碼后,得到調(diào)制前的信息序列,其中T-MMB系統(tǒng)中LDPC碼有兩種編碼方式,表1給出了標(biāo)準(zhǔn)中LDPC碼的詳細編碼參數(shù);之后進行8PSK調(diào)制,加高斯白噪聲;之后解調(diào)得到各碼元對應(yīng)的軟信息;最后,按照譯碼算法進行譯碼處理,求出誤碼率。本文采用的譯碼算法為歸一化最小和譯碼算法,它是修正最小和譯碼算法中的一種,可以避免譯碼過程中的信道估計,提高譯碼器工作的穩(wěn)定性[8],其譯碼步驟參考文獻[5]所示。
高效存儲譯碼架構(gòu)
手機電視標(biāo)準(zhǔn)T-MMB中規(guī)定QC-LDPC碼的校驗矩陣維度為2304×4608,可以由32×64個72×72的分循環(huán)矩陣構(gòu)成。每行中不為全0矩陣的個數(shù)為7,每列中不為全0矩陣的個數(shù)為2、3、9。綜合考慮譯碼器的速率要求和FPGA面積要求,本文采用部分并行結(jié)構(gòu)的運算方式完成譯碼器的設(shè)計,采取8bit均勻量化。按照文獻[9]對存儲資源的計算方法可知量化比特數(shù)Q=8,部分并行結(jié)構(gòu)譯碼器的復(fù)用指數(shù)L=72。水平運算時有32個校驗節(jié)點處理單元(CNUs)同時運算,需要同時向32×7個存儲變量節(jié)點信息的RAM中讀取變量節(jié)點信息用于水平運算,計算結(jié)果需要同時存儲到32×7個存儲校驗節(jié)點信息的RAM中,重復(fù)計算72次就可以完成一次迭代中的水平運算。垂直運算時有64個變量節(jié)點處理單元(VNUt)在同時運算,向每列中的子矩陣對應(yīng)的存儲校驗節(jié)點信息的RAM同時取出數(shù)據(jù)進行運算,運算72次后將結(jié)果存儲到相應(yīng)列矩陣對應(yīng)的存儲變量節(jié)點信息的RAM中。
若采用傳統(tǒng)的子矩陣存儲方式,每個子矩陣需對應(yīng)一個RAM存儲校驗節(jié)點信息以及一個RAM存儲變量節(jié)點信息,每個RAM寬度為8bit,深度為72。本次設(shè)計共需要448個RAM來存儲校驗節(jié)點信息以及變量節(jié)點信息,需要占用較多的存儲資源,同時由于本設(shè)計LDPC碼碼字較長校驗矩陣較大,其余單元在實現(xiàn)時亦需要占用較多的存儲資源,一般的FPGA很難滿足這樣的要求。
本文設(shè)計了一種新的RAM存儲方式,采用Xilinx公司Virtex-4系列的FPGA進行實現(xiàn),采取自帶塊RAM的存儲方式,RAM容量為18Kb。在實現(xiàn)時,將塊RAM例化為寬度32bit深度155的雙口塊RAM,深度0~71上存放校驗節(jié)點信息,深度80~151上存放變量節(jié)點信息。因為校驗節(jié)點與變量節(jié)點同時處理的多個消息必須同時讀出或?qū)懭氪鎯ζ髦?sup>[10]。為保證同步,本文采取的做法是將偏移量相同的子矩陣對應(yīng)的校驗節(jié)點信息或變量節(jié)點信息存儲到同一塊RAM中。由于Xilinx的塊RAM最大位寬為32bit,所以最多有4個子矩陣對應(yīng)的信息可以存儲到同一塊RAM中。存儲方式如圖2所示?! ?/p>
fpga相關(guān)文章:fpga是什么
評論