蔣藍祥,劉昌銀
(中國傳媒大學信息工程學院,北京 100024)
DTMB標準的高速多碼率LDPC編碼器設計
蔣藍祥,劉昌銀
(中國傳媒大學信息工程學院,北京 100024)
針對中國數字電視廣播地面傳輸標準(DTMB)中給出的多碼率LDPC碼生成矩陣的特點,設計了一種串行輸入串行輸出基于流水線SRAA(Shift Register Adder Accumulator)結構的編碼器,并同時適用于3種不同碼率的LDPC碼。在Altera公司的EP3SL150型號FPGA平臺上,整個設計最高時鐘可達341.88MHz,簡化了存儲器設計結構,完全適合于DTMB標準調制器的開發。
準循環LDPC碼;中國數字電視廣播地面傳輸標準;SRAA結構;FPGA
早在1962年,R.G.Gallager第一次提出了LDPC碼的概念[1]。但是由于其需要龐大而復雜的計算一直不被人們所關心。隨著近幾年器件水平的發展,LDPC碼的優勢才再一次被發現。2006年8月,中國數字電視廣播地面傳輸標準DTMB正式公布,該標準前向糾錯碼由外碼(BCH碼)和內碼(LDPC碼)級聯實現,包含0.4,0.6,0.8共3種碼率[2]。標準中使用的LDPC碼為非規則準循環LDPC碼,該碼性能可接近隨即構造的LDPC碼,而實現的復雜度又可接近循環LDPC碼。
如今準循環LDPC碼的實現,主流方法是采用基于SRAA(Shift Register Adder Accumulator)結構設計。對于DTMB標準的LDPC編碼器的設計,文獻[3-5]也提出了多種改進方法。如采用多級并行SRAA結構的實時編碼器、部分并行SRAA結構的編碼器等,但其都存在著時鐘速度不高,ROM存儲器結構復雜資源消耗大的不足,這對整個DTMB調制器的設計帶來了瓶頸。
本文針對DTMB標準中LDPC碼的特點,基于一種串行流水線的SRAA結構[6],設計了滿足三種不同碼率的高速LDPC編碼器,并在Altera公司的EP3SL150型號FPGA上得到實現,最高時鐘可達341.88MHz。整個設計在241.96MHz頻率下進行仿真驗證,完全滿足DTMB調制器設計的要求。
DTMB標準規定,LDPC碼的生成矩陣Gqc結構如下:

其中,I是b×b階單位矩陣,O是b×b階零矩陣,Gi,j是 b × b 階循環矩陣且 0≤i≤k-1,0≤j≤c-1,由其首行(即循環子矩陣的生成多項式)決定。三種不同碼率的各參數如表1[7]:

表1DTMB標準LDPC三種碼率參數
由(1)式可知,標準中的LDPC碼為典型的QCLDPC碼,且三種不同碼率生成矩陣具有相同的結構,其中循環子矩陣Gi,j也都為127階。
設m為輸入信息比特,c為得到的碼字,h為得到的校驗位,則有:

由(2)(3)式可知,只需求的校驗位h即可得到輸出碼字c。如下式:

標準規定,舍棄最前面的5個校驗位則為最后的輸出碼字,即每組LDPC編碼后輸出為7488比特碼字。為得校驗位,只需將循環子矩陣Gi,j的生成多項式存于ROM表中即可,這樣既能完全得到生成碼字,又可以大大節省存儲資源。

表2 DTMB信號幀中含LDPC編碼對應參數
DTMB標準規定,每個信號幀由幀頭和幀體兩部分組成,幀體部分包含36個符號的系統信息和3744個符號的數據信息。而3744個符號的數據信息就是由LDPC編碼后的輸出碼字經星座映射后得到。則可得每個信號幀所需LDPC編碼如表2。可知,對于高效的DTMB調制器,要求一幀數據處理中最多可包含3組LDPC碼的編碼輸出,這就需要編碼器滿足高速率要求。
如前文所述,DTMB標準中的LDPC碼為QCLDPC碼,且三種碼率下的循環子矩陣均為127階。基于生成矩陣來對編碼器進行設計,利用其子塊循環的特性,由SRAA結構可在低復雜度下完成LDPC編碼。
循環子矩陣的乘法運算可由SRAA結構(即循環移位寄存器累加和結構)來完成。其結構框圖如圖1:

圖1 SRAA結構圖
可知,SRAA結構由兩個同樣深度為127、寬度為1bit的循環移位寄存器Reg_G和移位寄存器Reg_C 組成。以 Gi,j為例,gi,j為其生成多項式,m 為輸入信息數據。在GF(2)域中,乘法與相與等效,而加法與異或等效。當第一個信息位m0輸入時,將gi,j從ROM中讀出并寫入Reg_G,與m0相與后再和Reg_C中數據異或后寫入Reg_C。這一過程可等效于下式:

當下一個信息位m1輸入時,Reg_G循環右移一位得到,再與m1相與后和Reg_C異或后寫入Reg_C。此時有:

同理,當第127個信息位m126運算完畢后,有:

這樣即完成了信息位與循環子矩陣的相乘運算。
如果隨后再輸入127比特信息位,Reg_G讀入Gi+1,j的生成多項式gi+1,j,再進行同上運算,則有:

當m為k×b的輸入信息位,則得到的Reg_C有:

可知,我們只需進行c次上式的運算,即完成了LDPC碼校驗位的計算。
考慮到DTMB調制器中LDPC碼前后模塊的設計,本文提出一種串行輸入串行輸出的基于串行流水SRAA結構的LDPC編碼器。
由表1中參數可知,編碼器在0.4碼率下需35個SRAA結構,在0.6碼率下需23個,0.8碼率下需11個,所以要滿足三種碼率則需要使用35個SRAA結構。SRAA結構之間按串行流水線形式連接,結構框圖如圖2。
以0.4碼率為例:信息位串行輸入,第1個信息位有效周期,數據存于d0寄存器中,SRAA0從數據總線中讀取 G0,0的生成多項式 g0,0,并與 d0中的數據進行運算;第2個信息位有效周期,d0中數據移位至d1,新輸入數據存入d0中,SRAA1從數據總線中讀取 G0,1的生成多項式 g0,1,并與 d1 中的數據運算,而SRAA0中的g0,0進行循環右移,并與d0中數據進行運算;同上述過程,當第3048個信息數據存于d34中并在SRAA34計算完畢就完成了一組LDPC編碼,在35個SRAA結構的Reg_C中儲存的便是校驗位,隨后依次將校驗位左移輸出。
0.6碼率與0.8碼率模式時,通過控制器控制,當輸入數據移位至d22或d10時,便不再后移。同樣的,后級的SRAA模塊也不再參與運算,滿足三種不同碼率的編碼運算。
采用Verilog HDL的RTL級代碼設計整個模塊,以下介紹各個模塊的設計:
(1)matrix_cell模塊
matrix_cell模塊主要完成循環子矩陣的運算,即SRAA結構模塊。結構如圖1,其中含1bit移位輸入,1bit移位輸出用于校驗位的串行移位輸出。如圖2中的 matrix_cell模塊陣列連接方式為,SRAA0的移位輸出接到整個編碼器的輸出,SRAA1的移位輸出與SRAA0的移位輸入相連接,相同的每個后級的SRAA結構的移位輸出與前級的移位輸入相連。

圖2 LDPC編碼器結構框圖
(2)matrix_g_rom模塊
此模塊為存儲各個循環子矩陣生成多項式的ROM模塊。由表1中參數可知,0.4碼率下生成矩陣共含24*35=840個循環子矩陣,0.6碼率下含36*23=828個,0.8碼率下含48*11=528個,三種碼率共含2196個。本設計采用統一的ROM設計結構,即三種碼率的生成多項式都存于同一塊ROM中。ROM深度為2196,寬度為127,地址0~839中儲存0.4碼率的生成多項式,地址840~1667中儲存0.6碼率生成多項式,而地址1668~2195中儲存0.8碼率生成多項式。這樣的設計大大簡化了ROM表設計結構,matrix_cell模塊陣列可使用同一數據總線,只需控制各matrix_cell模塊讀取生成多項式的使能即可,也最大程度地節約了存儲器空間。
(3)ldpcenc模塊
ldpcenc模塊為整個編碼器的頂層設計模塊。模塊框圖如圖3。
d:串行數據輸入端;
dvalid:數據有效輸入端;
clock:時鐘輸入端;
clrn:清零輸入端;
fec_level:碼率選擇輸入端;
load:碼率選擇加載輸入端;
q:串行數據輸出端;
qvalid:串行數據有效輸出端。
在此模塊中例化了matrix_cell模塊陣列和matrix_g_rom模塊。使用狀態機控制各模塊的使能及控制信號,為ROM提供讀取地址及各matrix_cell模塊生成多項式數據的讀取使能。并完成三種碼率之間的切換。

