利用SoC平臺設(shè)計(jì)并驗(yàn)證MPEG-4/JPEG編解碼IP
如圖1所示,對一般的設(shè)計(jì)而言,IP、嵌入式處理器、內(nèi)存和邏輯閘使用數(shù)目的增加所造成的復(fù)雜度上升,將導(dǎo)致設(shè)計(jì)與驗(yàn)證人力也隨之上升。因此,設(shè)計(jì)的復(fù)用性變成了一種可推進(jìn)設(shè)計(jì)生產(chǎn)力的有效途徑。
本文引用地址:http://m.butianyuan.cn/article/167069.htm
盡管基于IP可復(fù)用的設(shè)計(jì)方法已經(jīng)推廣了將近十年,但大多數(shù)的設(shè)計(jì)方式仍然大量地采用基于模塊的堆積,并且需要用戶去進(jìn)行整合。使用預(yù)先設(shè)計(jì)好的模塊時(shí),工程師必須了解模塊如何工作,以及在設(shè)計(jì)中如何與其它模塊整合并且工作正常。第三方IP增加了整合的難度,即便是那些在商業(yè)上取得成功的,并且經(jīng)過流片驗(yàn)證的IP,在使用時(shí)也經(jīng)常出現(xiàn)問題。
使用預(yù)先設(shè)計(jì)好的模塊不能保證一次流片就能成功。在過去的幾年中,幾家公司嘗試改變設(shè)計(jì)方法,藉由標(biāo)準(zhǔn)化的內(nèi)部IP或虛擬組件(virtual components)以及軟件完全整合在共同的架構(gòu)中,這樣的產(chǎn)品可建立起共同的功能而
在SoC的技術(shù)挑戰(zhàn)之外,還有一些問題很少被提到,但它們卻對基于平臺的SoC設(shè)計(jì)至為重要。其中之一的挑戰(zhàn)就是SoC設(shè)計(jì)團(tuán)隊(duì)對于眾多子群――例如IP提供商、軟件工具提供商、EDA工具提供商、驗(yàn)證團(tuán)隊(duì)、系統(tǒng)設(shè)計(jì)團(tuán)隊(duì)和代工廠之間的整合。不幸的是,大部分的平臺SoC提供者一般只對上述所提的一兩項(xiàng)比較熟悉。缺乏溝通將會嚴(yán)重地限制SoC設(shè)計(jì)步驟順利執(zhí)行。理想的SoC設(shè)計(jì)團(tuán)隊(duì)和子群間應(yīng)該是相互緊密聯(lián)系的,這樣設(shè)計(jì)中出現(xiàn)的問題才能快速地被解決。
智原科技是一家老字號的設(shè)計(jì)服務(wù)公司,聚結(jié)上述眾多子群于公司內(nèi)。積累大量的虛擬組件, 包括ARM V4指令兼容的32位嵌入式處理器和高速I/O。如圖二提供A320平臺利用提供預(yù)先整合的架構(gòu)允許多功能性的實(shí)現(xiàn)而加快設(shè)計(jì)的時(shí)間。我們又如何利用這個SoC平臺設(shè)計(jì)自己的MPEG4編解碼器IP在上頭?
智原科技設(shè)計(jì)的這個MPEG-4/JPEG編解碼器IP,首先要符合AHB的時(shí)序,目的是用以加速多媒體視頻。包含運(yùn)動評估(Motion Estimation)、離散余弦變換/反離散余弦變換(DCT/IDCT)、量化運(yùn)算(Quantization)/反轉(zhuǎn)量化運(yùn)算(Inverse Quantization)和運(yùn)動評估等全硬件的加速器。
智原科技的ARM CPU-FA526為32位嵌入式CPU,是智原科技自行研制開發(fā)且合法的產(chǎn)品。該CPU采用哈佛結(jié)構(gòu),擁有六級流水線(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)動估計(jì)對整個16x16或8x8的塊(block)計(jì)算的任務(wù)(task)能由編解碼器自行完成。離散余弦變換/量化,反離散余弦變換/反轉(zhuǎn)化,AC/DC 預(yù)測,鋸齒狀掃描(Zigzag Scan)和可變長編解碼器(VLC/VLD)計(jì)算的任務(wù)也能由編解碼器自行完成。
還要再設(shè)計(jì)一個內(nèi)部的DMA控制器執(zhí)行在系統(tǒng)內(nèi)存與MPEG4/JPEG編解碼器本地內(nèi)存的數(shù)據(jù)搬移的任務(wù)。DMA控制器包含一個AHB主接口和一個AHB從接口,AHB主接口使DMA控制器由AHB總線訪問數(shù)據(jù),AHB從接口由AHB總線用以編程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)動估計(jì)的搜索范圍:-16 ~ +15.5 (optional to C32 ~ +31.5) 在半個pixel精度的情況下
-支持4MV
-支持不變速率 (Constant Bit Rate) 和可變速率(Variable Bit Rate)控制
-支持下面的兩種錯誤恢復(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個用戶自定義的Huffman tables (2AC和2DC)
-4個可編程的量化表
-隔行和逐行掃描
-YCbCr 4:4:4, 4:2:2 和4:2:
-圖片尺寸最大到64kx64k
-60fps 在640x480的分辨率
MPEG4 影像壓縮是將取得的影像經(jīng)過動態(tài)估計(jì),取得其移動向(Motion Vector)以及絕對差值和(SAD),當(dāng)絕對差值和太大時(shí),將原的影像送入離散余弦變換(Discrete Cosine Transform),反之,則將現(xiàn)在的影像與前一張還原的影像做差值運(yùn)算,將差值送入離散余弦變換。之后再將離散余弦變換完成的資作化運(yùn)算,并將化后的資作AC/DC預(yù)測器(AC/DC prediction),之后再將直交預(yù)測完畢的資傳入可變長編碼器(Variable Length Code),將原始的影像資壓縮成基本比特流(Base Layer Bitstream)的方式傳出,客戶端在接收到基本比特流之后,可以在經(jīng)過解碼器的解壓縮將視頻還原,另外一方面,化運(yùn)算完畢的資除傳入AC/DC預(yù)測器,也將同時(shí)傳入反轉(zhuǎn)化器(Inverse Quantization),再將反轉(zhuǎn)化后的資傳入反離散余弦轉(zhuǎn)換,再依據(jù)之前動態(tài)預(yù)估時(shí)計(jì)算的結(jié)果做動態(tài)補(bǔ)償(Motion Compensation),以重建出一張影像作為下一張影像的參考影像。確認(rèn)規(guī)格后,將編解碼器的模塊架構(gòu)定義好,如下圖三所示。我們對其中一些模塊做說明。
運(yùn)動估計(jì)(Motion Estimation, ME):運(yùn)動估計(jì)單元能基于快速搜索算法(fast search algorithm)對整個搜索窗口(Search Window)進(jìn)行運(yùn)動估。簡單就是去估算當(dāng)前的幀(Frame)某一個N×N 區(qū)塊(Macro block)和早先的幀(Reference block)最相似的區(qū)塊位移的向,稱之為移動向。這個區(qū)塊所要搜尋的范圍在這區(qū)塊四周往外擴(kuò)展固定值w,稱為搜索區(qū)(Search Area)。
DCT/IDCT:MPEG4算法的核心是一種稱為離散余弦變換(DCT)的操作。DCT的基本原理是取像素塊的平方并除去觀察者察覺不到的冗余信息。為了解壓縮數(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)動估計(jì)單元。DCT產(chǎn)生的結(jié)果在編碼的狀態(tài)送到量化單元。
量化(Quantization, Q)/ 反轉(zhuǎn)化(Inverse Quantization, IQ):化主要用配合DCT 的結(jié)果減少資的大小,以增加之后VLC 的壓縮比。反轉(zhuǎn)化加上DCT將編碼后的影像資進(jìn)譯碼動作,用結(jié)合運(yùn)動估計(jì)時(shí)計(jì)算的結(jié)果做動態(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ù)測目的是參考塊(Block)周圍其它區(qū)塊(Macro Block) 的量化值,對其參考塊作預(yù)測,減少資的大小,以增加VLC 的壓縮比。AC/DC預(yù)測單元支持MPEG-4AC/DC預(yù)測和JPEG DC預(yù)測方法。AC/DC預(yù)測單元產(chǎn)生的結(jié)果在編碼的狀態(tài)送到Zigzag Scan單元。反AC/DC預(yù)測單元產(chǎn)生的結(jié)果在解碼的狀態(tài)送到反轉(zhuǎn)化單元。
評論