在通信系統中糾錯碼被用來提高信道傳輸的可靠性和功率利用率,低密度奇偶校驗碼LDPC(Low Density Parity Check code)是目前性能最好的糾錯碼,最初由GaUager提出,但當時並沒有引起足夠的重視。直到Turbo碼提出後,人們在研究Turbo碼的迭代解碼時,發現二者具有相同的特性,即約束隨機碼集合和迭代解碼算法,這導致了隨後LD-PC碼的復出。1996年,Mackay和Neal隨機構造出的LDPC碼,當碼長很長時其性能超過Turbo碼,並在實現上更有優勢,從而激起編碼界對LDPC碼的研究熱情,成為當今信道編碼領域最令人矚目的研究熱點之一。LDPC碼出色的糾錯性能以及可以並行解碼的特點特別是其簡單實用性使其成為下一代通信糾錯編碼的首選。因此,這裡介紹一種基於FPGA的LDPC編碼設計。
1 LDPC碼
LDPC碼是一種線性分組碼,其校驗矩陣是稀疏矩陣,因為相應的校驗矩陣中包含絕大多數的0而僅有極少數的1而得名。一個(n,k)二進位LDPC碼可以用一個非常稀疏的奇偶校驗矩陣H來表示。其中,H是一個mxn的矩陣,n表示編碼比特長度,m表示校驗比特長度,k=n-m是信息比特長度。與校驗矩陣H相對應的是一個生成矩陣G,生成矩陣將要發送的信息s={sl,s2,…,sm}轉換成被傳輸的碼子c={c1,c2,…,cn},n>m。對於任何一個合法的碼字c,都有校驗方程HcT=0。
2 RU編碼算法
LDPC碼屬於線性分組碼。信號通過LDPC編碼後的碼字符合公式:
式中,c為碼字,H為校驗矩陣。
直接的編碼方案:1)高斯消元,將校驗矩陣H化為下三角形式:2)將c分為信息比特和校驗比特2部分,如x=(s,p),其中s為已知信息比特向量,p為待求校驗信息比特向量;3)利用前向迭代方法解方程HcT=O,得到p。由於高斯消元後的矩陣不再具有稀疏性,因此這種編碼方法的硬體實現方案,其複雜度是與碼長的平方成正比。為了降低複雜度,Richardson和Urbanke充分利用校驗矩陣的稀疏性,將LDPC碼的編碼複雜度降到與碼長n成線性關係,即RU算法。
RU算法包括兩個階段:預處理階段和信號編碼階段。通過預處理將校驗矩陣日變為一個近似下三角的矩陣,由於這種變換僅僅通過行置換來實現,所以矩陣的稀疏特性被保留。如圖1所示,在校驗矩陣H的近似下三角形式中,分塊矩陣A、B、C和c都保持了稀疏性,D為密集矩陣,T為稀疏的下三角矩陣。當g很小時,即矩陣D很小時,可以大大降低編碼運算複雜度。為減少運算量應在設計H矩陣時使g越小越好。
實際編碼由矩陣相乘、前向迭代和向量相加操作組成。對於給定的一個校驗矩陣,預處理編碼預處理過程和矩陣的計算只需要做一次,所以可先用軟體完成,實際編碼在硬體上完成。RU編碼算法中可以進行部分並行運算,使得吞吐率最大化。通過有效的矩陣存儲,降低存儲單元的消耗量。
2.1 編碼器設計![]()
本文引用地址:http://www.eepw.com.cn/article/191682.htm
預處理包括2步:三角化和秩校驗。三角化通過行列置換處理將校驗矩陣轉化成圖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為對角線上全為l的下三角矩陣。