基于FPGA的LDPC編碼設(shè)計
矩陣X每行中“1”的位置可看作選擇向量s相應元素的地址索引,將選擇的所有元素相加作和,即完成X中某行與向量的運算。由于涉及的運算都是二進制加法,相加作和操作可簡化如下:根據(jù)矩陣每行“1”的位置選擇向量s的元素。統(tǒng)計被選擇的元素中“1”的個數(shù),若結(jié)果為奇數(shù)則說明相加的結(jié)果為“l(fā)”,否則說明相加的結(jié)果為“0”。判斷結(jié)果為奇數(shù)或者偶數(shù)可由其二進制形式的末位是“1”或者“0”得到。通過設(shè)置2個計數(shù)器分別計算各行行重和選擇的向量s相應位置的元素中“1”的個數(shù),即可實現(xiàn)乘法單元的運算。矩陣向量乘法器的硬件結(jié)構(gòu)如圖3所示。本文引用地址:http://www.ex-cimer.com/article/191682.htm
從圖3可知矩陣向量乘法器包括1)調(diào)度單元,產(chǎn)生各模塊單元的使能信號;2)緩存單元,對輸入信息序列進行緩存處理;3)存儲器控制單元,產(chǎn)生存儲器的地址信號;4)“1”位置存儲器,存儲矩陣各行“1”的位置;5)行重存儲器,存儲矩陣相應各行行重;6)乘法單元,進行向量乘法運算,最后輸出碼字。
4 結(jié)果驗證
矩陣向量乘法器仿真結(jié)果驗證在Qum-tusⅡ環(huán)境下,實現(xiàn)output=XsT,得到如圖4所示的仿真時序圖。圖4中“en”是使能信號,“cloc-k”是時鐘信號,addr_nun、adds_t分別為2個存儲器的地址信號,info_seq是輸入信息信號,rece是信息信號經(jīng)過緩存后的輸出信號,num_t是“1”在各行的位置信息,rOW_t是相應各行的行重,output是矩陣與向量相乘的結(jié)果。
由圖4可知,output=[1 1 1],信號輸出有一個時鐘周期的延時,仿真結(jié)果正確。
5 結(jié)束語
用本文描述的方法,在1片Stratix系列的FPGAEPIS25F67217中,實現(xiàn)了最大碼長為4 096的靈活編碼方案,編碼器占用約lO%的邏輯單元,約13%的存儲單元,綜合后時鐘頻率達到166 MHz,數(shù)據(jù)吞吐率達到48.33 Mb/s。該編碼器結(jié)構(gòu)是一種通用的設(shè)計方案,可以靈活地應用于各種不同類型的LDPC編碼中,并可有效地分配存儲器單元和最大可能地實現(xiàn)運算過程中的并行處理,但由于其采用通用的編碼算法,實現(xiàn)的復雜度高于某些特殊結(jié)構(gòu)的LDPC編碼器,比如準循環(huán)LDPC碼。另外通過優(yōu)化時序和編碼結(jié)構(gòu),可以進一步提高本文編碼器的編碼速度。
評論