基于FPGA的LDPC編碼設(shè)計(jì)
1 LDPC碼
LDPC碼是一種線性分組碼,其校驗(yàn)矩陣是稀疏矩陣,因?yàn)橄鄳?yīng)的校驗(yàn)矩陣中包含絕大多數(shù)的0而僅有極少數(shù)的1而得名。一個(gè)(n,k)二進(jìn)制LDPC碼可以用一個(gè)非常稀疏的奇偶校驗(yàn)矩陣H來表示。其中,H是一個(gè)mxn的矩陣,n表示編碼比特長(zhǎng)度,m表示校驗(yàn)比特長(zhǎng)度,k=n-m是信息比特長(zhǎng)度。與校驗(yàn)矩陣H相對(duì)應(yīng)的是一個(gè)生成矩陣G,生成矩陣將要發(fā)送的信息s={sl,s2,…,sm}轉(zhuǎn)換成被傳輸?shù)拇a子c={c1,c2,…,cn},n>m。對(duì)于任何一個(gè)合法的碼字c,都有校驗(yàn)方程HcT=0。
2 RU編碼算法
LDPC碼屬于線性分組碼。信號(hào)通過LDPC編碼后的碼字符合公式:
式中,c為碼字,H為校驗(yàn)矩陣。
直接的編碼方案:1)高斯消元,將校驗(yàn)矩陣H化為下三角形式:2)將c分為信息比特和校驗(yàn)比特2部分,如x=(s,p),其中s為已知信息比特向量,p為待求校驗(yàn)信息比特向量;3)利用前向迭代方法解方程HcT=O,得到p。由于高斯消元后的矩陣不再具有稀疏性,因此這種編碼方法的硬件實(shí)現(xiàn)方案,其復(fù)雜度是與碼長(zhǎng)的平方成正比。為了降低復(fù)雜度,Richardson和Urbanke充分利用校驗(yàn)矩陣的稀疏性,將LDPC碼的編碼復(fù)雜度降到與碼長(zhǎng)n成線性關(guān)系,即RU算法。
RU算法包括兩個(gè)階段:預(yù)處理階段和信號(hào)編碼階段。通過預(yù)處理將校驗(yàn)矩陣日變?yōu)橐粋€(gè)近似下三角的矩陣,由于這種變換僅僅通過行置換來實(shí)現(xiàn),所以矩陣的稀疏特性被保留。如圖1所示,在校驗(yàn)矩陣H的近似下三角形式中,分塊矩陣A、B、C和c都保持了稀疏性,D為密集矩陣,T為稀疏的下三角矩陣。當(dāng)g很小時(shí),即矩陣D很小時(shí),可以大大降低編碼運(yùn)算復(fù)雜度。為減少運(yùn)算量應(yīng)在設(shè)計(jì)H矩陣時(shí)使g越小越好。
實(shí)際編碼由矩陣相乘、前向迭代和向量相加操作組成。對(duì)于給定的一個(gè)校驗(yàn)矩陣,預(yù)處理編碼預(yù)處理過程和矩陣的計(jì)算只需要做一次,所以可先用軟件完成,實(shí)際編碼在硬件上完成。RU編碼算法中可以進(jìn)行部分并行運(yùn)算,使得吞吐率最大化。通過有效的矩陣存儲(chǔ),降低存儲(chǔ)單元的消耗量。
2.1 編碼器設(shè)計(jì)本文引用地址:http://m.butianyuan.cn/article/191682.htm
預(yù)處理包括2步:三角化和秩校驗(yàn)。三角化通過行列置換處理將校驗(yàn)矩陣轉(zhuǎn)化成圖1所示的形式,則:
式中,A為(m-g)×(n-m),B為(m-g)×g,T為(m-g)×(m-g),C為gx(n-m),D為gxg,E為gx(m-g)。除D外,其他全是稀疏矩陣,且T為對(duì)角線上全為l的下三角矩陣。
評(píng)論