利用SoC平臺(tái)設(shè)計(jì)并驗(yàn)證MPEG-4/JPEG編解碼IP
如圖1所示,對(duì)一般的設(shè)計(jì)而言,IP、嵌入式處理器、內(nèi)存和邏輯閘使用數(shù)目的增加所造成的復(fù)雜度上升,將導(dǎo)致設(shè)計(jì)與驗(yàn)證人力也隨之上升。因此,設(shè)計(jì)的復(fù)用性變成了一種可推進(jìn)設(shè)計(jì)生產(chǎn)力的有效途徑。
盡管基于IP可復(fù)用的設(shè)計(jì)方法已經(jīng)推廣了將近十年,但大多數(shù)的設(shè)計(jì)方式仍然大量地采用基于模塊的堆積,并且需要用戶(hù)去進(jìn)行整合。使用預(yù)先設(shè)計(jì)好的模塊時(shí),工程師必須了解模塊如何工作,以及在設(shè)計(jì)中如何與其它模塊整合并且工作正常。第三方IP增加了整合的難度,即便是那些在商業(yè)上取得成功的,并且經(jīng)過(guò)流片驗(yàn)證的IP,在使用時(shí)也經(jīng)常出現(xiàn)問(wèn)題。
使用預(yù)先設(shè)計(jì)好的模塊不能保證一次流片就能成功。在過(guò)去的幾年中,幾家公司嘗試改變?cè)O(shè)計(jì)方法,藉由標(biāo)準(zhǔn)化的內(nèi)部IP或虛擬組件(virtual components)以及軟件完全整合在共同的架構(gòu)中,這樣的產(chǎn)品可建立起共同的功能而
在SoC的技術(shù)挑戰(zhàn)之外,還有一些問(wèn)題很少被提到,但它們卻對(duì)基于平臺(tái)的SoC設(shè)計(jì)至為重要。其中之一的挑戰(zhàn)就是SoC設(shè)計(jì)團(tuán)隊(duì)對(duì)于眾多子群——例如IP提供商、軟件工具提供商、EDA工具提供商、驗(yàn)證團(tuán)隊(duì)、系統(tǒng)設(shè)計(jì)團(tuán)隊(duì)和代工廠(chǎng)之間的整合。不幸的是,大部分的平臺(tái)SoC提供者一般只對(duì)上述所提的一兩項(xiàng)比較熟悉。缺乏溝通將會(huì)嚴(yán)重地限制SoC設(shè)計(jì)步驟順利執(zhí)行。理想的SoC設(shè)計(jì)團(tuán)隊(duì)和子群間應(yīng)該是相互緊密聯(lián)系的,這樣設(shè)計(jì)中出現(xiàn)的問(wèn)題才能快速地被解決。
智原科技是一家老字號(hào)的設(shè)計(jì)服務(wù)公司,聚結(jié)上述眾多子群于公司內(nèi)。積累大量的虛擬組件, 包括ARM V4指令兼容的32位嵌入式處理器和高速I(mǎi)/O。如圖二提供A320平臺(tái)利用提供預(yù)先整合的架構(gòu)允許多功能性的實(shí)現(xiàn)而加快設(shè)計(jì)的時(shí)間。我們又如何利用這個(gè)SoC平臺(tái)設(shè)計(jì)自己的MPEG4編解碼器IP在上頭?
智原科技設(shè)計(jì)的這個(gè)MPEG-4/JPEG編解碼器IP,首先要符合AHB的時(shí)序,目的是用以加速多媒體視頻。包含運(yùn)動(dòng)評(píng)估(Motion Estimation)、離散余弦變換/反離散余弦變換(DCT/IDCT)、量化運(yùn)算(Quantization)/反轉(zhuǎn)量化運(yùn)算(Inverse Quantization)和運(yùn)動(dòng)評(píng)估等全硬件的加速器。
智原科技的ARM CPU-FA526為32位嵌入式CPU,是智原科技自行研制開(kāi)發(fā)且合法的產(chǎn)品。該CPU采用哈佛結(jié)構(gòu),擁有六級(jí)流水線(xiàn)(pipeline),與ARM V4的結(jié)構(gòu)兼容。FA526使用16K/16K bytes I-cache/D-cache和8K/8K bytes instruction / data scratchpads,采用JATG ICE接口使得編程調(diào)試極為方便,高性能低功耗讓該款CPU的使用領(lǐng)域變得十分廣泛。
FA526利用AHB從接口控制編解碼器。初始化編解碼器的控制寄存器,運(yùn)動(dòng)估計(jì)對(duì)整個(gè)16x16或8x8的塊(block)計(jì)算的任務(wù)(task)能由編解碼器自行完成。離散余弦變換/量化,反離散余弦變換/反轉(zhuǎn)量化,AC/DC 預(yù)測(cè),鋸齒狀掃描(Zigzag Scan)和可變長(zhǎng)度編解碼器(VLC/VLD)計(jì)算的任務(wù)也能由編解碼器自行完成。
還要再設(shè)計(jì)一個(gè)內(nèi)部的DMA控制器執(zhí)行在系統(tǒng)內(nèi)存與MPEG4/JPEG編解碼器本地內(nèi)存的數(shù)據(jù)搬移的任務(wù)。DMA控制器包含一個(gè)AHB主接口和一個(gè)AHB從接口,AHB主接口使DMA控制器由AHB總線(xiàn)訪(fǎng)問(wèn)數(shù)據(jù),AHB從接口由AHB總線(xiàn)用以編程DMA控制器的控制寄存器。我們接著確定MPEG4/JPEG編解碼器IP的規(guī)格如下:
全硬件的MPEG4/JPEG編解碼器.
符合MPEG-4 (ISO/IEC 14496-2) simple profile L0 ~ L3標(biāo)準(zhǔn)
- 支持標(biāo)準(zhǔn)分辨率(sub QCIF, QCIF, CIF, VGA and 4CIF )和non-standard on 16-pixel steps
- 最大支持D1 @ 30 fps, XGA @ 15fps, SXGA @ 10fps
- 全雙工工作時(shí),幀率為半雙工時(shí)的一半
- 支持MPEG4 short header format (H.263 baseline)
- 運(yùn)動(dòng)估計(jì)的搜索范圍:-16 ~ +15.5 (optional to –32 ~ +31.5) 在半個(gè)pixel精度的情況下
- 支持4MV
- 支持不變速率 (Constant Bit Rate) 和可變速率(Variable Bit Rate)控制
- 支持下面的兩種錯(cuò)誤恢復(fù)工具
- 編碼:重新同步標(biāo)志(re-synchronization marker)和頭擴(kuò)展碼(header extension code)
- 解碼:重新同步標(biāo)志(re-synchronization marker),頭擴(kuò)展碼(header extension code),數(shù)據(jù)分割(data partition)和RVLC
符合JPEG (ISO/IEC 10918-1) baseline 標(biāo)準(zhǔn)
- 4個(gè)用戶(hù)自定義的Huffman tables (2AC和2DC)
- 4個(gè)可編程的量化表
- 隔行和逐行掃描
- YCbCr 4:4:4, 4:2:2 和4:2:
- 圖片尺寸最大到64kx64k
- 60fps 在640x480的分辨率
MPEG4 影像壓縮是將取得的影像經(jīng)過(guò)動(dòng)態(tài)估計(jì),取得其移動(dòng)向量(Motion Vector)以及絕對(duì)差值和(SAD),當(dāng)絕對(duì)差值和太大時(shí),將原來的影像送入離散余弦變換(Discrete Cosine Transform),反之,則將現(xiàn)在的影像與前一張還原的影像做差值運(yùn)算,將差值送入離散余弦變換。之后再將離散余弦變換完成的資料作量化運(yùn)算,并將量化后的資料作AC/DC預(yù)測(cè)器(AC/DC prediction),之后再將直流交流預(yù)測(cè)完畢的資料傳入可變長(zhǎng)度編碼器(Variable Length Code),將原始的影像資料壓縮成基本比特流(Base Layer Bitstream)的方式傳出,客戶(hù)端在接收到基本比特流之后,可以在經(jīng)過(guò)解碼器的解壓縮將視頻還原,另外一方面,量化運(yùn)算完畢的資料除了傳入AC/DC預(yù)測(cè)器,也將同時(shí)傳入反轉(zhuǎn)量化器(Inverse Quantization),再將反轉(zhuǎn)量化后的資料傳入反離散余弦轉(zhuǎn)換,再依據(jù)之前動(dòng)態(tài)預(yù)估時(shí)計(jì)算的結(jié)果來做動(dòng)態(tài)補(bǔ)償(Motion Compensation),以重建出一張影像作為下一張影像的參考影像。確認(rèn)規(guī)格后,將編解碼器的模塊架構(gòu)定義好,如下圖三所示。我們對(duì)其中一些模塊做說(shuō)明。
運(yùn)動(dòng)估計(jì)(Motion Estimation, ME):運(yùn)動(dòng)估計(jì)單元能基于快速搜索算法(fast search algorithm)對(duì)整個(gè)搜索窗口(Search Window)進(jìn)行運(yùn)動(dòng)估。簡(jiǎn)單來說就是去估算當(dāng)前的幀(Frame)裡某一個(gè)N×N 區(qū)塊(Macro block)和早先的幀(Reference block)裡最相似的區(qū)塊位移的向量,稱(chēng)之為移動(dòng)向量。這個(gè)區(qū)塊所要搜尋的范圍在這區(qū)塊四周往外擴(kuò)展固定值w,稱(chēng)為搜索區(qū)(Search Area)。
DCT/IDCT:MPEG4算法的核心是一種稱(chēng)為離散余弦變換(DCT)的操作。DCT的基本原理是取像素塊的平方并除去觀(guān)察者察覺(jué)不到的冗余信息。為了解壓縮數(shù)據(jù),還需要反離散余弦(IDCT)運(yùn)算。DCT/IDCT單元就是負(fù)擔(dān)離散余弦變換和反離散余弦的運(yùn)算。IDCT與DCT共享相同的硬件資源,產(chǎn)生的結(jié)果兼容IEEE 1180-1990規(guī)格,在解碼的狀態(tài)送到運(yùn)動(dòng)估計(jì)單元。DCT產(chǎn)生的結(jié)果在編碼的狀態(tài)送到量化單元。
量化(Quantization, Q)/ 反轉(zhuǎn)量化(Inverse Quantization, IQ):量化主要用來配合DCT 的結(jié)果來減少資料量的大小,以增加之后VLC 的壓縮比。反轉(zhuǎn)量化加上DCT將編碼后的影像資料進(jìn)行譯碼動(dòng)作,用來結(jié)合運(yùn)動(dòng)估計(jì)時(shí)計(jì)算的結(jié)果來做動(dòng)態(tài)補(bǔ)償,以重建出一張影像來作為下一張影像的參考影像。量化/反轉(zhuǎn)量化單元支持H.263/MPEG/JPEG量化方法。量化產(chǎn)生的結(jié)果在編碼的狀態(tài)送到AC/DCP單元。IQ產(chǎn)生的結(jié)果在解碼的狀態(tài)送到IDCT單元。
AC/DCP(AC/DC Prediction):AC/DC 預(yù)測(cè)目的是參考?jí)K(Block)周?chē)渌鼌^(qū)塊(Macro Block) 的量化值,來對(duì)其參考?jí)K作預(yù)測(cè),減少資料量的大小,以增加VLC 的壓縮比。AC/DC預(yù)測(cè)單元支持MPEG-4AC/DC預(yù)測(cè)和JPEG DC預(yù)測(cè)方法。AC/DC預(yù)測(cè)單元產(chǎn)生的結(jié)果在編碼的狀態(tài)送到Zigzag Scan單元。反AC/DC預(yù)測(cè)單元產(chǎn)生的結(jié)果在解碼的狀態(tài)送到反轉(zhuǎn)量化單元。
鋸齒狀掃描(Zigzag Scan):經(jīng)過(guò)量化之后,每個(gè) 8 x 8 的小方塊里面除了左上角區(qū)域以外其它部份幾乎都會(huì)變?yōu)?。為了把連續(xù) 0 的個(gè)數(shù)予以編碼,對(duì)每個(gè)8 x 8 的小方塊做鋸齒狀掃描,使得二維變成一維。鋸齒狀掃描單元支持所有MPEG-4及JPEG鋸齒狀掃描方法。鋸齒狀掃描單元產(chǎn)生的結(jié)果在編碼的狀態(tài)送到VLC單元。反鋸齒狀掃描單元產(chǎn)生的結(jié)果在解碼的狀態(tài)送到AC/DC預(yù)測(cè)單元。
可變長(zhǎng)度編解碼器(Variable Length Coding/Dec
oding, VLC/VLD):當(dāng)資料經(jīng)過(guò)運(yùn)動(dòng)估計(jì)(ME),DCT,量化及AC/DC預(yù)測(cè)后,VLC 經(jīng)由適當(dāng)?shù)木幋a成流,再透過(guò)網(wǎng)路傳輸流交由使用者端的解碼器來譯碼成MPEG4 的影像??勺冮L(zhǎng)度編碼器(VLC)是一種和霍夫曼編碼法相同的功能,常出現(xiàn)的值用較短的碼值,少出現(xiàn)的用長(zhǎng)的碼值來達(dá)到較好的壓縮比,因此,會(huì)先建立一個(gè)碼簿來配合查表動(dòng)作。另外,為了怕有的值在碼簿中搜查不到,所以提出固定長(zhǎng)度編碼法來除理這些額外的數值。我們?cè)谶M(jìn)行查表前先進(jìn)行了資料掃描的動(dòng)作,其中掃描可分為三種方式,分別為Horizontal Scan、Vertical Scan 及ZigZag Scan。VLC/VLD單元支持MPEG-4 固定VLC和JPEG客戶(hù)定義霍夫曼編碼方法。VLC單元產(chǎn)生的結(jié)果在編碼的狀態(tài)是最后的壓縮比特流。VLD單元產(chǎn)生的結(jié)果在解碼的狀態(tài)送到鋸齒狀掃描單元。
運(yùn)動(dòng)補(bǔ)償(Motion Compensation, MC):在做運(yùn)動(dòng)估計(jì)的同時(shí)已經(jīng)做了一些假設(shè),假設(shè)畫(huà)面中的物體不會(huì)放大或縮小、變型或旋轉(zhuǎn)、突然出現(xiàn)或消失,但在真實(shí)的世界里這些假設(shè)不恒成立。如果只做運(yùn)動(dòng)估計(jì),重建畫(huà)面與原始畫(huà)面會(huì)產(chǎn)生誤差,而且隨著畫(huà)面數(shù)目增加而增加。為了彌補(bǔ)運(yùn)動(dòng)估計(jì)的不足,必須設(shè)計(jì)運(yùn)動(dòng)補(bǔ)償單元。在編碼的狀態(tài),運(yùn)動(dòng)補(bǔ)償單元將原始區(qū)塊減去內(nèi)插產(chǎn)生的區(qū)塊,剩余的區(qū)塊送到DCT單元。在解碼的狀態(tài),運(yùn)動(dòng)補(bǔ)償單元將IDCT單元產(chǎn)生的區(qū)塊加上內(nèi)插區(qū)塊產(chǎn)生重建的區(qū)塊。
圖四所示為一SoC系統(tǒng)構(gòu)造圖,包括了FA526 CPU,MPEG4/JPEG編解碼器,視頻輸入輸出接口和MPEG4/JPEG編解碼器所需的系統(tǒng)內(nèi)存控制器。視頻捕獲(video capture) 接口執(zhí)行傳遞視頻數(shù)據(jù)到系統(tǒng)內(nèi)存的任務(wù)。
接著使用智原科技的虛擬平臺(tái)環(huán)境(VPE)驗(yàn)證MPEG4/JPEG模塊的時(shí)序。如圖五所示,智原科技的VPE系統(tǒng)是一個(gè)通用的基于高級(jí)微控制器總線(xiàn)架構(gòu)(AMBA)的SoC集成驗(yàn)證環(huán)境。設(shè)計(jì)者可以使用VPE與EDA仿真器驗(yàn)證IP的功能以及SoC芯片的完整性。它集成了
智原科技CPU仿真模型
AMBA總線(xiàn)器件仿真模型(master/ slave / arbiter / decoder … )
智原科技 starcells仿真模型(sdmc, gpio, smc …. )
其它相關(guān)器件仿真模型(sdram/ rom/ I/O model )
設(shè)計(jì)者可以根據(jù)需要添加自己的設(shè)計(jì),例如掛在AHB上的MPEG4編解碼器。每一個(gè)功能模塊都可以在VPE中獨(dú)立仿真。智原科技可在VPE上提供了AMBA的各個(gè)功能模塊的仿真模型,設(shè)計(jì)者可以很方便的搭建起一個(gè)基于AMBA的SoC系統(tǒng)并進(jìn)行測(cè)試。其VPE的仿真模型包括下列:
行為級(jí)模型(Behavioral Model)
-AHB 主器件(Master)
-AHB 從器件(Slave)
-AHB 監(jiān)視器(Monitor)
-APB 從器件(Slave)
RTL 級(jí)模型
-仲裁器(Arbiter)
-解碼器(Decoder)
-有直接存儲(chǔ)器存取(DMA)通道的AHB-to-APB橋接器
-沒(méi)有直接存儲(chǔ)器存?。―MA)通道的AHB-to-APB橋接器
完成了功能仿真后,我們利用如圖六所示A320的SoC設(shè)計(jì)平臺(tái)做FPGA硬件仿真,A320集成了完成設(shè)計(jì)所需的IP。用FPGA實(shí)現(xiàn)的邏輯模塊通過(guò)AHB/APB總線(xiàn)連接器與A320設(shè)計(jì)平臺(tái)連接,可以很方便地完成功能驗(yàn)證,調(diào)試等一系列動(dòng)作。因?yàn)锳320芯片上的IP均為硅驗(yàn)證,在驗(yàn)證設(shè)計(jì)的同時(shí)也保證了從設(shè)計(jì)到芯片的一致性。
我們?cè)O(shè)計(jì)了一款能與A320進(jìn)行驗(yàn)證的FPGA開(kāi)發(fā)板,如下圖七所示。MPEG4/JPEG編解碼器開(kāi)發(fā)板包括Xilinx Virtex-II XC2V4000 BF957, 視頻捕獲和A320接口。他提供了板上FPGA (XC2V4000 BF957),SAA7113 視頻捕獲芯片,CMOS傳感器模塊,16個(gè)LED用以顯示調(diào)試的信息,2個(gè)擴(kuò)展總線(xiàn)和一個(gè)AHB連接器連接A320開(kāi)發(fā)板。我們也制作文檔說(shuō)明Pin腳的定義,方便使用者理解設(shè)計(jì)原理。
我們也提供原理圖給使用者,如下圖八所示,使用者可完全理解訊號(hào)流的走向。
我們的測(cè)試環(huán)境很方便,如下圖九所示,利用ARM的軟件開(kāi)發(fā)環(huán)境,
完成FPGA驗(yàn)證的MPEG4/JPEG編解碼器可與A320平臺(tái)上的IP結(jié)合,再加上其它需要的IP,如AHB-PCI橋等共同流片,就是另一個(gè)平臺(tái)(如下圖十)或是一個(gè)針對(duì)音/視頻的成品。平臺(tái)化能因?yàn)榇罅恳杨A(yù)先驗(yàn)證過(guò)的架構(gòu)而加快設(shè)計(jì)時(shí)間。平臺(tái)化也是利用IP復(fù)用方法設(shè)計(jì)SoC。SoC設(shè)計(jì)開(kāi)發(fā)平臺(tái)實(shí)際上是一個(gè)綜合的開(kāi)發(fā)系統(tǒng)。其中核心芯片集成了常用的IP,為開(kāi)發(fā)提供了最基礎(chǔ)的支持。開(kāi)發(fā)測(cè)試板提供了硬件的開(kāi)發(fā)環(huán)境,VPE提供了軟件仿真的環(huán)境。使用VPE平臺(tái),SoC系統(tǒng)的開(kāi)發(fā)變得簡(jiǎn)潔、高效。好的驗(yàn)證及開(kāi)發(fā)平臺(tái)使帶有MPEG4/JPEG編解碼器的SoC能快速的完成設(shè)計(jì),驗(yàn)證及流片,智原科技的A320平臺(tái)就是一個(gè)好的SoC驗(yàn)證及開(kāi)發(fā)平臺(tái)。