基于CMMB系統(tǒng)的LDPC譯碼器的設(shè)計(jì)與實(shí)現(xiàn)
2.5 中間結(jié)果存儲單元(R_Mem和Q_Mem)
由于兩種碼率時(shí),校驗(yàn)矩陣第1個(gè)子矩陣中非零元素的位置不一樣。故在水平更新時(shí),RAM的初始化地址也不一樣,需要用兩組初始地址值。對兩種碼率來說,第1個(gè)行子矩陣非零元素的個(gè)數(shù)都為108(18x6或9x12)。事實(shí)上,第1個(gè)列子矩陣非零元素的個(gè)數(shù)同樣為108(3x36)。第1個(gè)行子矩陣和第1個(gè)列子矩陣非零元素位置有著潛在的一一對應(yīng)的關(guān)系。舉例來說,第1行(下標(biāo)從0開始)6個(gè)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)。這樣,通過挖掘行子矩陣和列子矩陣中每一個(gè)非零位置的對應(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)系。本文引用地址:http://www.biyoush.com/article/191280.htm
這里分別用了108個(gè)深度為256、寬度為6bits的單口RAM作為R_Mem和Q_Mem。當(dāng)進(jìn)行變量節(jié)點(diǎn)運(yùn)算時(shí),VNU輸入可從Q_Mem中讀取,讀數(shù)時(shí),首地址為0,VNU輸出寫入R_Mem中,寫順序首地址為黑體數(shù)字,運(yùn)算周期為256;當(dāng)所有變量節(jié)點(diǎn)更新后,接著是校驗(yàn)節(jié)點(diǎn)的運(yùn)算,同時(shí)
可進(jìn)行檢驗(yàn)方程運(yùn)算。此時(shí),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時(shí),誤碼率已經(jīng)降至10-5以下。而在信噪比SNR為1.7 dB時(shí),誤碼率已經(jīng)降至10-7以下;當(dāng)碼率為3/4時(shí),在信噪比SNR為3.0 dB時(shí),誤碼率可以降至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)行編譯時(shí),其具體的資源利用情況如表2所列。
從表2中可以看出,此結(jié)構(gòu)不僅完全地復(fù)用了存儲器資源,而且最大限度地復(fù)用了邏輯運(yùn)算單元。正是因?yàn)閮煞N碼率可復(fù)用RAM資源,使memory消耗較少,從而剩下大量的RAM資源可以用作CMMB其余部分(如解交織模塊)使用。LUT資源相對來說用得較多,這是由于并行結(jié)構(gòu)造成的,它有36個(gè)VNU和9個(gè)CNU交替進(jìn)行運(yùn)算。
4 結(jié)束語
本文設(shè)計(jì)的部分并行結(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ù)用硬件資源,從而大大減少了譯碼器的資源消耗。
評論