薛偉宏,宋春林,蘭利寶,劉成強
(1.同濟大學電子與信息工程學院,上海200092;2.中國航天科工四院紅峰控制公司,湖北孝感432000)
DVB-T中Viterbi譯碼器的設計及FPGA實現*
薛偉宏1,宋春林1,蘭利寶2,劉成強2
(1.同濟大學電子與信息工程學院,上海200092;2.中國航天科工四院紅峰控制公司,湖北孝感432000)
Viterbi作為一種最大似然譯碼算法廣泛應用在數字地面視頻廣播中,但由于其較高算法復雜程度,對實現高速低功耗時延小且邏輯結構簡單的譯碼器帶來了挑戰。首先為了實現高速的Viterbi譯碼器,ACSU采用全并行結構,度量值的溢出控制采用取模歸一化方法,并簡化比較器。其次為了實現低功耗時延小且控制邏輯簡單的Viterbi譯碼器,SMU采用改進的前向追溯結構,只用一組單口的RAM實現譯碼輸出。該譯碼器在Xilinx Virtex6上實現并驗證通過,并具有較好的譯碼性能。
數字地面視頻廣播 Viterbi 全并行 前向追溯結構
由于地面情況的復雜性,無線信道的多徑干擾現象非常明顯,這直接導致了地面電視廣播受多徑干擾影響嚴重。目前能克服多徑干擾的數字地面標準有ATSC,DVB-T,ISDB-T和DTMB。DVB-T中引入了OFDM處理方式,信號經過OFDM的處理后,接著采用QPSK或QAM的調制方式,最后再通過上變頻發送到發射天線。這種方案,在信道編碼上采用以RS為外碼,卷積碼為內碼的級聯碼實現。OFDM系統的接收端內碼解碼模塊采用應用非常廣泛的Viterbi譯碼器,它是整個系統的核心部件,也是最復雜和耗費資源的模塊。
以往關于Viterbi譯碼器大多都從速度、功耗方面進行研究,為追求譯碼速度,文獻[1]針對Radix-2,Radix-4和改進的Radix-4加比選單元進行研究。文獻[2]采用流水線的加比選結構。文獻[3]使用寄存器交換的方式實現高速的譯碼器但功耗較大。以上這些研究都是為了提高譯碼速度但資源消耗大,功耗方面沒有優勢。為了使譯碼器擁有較低的功耗,文獻[4]在幸存路徑單元使用了回溯方法但用了4塊存儲空間,邏輯復雜。文獻[5]雖然應用了前向追溯的方法但是同時又采用了Radix-4結構使譯碼器變得復雜。文獻[6]系統的介紹了(2, 1,7)譯碼器各個功能模塊,但未對高速和低功耗進行深入的研究。
從上述的文獻可以看出,多數只針對速度或者只針對功耗進行專門的研究,因此在DVB-T系統中,針對能同時實現高速、低功耗且擁有較小時延、簡單邏輯結構的(2,1,7)Viterbi譯碼器的研究是十分必要的。文中針對這方面進行了系統的研究,采用全并行加比選單元Radix-2結構實現高速的Viterbi譯碼器,同時在幸存路徑管理單元采用改進的前向追溯結構,只用一組單口的RAM實現低功耗且控制邏輯簡單、較小延時的Viterbi譯碼器。
DVB-T標準的信道傳輸核心技術是OFDM調制技術,即正交頻分復用技術,該技術是適用于寬帶系統的多載波數字調制技術,它能克服惡劣的地面信道性能,有效的傳輸碼流。采用OFDM調制技術的DVB-T在信道編碼上采用以RS為外碼,卷積碼為內碼的級聯碼實現。Viterbi譯碼是卷積碼的一種最大似然譯碼算法。圖1為DVB-T發射機系統功能框圖。

圖1 DVB-T發射機系統功能框Fig.1 DVB-T transmitter system functional block
Viterbi譯碼器結構框圖如圖2所示,包含3個基本單元:分支度量單元(BMU),加比選單元(ACSU),幸存路徑管理單元(SMU)。

