蘭亞柱 楊海鋼 林 郁
?
面向DVB-S2標準LDPC碼的高效編碼結構
蘭亞柱①②楊海鋼*①林 郁①
①(中國科學院電子學研究所可編程芯片與系統研究室 北京 100190),②(中國科學院大學 北京 100049)
面向DVB-S2標準LDPC碼,該文旨在實現一種基于FPGA的高效編碼結構,提出一種快速流水線并向遞歸編碼算法,可以顯著提高編碼數據信息吞吐率。同時,通過并向移位運算和并向異或運算的處理結構計算編碼中間變量及校驗位信息,在提高編碼并行度的同時可有效減少存儲資源的消耗。此外,針對動態自適應編碼的情況優化了LDPC碼編碼存儲結構,有效復用了數據存儲單元和RAM地址發生器,進一步提高FPGA的硬件邏輯資源利用率。針對DVB-S2標準LDPC碼,基于Stratix IV系列FPGA的驗證結果表明,所提編碼結構在系統時鐘為126.17 MHz時,編碼數據信息吞吐率達20 Gbps以上。
LDPC碼;編碼結構;DVB-S2標準; FPGA
1 引言
2004年提出的第2代衛星數字視頻廣播通信標準(DVB-S2)革新性地采用低密度奇偶校驗(Low Density Parity Check , LDPC)碼作為前向糾錯編碼解決方案[1]。20世紀60年代初,GALLAGER[2]首次提出LDPC碼。此后,除Tanner圖論外,LDPC碼很少有實質性研究成果。在90年中后期,在Turbo碼廣泛應用的背景下,文獻[3,4]通過創新性研究,促使LDPC碼成為信道編碼領域的研究熱點。
針對深空通信的特點,DVB-S2標準對LDPC碼有完善的規范,包括理論編碼算法、兩種碼長及多種碼率[5,6]。深空通信中,LDPC碼編碼需要長期保證正常工作。此情況下,設計實現滿足深空通信中不同編碼環境的高效編碼結構有很強的現實意義。
國內,文獻[10]提出基于DVB-S2的高速多碼率LDPC編碼的FPGA設計與實現,采用兩路并行的編碼結構,可使編碼數據信息吞吐率達到328 Mbps。文獻[11]提出基于FPGA的DVB-S2通用LDPC編碼設計與實現,使LDPC編碼能夠針對多碼長多碼率實現有效編碼。文獻[12]針對DVB-S2標準LDPC碼編碼,提出一種基于FPGA的通用LDPC碼編碼器設計,編碼數據信息吞吐率可達63.371 Mbps。
國外,文獻[13]基于DVB-S2標準LDPC-IRA碼的特點,實現了LDPC碼并行編碼并保證編碼數據信息吞吐率最小可達5.93 Gpbs。文獻[14]采用并行編碼結構,取得了在碼長64800碼率1/2的情況下,接近10 Gbps的編碼數據信息吞吐率。國外在DVB-S2標準LDPC碼編碼研究方面,在數據信息吞吐率上具有明顯的領先優勢[15]。
為滿足深空通信需求,針對DVB-S2標準LDPC碼結構,本文提出快速流水線并向遞歸編碼算法,并設計滿足多碼長碼率的高效編碼結構。通過增加適量的復雜度,消耗部分額外的硬件邏輯資源,該高效編碼結構使數據信息吞吐率明顯提高,可適應深空通信需求。
2 核心算法
2.1 DVB-S2標準LDPC碼結構
DVB-S2標準LDPC碼屬于IRA-LDPC碼,其結構特點如式(1)所示。
2.2 基本編碼算法
LDPC碼校驗矩陣是稀疏矩陣,但其生成矩陣一般不會是稀疏矩陣。基本編碼算法如下:
第1步 初始化校驗位:
第2步 計算信息位對奇偶校驗位的貢獻, 計算公式如式(4):
第3步 按式(5)計算,獲得最終的奇偶校驗位:
2.3 快速流水線并向遞歸編碼算法
結合便于硬件邏輯實現的流水線處理方法,依據基本編碼算法,本文提出快速流水線并向遞歸編碼算法,具體步驟如下:

(6)將求出的校驗位與信息位相結合就可以得到系統形式的碼字為:
3 編碼結構
基于快速流水線并向遞歸編碼算法,本文采用碼長碼率的動態自適應來優化編碼結構,以使其具有高效性、靈活性及普適性。基于動態自適應優化的編碼結構如圖1,主要包括校驗位存儲RAM、地址表儲存ROM、校驗位中間信息計算模塊、校驗位異或處理模塊、輸出模塊和編碼參數控制單元。
3.1 存儲管理與設計
LDPC碼編碼結構中,存儲管理主要分為校驗地址信息存儲分塊、信息分塊存儲及中間信息分塊存儲。
校驗地址信息存儲分塊以不同碼長碼率的校驗節點地址為基準,采用指針式分級ROM存儲。不同碼率對應的校驗節點地址,指針式分級存儲通過動態加載模塊。編譯時,針對不同設置參數進行不同綜合適配,生成針對用戶設定的可執行文件。當用戶設置兩種或兩種以上碼率時,指針式分級存儲會保證編碼會在不同碼率之間動態自適應調整,提高編碼靈活性。
編碼信息分塊存儲和編碼中間信息存儲主要在快速流水線并向遞歸編碼算法流程中,為了縮短編碼周期,需要將信息節點的信息分塊存儲和校驗節點的編碼中間信息分塊存儲按照圖1所示的結構存儲。為了通過數據信息的并向存儲,便于快速流水線并向遞歸編碼算法式處理,使兩種節點數據信息具有同步處理及存儲的特性,以便提高編碼效率。為了流水化式處理,編碼結構采用雙端口RAM存儲編碼過程中的有效數據信息,實現信息節點及校驗節點信息的周期性流水線并向存儲。

