《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于FPGA的DSC高速譯碼器設計及實現
基于FPGA的DSC高速譯碼器設計及實現
2016年電子技術應用第9期
龍奎成,卿粼波,何小海,呂 順
四川大學 電子信息學院,四川 成都610064
摘要: 采用易于FPGA實現的歸一化最小和算法,通過選取合適的歸一化因子,將乘法轉化成移位和加法運算。在高斯白噪聲信道下,仿真該譯碼算法得出最佳的譯碼迭代次數,并結合Xilinx XC7VX485T資源確定量化位數。然后基于該算法和這3個參數設計了一種全新的、高速部分并行的DSC譯碼器。該譯碼器最大限度地實現了譯碼效率、譯碼復雜度、FPGA資源利用率之間的平衡,并在Xilinx XC7VX485T芯片上實現了該譯碼器,其吞吐率可達197 Mb/s。
中圖分類號: TP368
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2016.09.010
中文引用格式: 龍奎成,卿粼波,何小海,等. 基于FPGA的DSC高速譯碼器設計及實現[J].電子技術應用,2016,42(9):39-43.
英文引用格式: Long Kuicheng,Qing Linbo,He Xiaohai,et al. The design and implementation of DSC high speed decoder based on FPGA[J].Application of Electronic Technique,2016,42(9):39-43.
The design and implementation of DSC high speed decoder based on FPGA
Long Kuicheng,Qing Linbo,He Xiaohai,Lv Shun
School of Electronics and Information Engineering,Sichuan University,Chengdu 610064,China
Abstract: The algorithm is adopted and implemented on FPGA,whose name is Normalized min-sum algorithm, multiplication of the algorithm could be converted into shift and addition operation,through selecting the suitable normalized factor.The optimal decoding iteration number could be obtained, through simulating the algorithm in Additive White Gaussian Noise channel.Besides, the quantization bits could be determined through simulating and resource of Xilinx XC7VX485T. Then a DSC decoder which is new and high-speed and partly parallel could be designed based on the algorithm and three parameters.The decoder extremely realizes the balance of decoding efficiency,decoding complexity and the utilization of FPGA resource.And the decoder has been realized on Xilinx XC7VX485T chip,whose throughput rate could up to 197 Mb/s.
Key words : DSC decoder;FPGA;partly parallel;normalized min-sum algorithm

0 引言

  分布式信源編(DSC)解碼較傳統信道編解碼而言,因其編碼簡單、譯碼復雜成為近年來通信領域的研究熱點。DSC編碼端各信源獨立編碼,譯碼端根據信源的相關性聯合譯碼,從而降低了編碼的復雜度,而把整個系統的復雜度轉移到譯碼端,所以本文重點研究DSC譯碼器的設計。

  Turbo碼和LDPC碼是實現DSC譯碼器的兩種主要編碼。在DSC譯碼過程中,Turbo碼譯碼算法復雜、譯碼延時長且存在一定的不可檢測錯誤,而LDPC碼具有較大的靈活性、較低的差錯平底特性、譯碼速度快、具有高效的譯碼迭代算法[1],因此LDPC碼更適合于實現DSC譯碼器。

  LDPC碼分為規則LDPC碼和非規則LDPC碼,非規則LDPC碼的譯碼性能優于規則LDPC碼,是目前己知的最接近Shannon限的碼[2],所以本文采用非規則LDPC碼實現DSC譯碼器。

  本文設計的DSC譯碼器具有反饋信道,根據當前聯合譯碼的結果把譯碼判決信息反饋到編碼端,但這種方法對實時性要求很高[3],這是限制DSC譯碼器工程應用的一個重要因素。FPGA由于其強大的數據并行處理能力,能夠做到數據處理的實時性、高效性。所以,FPGA能夠解決DSC譯碼器反饋信道實時性的問題。

  Log-BP算法、BP-Based算法、歸一化最小和(NMS)算法是3種常用的DSC譯碼算法,這3種算法把一部分乘法用求和運算代替極大地減少了運算量。Log-BP算法修正了碼長較長時概率 BP 譯碼算法計算不穩定的問題,但是仍然存在乘法運算不利于 FPGA實現。BP-Based算法雖然降低了運算量,但BP-Based 算法相對于Log-BP算法收斂速度慢,譯碼性能也不如前者[4]。NMS算法和BP-Based算法的復雜度幾乎相同,若選取合適的歸一化因子η,能將乘法用加法和移位操作代替,并且其譯碼性能與概率BP算法幾乎一致[5]。因此,NMS算法在FPGA實現時被大量采用。

  基于非規則LDPC碼、FPGA、NMS譯碼算法3方面的優點,本文的主要工作是采用非規則LDPC碼、運用NMS譯碼算法設計了一種全新的、實時高速的DSC譯碼器并在Xilinx XC7VX485T上實現了該譯碼器。該譯碼器的吞吐率可達197 Mb/s,具有較好的工程應用價值。

