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