圖1 基于動態自適應優化的編碼結構
在保證數據信息按照快速流水線并向遞歸編碼算法并向存儲后,為保證編碼動態自適應,需要硬件邏輯可對不同碼長的各類數據信息存儲。此情況下,本文采用分布式存儲,以360為基本單位的RAM存儲方式,通過整體RAM讀寫調度模塊電路,對所有RAM進行讀寫管理,使系統時鐘得到優化。
3.2 快速流水線并向遞歸電路
快速流水線并向遞歸編碼進程中,并向遞歸電路包括并向遞歸移位運算和并向遞歸異或運算。并向遞歸移位運算是針對校驗地址信息的數值,完成對信息分塊和中間信息分塊的旋轉移位調整。并向遞歸移位運算主要完成快速流水線并向遞歸編碼算法中步驟(2),步驟(3)。并向異或運算針對中間信息分塊的數據信息,完成快速流水線并向遞歸編碼算法中的步驟(4),步驟(5)。其中,由步驟(4)的核心算式(7)可知,共涉及360組中間信息的異或處理。
為縮短時延,本文用組合邏輯結構來實現式(7)。該結構以消耗部分硬件邏輯資源為代價,有效提高快速流水線并向遞歸編碼時序。面對快速流水線并向遞歸編碼算法中的步驟(5),并向異或運算采用可循環并向異或結構,結構并向度為360,保證最小延時,完成對中間信息的異或運算。
3.3 動態配置電路
為保證靈活性,本文采用碼率碼長的動態自適應進行編碼結構的優化,主要由動態配置電路來實現。當用戶設置不同碼長碼率時,通過動態配置電路對編碼結構進行控制。動態配置電路需要按照指令對分級存儲的地址信息進行讀取,而且保證編碼結構間的協調關系。動態配置電路可以有效保證編碼進程在不同碼率之間動態地自適應調整,提高編碼靈活性。
4 驗證與分析
4.1 編碼結構的實現分析
本文編碼結構的硬件邏輯實現,基于EP4 SGX230KF40C4 FPGA,使用Quartus II 13.0邏輯綜合、布局布線及時序分析,ModelSim 10.0b仿真,硬件資源占用如表1所示。

表1 編碼結構的硬件資源耗用(Cf: Combinational functions)
文獻[11-14]只是單一碼長碼率的硬件邏輯實現,本文則是可以動態適應多碼長碼率的編碼結構。這得益于通過本文提出動態配置電路,用戶可以基于編碼環境因子變化,對編碼結構碼長碼率進行適應性控制。
本文消耗寄存器和存儲資源比文獻[11,12]多。由于本文是并向遞歸編碼,文獻[11,12]為串行編碼。同樣并向編碼,文獻[13,14]與本文消耗相當。與文獻[13,14]相比,本文寄存器、存儲資源消耗較多一些。主要由于:(1)為適應多碼長碼率編碼,本文需要對多種碼長碼率對應的校驗地址信息存儲;(2)為提高快速流水線并向遞歸編碼算法實現的并行度,本文采用最大備份編碼策略,消耗額外寄存器及存儲資源,來提高編碼數據信息吞吐率。
編碼通用性及靈活性,并向編碼情況,本文比文獻[13,14]具有明顯優勢。不僅可以動態自適應不同碼長碼率,而且可通過動態配置電路,對編碼自適應范圍進行調整。本文可以保證編碼在通用性、靈活性與硬件邏輯資源消耗之間獲得可控的動態平衡。
硬件存儲資源RAM消耗,本文較文獻[13]所需RAM資源更少,但與文獻[14]相比則多一些。這是由于文獻[14]對校驗向量的計算不需要任何RAM來緩存中間結果,而本文則要求對中間變量的結果作緩存處理,但該處理方式使得編碼結構中不再需要大量的移位寄存器。在RAM利用率角度,本文比文獻[13,14]更具優勢。
4.2 編碼結構的性能分析
LDPC碼編碼結構的性能主要體現為編碼數據信息吞吐率的大小。借助TimeQuest工具,對本文編碼結構進行評估。經分析,編碼結構數據吞吐率計算如式(9):
碼長為64800時,編碼結構數據吞吐率如表2所示。其中,每種碼率組合進行10次綜合編譯得出系統時鐘平均值作為式(3)中的系統時鐘。分析可知,(1)系統時鐘隨著碼率變多而有所下降,影響僅約為10 MHz;(2)編碼結構數據吞吐率最大為22.71 Gbps,最小為19.97 Gbps;(3)隨著碼長增大,編碼結構吞吐率會有所降低。同理,碼長為16200時,編碼結構吞吐率最小為19.97 Gbps,最大為22.71 Gbps。

表2 編碼結構的數據吞吐率T (Gbps)
注:灰度區表示無數據。
以上是并行編碼結構數目為1的情況。如需提高吞吐率,可增加編碼結構數目。雖然可通過硬件配置實現,但是其受到硬件邏輯資源的限制。此情況下,式(9)可修正為
為了公平性,本文選用Marco Gomes和InKi Lee提出的高速LDPC碼編碼結構,取碼長64800碼率1/2時的實現為對象,進行對比得到表3。

表3 本文與相關文獻編碼吞吐率性能比較(Gbps)(碼長為64800)