一種基于FPGA的QC_LDPC碼的譯碼器設計
(4)地址生成模塊。地址生成模塊中包含一個(gè)保存校驗矩陣中所有子塊位置和子塊偏移量信息的只讀寄存器(ROM)。通過(guò)從ROM中調取信息,分別產(chǎn)生Zmem和Lmem的讀寫(xiě)地址。
本文引用地址:http://dyxdggzs.com/article/246737.htm(5)校驗模塊。校驗模塊在每一次迭代結束之后,對所有校驗方程進(jìn)行驗證,若全部滿(mǎn)足則停止迭代,否則進(jìn)行下一次迭代過(guò)程,直至達到預先設定的最高迭代次數為止。
(6)控制模塊??刂颇K中設置整個(gè)譯碼器的狀態(tài)機,控制譯碼器各個(gè)子模塊有序運行。
3.2 譯碼器中內存讀取的問(wèn)題及改進(jìn)
在PCUB模塊中,每個(gè)校驗節點(diǎn)對應的6個(gè)變量節點(diǎn)信息串行加入迭代過(guò)程,而這些節點(diǎn)信息存儲在與之對應的216個(gè)Zmem中。由于校驗矩陣列重為3,因此,若按照校驗矩陣原來(lái)的結構,當108個(gè)PCUB并行從Zmem中讀取數據時(shí),順序讀取變量節點(diǎn)信息時(shí)可能從某一子塊列對應的Zmem中讀取1~3個(gè)數據,這樣不同的讀取情況,會(huì )增加Zmem的硬件設計復雜度。
由于變量節點(diǎn)信息加入迭代過(guò)程的先后順序并不影響譯碼器的結構,因此對變量節點(diǎn)信息的讀取順序加以改進(jìn),將原有的讀取順序重新排列,使得在同一時(shí)刻的PCUB從不同的子塊列對應的Zmem中讀取數據,即每一時(shí)刻Zmem最多提供一個(gè)數據,這便大幅降低了Zmem的設計復雜度,進(jìn)而提高硬件的通用性。
4 FPGA實(shí)現
選用Altera公司StratixIII系列的EP3SL340器件,設置最大迭代次數為5次,在QuartusII 9.0下完成綜合與布局布線(xiàn),硬件資源消耗如表1所示。

在譯碼過(guò)程中,首先花費108個(gè)時(shí)鐘進(jìn)行Zmem的初始化過(guò)程,完成后開(kāi)始迭代譯碼。在每一次迭代過(guò)程中,PCUB模塊進(jìn)行108次更新,由于采用流水線(xiàn)結構,每次更新實(shí)際僅需花費6個(gè)時(shí)鐘,再加上第一組數據進(jìn)入流水線(xiàn)花費的額外6個(gè)時(shí)鐘,5次迭代共花費6×(108×5)+6=3 246個(gè)時(shí)鐘。

圖2為傳統迭代與分層迭代譯碼算法的性能曲線(xiàn)比較,為AWGN信道模式下采用BPSK調制,進(jìn)行6 bit量化。通過(guò)圖中的性能曲線(xiàn)可看出,在最大迭代次數同為5次的情況下,對正規QC_LDPC碼采用分層譯碼器處理后相比采用傳統部分并行結構譯碼器具有較好的譯碼性能表現,在信噪比為2.5 dB的情況一,誤碼率可以達到10-5量級。
5 結束語(yǔ)
文中首先利用3個(gè)不同的子矩陣分別按照指定的方法進(jìn)行移位運算,組合得到無(wú)4環(huán)和6環(huán)的基陣,進(jìn)而利用單位矩陣及其移位矩陣作為替換因子隨機替換基陣中的“1”而擴展得到所需的校驗矩陣。隨后采用分層譯碼算法,該算法較傳統的部分并行結構有較好的收斂性,并降低了迭代次數的要求。同時(shí)在A(yíng)ltera公司的StratixIII系列FPGA上得以實(shí)現,驗證其達到了較高的譯碼吞吐量。
c++相關(guān)文章:c++教程
評論