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