文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2012)01-0038-03
AVS是我國(guó)具備自主知識(shí)產(chǎn)權(quán)的第二代信源編碼標(biāo)準(zhǔn),其編碼效率比MPEG-2高2~3倍,與AVC相當(dāng),但技術(shù)方案簡(jiǎn)潔,芯片實(shí)現(xiàn)復(fù)雜度低,是一套包含系統(tǒng)、視頻、音頻和媒體版權(quán)管理在內(nèi)的完整標(biāo)準(zhǔn)體系,為數(shù)字音視頻產(chǎn)業(yè)提供了全面的解決方案。
從2012年11月1日起,AVS標(biāo)準(zhǔn)將被強(qiáng)制執(zhí)行,屆時(shí),所有在中國(guó)內(nèi)地上市的地面數(shù)字電視接收機(jī)(包括機(jī)頂盒、一體機(jī))必須內(nèi)置AVS解碼功能,否則將無(wú)法銷售。由此,在未來十年時(shí)間內(nèi),高清晰度/標(biāo)準(zhǔn)清晰度AVS解碼芯片的國(guó)內(nèi)需求量年均將達(dá)到4 000多萬(wàn)片。
在芯片設(shè)計(jì)中,驗(yàn)證所花費(fèi)的時(shí)間約占整個(gè)設(shè)計(jì)周期的70%~80%。驗(yàn)證成為大規(guī)模集成電路設(shè)計(jì)的主要瓶頸。一方面,視頻解碼器需要對(duì)大量的一致性測(cè)試碼流進(jìn)行驗(yàn)證,在考慮時(shí)序信息以后,軟件的仿真速度非常慢,因此,需要基于FPGA的硬件仿真平臺(tái)來提高仿真和驗(yàn)證的速度。另一方面,門數(shù)百萬(wàn)級(jí)以上的芯片設(shè)計(jì)每次投片費(fèi)用巨大,投片前進(jìn)行基于FPGA的驗(yàn)證是保證投片成功的一個(gè)必不可少的環(huán)節(jié)。
當(dāng)前關(guān)于視頻解碼芯片的FPGA驗(yàn)證平臺(tái)的文獻(xiàn)并不多。參考文獻(xiàn)[2]用2塊VirtexE系列的FPGA搭建了視頻解碼芯片的驗(yàn)證平臺(tái);參考文獻(xiàn)[2]則采用Xilinx公司的兩片F(xiàn)PGA和Altera公司的2片EP2C35 FPGA完成驗(yàn)證平臺(tái)的設(shè)計(jì)。本文針對(duì)視頻解碼器芯片的仿真和驗(yàn)證要求,通過對(duì)驗(yàn)證平臺(tái)框架的優(yōu)化,提出基于1塊Altera的FPGA芯片,設(shè)計(jì)實(shí)現(xiàn)視頻解碼器的硬件驗(yàn)證平臺(tái)。
1 驗(yàn)證平臺(tái)組成和設(shè)計(jì)
硬件驗(yàn)證平臺(tái)應(yīng)該具有可重用的特點(diǎn)。在芯片的設(shè)計(jì)階段,硬件驗(yàn)證平臺(tái)可以作為仿真驗(yàn)證平臺(tái),要求能夠獨(dú)立完成整個(gè)視頻解碼的過程。一方面可以將視頻解碼系統(tǒng)的硬件模塊載入,以驗(yàn)證硬件模塊的功能;另一方面可以載入視頻解碼系統(tǒng)的軟件部分,讓硬件模塊和軟件模塊在一個(gè)平臺(tái)下真正實(shí)現(xiàn)軟硬件協(xié)同工作,以驗(yàn)證整個(gè)解碼系統(tǒng)的功能,實(shí)現(xiàn)視頻解碼的全過程。
本驗(yàn)證平臺(tái)以Altera公司的DE2多媒體開發(fā)平臺(tái)為主體,在FPGA內(nèi)嵌入Nios II軟核處理器,結(jié)合Nios II可自定義CPU指令和用戶外設(shè)的特點(diǎn),配合PC機(jī)軟件程序、VGA顯示器以及自定義SDRM存儲(chǔ)器端口控制模塊,搭建出一個(gè)完整的視頻解碼芯片驗(yàn)證平臺(tái),如圖1所示。
考慮到方便設(shè)計(jì)和占用資源少的原因,該驗(yàn)證平臺(tái)僅用一塊FPGA,故將其分為兩部分來設(shè)計(jì):視頻解碼部分和VGA顯示部分。其中,視頻解碼部分可以獨(dú)立完成視頻碼流解碼過程,將輸入的視頻文件解碼成YUV文件;同時(shí),可將設(shè)計(jì)的AVS視頻解碼器的硬件模塊載入,以驗(yàn)證硬件模塊的功能,并且為分析所設(shè)計(jì)模塊的性能參數(shù)提供可靠依據(jù)。VGA顯示部分主要控制VGA顯示器顯示解碼生成的YUV文件。這兩部分構(gòu)成了一個(gè)“視頻解碼—VGA顯示”的完整的驗(yàn)證平臺(tái)。
1.1 視頻解碼設(shè)計(jì)
該系統(tǒng)主要分為視頻解碼系統(tǒng)硬件設(shè)計(jì)和軟件程序開發(fā)。
1.1.1 視頻解碼硬件設(shè)計(jì)
視頻解碼系統(tǒng)硬件設(shè)計(jì)框圖如圖2所示,采用一塊Altera EP2C35F672C6 FPGA,它能提供豐富的內(nèi)存資源和容量,以及新算法資源,增強(qiáng)時(shí)鐘管理支持,其結(jié)構(gòu)體系將使系統(tǒng)性能達(dá)到更高層次,擴(kuò)大輸入輸出帶寬,提高時(shí)鐘頻率、內(nèi)存速度和數(shù)據(jù)處理速度。在FPGA上實(shí)現(xiàn)Nios II軟核CPU、SDRAM、Flash、Timer、Epcs controller等模塊相連。Nios II 軟核CPU和其他IP模塊之間通過Avalon片上總線相連,該總線規(guī)定了主部件和從部件之間進(jìn)行連接的端口和通信的時(shí)序。該部分允許將設(shè)計(jì)的硬件模塊或者AVS視頻解碼系統(tǒng)掛接到Avalon總線上,通過Nios II軟核處理器的控制,與PC機(jī)中的軟件解碼程序協(xié)同工作,共同完成視頻解碼過程。同時(shí)還能夠計(jì)算出其所占用資源以及加入硬件模塊后所節(jié)省的時(shí)間,便于準(zhǔn)確分析所驗(yàn)證硬件模塊的性能參數(shù)。
根據(jù)系統(tǒng)的功能要求和Nios II軟核處理器的高度可配置性,通過硬件開發(fā)工具SoPC Builder定制的硬件系統(tǒng)框圖如圖3所。Nios II系統(tǒng)用CFI-Flash存儲(chǔ)輸入的視頻頻碼流文件,SDRAM用作運(yùn)行程序的內(nèi)存。同時(shí)加入了SD卡,預(yù)留存儲(chǔ)以后需要解碼的大容量視頻文件,生成的解碼文件暫存在PC機(jī)上,這樣極大地減少了片上RAM的使用率。
1.1.2 視頻解碼軟件實(shí)現(xiàn)
在完成系統(tǒng)的硬件設(shè)計(jì)后, 利用Altera提供的Nios II IDE軟件,實(shí)現(xiàn)應(yīng)用程序的軟件設(shè)計(jì),主要是CPU控制主程序以及能夠獨(dú)立完成視頻解碼的軟件程序。將待驗(yàn)證的硬件模塊掛接到Avalon總線上,此時(shí)FPGA中既放入解碼系統(tǒng)的硬件模塊,也放入了解碼系統(tǒng)的軟件模塊,RISC CPU 完成PC機(jī)上CPU的功能,控制系統(tǒng)軟硬件模塊的運(yùn)行。待解碼的AVS視頻碼流通過USB接口送給驗(yàn)證平臺(tái)上的視頻解碼系統(tǒng),RISC CPU協(xié)調(diào)放在FPGA中的AVS解碼系統(tǒng)硬件模塊和軟件模塊以完成解碼。AVS數(shù)據(jù)經(jīng)過解碼,轉(zhuǎn)換成可以播放的YUV格式的視頻數(shù)據(jù)。
1.2 VGA顯示設(shè)計(jì)
該部分將上述視頻解碼軟件轉(zhuǎn)換成的YUV數(shù)據(jù)經(jīng)過視頻控制器做一些后處理和視頻格式轉(zhuǎn)換的工作,然后將YUV視頻數(shù)據(jù)通過VGA控制接口,最后在VGA顯示器上將這些視頻信號(hào)顯示出來。下面分別介紹該部分的硬件開發(fā)設(shè)計(jì)和軟件程序?qū)崿F(xiàn)。
1.2.1 VGA顯示硬件設(shè)計(jì)
在該設(shè)計(jì)中,Nios II軟核處理器主要完成CFI-Flash和SDRAM存儲(chǔ)器的讀寫操作,并且控制VGA的顯示。在SoPC Builder中搭建VGA顯示部分的硬件系統(tǒng)。針對(duì)系統(tǒng)的要求,在FPGA外圍連接了SRAM、SDRAM和Flash等存儲(chǔ)器,它們可以滿足視頻處理過程中對(duì)于存儲(chǔ)器的不同要求。其中,SRAM作為CPU控制主程序運(yùn)行的內(nèi)存;Flash用于存儲(chǔ)播放的YUV視頻文件;SDRAM容量大、速度快,用于VGA顯示的緩存,確保視頻播放的流暢。并沒有直接將SDRAM掛接到Avalon總線上,而是自己編寫了SDRAM端口控制器,再將其掛接到Avalon總線上,通過端口控制器對(duì)SDRAM進(jìn)行讀寫操作。
視頻文件從Flash寫到SDRAM后,再經(jīng)過VGA控制器顯示到顯示器上。VGA控制器采用Verilog語(yǔ)言編寫,使其具有更高執(zhí)行性能,如圖4所示。
1.2.2 VGA顯示軟件設(shè)計(jì)
在Nios II軟件開發(fā)過程中,使用Altera提供的IO操作函數(shù)對(duì)SDRAM進(jìn)行寫操作,并且利用Altera提供的API函數(shù)對(duì)Flash進(jìn)行讀操作。具體函數(shù)如下:
Alt_flash_fd * fd
fd = alt_flash_open_dev("/dev/cfi_flash");
alt_read_flash(fd, CFI_FLASH_BASE+202752*j, buf, 202752);
for(i=0; i<101376;i++)
{ IOWR_16DIRECT (SDRAM_0_BASE, 0, buf[i]);
2 驗(yàn)證實(shí)例
基于提出的AVS視頻解碼芯片驗(yàn)證框架,實(shí)現(xiàn)了基于FPGA的AVS解碼芯片驗(yàn)證平臺(tái),驗(yàn)證平臺(tái)分為視頻解碼系統(tǒng)和VGA顯示系統(tǒng)兩部分。視頻解碼系統(tǒng)可以嵌入待驗(yàn)證的硬件模塊或下載待驗(yàn)證的視頻解碼器。基于該解碼芯片驗(yàn)證平臺(tái),完成了AVS解碼芯片以及其中幀內(nèi)預(yù)測(cè)、熵解碼和環(huán)路濾波等主要硬件模塊的驗(yàn)證。相對(duì)于Modelsim的軟件仿真,硬件驗(yàn)證平臺(tái)大大提高了驗(yàn)證速度,同時(shí)也為成功投片提供了可靠保障。圖5為驗(yàn)證平臺(tái)中視頻解碼系統(tǒng)的軟硬件解碼過程。
在硬件系統(tǒng)設(shè)計(jì)過程中,F(xiàn)PGA驗(yàn)證已成為了系統(tǒng)設(shè)計(jì)的重要一環(huán)。本文提出了視頻解碼芯片的驗(yàn)證框架,并設(shè)計(jì)實(shí)現(xiàn)了基于FPGA的視頻解碼芯片驗(yàn)證平臺(tái)。該硬件驗(yàn)證平臺(tái)包括視頻解碼系統(tǒng)和VGA顯示系統(tǒng)兩部分,通過視頻解碼系統(tǒng)可以嵌入待驗(yàn)證的視頻解碼系統(tǒng)和硬件模塊,提高了驗(yàn)證速度和效率。該驗(yàn)證平臺(tái)具有操作靈活、驗(yàn)證效率高、可重用性強(qiáng)和易擴(kuò)展為驗(yàn)證其他視頻標(biāo)準(zhǔn)解碼芯片的驗(yàn)證平臺(tái)等優(yōu)點(diǎn)?;谠擈?yàn)證平臺(tái)已實(shí)現(xiàn)了多個(gè)硬件模塊和AVS視頻解碼芯片的驗(yàn)證。
參考文獻(xiàn)
[1] 中華人民共和國(guó)國(guó)家標(biāo)準(zhǔn),信息技術(shù) 先進(jìn)音視頻編碼第二部分:視頻[GB/T] 20090.2-2006,2006年3月.
[2] 李宇,梅順良.基于FPGA的視頻解碼芯片驗(yàn)證平臺(tái)設(shè)計(jì)[J].微計(jì)算機(jī)信息,2008,6(2).
[3] 朱本營(yíng),林濤.基于FPGA的H.264/AVC視頻解碼系統(tǒng)驗(yàn)證平臺(tái)的設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2008,33(7).
[4] 郭書軍.嵌入式處理器原理及應(yīng)用—Nios系統(tǒng)設(shè)計(jì)和C語(yǔ)言編程[M].北京:清華大學(xué)出版社,2004.