圖2 Viterbi譯碼器結構框Fig.2 Viterbi decoder structure
2.1 分支度量單元的設計
分支度量單元的功能是根據解映射器輸出的軟信息計算所有可能碼字的分支度量,作為加比選(ACS)單元的輸入。Viterbi譯碼器的軟判決比硬判決能得到額外的2~3 dB增益,因此文中設計的Viterbi譯碼器使用3比特8電平量化的軟判決進行譯碼。
將各狀態分支度量0和1量化成0和7,使得計算分支度量值變得相對簡單。在本設計中,分支度量計算模塊并不計算所有狀態的分支度量值,而是只計算4個可能的分支度量值bm_00,bm_01, bm_10,bm_11并存儲到寄存器中,以備不同狀態的加比選模塊選用,大大減少了計算量和FPGA的資源消耗。通過分析又可知,7-x與x按位取反相等,則可得簡化后的分支度量,由于每個無符號數的最大值為7,所以最大分支度量值是14,可以用4比特的數值來表示。若接收碼為xy,則分支度量如表1所示。

表1 分支度量Table 1 Branch metric
2.2 加比選單元的設計
加比選運算就是在每一時刻,把進入同一狀態的各分支度量值和其相關的累積路徑值相加,比較這些結果,選擇其中最小的一個作為該狀態的幸存路徑。因此,加比選模塊由加法器、比較器和選擇器組成。實現方法有:全并行、串行和串并結合。全并行是需有相同狀態數的ACS單元在一個時間周期內完成全部狀態的路徑度量值的更新。串行是在一個周期內只完成一個ACS單元更新。串并結合是介于兩者之間。為了提高速度采用全并行結構。譯碼器中Radix-2結構是每個時鐘處理一級網絡圖轉移信息,而Radix-4結構是每個時鐘處理兩級網絡圖轉移信息,如文獻[7]采用Radix-4結構提高速度,但其結構較復雜,資源消耗大且隨約束長度成指數增加,因此文中采用的是全并行的Radix-2加比選架構,一次可以完成(2,1,7)卷積碼全部64個狀態的更新。
加比選模塊通過迭代累加更新路徑累積值。當路徑累積值超出了有限位長所能表示的最大值時,就會發生溢出錯誤。因此,就必須要對度量值進行歸一化運算,以防止在累加過程中發生數據溢出.解決溢出問題的傳統的歸一化技術有以下幾種:復位歸一化;減最小路徑累積值歸一化;定點歸一化;取模歸一化[8]。文中歸一化算法采用是取模歸一化運算。

其中PMa、PMb是任意兩個狀態的路徑累積值,K是卷積碼的約束長度,δmax是分支度量值的最大值。
分支度量值的最大值為14。根據式(1)設置了任意兩個路徑度量之間的最大距離,其理論值為84,說明在硬件設計過程中,路徑度量的最小存儲寬度不能小于7比特.考慮硬件實現的復雜度和Viterbi譯碼性能,文中將該寬度設置為8 bit。假設

取模歸一化法不需要額外溢出的硬件開銷,只需把加比選模塊中的比較器換成減法器并適當加大路徑累積值位長即可消除溢出的影響。文中將取模歸一化方法簡化,比較器無需使用減法器。硬件結構如圖3所示,其中D17,D27分別表示D1,D2的符號位,D16…0,D26…0則表示去掉符號位之后的數值部分。

圖3 加比選單元比較器Fig.3 ACS unit comparator
2.3 幸存路徑管理單元的設計
幸存路徑管理單元負責在網格圖中搜索最佳路徑并以正常的順序輸出相應的譯碼數據,傳統的方法主要有寄存器交換法和回溯法。寄存器交換法會產生的大量電平跳變非常不利于Viterbi譯碼器的低功耗設計。而回溯法基于RAM實現,能較大程度的減小功耗,但有一定延時,回溯算法包含3個主要的操作:寫入、回溯和譯碼。要提高回溯的效率減小延時,最根本的方法就是提高回溯3個操作的并發性。可采用前向追溯結構[9],如圖4所示。寄存器交換法和回溯法相結合,寫入和回溯操作同時進行。文中采用改進的前向追溯結構,只用一組單口的128×128RAM來實現SMU,回溯深度是τ(64),譯碼延時是3τ。相比文獻[10]同樣使用前向追溯結構操作5個RAM,邏輯更加簡單,資源利用率更高。

