基于IEEE802.1 6e標(biāo)準(zhǔn)的LDPC編碼器設(shè)計(jì)與實(shí)現(xiàn)
3 LDPC編碼算法的實(shí)現(xiàn)
根據(jù)上述編碼算法,F(xiàn)PGA程序實(shí)現(xiàn)了0.5碼率,碼長(zhǎng)為2 304 bit,信息位為1 152 bit數(shù)據(jù)流的編碼。每幀送入1 152 bit原始數(shù)據(jù)流,經(jīng)過(guò)編碼后產(chǎn)生1 152 bit效驗(yàn)位,因?yàn)槭窍到y(tǒng)碼,所以將原始信息位后緊跟效驗(yàn)位就可以合并成所要發(fā)送的編碼碼流。編碼器的硬件總體結(jié)構(gòu)如圖2所示。本文引用地址:http://butianyuan.cn/article/156074.htm
從圖2可以看出,LDPC編碼器中主要包含矩陣乘法模塊,前項(xiàng)置換模塊,矢量加法模塊,以及生成碼字模塊。現(xiàn)對(duì)矩陣乘法模塊,前項(xiàng)置換模塊和碼字生成模塊進(jìn)行介紹。
(1)矩陣乘法器模塊:主要由循環(huán)移位器和模二加法器組成。由于FPGA運(yùn)算的并行特點(diǎn),編碼器在計(jì)算矩陣乘法時(shí)可按行并行操作。輸入的原始信息比特流與效驗(yàn)矩陣Hb的每一行進(jìn)行相乘運(yùn)算時(shí),首先按照RAM中存儲(chǔ)的非零列號(hào)找到相對(duì)應(yīng)的信息位中的矢量,并對(duì)該矢量進(jìn)行循環(huán)右移,循環(huán)右移的次數(shù)依照IEEE802.11e標(biāo)準(zhǔn)的規(guī)定進(jìn)行控制,然后把這一行中的所有非零元素和信息位相乘所得結(jié)果做一次異或操作,這就是矩陣的一行與信息位相乘的結(jié)果。該過(guò)程可以并行執(zhí)行,同時(shí)完成矩陣中每一行與信息位的相乘運(yùn)算。
(2)前項(xiàng)置換器模塊:IEEE802.16e標(biāo)準(zhǔn)中規(guī)定,LDPC碼的效驗(yàn)矩陣r是雙對(duì)角矩陣,所以對(duì)于乘矩陣T的逆的操作采用前項(xiàng)置換方法,其原理如下:
所以在FPGA中進(jìn)行乘矩陣r的逆的計(jì)算,不必進(jìn)行求逆和相乘運(yùn)算,僅用異或運(yùn)算就能完成。
(3)生成碼字模塊:主要作用是將原始信息位與效驗(yàn)位p1和p2合成。在IEEE802.16e標(biāo)準(zhǔn)中規(guī)定LDPC碼為系統(tǒng)碼,所以將原始信息位與效驗(yàn)位p1和p2按順序依次拼接起來(lái),就是實(shí)際編碼后數(shù)據(jù)。
4 FPGA仿真結(jié)果分析
在QuartusⅡ軟件下進(jìn)行編譯和綜合,器件選擇為Altera公司STRATIXII系列的EP2S90F1020C3,整個(gè)LDPC編碼器最高工作時(shí)鐘214 MHz,邏輯資源占用3 027 LE。LDPC碼編碼仿真結(jié)果如圖3所示。
code_rden:編碼器使能標(biāo)志,高電平說(shuō)明LDPC編碼器正在工作。
matlab_code:LDPC編碼的Matlab仿真結(jié)果輸出。
ldpc_code:LDPC編碼的FPGA仿真結(jié)果輸出。
result_out:比對(duì)Matlab與FPGA仿真結(jié)果,輸出碼流進(jìn)行相減一直為零,說(shuō)明仿真結(jié)果正確。
5 結(jié)束語(yǔ)
文中分析了基于IEEE802.16e標(biāo)準(zhǔn)的LDPC碼的校驗(yàn)矩陣H,然后在QuartusⅡ平臺(tái)下根據(jù)分塊矩陣的快速編碼算法設(shè)計(jì)了一種編碼器,滿(mǎn)足IEEE802.16e標(biāo)準(zhǔn)的碼長(zhǎng)為2 304,碼率為1/2的LDPC碼的編碼要求,并仿真驗(yàn)證了LDPC編碼器的性能。仿真結(jié)果證明通過(guò)合理的構(gòu)造LDPC碼的校驗(yàn)矩陣以及選擇合適的編碼算法,可以有效降低編碼復(fù)雜度,并實(shí)現(xiàn)了線(xiàn)性編碼。
評(píng)論