圖3 ldpcenc模塊框圖
本設計完成了DTMB標準下LDPC碼三種碼率的高速編碼。三種碼率的碼長都為7493,標準規定校驗位在前,信息位在后,并舍去最前面5位校驗位,實際輸出碼長為7488。為驗證方便,本設計仍將前5位的校驗位輸出,每一組LDPC編碼的時間為實際碼長7493加上流水線長度c,即0.4碼率需7493+35=7528個周期,0.6碼率需7493+23=7516個周期,0.8碼率需7493+11=7504個周期。
DTMB標準中規定系統基帶符號率為7.56Msps,高性能調制器采用4倍升采樣設計后的符號率為30.24Msps。標準中給出了64QAM、32QAM、16QAM、4QAM、4QAM-NR五種映射方式,可知系統中可能的最大比特率為7.56M*6=45.36Mbps。考慮到整個DTMB系統中復雜的交織與OFDM信號成幀,系統時鐘選用7.56M*16=120.96MHz或者7.56M*32=241.92MHz。為提高系統的高速高效性,采用單時鐘同步電路設計,本設計采用241.92MHz時鐘作為編碼器的工作時鐘進行時序約束,結果完全滿足系統的要求。
本設計選用 Altera公司 StratixIII系列EP3SL150款FPGA,在QuartusII 10.0環境下進行設計、綜合及布局布線,全編譯報告如圖4:

圖4 FPGA全編譯報告
可知,編碼器僅占用了278892bits的內部存儲器資源用作ROM,最大程度的節約了存儲器資源。編碼器可支持的最大時鐘為341.88MHz,如圖5:

圖5 最高時鐘報告
編碼器的高速設計遠超過于同類設計,并且更加節約存儲器資源,但這是以犧牲更多的ALUTs控制寄存器為代價的。
在QuestaSim6.5環境下對編碼器進行門級仿真,如圖6:

圖6 編碼器門級仿真圖
仿真結果滿足實際時序要求,將門級仿真結果數據讀入matlab中與直接矩陣運算所得碼字進行比對,結果完全一致,編碼器設計功能正確。
針對DTMB標準中LDPC碼的準循環特性,本文直接根據生成矩陣設計滿足三種碼率的高速編碼器。整個設計基于串行SRAA結構,通過流水線形式完成了串行輸入串行輸出的LDPC編碼。在StratixIII系列 FPGA上進行實現,共占用 8%的ALUT,5%的存儲器資源,并最高可支持341.88MHz時鐘。完全適合于高速的DTMB調制器中的應用。
[1]Gallager R G.Low-density Parity-check Codes[J].IRE Trans Inf Theory,1962,8(1):21-28.
[2]GB20600-2006.數字電視地面廣播傳輸系統幀結構、信道編碼和調制[Z].2006.
[3]楊抒文,彭克武,潘長勇.DTMB發射機LDPC編碼器的設計與優化[J].電視技術,2008,32(7):4-5.
[4]彭海云,徐建敏,王鵬,劉瑋.DTMB標準實時LDPC編碼器設計[J].電視技術,2010,34(1):33-36.
[5]XiangOuyang,ChangchengRuan,Lingxiang Zheng.Implementation of LDPC encoding to DTMB standard based on FPGA[J].IEEE Computer and Information Science,2011:235-238.
[6]Zongwang Li,Lei Chen,Lingqi Zeng.Efficient Encoding Of QuasiCyclic Low-Density Parity-Check Codes[J].IEEE Transactions on Communications,2006,53(11):71-81.
[7]楊知行.地面數字電視傳輸技術與系統[M].北京:人民郵電出版社,2009.
Design of High-speed Multi-rate LDPC Encoder to DTMB Standard
JIANG Lan-xiang,LIU Chang-yin
(Information Engineering School,Communication University of China,Beijing 100024,China)
According to multi-rate LDPC generation matrix distribution property of DTMB standard,a high-speed LDPC encoder based on pipelined Shift Register Adder Accumulator architecture is implemented in this paper,which is serial input and serial output.This design can complete three different rate encodings.The maximum clock frequency of the whole design which is implemented on FPGA chip EP3SL150 of Altera can be 341.88MHz.The architecture use simpler memory structure and is suitable for DTMB modulator.
QC-LDPC;DTMB;SRAA circuit;FPGA
TN949.197
A
1673-4793(2012)02-0029-05
2012-3-29
蔣藍祥(1988-),男(畬族),江西贛州人,中國傳媒大學碩士.E-mail:jlx_cuc@cuc.edu.cn
(責任編輯
:王 謙)