1 DSC譯碼器實現的理論基礎

  1.1 DSC的基本原理

  假設Xi(i=1,2…N)是來自同一個系統的N個信源,這N個信源之間的相關性稱為邊信息,現對這N個信源進行獨立編碼,將編碼后的N路信息傳輸到同一個譯碼節點,并結合邊信息進行聯合譯碼。因此,DSC系統的編碼端極為簡單,其復雜度主要體現在譯碼端。

  1.2 基于非規則LDPC碼的DSC系統

  圖1是非規則LDPC碼實現DSC系統的框圖,其中Xi(i=1,2…N)表示來自同一個系統的N個信源,DSC編碼器和譯碼器根據非規則LDPC碼的校驗矩陣(H矩陣)而設計。

  從圖1中可知,非規則LDPC碼實現DSC編解碼系統的基本原理:信源Xi經過DSC編碼器后輸出信息位和校驗信息,與傳統譯碼相比,DSC編解碼系統丟棄信息位并且經高斯白噪聲(AWGN)信道每次只傳輸少量的校驗位到DSC譯碼器,如此可以實現碼率自適應并提高壓縮效率。同時邊信息經過虛擬信道傳輸到DSC譯碼器進行聯合譯碼,如果此時能夠正確譯碼就輸出譯碼信息X’,否則進行反饋重傳校驗位繼續譯碼,直至正確譯碼輸出。

圖像 001.png

  1.3 LDPC譯碼算法

  NMS譯碼算法具體闡述如下:

  設α2為AWGN信道的方差,yi表示接收到的信息,L(ci)為信道初始化信息,L(qij)為變量節點接收來自校驗節點的信息,L(rji)為校驗節點接收來自變量節點的信息,L(Qi)是變量節點接收到的全部信息,C(i)表示連接變量節點i的所有校驗節點,C(i)\j表示連接變量節點i中除j外的全部校驗節點,C(j)\i表示連接校驗節點j中除i外的全部變量節點,η表示歸一化因子。

  (1)初始化:

   QQ圖片20161109145923.png

  (2)更新校驗節點:

    QQ圖片20161109145926.png

  (3)更新變量節點:

  QQ圖片20161109145930.png

  (4)更新L(Qi):

  QQ圖片20161109145937.png

  (5)最后,對任意i,有:

  QQ圖片20161109145943.png

  若變量節點收集到的信息值L(Qi)<0,對任意i,判別譯出的碼字QQ圖片20161109150156.png。如果H^T c^^=0或者譯碼的迭代次數等于預設的最大值,c^^也作為最終譯碼輸出,并強制終止譯碼計算;否則轉至步驟(2)繼續譯碼計算。

  從式(2)中可以看出NMS算法仍然存在少量的乘法運算,若選取合理的η,則能在不損失譯碼性能的情況下,將乘法用加法和移位操作代替[5],使譯碼的計算量最少、譯碼的復雜度最小、FPGA消耗的資源最少。

  η是一個小于1的正常數,通常在FPGA上實現LDPC譯碼算法時選取η為0.75,此時的NMS算法譯碼性能最佳[6]。

