任 建, 于皓哲, 辛?xí)詫帲?劉思源
(沈陽工業(yè)大學(xué) 信息科學(xué)與工程學(xué)院, 沈陽 110870)
時分復(fù)用系統(tǒng)主要用于視頻會議、光纖傳輸、衛(wèi)星電視等長距離高速傳輸線路.由于傳輸線較少,需要使用時分復(fù)用來解決線路擁擠的問題,同時長距離傳輸需要編解碼算法保證數(shù)據(jù)正確性.低密度奇偶校驗碼(LDPC)算法已廣泛應(yīng)用于信道編碼領(lǐng)域,在引入伽羅華域后,可以降低數(shù)據(jù)重復(fù)率從而進一步提高糾錯效率.近年來國內(nèi)外針對LDPC算法的研究主要集中在新算法開發(fā)和新硬件結(jié)構(gòu)開發(fā)兩個方面[1-2].
在新算法開發(fā)方面,Mateusz等[3]設(shè)計了一個正向糾錯(FEC)編碼系統(tǒng);劉華軍[4]提出了一種簡單混合投影策略的 ADMM 譯碼算法,極大提升了譯碼性能和譯碼效率;鄧熠[5]描寫了基于高斯消去,基于上三角、下三角分解和基于近似下三角的編碼方法,在譯碼方面提出了改進的標(biāo)準(zhǔn)化置信傳播譯碼算法;Wang 等[6]進行了非二進制LDPC代碼編碼與FPGA實現(xiàn)研究.研究主要圍繞硬判決和軟判決算法進行創(chuàng)新,硬判決算法糾錯能力較低,軟判決算法又過于占用資源,因此本設(shè)計使用了增強型硬判決算法,保證足夠多的糾錯位數(shù)的同時也限制了硬件面積,對于單次傳輸?shù)?12 bit數(shù)據(jù),最高可糾錯7位.
在新硬件結(jié)構(gòu)開發(fā)方面,Cheng 等[7]提出了地址解碼器的平行循環(huán)移位結(jié)構(gòu);王夢[8]設(shè)計了一種流水線結(jié)構(gòu)的LDPC-CC譯碼器;楊濤宇[9]從多碼長和多碼率方面研究了8種模式的LDPC多模式兼容結(jié)構(gòu);Yann 等[10]設(shè)計了一種基于模型的LDPC譯碼器.優(yōu)化硬件結(jié)構(gòu)通常是為了提高數(shù)據(jù)吞吐率,參考文獻吞吐率基本在600 Mb/s以內(nèi),碼率通常為0.5;本設(shè)計的碼率高達0.812 5,吞吐率可達731.4 Mb/s.最后本文以文獻[11]至文獻[14]的設(shè)計參數(shù)作為對比以證明本設(shè)計的優(yōu)勢.
伽羅華域(GF)定義了2n個符號的運算規(guī)則,特征是任何兩個符號做加法和乘法運算后的結(jié)果仍然是這個符號集合中的符號,沒有進位.GF(2n)域的加法為對應(yīng)二進制表示的按位異或運算,乘除法通過查表得到.乘法表的推導(dǎo)方式為:先按多項式相乘,再用本元多項式解決溢出問題.
GF(16)定義了16個抽象符號,按二進制對應(yīng)0000~1111.GF(16)域的本原多項式為
P(x)=x4+x+1
(1)
式中,x為伽羅華域中的元素,在GF(16)域中可以代表0~15共16個數(shù)據(jù).
使用伽羅華域可以降低數(shù)據(jù)重復(fù)率,減小四環(huán)出現(xiàn)概率,使生成的校驗矩陣無四環(huán).本次設(shè)計的LDPC算法相關(guān)參數(shù)如表1所示.在本次設(shè)計中,為了平衡時分復(fù)用系統(tǒng)的并行傳輸和串行傳輸效率,同時保證電路具有較高的工作頻率和吞吐率,最終確定了512 bit的碼長.
將128 bit×24 bit規(guī)模的矩陣分為16×3個循環(huán)子矩陣,每個子矩陣為8 bit×8 bit的對角陣,由此確定行重為16,列重為3.保持右上角的子矩陣不動,同時隨機循環(huán)右移其他子矩陣,最終構(gòu)成無四環(huán)的近似下三角矩陣.編碼矩陣構(gòu)造如圖1所示.
將圖1參數(shù)化后可得到圖2所示的下三角矩陣,矩陣H中n為矩陣H的列數(shù),m為矩陣H的行數(shù),g為可變參數(shù).A、B、C、D、E分別是(m-g)(n-m)、(m-g)g、g(n-m)、gg、g(m-g)階矩陣,T是(m-g)(m-g)階下三角矩陣,即T的對角線上是非零GF(16)符號,對角線以外的元素都為0,進而可以進行LDPC編碼.
表1 LDPC算法相關(guān)參數(shù)Tab.1 Related parameters of LDPC algorithm
圖1 編碼矩陣構(gòu)造Fig.1 Construction of coding matrix
圖2 下三角矩陣Fig.2 Lower triangular matrix
LDPC編碼由以下三部分組成
C=[s,p1,p2]
(2)
式中:s為信息位;p1、p2為校驗位.令
φ=D-ET-1B
(3)
由CHT=0得到校驗位公式為
(4)
將式(4)中的常量提取后,可以得到
(5)
式中,X、L、M為由軟件生成的常數(shù)矩陣,其表達式分別為
X=(D-ET-1B)(ET-1A-C)
(6)
L=T-1A
(7)
M=T-1B
(8)
編碼頂層架構(gòu)如圖3所示,藍色線為數(shù)據(jù)通路,黑色線為控制信號.code_cntrl模塊、code_p1模塊以及code_p2模塊為時序邏輯,分別負責(zé)產(chǎn)生編碼過程的控制信號,進行p1和p2矩陣的編碼.其他4個模塊為組合邏輯,其中3個rom模塊負責(zé)存儲X、L、M矩陣的參數(shù),code_multi模塊負責(zé)將輸入數(shù)據(jù)與對應(yīng)矩陣參數(shù)進行GF(16)乘法.采用流水線設(shè)計,一次可以處理32 bit數(shù)據(jù),每個周期進行累加,在最后一個數(shù)據(jù)傳輸完畢后一個周期即可完成編碼并輸出,具有較高的處理效率.
圖3 編碼模塊頂層架構(gòu)Fig.3 Top-level architecture of encoding module
解碼頂層架構(gòu)如圖4所示,采用流水線架構(gòu),decode_vn模塊處理變量節(jié)點數(shù)據(jù),decode_cn處理校驗節(jié)點數(shù)據(jù),decode_check模塊校驗輸入數(shù)據(jù),decode_check_ite模塊校驗迭代數(shù)據(jù),以上模塊由decode_cntrl模塊產(chǎn)生控制信號進行流水線工作,每周期處理32 bit數(shù)據(jù).其他模塊用于存儲GF(16)乘除法的查找表和用于迭代的概率表,為組合邏輯.
解碼模塊的核心是變量節(jié)點.將增強型硬判決算法生成的兩種變量節(jié)點數(shù)據(jù)分別進行迭代和校驗,相較于傳統(tǒng)硬判決算法的優(yōu)勢在于將校驗節(jié)點、后驗信息以及輸入數(shù)據(jù)都作為參數(shù)參與運算,用4個校驗節(jié)點的數(shù)值生成校驗用變量節(jié)點數(shù)值,而校驗用變量節(jié)點數(shù)值則是從中去除對應(yīng)的校驗節(jié)點計算得來.既限制了硬件資源的消耗,又提高了糾錯效率.
變量節(jié)點數(shù)據(jù)處理表達式為
(9)
(10)
(11)
式中:Rm,n為校驗節(jié)點數(shù)據(jù);k為迭代次數(shù);m和n分別為校驗節(jié)點的行列位置;a為來自校驗節(jié)點或輸入數(shù)據(jù)的數(shù)值;δ為a中的非零值.
校驗節(jié)點的數(shù)據(jù)處理過程為:初始輸入變量值先與校驗矩陣H中對應(yīng)的符號做GF(16)域下的乘法運算,再經(jīng)過前向后向算法依次得到校驗節(jié)點回發(fā)給變量節(jié)點的數(shù)據(jù),最后做GF(16)域下的除法運算,產(chǎn)生從校驗節(jié)點到變量節(jié)點的消息,送到變量節(jié)點運算器做信息更新.校驗節(jié)點數(shù)據(jù)處理表達式為
(12)
(13)
圖4 解碼模塊頂層架構(gòu)Fig.4 Top-level architecture of decoding module
式中:N為碼長;f為時鐘頻率;i為最大迭代次數(shù);t為單次迭代過程所需要的時鐘周期數(shù).在本次設(shè)計中,碼長為512 bit,時鐘頻率為400 MHz,最大迭代次數(shù)為10次,單次迭代所需時鐘周期數(shù)為28,由此計算出的吞吐率約為731.4 Mb/s.
本次設(shè)計的動態(tài)低延遲時分復(fù)用系統(tǒng)可以支持最高同時傳輸640個通道數(shù)據(jù),其中每個通道數(shù)據(jù)位寬為16 bit,共10 240 bit.發(fā)送端和接收端各有3級,每級模塊之間通過異步FIFO連接.
發(fā)送端由8個通道采集模塊和1個匯總模塊組成.其中每個通道采集模塊連接最多10個數(shù)據(jù)采集模塊.采集到的通道數(shù)據(jù)先在數(shù)據(jù)前端加上6位通道號后通過異步FIFO傳給匯總模塊.匯總模塊將收到的數(shù)據(jù)前端再加上4位通道采集模塊編號后,送入并行轉(zhuǎn)串行模塊和編碼模塊進行數(shù)據(jù)編碼和串行發(fā)送.編碼的流水線結(jié)構(gòu)可以保證數(shù)據(jù)位發(fā)送完后立刻發(fā)送校驗位.為了體現(xiàn)LDPC算法的優(yōu)勢,需要一次傳輸16個通道數(shù)據(jù)并進行編碼.
接收端由1個數(shù)據(jù)整合模塊和8個數(shù)據(jù)發(fā)送模塊構(gòu)成.開始接到數(shù)據(jù)后會先通過串行轉(zhuǎn)并行模塊將1位數(shù)據(jù)組成GF(16)的格式即4位數(shù)據(jù)送入解碼模塊進行解碼,如果數(shù)據(jù)校驗成功可立即讀出數(shù)據(jù).根據(jù)數(shù)據(jù)的通道采集模塊編號將數(shù)據(jù)存入對應(yīng)的異步FIFO,進入對應(yīng)的數(shù)據(jù)發(fā)送模塊后通過通道標(biāo)號將數(shù)據(jù)傳給對應(yīng)的通道.
設(shè)計基于Xilinx的Kintex Ultra系列FPGA,型號為xcku115-flvb2104-3-e,介紹主要模塊的仿真以及最大數(shù)據(jù)傳輸?shù)难訒r.
圖5、6為數(shù)據(jù)傳輸時間仿真結(jié)果,仿真方式為按通道號依次發(fā)送數(shù)據(jù),測量從第一個發(fā)送端通道發(fā)出數(shù)據(jù)到最后一個接收端通道接收數(shù)據(jù)之間的時間.本文時分復(fù)用系統(tǒng)最高可支持8×8×10個16 bit通道的數(shù)據(jù)傳輸,因此單次最高可傳輸10 240 bit數(shù)據(jù),從仿真結(jié)果可以看出單輪發(fā)送10 240 bit數(shù)據(jù)大概需要43.8 ns.
時序約束結(jié)果如圖7所示,證明該設(shè)計可運行在400 MHz的頻率下.圖8為LDPC算法糾錯效果.通過使用Matlab編寫與硬件設(shè)計等價的代碼測試程序驗證LDPC解碼算法糾錯能力,對編碼后的數(shù)據(jù)進行隨機出錯后再進行解碼糾錯檢驗.由圖8可見,解碼算法可穩(wěn)定糾錯7位.
對于編解碼算法的設(shè)計要求通常是在保證較高吞吐率的情況下兼具一定的糾錯效率,同時可以工作在較高頻率以適應(yīng)高頻系統(tǒng).
圖5 數(shù)據(jù)傳輸開始Fig.5 Beginning of data transmission
圖6 數(shù)據(jù)傳輸結(jié)束Fig.6 Ending of data transmission
圖7 時序約束結(jié)果Fig.7 Timing constraint results
圖8 LDPC算法糾錯效果Fig.8 Error correction results by LDPC algorithm
與其他參考文獻的設(shè)計指標(biāo)進行對比結(jié)果如表2所示,主要對比參數(shù)為碼長、碼率、工作頻率和吞吐率.
表2 本設(shè)計與其他文獻設(shè)計的性能比較Tab.2 Performance comparison of design by this work with other literatures
碼長一般由系統(tǒng)對數(shù)據(jù)的需求決定,與碼率共同影響糾錯效率.通常為了提高糾錯效率會降低碼率,但較低碼率代表用于校驗的位數(shù)更多,單次傳輸?shù)挠行?shù)據(jù)更少,可能會造成吞吐率的降低.碼長、工作頻率與碼率共同影響吞吐率,較高吞吐率將會減輕編解碼模塊對系統(tǒng)的負擔(dān).
文獻[11]實現(xiàn)了基于最小和算法的MIMAX標(biāo)準(zhǔn)(2 304,1 152)QC-LDPC譯碼器,側(cè)重高吞吐率,但是碼率和工作頻率較低;文獻[12]采用了分層譯碼算法;文獻[13]設(shè)計了一種低復(fù)雜度分層全并行結(jié)構(gòu)的譯碼器;文獻[14]采用了與文獻[11]同樣的編碼標(biāo)準(zhǔn)在FPGA上實現(xiàn)算法,文獻[12]~[14]均側(cè)重于減少資源占用,但碼率和吞吐率不理想.本文設(shè)計的LDPC解碼模塊的吞吐率基本高于其他文獻,并且在支持更高的時鐘頻率同時保持了極高的碼率.
本文設(shè)計的時分復(fù)用系統(tǒng)具有低延時、高數(shù)據(jù)傳輸量、高穩(wěn)定性等優(yōu)點.采用了基于伽羅華域的LDPC編解碼算法,該算法具有高碼率、高吞吐率等優(yōu)勢,其中碼率0.812 5,吞吐率731.4 Mb/s,在保證數(shù)據(jù)高速傳輸?shù)耐瑫r,以流水線結(jié)構(gòu)對數(shù)據(jù)進行判斷糾錯,對于單次處理的512位數(shù)據(jù),可穩(wěn)定糾錯7位.