軟硬件協(xié)同設(shè)計(jì)在H.264解碼器設(shè)計(jì)中的應(yīng)用
摘 要:作為SoC設(shè)計(jì)的三大關(guān)鍵支撐技術(shù)之一,軟硬件協(xié)同設(shè)計(jì)技術(shù)已經(jīng)得到了越來(lái)越廣泛的應(yīng)用。針對(duì)H.264解碼芯片的設(shè)計(jì),本文提出了一種軟硬件協(xié)同設(shè)計(jì)、仿真以及驗(yàn)證的系統(tǒng)模型。設(shè)計(jì)實(shí)踐證明,軟硬件協(xié)同設(shè)計(jì)有效地提高了設(shè)計(jì)效率,加快了開(kāi)發(fā)進(jìn)度。
關(guān)鍵詞:軟硬件協(xié)同設(shè)計(jì);H.264;SoC
引言
H.264/AVC標(biāo)準(zhǔn)是由ISO/IEC的運(yùn)動(dòng)圖像專家組(MPEG)和ITU-T的視頻編碼專家組(VCEG)共同制訂的新一代圖像壓縮標(biāo)準(zhǔn),它具有一系列優(yōu)于MPEG4和H.263的新特性,在相同的重建圖像質(zhì)量下,能比H.263節(jié)約50%左右的碼率。但是,在獲得優(yōu)越性能的同時(shí),H.264的計(jì)算復(fù)雜度卻大大增加。據(jù)估計(jì),其編碼的計(jì)算復(fù)雜度大約相當(dāng)于H.263的3倍,解碼復(fù)雜度大約相當(dāng)于H.263的2倍。在這種情況下,如果用純軟件的方式進(jìn)行實(shí)時(shí)解碼就會(huì)顯得力不從心,因此需要由軟件結(jié)合硬件加速器來(lái)完成實(shí)時(shí)的編解碼任務(wù)。本文提出了一種基于軟硬件協(xié)同設(shè)計(jì)技術(shù)的H.264解碼芯片的SoC設(shè)計(jì)方案。
軟硬件協(xié)同設(shè)計(jì)理論
SoC設(shè)計(jì)主要有3個(gè)關(guān)鍵的支撐技術(shù):
1. 軟硬件協(xié)同設(shè)計(jì)技術(shù):它主要是面向不同目標(biāo)系統(tǒng)的軟件和硬件的功能劃分理論和設(shè)計(jì)空間搜索技術(shù)。
2. IP模塊復(fù)用技術(shù)。IP是指那些集成度較高并具有完整功能的單元模塊,如MPU、DSP、DRAM、Flash等模塊。IP模塊的再利用除了可以縮短芯片的設(shè)計(jì)時(shí)間外,還能大大降低設(shè)計(jì)和制造的成本,提高可靠性。
3. 模塊以及模塊界面間的綜合分析和驗(yàn)證技術(shù)。綜合分析和驗(yàn)證是難點(diǎn),要為硬件和軟件的協(xié)同描述、驗(yàn)證和綜合提供一個(gè)自動(dòng)化的集成開(kāi)發(fā)環(huán)境。
圖1 軟硬件協(xié)同設(shè)計(jì)的基本流程
其中軟硬件協(xié)同設(shè)計(jì)技術(shù)往往成為影響開(kāi)發(fā)周期以及系統(tǒng)性能的關(guān)鍵因素。軟硬件協(xié)同設(shè)計(jì)的基本流程如圖1所示。設(shè)計(jì)初期需要對(duì)設(shè)計(jì)進(jìn)行系統(tǒng)級(jí)建模。在經(jīng)過(guò)分析后對(duì)軟硬件進(jìn)行適當(dāng)?shù)膭澐?,于是系統(tǒng)設(shè)計(jì)分為軟件設(shè)計(jì)和硬件設(shè)計(jì)兩條路線。為了保證軟硬件設(shè)計(jì)的協(xié)同,在設(shè)計(jì)的各個(gè)時(shí)期還要對(duì)軟硬件接口進(jìn)行設(shè)計(jì)。當(dāng)軟硬件設(shè)計(jì)完成后,就可將設(shè)計(jì)中軟件和硬件部分加以集成以完成最后的設(shè)計(jì)。如果此時(shí)的設(shè)計(jì)不能完全滿足設(shè)計(jì)目標(biāo),還需要將整個(gè)架構(gòu)進(jìn)行重新劃分,進(jìn)行迭代直到設(shè)計(jì)滿足要求。
圖2 H.264解碼功能模塊劃分
系統(tǒng)軟硬件劃分
采用軟硬件協(xié)同設(shè)計(jì),在系統(tǒng)模型建立以后,就要對(duì)系統(tǒng)的軟硬件進(jìn)行劃分。一部分工作需要交給嵌入式處理器用軟件來(lái)完成,而剩余的部分則要用硬件來(lái)實(shí)現(xiàn)。在劃分時(shí),要考慮目標(biāo)體系結(jié)構(gòu)、軟硬件實(shí)現(xiàn)所占用的成本等各種因素。劃分完后,產(chǎn)生軟硬件分割界面,供軟硬件仿真、驗(yàn)證和測(cè)試使用。
H.264的解碼功能模塊如圖2所示,整個(gè)解碼的過(guò)程由碼流輸入單元、熵解碼單元、反量化及反離散余弦變換單元、幀內(nèi)預(yù)測(cè)單元、幀間預(yù)測(cè)單元、去塊效應(yīng)單元、內(nèi)存控制單元、顯示輸出單元、圖像信息管理單元、解碼過(guò)程控制單元和內(nèi)存等功能單元組成。
對(duì)高清碼流進(jìn)行解碼時(shí),解碼器的工作頻率一般為200MHz,此時(shí)對(duì)一個(gè)宏塊圖像的信息進(jìn)行處理的時(shí)間平均只有900個(gè)時(shí)鐘,實(shí)時(shí)性要求很高,因此必須將軟件的工作量減小。設(shè)計(jì)中采用嵌入式處理器控制解碼過(guò)程能給系統(tǒng)設(shè)計(jì)帶來(lái)更大的靈活性,而圖像信息管理只涉及針對(duì)圖像級(jí)別的計(jì)算,在對(duì)一幀圖像進(jìn)行解碼時(shí)只會(huì)計(jì)算一次,故將這兩部分任務(wù)交給嵌入式處理器完成。為了保證軟硬件負(fù)荷的平衡,還將碼流輸入和熵解碼任務(wù)交給嵌入式處理器處理。圖2中灰色的模塊則需要用專門的硬件加速模塊來(lái)完成。
圖3 H.264解碼器軟硬件協(xié)同設(shè)計(jì)的軟件仿真模型
系統(tǒng)的軟硬件協(xié)同設(shè)計(jì)
H.264解碼器軟硬件協(xié)同設(shè)計(jì)的仿真平臺(tái)
當(dāng)系統(tǒng)設(shè)計(jì)的軟硬件劃分完成后,設(shè)計(jì)就分成軟件設(shè)計(jì)和硬件設(shè)計(jì)兩條路線,為了保證在軟、硬件設(shè)計(jì)過(guò)程中能夠隨時(shí)進(jìn)行聯(lián)合仿真,本文建立了如圖3所示的仿真模型。由圖中的硬件設(shè)計(jì)部分可知,嵌入式處理器將通過(guò)片內(nèi)高速總線對(duì)掛在總線上的各個(gè)硬件加速器進(jìn)行控制。為了使得軟硬件劃分的界面更加清晰,嵌入式處理器解碼時(shí)產(chǎn)生的數(shù)據(jù)通過(guò)連接在片內(nèi)高速總線上的動(dòng)態(tài)存儲(chǔ)控制器存入DRAM中,而后各個(gè)硬件加速器通過(guò)片內(nèi)高速總線將各自需要的數(shù)據(jù)從動(dòng)態(tài)存儲(chǔ)器中讀出,進(jìn)行相應(yīng)的解碼??紤]到片內(nèi)高速總線的負(fù)擔(dān)比較重,設(shè)計(jì)中將總線位寬設(shè)定為64bit,以提高數(shù)據(jù)傳輸?shù)乃俣取?BR>
為了保持軟件與硬件設(shè)計(jì)的協(xié)同性,在進(jìn)行硬件加速模塊設(shè)計(jì)的同時(shí),軟件設(shè)計(jì)也需要作相應(yīng)的改動(dòng)。如圖3所示,在已經(jīng)劃分好的由嵌入式處理器完成的軟件模型和將由硬件實(shí)現(xiàn)的軟件模型之間,加入數(shù)據(jù)打包和數(shù)據(jù)解包單元。數(shù)據(jù)打包單元是為了生成軟件仿真所需要的輸入向量,數(shù)據(jù)解包單元用于將打包后的數(shù)據(jù)還原,作為將由硬件實(shí)現(xiàn)的軟件模型的輸入,以便模型能夠生成硬件設(shè)計(jì)部分進(jìn)行軟仿真所需要的參照向量。
在軟件仿真時(shí)期,軟件與硬件的接口主要通過(guò)數(shù)據(jù)打包單元完成。各個(gè)硬件加速器解碼所需的數(shù)據(jù)是從動(dòng)態(tài)存儲(chǔ)器獲取的,而這些數(shù)據(jù)是由嵌入式處理器通過(guò)片內(nèi)高速總線事先存入動(dòng)態(tài)存儲(chǔ)器中的。于是在數(shù)據(jù)打包單元的幫助下,軟件模型就可以用打包單元模擬DRAM輸出數(shù)據(jù),而后硬件設(shè)計(jì)中就可以將這些數(shù)據(jù)加載到自己的軟件仿真測(cè)試平臺(tái)中,供其軟件仿真使用。為了驗(yàn)證硬件設(shè)計(jì)的正確性,在硬件設(shè)計(jì)中還加入了測(cè)試單元。測(cè)試單元將硬件解碼的數(shù)據(jù)暫存到其內(nèi)部緩存中,測(cè)試平臺(tái)中的解碼數(shù)據(jù)檢測(cè)單元就可以通過(guò)片內(nèi)總線將解碼后的數(shù)據(jù)讀回,與軟件模型生成的參照向量進(jìn)行比較。于是,通過(guò)軟件仿真便可以初步驗(yàn)證硬件設(shè)計(jì)的正確性??紤]到在硬件與軟件協(xié)同仿真完成后,要通過(guò)PC對(duì)設(shè)計(jì)進(jìn)行加速驗(yàn)證,本文在硬件設(shè)計(jì)中加入了PCI總線到片內(nèi)高速總線橋接器。
H.264解碼器軟硬件協(xié)同設(shè)計(jì)的加速驗(yàn)證環(huán)節(jié)
由于解碼器設(shè)計(jì)的規(guī)模比較大,硬件設(shè)計(jì)進(jìn)行軟件仿真的速度比較慢,而且在前期設(shè)計(jì)中軟件和硬件都是通過(guò)生成的輸入向量和參照向量的方式進(jìn)行耦合的。為了加快仿真的速度,并為嵌入式處理器和硬件加速器的集成做進(jìn)一步的準(zhǔn)備,設(shè)計(jì)中將圖3所示的仿真模型演變成了圖4所示的模型。
在設(shè)計(jì)完成并通過(guò)軟件仿真后,硬件設(shè)計(jì)被綜合成網(wǎng)表文件下載到FPGA中。系統(tǒng)通過(guò)PCI 總線到片內(nèi)總線橋接器與PC相連,PC模擬嵌入式處理器的軟件工作,并通過(guò)PCI總線將控制信號(hào)以及解碼數(shù)據(jù)送到FPGA內(nèi)部的片內(nèi)高速總線上,由硬件模塊完成最終的解碼任務(wù)。
為了驗(yàn)證設(shè)計(jì)的正確性,PC可以通過(guò)PCI總線將硬件解碼后的數(shù)據(jù)從測(cè)試單元讀出,與圖3模型中生成的參照向量進(jìn)行比較,驗(yàn)證解碼的正確性。由于在FPGA中硬件仿真的速度遠(yuǎn)高于軟件仿真,因此使驗(yàn)證的速度得以加快。
圖4 H.264解碼器軟硬件協(xié)同設(shè)計(jì)的加速驗(yàn)證模型
H.264解碼器軟硬件協(xié)同設(shè)計(jì)的系統(tǒng)集成
通過(guò)如圖4所示的驗(yàn)證環(huán)節(jié)后,設(shè)計(jì)的正確性以及軟硬件設(shè)計(jì)的協(xié)同性得到了進(jìn)一步的驗(yàn)證。為了方便軟、硬件的集成,本文將圖4中的設(shè)計(jì)模型進(jìn)一步進(jìn)行了修改。圖5所示的設(shè)計(jì)模型為H.264解碼器軟硬件集成后的最終系統(tǒng)評(píng)估和設(shè)計(jì)驗(yàn)證模型??梢?jiàn),在經(jīng)過(guò)PC模擬嵌入式處理器行為與硬件聯(lián)合進(jìn)行硬件仿真后,嵌入式處理器通過(guò)片內(nèi)高速總線與硬件系統(tǒng)進(jìn)行了連接,最終完成了軟硬件的集成。
圖5 H.264解碼器的最終系統(tǒng)評(píng)估和設(shè)計(jì)驗(yàn)證模型
此時(shí)系統(tǒng)仍使用PCI接口對(duì)碼流進(jìn)行輸入,并將解碼后的數(shù)據(jù)從測(cè)試單元讀入PC,與圖3模型中生成的參照向量進(jìn)行比較,對(duì)最終設(shè)計(jì)的正確性進(jìn)行驗(yàn)證。當(dāng)驗(yàn)證完成后測(cè)試單元將被移除。
當(dāng)然此時(shí)的設(shè)計(jì)不一定能完全滿足設(shè)計(jì)要求,如果沒(méi)有完全達(dá)到設(shè)計(jì)的要求,那么整個(gè)設(shè)計(jì)將從軟硬件劃分步驟重新進(jìn)行,一次次進(jìn)行迭代直到滿足最終的要求。
結(jié)語(yǔ)
由于采用了軟硬件協(xié)同設(shè)計(jì)技術(shù),整個(gè)SoC系統(tǒng)的軟件設(shè)計(jì)和硬件設(shè)計(jì)能夠方便地進(jìn)行聯(lián)合仿真以及測(cè)試。在整個(gè)設(shè)計(jì)過(guò)程中,軟件設(shè)計(jì)和硬件設(shè)計(jì)能夠很好地協(xié)同,當(dāng)軟件或硬件的一方需要改動(dòng)的時(shí)候,另一方能夠及時(shí)地進(jìn)行相應(yīng)的改動(dòng)。同時(shí)軟件設(shè)計(jì)還能在設(shè)計(jì)的各個(gè)階段為硬件設(shè)計(jì)提供必要的驗(yàn)證數(shù)據(jù),使得軟件與硬件設(shè)計(jì)能夠進(jìn)行快速有效的集成,從而減小了系統(tǒng)在開(kāi)發(fā)過(guò)程中的風(fēng)險(xiǎn),提高了系統(tǒng)設(shè)計(jì)的正確性,加快了開(kāi)發(fā)的速度。
參考文獻(xiàn):
1 Joint Video Team (JVT) of ISO/IEC MPEG & ITU-T VCEG. Proposed Draft Errata List with Revision-Marked Corrections for H.264/AVC[M], 2003.12.
2 畢厚杰. 新一代視頻壓縮編碼標(biāo)準(zhǔn)—H.264/AVC[M]. 北京:人民郵電出版社,2005.5.
3 (美)Rochit Raj Suman. System On Chip:Design and Test. 于敦山,盛世敏,田澤譯. 北京:北京航空航天大學(xué)出版社,2003
4 郭鵬飛. SoC設(shè)計(jì)中的軟硬件協(xié)同設(shè)計(jì). 中國(guó)電子站,2005.02.11