2 DSC譯碼器設計

  文獻[7]對非規則(2 048,1 024)、碼率1/2的H矩陣的研究表明該H矩陣在譯碼過程中能夠實現相當低的誤碼率。因此本文選用此類型度分布為(λ(x),ρ(x)),碼率為1/2的非規則H矩陣,其中λ(x)=0.285 6x+0.257 5x2+0.456 7 x7,ρ(x)=0.003 4x5+0.996 6x6。

  本文設計的DSC譯碼器分為輸入模塊、緩沖模塊、節點信息更新模塊、判決模塊、控制模塊、反饋模塊、輸出模塊。圖2是DSC譯碼器的邏輯結構圖,該譯碼器主要模塊的功能如下:

圖像 002.png

  (1)將量化好的邊信息、校驗位信息存入FPGA Block RAM模塊中。

  (2)緩沖模塊中兩個完全相同的RAM塊用于乒乓操作,周期性地切換數據選擇器可以提高數據傳輸的速率、效率,亦能使緩沖模塊與節點更新模塊的速率相匹配。

  (3)控制模塊用于控制量化信息存儲器和緩沖模塊的工作時序,保證這兩個模塊有序工作,保證數據連續。

  (4)節點信息更新模塊控制變量和校驗兩類節點的信息更新,并將判決信息輸出給判決模塊。

  (5)反饋模塊把判決結果實時反饋到數據輸出選擇器端,通知輸出選擇器繼續發送校驗信息。

  該譯碼器的設計重點體現在節點更新模塊、判決模塊和反饋模塊。圖3是這3個模塊的工作流程。

圖像 003.png

  2.1 量化位數及迭代次數設計

  量化必然會損失信息,所以量化位數的設計對信息重建至關重要。量化位數越多,則信息損失越少,譯碼正確性越高,但計算量會增加、消耗的FPGA資源也越多;若量化位數太少,丟失的信息過多,雖然計算量減少、消耗FPGA資源減少,但可能造成譯碼錯誤。

  文獻[8-9]中提出(q,f)均勻量化方案,其中量化位數q=8,因量化精度對譯碼性能影響很小,故取f=2足矣。鑒于Xilinx XC7VX485T的邏輯資源相對豐富,本文設計了(8,2)、(9,2)、(10,2)、(11,2)4種量化方案,這4種量化方案經ISE布局布線后消耗FPGA中一種重要資源指標Slice Registers的情況如表1所示。

圖像 010.png

  根據面積換“速度”的思想,提高FPGA資源利用率的同時增加譯碼的準確性。因此,根據表1可知(10,2)均勻量化方案最適合本文DSC譯碼量化要求。

  另一個重要的參數是譯碼迭代次數。通常碼長、碼率相同時,不同交叉概率對應的譯碼迭代次數不同。通過仿真AWGN信道下碼長2 048、碼率1/2、量化位數10 bits的信號,得出交叉概率與譯碼迭代次數之間的關系,如圖4所示。

  圖4表明,交叉概率變大時,譯碼迭代次數隨之增加。當交叉概率超過0.2后,譯碼迭代次數不再改變。所以本文設計譯碼迭代次數的最大值為12。

圖像 004.png

  2.2 變量更新單元設計

  從式(3)和式(4)可知,變量節點的更新主要是加法運算。初始信息與校驗信息送入VNU更新變量節點并計算出各碼位判決控制信息。其原理框圖如圖5所示,由于H矩陣非規則,所以設計了兩種校驗信息組合方式。

