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