TPC碼譯碼器硬件仿真的優(yōu)化設(shè)計(jì)
1993年伴隨著著名的Turbo碼的提出,法國(guó)的RM.Pyndiah于1994年將Turbo軟迭代譯碼的思想應(yīng)用于早期的乘積碼[1]之中,提出了分組Turbo碼(BTC)[2],即Turbo乘積碼(TPC碼),正是從這個(gè)時(shí)期開(kāi)始乘積碼獨(dú)特的優(yōu)點(diǎn)再次得到了編碼界的關(guān)注。相對(duì)于Turbo碼而言,Turbo乘積碼很好地實(shí)現(xiàn)了譯碼性能與硬件實(shí)現(xiàn)的復(fù)雜度的折衷,很容易由硬件實(shí)現(xiàn)。近年來(lái)一些著名的硬件和芯片制造商相繼開(kāi)發(fā)出一些針對(duì)無(wú)線通信應(yīng)用的乘積碼的編譯碼芯片和相應(yīng)的IP核,可以說(shuō)如何有效地設(shè)計(jì)一個(gè)TPC碼的迭代譯碼器已經(jīng)成為目前國(guó)內(nèi)外圍繞Turbo碼在無(wú)線通信領(lǐng)域中應(yīng)用的一個(gè)重要問(wèn)題。
本文提出了二維TPC碼的迭代譯碼器的FPGA設(shè)計(jì)方案,特別建立了FPGA硬件仿真模型,大大提高了信道編碼硬件仿真效率,為了評(píng)估TPC譯碼器的譯碼性能好壞,通過(guò)改變不同信噪比下的輸入激勵(lì),可以分析所設(shè)計(jì)譯碼器的誤碼率情況。經(jīng)過(guò)功能驗(yàn)證,譯碼功能與C程序仿真的功能非常吻合,從而證明了整個(gè)設(shè)計(jì)的合理性,為今后實(shí)現(xiàn)更實(shí)用、更長(zhǎng)碼長(zhǎng)和更高碼率的TPC碼譯碼器做了有益的嘗試。
1 編譯碼原理
構(gòu)造TPC碼的線性分組碼很多,如漢明碼、單校驗(yàn)碼(SPC)、RS碼和BCH碼等等,目前國(guó)際上多采用SPC碼和擴(kuò)展?jié)h明碼構(gòu)造。
為了使設(shè)計(jì)驗(yàn)證過(guò)程不至于繁瑣,方便更加清楚地說(shuō)明問(wèn)題,這里假定以簡(jiǎn)單的(3,2,2)單校驗(yàn)碼為成員碼。對(duì)于碼長(zhǎng)較短、碼塊小的簡(jiǎn)單碼型可以回避開(kāi)RM.Pyndiah提出的復(fù)雜的修正Chase譯碼算法[3],而采用Turbo軟迭代譯碼原理,這樣可以降低譯碼復(fù)雜度,但譯碼效果肯定會(huì)有所下降。為此做了一些有益的設(shè)計(jì)嘗試。
具體算法采用逐位MAP譯碼規(guī)則,最終目的是要得到信息x的最大似然后驗(yàn)信息。最終的譯碼結(jié)果包含三部分獨(dú)立的似然概率估計(jì)值。即:信道軟輸出、先驗(yàn)概率和外信息[4][5],即:
圖1給出了一個(gè)簡(jiǎn)單兩維(8,4)TPC碼迭代譯碼的過(guò)程。
2 電路設(shè)計(jì)
2.1 迭代譯碼核心
當(dāng)用FPGA器件實(shí)現(xiàn)TPC碼的整體譯碼功能時(shí),迭代譯碼過(guò)程的具體實(shí)現(xiàn)主要是行和列外信息計(jì)算模塊。如圖2所示,附加了若干D觸發(fā)器作為總體控制時(shí)序控制模塊,進(jìn)行數(shù)據(jù)緩沖,保證和協(xié)調(diào)各個(gè)譯碼模塊的連續(xù)進(jìn)行和同步工作。
2.2 功能驗(yàn)證電路
為進(jìn)一步驗(yàn)證此二維TPC碼譯碼器的糾錯(cuò)性能的好壞,把譯碼器的輸出結(jié)果和理論輸入進(jìn)行比較來(lái)分析譯碼器的譯碼功能是否完善,特別設(shè)計(jì)了功能驗(yàn)證模塊,并編寫(xiě)了測(cè)試激勵(lì)。
圖3為該譯碼器的功能驗(yàn)證方塊圖,分為譯碼控制與輸入模塊(input)、原始輸入?yún)⒖寄K(senddata)、TPC碼迭代譯碼模塊(TPC decoder)及誤碼率計(jì)算分析模塊(Error Counter)。
3 仿真波形
整個(gè)TPC碼譯碼器由上述方案中的幾個(gè)下層文件組成了頂層文件。整個(gè)設(shè)計(jì)采用VHDL語(yǔ)言編寫(xiě)了各個(gè)模塊的程序代碼,各個(gè)模塊源程序成功通過(guò)編譯。程序在Xilinx公司的開(kāi)發(fā)工具ISE8.1和與Xilinx公司配套的ModelsimXE 6.0a集成仿真工具的環(huán)境下仿真調(diào)試通過(guò)。圖4為該(8,4)二維乘積碼的譯碼性能功能仿真波形,其中時(shí)鐘信號(hào)CLK周期為10MHz,上升沿有效,啟動(dòng)信號(hào)START下降沿有效,為8個(gè)時(shí)鐘周期。譯碼后4bit信息為:y0d、y1d、y2d、y3d。從圖4中可見(jiàn)數(shù)據(jù)的譯碼輸出仿真測(cè)試結(jié)果波形。
基于硬件仿真模塊,在不同的輸入測(cè)試激勵(lì)文件的控制下,對(duì)應(yīng)不同的信噪比環(huán)境,分別輸入各種不同的激勵(lì),可以從低噪聲一直到非常大的噪聲。圖4為輸入激勵(lì)為信噪比9dB時(shí)輸出的波形圖,誤碼率計(jì)算分析模塊在啟動(dòng)信號(hào)start的上升沿采樣數(shù)據(jù),下降沿則輸出誤碼率統(tǒng)計(jì)結(jié)果。如圖5所示,在輸入激勵(lì)為SNR=9dB時(shí),誤碼率為7/10000。
可以看出所設(shè)計(jì)的TPC碼迭代譯碼器具有較好的譯碼效果,通過(guò)改變輸入激勵(lì)部分參數(shù),可以設(shè)計(jì)出更多碼型的TPC碼譯碼器,具有較高的實(shí)用價(jià)值。
4 幾點(diǎn)思考
(1)方案中所建立的功能驗(yàn)證系統(tǒng)是任何信道編碼譯碼器驗(yàn)證測(cè)時(shí)通用的。該方案完全改變了傳統(tǒng)方式,非常值得推廣使用。從以往的信道編譯碼的工程實(shí)踐看,對(duì)于功能仿真測(cè)試部分實(shí)現(xiàn)方式雖然很多,但是效率低,不直觀。通常采用從最后MODELSIM仿真波形文件中提取具體仿真數(shù)據(jù),然后對(duì)所有數(shù)據(jù)進(jìn)行分析歸納統(tǒng)計(jì),最后得出整個(gè)誤碼率情況。這種方法速度慢、精度低。文中所提出的二維乘積碼采用的硬件驗(yàn)證系統(tǒng)的建立為譯碼器的硬件仿真開(kāi)拓了一個(gè)新的高效率思路,不僅仿真速度快,而且通用性強(qiáng),可以應(yīng)用到任何信道糾錯(cuò)譯碼模塊的硬件仿真測(cè)試系統(tǒng)中去,而且不需要人為分析數(shù)據(jù)結(jié)果,全部過(guò)程從Modelsim仿真波形自動(dòng)讀出,精確度非常高。采用硬件FPGA仿真誤碼率,不僅比軟件仿真速度快,而且靈活方便,非常值得推廣。
(2)該方案可以做更優(yōu)化設(shè)計(jì),如圖6所示。進(jìn)一步延伸這個(gè)考慮,如果補(bǔ)充上TPC編碼模塊和信道模塊(AWGN 和Fading)以及軟判決映射器,整個(gè)驗(yàn)證系統(tǒng)將更為通用。
其中信息源模塊由線性反饋移位寄存器LFSR(Linear Feedback Shift Registers)構(gòu)成,產(chǎn)生(0,1)序列送入TPC碼編碼器產(chǎn)生二維碼塊,隨后來(lái)自碼塊的比特?cái)?shù)據(jù)疊加上來(lái)自AWGN或是衰落信道模塊產(chǎn)生的噪聲后被軟判決映射器從(0,1)映射為(-1,+1)比特流,經(jīng)過(guò)串入并出轉(zhuǎn)換后并行輸出給TPC碼譯碼器,經(jīng)譯碼器譯出的信息比特將會(huì)和原始輸入信息進(jìn)行異或比較,最后由誤碼率計(jì)算模塊輸出誤碼率。
這樣一個(gè)TPC碼驗(yàn)證測(cè)試激勵(lì)系統(tǒng)提供了快速的硬件仿真模型,非常值得推廣,相比較利用C程序軟件仿真,仿真時(shí)間大致為10:1,大大提高了TPC碼性能仿真效率。
如何有效地設(shè)計(jì)一個(gè)TPC碼的譯碼器成為目前圍繞TPC碼的無(wú)線通信應(yīng)用領(lǐng)域的一個(gè)重要問(wèn)題。本文針對(duì)短碼、小碼塊的TPC碼迭代譯碼器的FPGA設(shè)計(jì),特別建立了TPC 碼迭代譯碼器的硬件仿真模型,大大提高了性能仿真效率,提出了信道編碼譯碼器硬件設(shè)計(jì)的優(yōu)化設(shè)計(jì)方案,作為一種有益的探索和嘗試,為下一步實(shí)現(xiàn)各種信道編碼譯碼器積累了寶貴經(jīng)驗(yàn)。該硬件仿真模型的靈活性非常強(qiáng),通過(guò)改變?cè)O(shè)計(jì)中的一些輸入和控制參數(shù),可以設(shè)計(jì)更多IEEE802.16標(biāo)準(zhǔn)推薦的更實(shí)用碼型和迭代次數(shù)的TPC碼。
評(píng)論