文獻標識碼: A
文章編號: 0258-7998(2014)09-0101-04
LDPC(Low Density Parity Check Code)碼是一種性能優異的線性分組碼,其性能非常接近于Shannon極限且具有很強的糾錯能力。但自LDPC碼被發明以來就存在一個阻礙其發展的巨大障礙。眾所周知,一般的線性分組碼是通過其生成矩陣實現編碼。而LDPC碼的校驗矩陣雖然是稀疏的,但生成矩陣卻不是稀疏矩陣。由于LDPC碼的編碼長度都很長,因此復雜的生成矩陣為編碼帶來了巨大困難。后來,人們利用其校驗矩陣的特點實現了快速編碼。即便如此,當碼長很長時編碼所需的存儲空間仍然非常龐大,學者們也在不斷探索高性能的編碼方法。
目前,LDPC碼已開始逐漸應用于空間通信、光纖通信、數字視頻和音頻廣播等領域。LDPC碼的編碼標準主要有:DVB-S(DigitalVideoBroadcasting-Sa-tellite)標準、DVB-S2[1]標準、CCSDS(Consultative Committee for Space Data Systems)標準[2]、GB20600標準[3]、IEEE802.16e標準[4]等。LDPC編碼已經在IEEE802.16e標準中作為專用傳輸碼使用。DVB-S2是新一代數字衛星廣播的標準,與DVB-S標準相比,其傳輸容量增益可達30%。CCSDS標準中的LDPC碼包括近地和深空應用。GB20600標準中的LDPC碼主要用于數字電視地面廣播系統。本文主要研究IEEE 802.16e標準中LDPC碼快速編碼的實現方法,并將其與DVB-S2標準的LDPC縮短碼的性能進行比較。
1 IEEE802.16e標準中的LDPC碼校驗矩陣的構造方式
IEEE802.16e標準中定義的LDPC碼是一種準循環的非規則LDPC碼,共有4種速率[4]。每一種速率都有相應的校驗矩陣H。Hb是H的基校驗矩陣,Hb經過擴展后可得到H,Hb的尺寸為mb×nb,具體構成見式(1)。nb的長度固定為24,mb的長度根據碼速率不同而異。Hb1是一個mb×(nb-mb)矩陣。Hb2是一個mb×mb矩陣。q稱為擴展系數,Hb可通過mb·q×nb·q的擴展方式獲得校驗矩陣H。

Hb1中的元素由-1或非負整數組成,若為-1,則校驗矩陣H相應的位置是全0矩陣;若為非負整數,則校驗矩陣H相應的位置是單位矩陣E進行非負整數次右移所得的矩陣。Hb2的第一列中h(1)、h(r)、h(mb)為非負整數,且h(1)=h(mb)。r的取值范圍為2≤r≤mb-1,其具體值由IEEE802.16e標準指定。Hb2除第一列外,其余部分構成準雙對角線結構,兩條準對角線上的元素為0,其他位置為-1。Hb2的元素構成見式(2)。
根據IEEE802.16e標準,基矩陣Hb的擴展系數q共有19種取值,分別對應19種碼長,最小為24,最大為96,具體的擴展規則見參考文獻[4]。設基校驗矩陣中處于位置(i,j)的元素為q(i,j)。以1/2速率的LDPC碼為例,當q=96時,1/2速率的LDPC碼的基校驗矩陣為式(3),q(i,j)的更新方法見式(4),
表示向下取整。


2 IEEE802.16e標準中LDPC碼的FPGA實現
2.1 LDPC碼的快速編碼算法


將線性方程組式(5)中的各行都加在第一行,可推出:

2.2 快速編碼算法的FPGA實現
以q=24、速率為1/2的LDPC碼為例,其基校驗矩陣根據式(3)、(4)計算可得到式(10),其中mb=nb-mb=kb=12。

根據式(6)可推得:

設輸入序列s的長度為mb·q,每個時鐘上升沿輸入的位寬為q,即每次輸入為si。可以定義kb個寄存器ZH,每個寄存器的位數為q位。利用上述寄存器來存儲輸入序列與基矩陣每一列的乘積,這個乘積在每個時鐘周期進行更新。在更新時需計算當前值與乘積值的異或。在校驗位計算中經常需要計算
的乘積,
表示基校驗矩陣Hb1中位于(i,j)位置的元素。由于該元素表示單位矩陣的移位,所以其與輸入數據序列sj的乘積等效為輸入數據序列的循環移位。當單位矩陣是右移時,乘積等效為輸入序列的循環右移;當單位矩陣是左移時,乘積等效為輸入序列的循環左移。利用這個特性可以大大簡化序列與矩陣之間的乘法運算。圖1表示編碼的詳細計算流程。在序列s12輸入后,每個ZHi(i=1,2…12)寄存器中就會得到

