一種基于FPGA的QC_LDPC碼的譯碼器設(shè)計(jì)
(4)地址生成模塊。地址生成模塊中包含一個(gè)保存校驗(yàn)矩陣中所有子塊位置和子塊偏移量信息的只讀寄存器(ROM)。通過從ROM中調(diào)取信息,分別產(chǎn)生Zmem和Lmem的讀寫地址。
本文引用地址:http://butianyuan.cn/article/246737.htm(5)校驗(yàn)?zāi)K。校驗(yàn)?zāi)K在每一次迭代結(jié)束之后,對所有校驗(yàn)方程進(jìn)行驗(yàn)證,若全部滿足則停止迭代,否則進(jìn)行下一次迭代過程,直至達(dá)到預(yù)先設(shè)定的最高迭代次數(shù)為止。
(6)控制模塊??刂颇K中設(shè)置整個(gè)譯碼器的狀態(tài)機(jī),控制譯碼器各個(gè)子模塊有序運(yùn)行。
3.2 譯碼器中內(nèi)存讀取的問題及改進(jìn)
在PCUB模塊中,每個(gè)校驗(yàn)節(jié)點(diǎn)對應(yīng)的6個(gè)變量節(jié)點(diǎn)信息串行加入迭代過程,而這些節(jié)點(diǎn)信息存儲在與之對應(yīng)的216個(gè)Zmem中。由于校驗(yàn)矩陣列重為3,因此,若按照校驗(yàn)矩陣原來的結(jié)構(gòu),當(dāng)108個(gè)PCUB并行從Zmem中讀取數(shù)據(jù)時(shí),順序讀取變量節(jié)點(diǎn)信息時(shí)可能從某一子塊列對應(yīng)的Zmem中讀取1~3個(gè)數(shù)據(jù),這樣不同的讀取情況,會(huì)增加Zmem的硬件設(shè)計(jì)復(fù)雜度。
由于變量節(jié)點(diǎn)信息加入迭代過程的先后順序并不影響譯碼器的結(jié)構(gòu),因此對變量節(jié)點(diǎn)信息的讀取順序加以改進(jìn),將原有的讀取順序重新排列,使得在同一時(shí)刻的PCUB從不同的子塊列對應(yīng)的Zmem中讀取數(shù)據(jù),即每一時(shí)刻Zmem最多提供一個(gè)數(shù)據(jù),這便大幅降低了Zmem的設(shè)計(jì)復(fù)雜度,進(jìn)而提高硬件的通用性。
4 FPGA實(shí)現(xiàn)
選用Altera公司StratixIII系列的EP3SL340器件,設(shè)置最大迭代次數(shù)為5次,在QuartusII 9.0下完成綜合與布局布線,硬件資源消耗如表1所示。
在譯碼過程中,首先花費(fèi)108個(gè)時(shí)鐘進(jìn)行Zmem的初始化過程,完成后開始迭代譯碼。在每一次迭代過程中,PCUB模塊進(jìn)行108次更新,由于采用流水線結(jié)構(gòu),每次更新實(shí)際僅需花費(fèi)6個(gè)時(shí)鐘,再加上第一組數(shù)據(jù)進(jìn)入流水線花費(fèi)的額外6個(gè)時(shí)鐘,5次迭代共花費(fèi)6×(108×5)+6=3 246個(gè)時(shí)鐘。
圖2為傳統(tǒng)迭代與分層迭代譯碼算法的性能曲線比較,為AWGN信道模式下采用BPSK調(diào)制,進(jìn)行6 bit量化。通過圖中的性能曲線可看出,在最大迭代次數(shù)同為5次的情況下,對正規(guī)QC_LDPC碼采用分層譯碼器處理后相比采用傳統(tǒng)部分并行結(jié)構(gòu)譯碼器具有較好的譯碼性能表現(xiàn),在信噪比為2.5 dB的情況一,誤碼率可以達(dá)到10-5量級。
5 結(jié)束語
文中首先利用3個(gè)不同的子矩陣分別按照指定的方法進(jìn)行移位運(yùn)算,組合得到無4環(huán)和6環(huán)的基陣,進(jìn)而利用單位矩陣及其移位矩陣作為替換因子隨機(jī)替換基陣中的“1”而擴(kuò)展得到所需的校驗(yàn)矩陣。隨后采用分層譯碼算法,該算法較傳統(tǒng)的部分并行結(jié)構(gòu)有較好的收斂性,并降低了迭代次數(shù)的要求。同時(shí)在Altera公司的StratixIII系列FPGA上得以實(shí)現(xiàn),驗(yàn)證其達(dá)到了較高的譯碼吞吐量。
c++相關(guān)文章:c++教程
評論