圖4 前向追溯結構Fig.4 Trace forward architecture
下面就寫入、前向追溯、譯碼的設計分別就圖5進行介紹:例舉4個時間段來說明,每個時間段又分兩個小時間段,每個小時間段有τ=64個時間長度,時間軸附近列出的是每個時間段內地址正常累加的順序,在文中為了控制方便將RAM的地址重新分配如圖5的中間一列所示,RAM的寫入、讀出地址隨時間變化,第2和第4時間段逆序。地址這種分配方式是只采用一組單口128×128RAM,數據會連續不斷的寫入、讀出(通過對RAM中的we信號進行高低判斷,使得在RAM的奇偶地址中進行輪換讀寫操作),同時追溯到譯碼的開始狀態值,最終譯碼的結果也會連續不斷的輸出。
2.3.1 寫入操作
在第1個時間段內奇地址1,3,5…3d,3f(正序)寫入的是ACS單元輸出的幸存路徑判決信息,每個地址位寬為128 bit,在奇地址時刻將128 bit存入,此時刻RAM中的we信號為高。當we信號為低時,進行RAM的讀操作,讀的是偶地址的128 bit數據(實現了讀寫連續操作),128 bit數據的組合情況:當前時鐘下64個幸存路徑判決信息與上一時鐘下64個幸存路徑判決信息的組合。
在第2時間段內偶地址3e,3c…0,7e,7c…40 (以3f為分界點逆序)寫入幸存路徑信息。讀的是奇地址的128 bit數據,其中3f,3d,3b…3,1為一組, 7f,7d,7b…43,41為一組,逆序是為了譯碼輸出考慮。
第3,4時間段的寫入與讀出操作與第1,2時間段一樣,以后的時間段操作以此類推。
2.3.2 前向追溯操作
前向追溯操作與寫入操作是并行進行的,在寫入64個數據的同時,根據幸存路徑的判決信息選擇最小的累積路徑度量值,通過寄存器不斷交換當前時刻與前一時刻的狀態值,找到了譯碼開始的初始狀態,然后直接可以從這個譯碼塊的初始狀態開始回溯并譯碼,譯碼器的吞吐率也能得到提高。文中每隔64個時鐘將所有狀態重新置位。

圖5 改進的前向追溯結構中寫入、回溯、譯碼的設計Fig.5 Design of writing traceback and decode in trace forwarding
2.3.3 譯碼輸出操作
譯碼輸出操作也是回溯譯碼操作。根據找到的譯碼初始狀態值開始進行譯碼,具體做法是:當前的狀態左移一位,后面補上幸存路徑信息0或者1,得到一狀態值,此時的狀態值為前一時刻的狀態值。每一時刻找到的狀態值取最高位即為譯碼結果,將其存儲在128 bit的輸出寄存器中以便連續輸出結果。在第2個時間段中的a小時間段開始存儲,真正的譯碼輸出在第2個時間段中的b小時間段開始進行。由此也可以得到譯碼延遲是3τ。
以上這些操作采用Verilog語言編寫代碼,仿真驗證是利用ISE13.2中的ISim完成,如圖6所示。并在Xilinx Virtex6 FPGA上完成了硬件驗證。生成了如圖7的譯碼器RTL框圖。主時鐘頻率可以達到250 MHz,與文獻[10-11]相比如表2所示,資源消耗大大減少。回溯深度是τ(64),譯碼延時只有3τ。

圖6 Viterbi譯碼器仿真波形Fig.6 Viterbi decoder simulation waveform

圖7 譯碼器RTL框Fig.7 RTL schematic