圖像 006.png

  其中,data_ori、data_ori_last表示兩種組合狀態的初始信息,c_mem1、c_mem2、c_mem3、c_mem8表示分別與度為1、2、3、8的變量節點相連的校驗節點信息,v_mem表示更新后的變量節點信息,judge_temp、judge_temp_last表示兩種組合狀態的中間判決信息,check表示輸入判決模塊的最終判決信息。

  VNU計算完成后,將judge_temp、judge_temp_last進行異或運算得到判決結果check,如果判斷結果是0,則表示譯碼正確,將譯碼結果送至串/并轉換模塊輸出,否則表示譯碼錯誤。

  2.3 校驗更新單元設計

  根據式(2)可知,更新校驗節點信息需要求絕對值、求符號、排序找出最小值、移位和加運算這4個步驟。在式(2)中,雖然選擇合適的η可以將乘法全部轉化成移位和加法運算,但是大量的移位操作會占用過多的時鐘周期,因此在CNU模塊的移位/加運算中采用“流水移位/加運算”的方式,這樣不但提高了時鐘利用率、運算效率,也降低了FPGA資源的消耗。

  CNU的原理框圖如圖6所示,由于H矩陣非規則,所以設計了兩種變量信息組合方式。

圖像 007.png

  其中,v_mem6、v_mem7分別表示與度為6、7的校驗節點相連的變量節點信息, c_mem表示更新后的校驗節點信息。

3 DSC譯碼器設計結果分析

  3.1 DSC譯碼器結構分析

  通常情況下,串行譯碼的譯碼效率最低,全并行譯碼器的譯碼效率最高,但是FPGA有限的邏輯資源限制了這種方法的實用性。為了平衡FPGA資源的利用率和譯碼器的譯碼效率,本文采用部分并行的思想設計譯碼器。

  由于本文的H矩陣是非規則的,不同度的節點組合在一起消耗的FPGA資源不一樣。綜合考慮運算量、FPGA資源、占用時鐘周期等因素,設計VNU中組合一、組合二的結構如表2、表3所示。

圖像 011.png

圖像 012.png

  從表2、表3中可以看出組合一的并行度是77,組合二的并行度是46。所以VNU組合一經過26個狀態以及VNU組合二經過1個狀態可以完全更新變量節點。

  設計CNU中組合一、組合二的結構如表4、表5所示。從表4、表5中可以看出組合一的并行度是36,組合二的并行度是38,所以CNU組合一經過1個狀態以及CNU組合二經過26個狀態可以完全更新校驗節點。

圖像 013.png

圖像 014.png

  3.2 DSC譯碼器時序圖

  為了驗證該DSC譯碼器設計的可行性,在MATLAB中隨機產生一段二進制信息序列,先進行LDPC編碼,再進行AWGN信道加噪和BPSK調制,得到初始化信息,然后作10 bits均勻量化,將量化結果存入Block RAM中作為譯碼器輸入。

  該譯碼器正確譯碼一次的主要信號時序圖如圖7所示(為了清晰地顯示信號,故將圖中的信號名重寫)。信號的含義如下:clk表示譯碼器的全局時鐘,rst表示譯碼器的全局復位,out_flag表示譯碼輸出標志,out_en表示譯碼輸出使能,iter_counter表示譯碼迭代次數,check表示譯碼判決信號,data_out表示譯碼輸出。圖7(b)、圖7(c)是圖7(a)中a、b局部放大后的圖。

圖像 008.png

  從圖7(b)可以看出該譯碼器經過10次循環迭代后,判決信息輸出為0,說明譯碼器譯碼正確。對比MATLAB產生的二進制信息序列,表明譯碼輸出結果與產生的二進制信息序列完全一致,至此證明了該譯碼器設計是正確的。

  3.3 DSC系統壓縮性能

  一般而言,信源的交叉概率越大,正確譯碼所需的校驗位個數越多。為驗證本文設計的DSC系統的壓縮性能,通過改變信源的交叉概率測試正確譯碼需要的校驗位個數,并與MATLAB中設計的DSC系統對比。本文設計的DSC系統與MATLAB中設計的DSC系統壓縮性能對比如圖8所示。

圖像 009.png

  從圖8中可知,在FPGA和MATLAB實現的DSC系統中,正確譯碼所需的校驗位個數都隨交叉概率增加而增加。當交叉概率相同時,本文設計實現的DSC系統比MATLAB仿真的DSC系統需要更多的校驗位才能正確譯碼,主要原因是受FPGA資源限制導致量化位數不夠并且FPGA在布局布線時有延遲。

  該DSC高速譯碼器在Xilinx XC7VX485T上實現,ISE完成布局布線消耗的FPGA資源如表6所示。

