戴瀾 馬東俊
摘 ?要: 為了使Viterbi譯碼器廣泛地應(yīng)用于更多標(biāo)準(zhǔn)中,結(jié)合前向回溯譯碼和滑窗流水技術(shù),同時(shí)ACS(Add?Compare?Select)部件通過減規(guī)約的操作減少異或延遲,提出一種高性能可配置Viterbi譯碼器。該譯碼器支持[12,13,14]碼率,約束長(zhǎng)度在5~9之間,生成多項(xiàng)式任意配置等參數(shù),同時(shí)支持GPRS,WiMAX,IS?95 CDMA,LTE,CDMA 2000等多標(biāo)準(zhǔn)。在對(duì)譯碼器進(jìn)行設(shè)計(jì)的基礎(chǔ)上,基于UVM 驗(yàn)證方法學(xué)搭建一種模塊級(jí)驗(yàn)證平臺(tái),完成Viterbi譯碼器模塊級(jí)的功能驗(yàn)證,覆蓋率達(dá)到99.4%。利用Synopsys Design Compiler工具進(jìn)行綜合,面積為0.2 mm2;在28 nm工藝,500 MHz主頻下,功耗為38.3 mW,吞吐率為1.06 Gbit/s。結(jié)果表明,此譯碼器具有很好的靈活可配性,在移動(dòng)終端有很好的應(yīng)用前景。
關(guān)鍵詞: Viterbi譯碼器; 滑窗流水技術(shù); 多項(xiàng)式任意配置; UVM 驗(yàn)證方法學(xué) ; 異或延遲; 移動(dòng)終端
中圖分類號(hào): TN919.3?34 ? ? ? ? ? ? ? ? ? ?文獻(xiàn)標(biāo)識(shí)碼: A ? ? ? ? ? ? ? ? ? ? ? ? 文章編號(hào): 1004?373X(2018)10?0010?05
Abstract: To make the Viterbi decoder widely applied in more standards, a high?performance configurable Viterbi decoder is proposed by combining with pre?traceback (PTB) decoding and sliding?window pipeline technology, and reducing the XOR delay by means of the specification subtraction operation in Add?Compare?Select (ACS) components. The decoder can support the code rates of 1/2, 1/3 and 1/4, constraint length of 5 to 9, polynomial generation arbitrary configuration and other parameters, and meanwhile can support multiple standards such as GPRS, WiMAX, IS?95 CDMA, LTE, and CDMA2000. On the basis of the decoder design, a module?level verification platform is established based on the UVM verification methodology to accomplish module?level functional verification for the Viterbi decoder with the code coverage rate as high as 99.4%. The Synopsys Design Compiler tool is used to perform integration, and the area is 0.2 mm2. In the 28 nm process with the main frequency of 500 MHz, the power consumption is 38.3 mW and the throughput rate is 1.06 Gbit/s. The results show that the decoder has good flexibility and compatibility, and has a good prospect in mobile terminal application.
Keywords: Viterbi decoder; sliding?window pipeline technology; polynomial arbitrary configuration; UVM verification methodology; XOR delay; mobile terminal
維特比譯碼器在現(xiàn)代通信、信息儲(chǔ)存中都有廣泛的應(yīng)用。為了配合多樣化的通信標(biāo)準(zhǔn),設(shè)計(jì)一個(gè)能夠適應(yīng)多種標(biāo)準(zhǔn)的、高性能的維特比譯碼器,具有十分重要的意義。
一般Viterbi譯碼器大多是支持單一標(biāo)準(zhǔn)的[1?3],本文中基于前向回溯和流水技術(shù)[4?5],采用基四算法,提出一種支持多標(biāo)準(zhǔn)、可配置的譯碼器。表1列出了不同通信標(biāo)準(zhǔn)下,多標(biāo)準(zhǔn)Viterbi譯碼器需要支持的碼率、約束長(zhǎng)度、狀態(tài)數(shù)參數(shù)。從表中可以看到大部分通信標(biāo)準(zhǔn)的碼率都在[12,13,14]間變化,約束長(zhǎng)度在5~9間變化。
如何高效地驗(yàn)證Viterbi譯碼器是目前亟待解決的問題。文獻(xiàn)[6]采用VMM(Verification Methodology Manual)驗(yàn)證方法學(xué)搭建MAC(Media Access Control)模塊的驗(yàn)證平臺(tái),缺點(diǎn)是VMM最初不開源,使用不方便;文獻(xiàn)[7]采用OVM(Open Verification Methodology)驗(yàn)證方法學(xué)設(shè)計(jì)了一個(gè)關(guān)于SoC(System on Chip)系統(tǒng)的驗(yàn)證平臺(tái)。OVM雖然是開源的,但是沒有引進(jìn)寄存器解決方案,這是很大一個(gè)短板。而UVM(Universal Verification Methodology)驗(yàn)證方法學(xué)繼承了OVM和VMM的優(yōu)點(diǎn),同時(shí)又結(jié)合System Verilog(SV)驗(yàn)證語(yǔ)言的隨機(jī)約束特性,針對(duì)可配置譯碼器可以產(chǎn)生大量隨機(jī)激勵(lì),所以本文中采用UVM驗(yàn)證方法學(xué),結(jié)合SV驗(yàn)證語(yǔ)言,搭建層次化驗(yàn)證平臺(tái),解決了手動(dòng)遍歷所有配置信息的問題,實(shí)現(xiàn)了驗(yàn)證的高效性。
傳統(tǒng)的回溯方法在文獻(xiàn)[4?5]中進(jìn)行了詳細(xì)的介紹。為了減小傳統(tǒng)回溯方法中的譯碼延遲,本方案中采用基于數(shù)據(jù)一致性原則的前向回溯譯碼方法(Pre?traceback,PTB),同時(shí)引入指針寄存器,在基四結(jié)構(gòu)下,通過64狀態(tài)交換單元組成的交換網(wǎng)絡(luò)來得到DC(Decoding,DC)操作的起始狀態(tài)。如圖1所示,所有狀態(tài)經(jīng)過M步回溯處理以后,將匯聚到同一個(gè)狀態(tài)。在起始回溯時(shí),選擇任意起始狀態(tài),通過一定級(jí)數(shù)回溯后,路徑會(huì)收斂于最大似然狀態(tài)。
采用 PTB 處理后從幸存路徑寫入到譯碼比特出來延時(shí)大小為 3L,減小了后向回溯處理中存儲(chǔ)器讀/寫次數(shù)。Idle表示空閑狀態(tài),不做任何操作。 前向回溯法讀/寫次數(shù)時(shí)序圖如圖2所示。
文中Viterbi譯碼器主要根據(jù)LTE卷積編碼(3,1,7)設(shè)計(jì)的,其是一個(gè)支持多標(biāo)準(zhǔn)、高性能、可配置的Viterbi譯碼器。Viterbi譯碼器的整體結(jié)構(gòu)圖如圖3所示。
Trellis_initial是網(wǎng)格初始化單元,根據(jù)碼率、生成多項(xiàng)式、約束長(zhǎng)度初始化trellis圖的分支路徑,對(duì)于基四算法來說,需要生成4路輸出,分別是“00”,“01”,“10”,“11”分支產(chǎn)生的校驗(yàn)比特。這4條分支產(chǎn)生的校驗(yàn)比特用于分支度量的計(jì)算。經(jīng)過簡(jiǎn)化,本方案中只需要產(chǎn)生2路分支,即“00”分支和“11”分支,得到的發(fā)送序列用于計(jì)算分支度量,從而完成譯碼器的可配置。網(wǎng)格圖內(nèi)部計(jì)算結(jié)構(gòu)如圖4所示。
WR(Write)是前向狀態(tài)遞歸計(jì)算單元,本設(shè)計(jì)中一共有64個(gè)ACS單元,每4個(gè)組成一個(gè)蝶形處理單元,共有16個(gè)蝶形處理PE(Processing Element)單元。WR內(nèi)部計(jì)算結(jié)構(gòu)如圖5所示。
ACS單元內(nèi)部結(jié)構(gòu)圖如圖6所示,單元內(nèi)部增加少量減法器來減小譯碼延遲,同時(shí)采用減規(guī)約操作,每次減去前一時(shí)刻的某一個(gè)狀態(tài)度量值,比模規(guī)約算法少了兩級(jí)異或延遲。
DC是譯碼單元,回溯譯碼單元從RAM中讀取的數(shù)據(jù)是128位寬,譯碼時(shí)首先要從128 bit中選出對(duì)應(yīng)回溯狀態(tài)的2個(gè)幸存比特,然后利用幸存比特更新回溯狀態(tài),同時(shí)取回溯狀態(tài)的高兩位作為譯碼輸出。
綜上所述,本文中通過對(duì)配置參數(shù)的靈活性支持,采用前向回溯譯碼和流水操作,得到了可配置的Viterbi譯碼器。
本文基于UVM驗(yàn)證方法學(xué)結(jié)合SV語(yǔ)言,設(shè)計(jì)了Viterbi譯碼器驗(yàn)證平臺(tái),如圖7所示。
在該平臺(tái)中例化了三個(gè)agent,分別是conf_agent,read_agent和write_agent,定義了三個(gè)interface,分別是conf_if(配置接口)、read_if(讀數(shù)據(jù)接口)、write_if(寫數(shù)據(jù)接口),來實(shí)現(xiàn)信息配置,數(shù)據(jù)讀取和寫入。本文中采用的reference model是基于C語(yǔ)言編寫的參考模型,通過DPI(Direct Programming Interface)[9]接口將其接入到驗(yàn)證平臺(tái)中,最終在scoreboard中實(shí)現(xiàn)和DUT(Design Under Test)的結(jié)果比對(duì)。通過比對(duì),判斷DUT的功能是否正確。下面對(duì)所設(shè)計(jì)的驗(yàn)證組件進(jìn)行了簡(jiǎn)單的討論。data_item產(chǎn)生DUT的輸入激勵(lì),這些輸入激勵(lì)可以是輸入數(shù)據(jù),也可以是一些配置信息,如表2所示,為本方案中所需要的配置和數(shù)據(jù)激勵(lì)。
conf_vdc_item生成Viterbi譯碼需要的配置信息,包括4路檢驗(yàn)信息的地址、結(jié)尾方式、寄存器個(gè)數(shù)、滑窗個(gè)數(shù)、碼率、生成多項(xiàng)式的配置、工作模式、碼塊大小;read_mem_item產(chǎn)生輸入激勵(lì)信息;write_mem_item存儲(chǔ)Viterbi譯碼結(jié)果,用于和reference model的譯碼結(jié)果比較。
sequencer負(fù)責(zé)發(fā)送sequence_item(conf_vdc_item,read_mem_item,write_mem_item)到 driver,并接收driver發(fā)回來的一個(gè)響應(yīng)。driver是一個(gè)主動(dòng)的主體,負(fù)責(zé)將 read_mem_item,write_mem_item 里的信息驅(qū)動(dòng)到 DUT 的端口上,monitor是一個(gè)被動(dòng)的主體,負(fù)責(zé)監(jiān)測(cè)輸入激勵(lì)和譯碼結(jié)果,在write_agent里只例化了monitor。
4.1 ?基四算法下的性能仿真結(jié)果
基四算法下的性能仿真結(jié)果如圖8所示。該仿真中碼塊長(zhǎng)度1 600,碼塊個(gè)數(shù)10 000,AWGN信道,采用QPSK調(diào)制。從圖8中可以看出,基四算法下的前向回溯譯碼性能優(yōu)于基二算法,性能提升約1 dB。
4.2 ?性能對(duì)比
表3列出了本設(shè)計(jì)中基二、基四算法下Viterbi譯碼器典型參數(shù)和性能,以及其他相關(guān)工作中的性能對(duì)比,主要包括基數(shù)、約束長(zhǎng)度、碼率、頻率和吞吐率。由表3可知,本文實(shí)現(xiàn)的Viterbi譯碼器不但性能更高,而且靈活性更強(qiáng),可以支持約束長(zhǎng)度在5~9,碼率在[12,13,14]間變化,并支持GPRS,WiMAX,IS?95 CDMA,LTE,CDMA 2000等多種通信標(biāo)準(zhǔn)。
4.3 ?DC綜合結(jié)果
本文設(shè)計(jì)采用TSMC 28 nm標(biāo)準(zhǔn)單元庫(kù),利用Synopsys Design Compiler進(jìn)行綜合,主頻設(shè)為500 MHz,綜合結(jié)果如表4所示。
4.4 ?驗(yàn)證結(jié)果
軟件仿真是在Linux環(huán)境下,利用VCS編譯UVM庫(kù)進(jìn)行的,設(shè)置的碼塊個(gè)數(shù)為300個(gè)。通過在scoreboard里判斷DUT和rererence model的結(jié)果,若譯碼結(jié)果一致,打印“compare success!”字樣,否則打印“compare failed!”。本文中最終打印結(jié)果全部打印的“compare success!”,說明維特比譯碼器譯碼正確。表5列出了最終代碼覆蓋率。
以上結(jié)果說明本文中設(shè)計(jì)的驗(yàn)證平臺(tái)達(dá)到了預(yù)期要求,實(shí)現(xiàn)了對(duì)Viterbi譯碼器的功能驗(yàn)證。
本文通過配置Viterbi譯碼器的動(dòng)態(tài)參數(shù)實(shí)現(xiàn)了支持不同標(biāo)準(zhǔn)的譯碼器,并通過仿真驗(yàn)證。在500 MHz主頻下,峰值吞吐可以達(dá)到1.06 Gbit/s。對(duì)于支持多標(biāo)準(zhǔn)的譯碼器來說,明顯優(yōu)于其他設(shè)計(jì)。利用Synopsys Design Compiler工具進(jìn)行綜合,500 MHz主頻下,功耗為38.3 mW,且仿真結(jié)果表明,該譯碼器具有較好的譯碼性能,值得應(yīng)用推廣。同時(shí)在驗(yàn)證領(lǐng)域中,本文采用UVM驗(yàn)證方法學(xué)搭建的驗(yàn)證平臺(tái)成功復(fù)用到CRC(Cyclic Redundancy Check)檢驗(yàn)的模塊中,極大地提高了驗(yàn)證的效率和平臺(tái)的復(fù)用性。
[1] BATCHA M F N, SHA′AMERI A Z S. Configurable adaptive Viterbi decoder for GPRS, EDGE and Wimax [C]// Proceedings of IEEE International Conference on Telecommunications and Malaysia International Conference on Communications. Penang: IEEE, 2007: 237?241.
[2] YUAN H H, HSU C Y, KUO T S. Low complexity Radix?4 butterfly design for the Viterbi decoder [C]// Proceedings of IEEE Vehicular Technology Conference. Montreal: IEEE, 2006: 1?5.
[3] ABDALLAH R A, LEEY S J, GOEL M, et al. Low?power pre?decoding based viterbi decoder for tail?biting convolutional codes [C]// Proceedings of IEEE Workshop on Signal Processing Systems. Tampere: IEEE, 2009: 185?190.
[4] MANZOOR R, RAFIQUE A, BAJWA K B. VLSI implementation of an efficient pre?trace back approach for Viterbi algorithm [C]// Proceedings of International Bhurban Conference on Applied Sciences and Technology. Islamabad: IEEE, 2007: 27?30.
[5] 薛蓮.MIMO?OFDM系統(tǒng)二相ACS前向回溯基四Viterbi譯碼器設(shè)計(jì)與實(shí)現(xiàn)[J].科技通報(bào),2013,29(9):176?180.
XUE Lian. Design and implementation of two?phase ACS and pre?traceback Radix?4 Viterbi decoder for MIMO?OFDM system [J]. Bulletin of science and technology, 2013, 29(9): 176?180.
[6] 李炎琨.基于VMM驗(yàn)證方法的研究[D].西安:西安電子科技大學(xué),2010.
LI Yankun. The research of VMM?based verification method [D]. Xian: Xidian University, 2010.
[7] 柏才明.基于OVM的SoC功能驗(yàn)證系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:華中科技大學(xué),2011.
BAI Caiming. Design and implementation of OVM?based SoC function verification system [D]. Wuhan: Huazhong University of Science and Technology, 2011.
[8] 張弓.可配置的Viterbi譯碼器的FPGA實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2009.
ZHANG Gong. Implementation of a configurable Viterbi decoder with FPGA [D]. Xian: Xidian University, 2009.
[9] Accellera. Universal verification methodology (UVM) 1.2 user′s guide [EB/OL]. [2015?11?06]. https://wenku.baidu.com/view/19eced832f60ddccdb38a05b.html.
[10] 3GPP. TS 36.212?2009 multiplexing and channel coding (V8.7.0) [S]. [2009?06?01]. http://www.zbgb.org/147/StandardDetail
2505982.htm.
[11] Accellera. Universal verification methodology(UVM)1.2 class reference [EB/OL]. [2013?12?16]. http://ishare.iask.sina.com.cn/f/65070280.html.