表2 資源消耗對比Table 2 Comparator of resources
文中探討了數字地面視頻廣播(DVB-T)通信系統中內碼Viterbi譯碼器的設計及FPGA實現問題。詳細并且深入研究了各個模塊,采用軟判決8電平量化實現分支路徑度量模塊,加比選單元采用全并行Radix-2結構實現高速的Viterbi譯碼器,同時在幸存路徑管理單元采用改進的前向追溯結構,只用一組單口的RAM進行譯碼輸出,實現低功耗且控制邏輯簡單、較小延時的Viterbi譯碼器。在Xilinx公司的FPGA上利用Verilog語言實現上述Viterbi譯碼器。具有較好的性能且符合DVB-T通信標準。
[1] VESTIAS M,NETO H,SARMENTO H.Design of High-Speed Viterbi Decoders on Virtex-6 FPGAs[C]//2012 15th Euromicro Conference on Digital System Design.Izmir,Turkey:IEEE Computer Society,2012:938-945.
[2] YANG Min.Design optimization of FPGA based viterbi decoder[C]//Electric Information and Control Engineering(ICEICE).Wuhan,China:IEEE Computer Society,2011:4129-4131.
[3] ABDELLATIF A A,ISMAIL S M,KORZEC D.FPGA Implementation of a Multi-Rate Punctured Viterbi Decoder Compatible with the DVB-T Standard[C]//2008 IEEE International Symposium on Signal Processing and Information Technology.Sarajevo:IEEE,2008:100-105.
[4] WANG Leou,LI Zheying.Design andImplementation of a Parallel Processing Viterbi Decoder Using FPGA[C]// Artificial Intelligence and Education(ICAIE).Hangzhou,China:[s.n.],2010:77-80.
[5] NARAYANASAMY P,GOPALAKRISHNAN S.FPGA Implementation of Less Area Overhead radix-4 Threshold Viterbi Decoder with Trace Forwarding for OFDM based Cognitive Radio[C]//2013 1st International Conference on E-merging Trends and Applications in Computer Science(ICETACS).Shillong:IEEE,2013:236-241.
[6] 郭勇,楊歡.(2,1,7)卷積碼編譯碼器的FPGA實現[J].通信技術,2011,44(01):22-23,26. GU0 Yong,YANG Huan.Implementation of(2,1,7) Convolutional Coder/Decoder in FPGA[J].Communications Technology,2011,44(01):22-23,26.
[7] SANTHI M,LAKSHMINARAYANAN G,SUNDARAM R,et al.Synchronous pipelined two-stage radix-4 200MbpsMB-OFDM UWB Viterbi decoder on FPGA [C]//SoC Design Conference(ISOCC).Busan,Korea:IEEE Computer Society,2009:468-471.
[8] SHUNG C,SIEGEL P,UNGERBOECK G,et al.VLSI architectures for metric normalization in the Viterbi algorithm[C]//IEEE ICC'90.Atlanta,USA:IEEE, 1990:1723-1728.
[9] BLACK P J,MENG T H Y.Hybrid Survivor Path Architectures for Viterbi Decoders[C]//Proc.of ICASSP’93. Minnesota,USA:[s.n.],1993:433-436.
[10] 歐陽淦,劉亮,葉凡,等.超寬帶系統中維特比譯碼器的設計與實現[J].計算機工程,2010,36(17): 260-263.
OUYANG Gan,LIU Liang,YE Fan,et al.Design and Implementation of Viterbi Decoder for Ultra-Wide Band System[J].Computer Engineering,2010,36(17): 260-263.
[11] 李明陽,柏鵬,屈鵬,等.基于FPGA的卷積碼Viterbi譯碼器實現方法[J].科學技術與工程,2013,13 (18):5371-5375.
LI Ming-yang,BAI Peng,QU Peng,et al.FPGA-based Realization Scheme of a Viterbi Decoder[J].Science Technology and Engineering,2013,13(18):5371-5375.
XUE Wei-hong(1981-),female,graduate student,mainly engaged in digital communication and information processing.
宋春林(1973—),男,副教授,碩士生導師,博士,主要研究方向為移動通信、數字圖像處理;
SONG Chun-lin(1973-),male,associate professor, master tutor,Ph.D.,principally working at mobile communications,digital image processing.
蘭利寶(1982—),女,工程師,碩士,主要研究方向為計算機控制技術;
LAN Li-bao(1982-),female,engineer,M.Sci.,majoring in computer control technology.
劉成強(1983—),男,工程師,碩士,主要研究方向為計算機測試。
LIU Cheng-qiang(1983-),male,engineer,M.Sci.,majoring in computer test.
Design and Implementation of Viterbi Decoder for DVB-T
XUE Wei-hong1,SONG Chun-lin1,LAN Li-bao2,LIU Cheng-qiang2
(1.College of Electronics and Information Engineering,Tongji University,Shanghai 200092,China;2.Hong Feng Control Company,China Aerospace Science and Industry,Xiaogan Hubei 432000,China)
Viterbi decoding is widely used in DVB-T communication system as a kind of maximum likelihood algorithm.For its high algorithm complexity,it brings many challenges to the realization of decoder with high speed,low power-consumption,little delay and simple logic structure.Firstly,in order to implement high-speed Viterbi decoder,the structure is parallel in the ACS Unit,and the measurement of overflow control is done with modulus normalization method,and meanwhile the comparator is simplified.Secondly,in order to implement low power-consumption Viterbi decoder with simple control logic,SMU adopts the improved trace forward architecture and only a single RAM is used for decoding output.The decoder is simulated and tested on Xilinx Virtex6 FPGA development board,and has good performance.
DVB-T;Viterbi;parallel;trace forward architecture
TN919.3
A
1002-0802(2014)03-0324-06
10.3969/j.issn.1002-0802.2014.03.018

薛偉宏(1981—),女,碩士研究生,主要研究方向為數字通信及信息處理;
國家科技重大專項(No.2012ZX03001033);中央高校基本科研業務費專項資金資助(No.0800219174)
Foundation Item:National Science and Technology Major Project(No.2012ZX03001033);the Fundamental Research Funds for the Central U-niversities(No.0800219174)