圖像 015.png

  經過時序約束,譯碼器最大工作頻率f可達195.048 MHz,譯出一個碼字需要169個時鐘。根據吞吐率計算公式N×f/(k×T),其中N是碼長,f是時鐘工作頻率,k是最大譯碼迭代次數,T是譯出一個碼字的周期,則譯碼吞吐率可達197 Mb/s。

4 結束語

  本文針對當前DSC譯碼器譯碼實時性差、譯碼效率低等因素設計了一種全新的、高速部分并行的DSC譯碼器,并在Xilinx XC7VX485T芯片上實現,在設計時最大限度平衡了FPGA資源、譯碼復雜度和譯碼效率。該DSC譯碼器的設計具有一般性、便于移植等特點,其高達197 Mb/s的吞吐率,使該DSC譯碼器具有較強的工程實用性。

  參考文獻

  [1] 楊春玲,夏洪濤,張興紹.基于LDPC的碼率自適應分布式視頻編碼[J].中國圖象圖形學報,2010,15(12):1707-1713.

  [2] CHUNG S Y,FORNEY G D,RICHARDSON T J,et al.On the design of low-density parity-check codes with in 0.004 5 dB of the Shannon limit[J].Communications Letters,IEEE,2001,5(2):58-60.

  [3] 薛國棟.分布式信源編碼理論與應用研究[D].北京:北京郵電大學,2009.

  [4] WANG J,YANG S H.A novel log-BP decoding algorithm for LDPC codes[C].Software Engineering,2009.WCSE'09.WRI World Congress on.IEEE,2009,1:305-307.

  [5] JIANG N,PENG K,SONG J,et al.High-throughput QCLDPC decoders[J].Broadcasting,IEEE Transactions on,2009,55(2):251-259.

  [6] 姜博宇,姚遠程,秦明偉.硬件可實現的LDPC譯碼算法研究[J].現代電子技術,2014,37(17):5-8.

  [7] COLE C.Error floor analysis for an ensemble of easily implementable irregular(2048,1024) LDPC codes[C].Military Communications Conference,2008.MILCOM 2008.IEEE.IEEE,2008:1-5.

  [8] 劉文燾,李強,李少謙.π—旋轉LDPC碼譯碼算法及其量化研究[J].信息技術,2006,29(11):38-40.

  [9] 吳斌,楊波,葉明.LDPC硬件實現中的數據量化位數選擇及其性能仿真[J].信息通信,2012(2):24-26.

 

 

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 性生大片一级毛片免费观看 | 在线观看91精品国产性色 | 大学生高清一级毛片免费 | 日韩国产三级 | 欧美最猛性xxxx69交 | 黑丝网站| 国产成人拍精品视频网 | 大又大又黄又爽免费毛片 | 动漫精品一级毛片动漫 | 免费视频日韩 | 亚欧乱色一区二区三区 | 欧美中文字幕一区二区三区 | 中文字幕av一区二区三区 | 国产日韩欧美在线 | 成年网站免费 | 中文字幕欧美日韩在线不卡 | 一个人的www免费视频 | 欧美一级xxxx俄罗斯一级 | 91精品欧美激情在线播放 | 国产欧美亚洲精品第二区首页 | 久久国产高清波多野结衣 | 成人a毛片免费观看网站 | 亚洲一区二区高清 | 人人澡天天澡夜夜澡 | 99re在线视频 | 国产99re在线观看只有精品 | 日日干天天射 | 亚洲人成一区二区不卡 | 成人欧美视频在线观看 | a4yy私人毛片 | 亚洲欧美在线视频观看 | 亚洲va精品中文字幕 | 久久国产香蕉视频 | 五月婷婷久 | 天堂va欧美ⅴa亚洲va一国产 | 午夜影视免费观看 | 国产性做久久久久久 | 日皮视频免费看 | 国产成人18黄网站在线观看网站 | 欧美日韩综合一区 | 久久精品人人爽人人爽 |