將上述編碼方法用HDL在Quartus II中實現,并分別在EP2C70F896C6、EP2S15484C3上實現綜合和布線。邏輯資源占用情況如表1所示。對于不同的器件,消耗的邏輯資源各異,同時布線后邏輯單元的延遲也不盡相同。使用Stratix II系列的器件相比Cyclone II系列的器件的時鐘頻率提高了約50%。可以預見,如果提升輸入和輸出的位寬,邏輯單元間附加延遲會導致時鐘頻率略有降低,但由于并行度的增加,將顯著提升數據吞吐速率。

在EP2C70F896C6上的時序仿真如圖2所示。在仿真開始前首先復位使系統進入初始狀態。工作時鐘為50 MHz,輸入序列s1=FF0000,s2=s3=…=s11=000000,s12=FFFFFF。輸出的校驗碼序列為p1=F87C7B,p2=F0F8F7,…。在原碼輸出與校驗位輸出之間有一個等待周期。與參考文獻[5]相比,考慮到預處理的時間以及輸入和輸出均需要大長度高速串/并、并/串轉換,實際的系統性能會有一定程度下降。與參考文獻[5]、[6]相比,本設計利用高速狀態機實現,具有實時性強,不需要進行大長度串/并、并/串轉換的優點,而且也不需要對基矩陣進行預處理和分割,對輸入/輸出的制約小,具有較高的性能。

3 IEEE802.16e和DVB-S2標準ldpc碼的性能比較
本設計實現了q=24下,1/2速率的IEEE802.16e標準的LDPC碼的快速編碼。根據圖3左圖所示,在q=24時其HT·H結果中只有主對角線上的元素大于1,其他元素均小于等于1。根據參考文獻[7],本校驗矩陣中無4環,具有良好的譯碼性能。DVB-S2標準的LDPC碼分為長碼和短碼兩種,長度分別為64 800 bit和16 200 bit。由于碼長較長,LDPC碼編解碼器實現具有相當難度,因此將本設計與DVB-S2標準的LDPC縮短碼比較,縮短方法見參考文獻[8]。由于長度24·q=576的IEEE802.16e標準LDPC碼沒有適當的q1值可使DVB-S2縮短碼的碼長與之相等,取q1=15,速率為1/2,則DVB-S2縮短碼的碼長為n=600。在高斯白噪聲信道中進行性能仿真。仿真信道的調制方式為BPSK,采用BP譯碼算法,最大迭代次數為500次。對于200幀隨機數據,每幀長度分別為288 bit和300 bit,分別進行編碼調制和接收譯碼。最后的仿真曲線如圖4所示。可見在碼長基本相同的條件下,IEEE802.16e標準的LDPC碼較DVB-S2縮短碼具有優異的BER性能。圖3右圖是n=600的情況下DVB-S2縮短碼的HT·H數值分布。由圖中可見有大量4環位于校驗矩陣H中,這也是其BER曲線中存在誤碼平臺的原因。


本文對IEEE802.16e標準的LDPC碼的快速編碼算法進行了研究,并在FPGA上實現了q=24、n=576、速率為1/2的LDPC碼快速編碼器。時序仿真的結果顯示該編碼器具有良好的實時編碼性能,資源占用少,性能優良。同時,該編碼器具有良好的可擴展性。當q不同時,只要增加并行輸入輸出的位寬和內部寄存器位數即可靈活改變碼長。其誤碼率在相同的信噪比下優于長度相近的DVB-S2標準的LDPC縮短碼。因此,該編碼器具有良好的實用價值。
參考文獻
[1] DVB-S2 standard draft ETSI EN 302 307 V1.1.1[S].2004.
[2] CCSDS131.1-0-2.Low density parity check codes for use in near-earth and deep space applications[S].CCSDS,2007.
[3] 中華人民共和國國家標準.數字電視地面廣播標準(GB20600)[S].2006.
[4] IEEE P802.16e/D8[S].IEEE Standard for Local and Metropo-litan Area Networks Part 16:Air Interface for Fixed and Mobile Broadband Wireless Access Systems,May 2005.
[5] 李超,石磊.基于IEEE802.16e標準的LDPC編碼器設計與實現[J].電子科技,2011,24(6):40-42.
[6] 俞華梁,毛志剛,張函雋.IEEE802.16e標準的LDPC編碼器設計及硬件實現[J].信息技術,2008(4):63-66.
[7] XIAO Y,LEE M H.Low complexity MIMO-LDPC CDMA systems over multipath channels[J].IEICE Trans.,2006,89(5):1713-1717.
[8] 肖揚.Turbo與LDPC編解碼及其應用[M].北京:人民郵電出版社,2010.
