楊宏來,黃旻
(同濟大學電子科學與技術系,上海 201804)
多核處理器按照所集成的處理器核種類可分為同構多核處理器和異構多核處理器。同構多核處理器在一個芯片內集成多個相同結構的處理器核,多個處理器核執(zhí)行相同或相似的任務。異構多核處理器在一個芯片內集成多個不同結構的處理器核,除了主處理器核心之外,多數情況下還集成了具有某些針對特定應用設計的處理核心,如ASIP、DSP、GPU等。異構多核處理器可將不同類型的任務分配到不同類型的處理器核上并行處理。面對不同應用需求,它可以提供比較靈活、高效的處理機制[1~2]。
多處理器片上系統(tǒng)(MPSoC,Multi Processor System on Chip)將多個不同類型的處理器核集成在同一個芯片中,構成一個異構多核片上系統(tǒng)。對于嵌入式系統(tǒng),MPSoC可以滿足其在性能、成本和功耗等多個方面的約束條件[3]。
數字圖像、音頻、視頻的多媒體處理技術應用廣泛,目前處理算法通常是由軟件來完成的。隨著深亞微米工藝和大規(guī)模集成電路技術的發(fā)展,多媒體實時硬件處理成為一個新的發(fā)展趨勢。現場可編程邏輯器件(FPGA)性能優(yōu)越,資源豐富,采用并行處理方式,在數字信號處理領域具有很大的優(yōu)勢。采用FPGA設計靈活,程序和模塊可移植性強,可縮短設計周期,減少硬件投資風險[4]。本文提出了一種面向SoC的異構多核的系統(tǒng)設計,運用System Generator進行設計實現,通過EDK Processor自動生成Pcore,然后運用EDK建立基于MicroBlaze的嵌入式系統(tǒng),最后把MicroBlaze和Pcore構建成一個異構多核片上系統(tǒng),該方法消減了大部分手動硬件語言編寫,使設計流程趨于簡化,在一定程度上提高了設計效率。
設有一成像系統(tǒng),輸入圖像為f(x,y),輸出為g(x,y),即g(x,y)=T[f(x,y)]。其中T為作用函數,可以是線性的,也可以是非線性的。
在線性情況下,一幅圖像f(x,y)可以看作由一系列點源組成,由點源函數的卷積來表示為:
式中,δ函數為點源函數,且有δ(x-α,y-β)=δ(x-α)δ(y-β),由此可得輸出圖像為:
式中,h(x,α,y,β)=T[δ(x-α,y-β)],稱為系統(tǒng)的沖擊響應。圖像退化正是由于系統(tǒng)的沖擊響應是唯一不變的,此時h(x,α,y,β)=h(x-α,y-β),輸出圖像可表示為:
圖像退化除了成像系統(tǒng)本身的因素外,有時還受到噪聲的污染。一般假定噪聲n(x,y)為加性白噪聲。這時退化后的圖像為:
圖像的退化如圖1所示。
圖1 圖像的退化模型
圖像濾波復原的方法是通過某種方法尋找一個濾波器傳遞函數,通過頻率域圖像濾波,得到復原圖像的傅里葉變換,然后再經傅里葉反變換求得復原圖像,如圖2。
圖2 連續(xù)圖像的復原模型
這里根據逆濾波法闡述圖像復原模型,根據式(4),假設復原過程為一個線性空間不變系統(tǒng),若該系統(tǒng)的響應為hT(x,y),則復原圖像可表示為:
由卷積定理知,對應的傅里葉變換為:
設復原的濾波器傳遞函數為:
則式(6)可表示為:
整體系統(tǒng)架構如圖3所示。
圖3 系統(tǒng)總體構架圖
圖3所示系統(tǒng)總體構架中MicroBlaze是Xilinx公司推出的一個高度靈活可以配置的軟核。MicroBlaze采用32位哈弗RISC架構,32位獨立的地址總線和數據總線。在采用緩存模式下,獨立的指令和數據可以緩存并通過XCL(Xilinx CacheLink)接口連接到內存。在不采用緩存的機制下,地址和數據總線直接通過PLB訪問內存。用戶IP可以通過PLBv46總線或快速點對點連接(FSL)接入系統(tǒng)。其中PLB比較適合基于總線形式的用戶IP開發(fā);FSL比較適合基于簡單點對點輸入輸出的用戶IP開發(fā)。
System Generator是Xilinx公司的系統(tǒng)級建模工具,在Match Works公司的Simulink平臺中運行。SG提供了適合硬件設計的數字信號處理(DSP)建模環(huán)境,用戶只需要根據設計要求在Simulink下進行系統(tǒng)建模,使用SG工具即可自動產生可執(zhí)行比特文件、測試文件等,去掉了繁瑣的仿真、對比和驗證過程。
在SG中,提供了3種將嵌入式處理器加入Simulink工程的實現方法:BlackBox、PicoBlaze微控制器以及EDK處理器模塊。其中EDK處理器模塊提供了MicroBlaze處理器的接口,允許將共享存儲器(包括From/To Register,From/To FIFO和Shared Memory)和MicroBlaze關聯(lián)起來,一旦建立關聯(lián)關系,MicroBlaze就可以對它實現讀寫控制[6]。
在FPGA設計中添加處理器Processor,涉及最多的問題是處理器和外部邏輯的數據交換,一般來說交換發(fā)生在總線上,協(xié)調處理其關系是一個非常繁瑣和繁重的工作。System Generator提供的EDK Processor模塊能自動幫設計者完成上述所有問題,可以通過在Processor和外部邏輯間使用共享存儲器來實現,本文以設計Memory映射和硬件實現等問題為例[7]。
3.2.1 Memory映射
圖4 Memory和硬件映射
EDK Processor模塊允許共享存儲器作為其Memory映射的一部分,這種情況下,EDK Processor模塊將自動產生與Memory映射相關的控制邏輯,同時用總線控制器把Memory映射和Processor正確連接起來。其中共享存儲器用于軟件和硬件(MicroBlaze processor)的接口交互,硬件的當前狀態(tài)(Status)寫入Register,PC通過讀取Register當前值獲取硬件狀態(tài),達到交互信息的目的。
3.2.2 硬件映射
EDK Processor模塊支持兩種模式的硬件實現方式:EDK Pcore Generation和HDL netlisting。這里采用第一種模式,System Generator將MicroBlaze外部的所有模塊綜合成Pcore,包括外圍設備的硬件描述、驅動、總線連接和相應文檔等。產生的Pcore可以導入EDK工程使用。
3.2.3 驅動程序的產生和驗證
當Memory映射后都會自動產生對應的驅動程序,并且在EDK XPS工具進行軟件庫編譯時驗證驅動程序的正確性,軟件庫編譯成功后得到對應驅動的參考文檔。在驅動程序中包括最基本的4個調用共享存儲器函數,Read和Write分別表示讀寫共享存儲器,單字節(jié)或者矢量讀寫模式都支持。
這里采用的退化模型為圖像水平移動模糊,即將圖像的行像素卷積上h,h=[1 1 1 1]。卷積公式可以簡化為:
式中,α為原圖像像素值;g為退化后圖像像素值;l為卷積長度,這里取值為4。
用System Generator系統(tǒng)搭建模型如圖5所示。模型中利用三個Register模塊來實現移位寄存器,從而完成了行卷積的操作。由于模型的卷積僅為行卷積,所以需要Control模塊負責產生Register模塊的清零信號。
圖5 圖像退化的SG實現
根據式(9)的退化模型,可以推導出與退化模型相對應的時域反卷積模型公式,有:
式中,g為退化了的圖像像素;α’為復原后圖像像素;M為n/l向下取整;l為退化模型卷積長度。
時域反卷積也可以變換成:
用System Generator系統(tǒng)按照式(10)搭建復原模型如圖6所示。
圖6 圖像復原的SG實現
運用Xilinx Platform Studio(XPS)來創(chuàng)建一個嵌入式系統(tǒng)工程。XPS支持基于MicroBlaze的嵌入式系統(tǒng)的軟件和硬件開發(fā)。使用Base System Builder Wizard,自動創(chuàng)建一個處理器系統(tǒng),它由以下處理器IP組成:MicroBlaze、opb_mdm、OPB bus、LMB BRAM、BRAM、UART。本次設計采用的目標板是Xilinx的Virtex-II PRO FPGA開發(fā)板。
運用EDK Processor模塊產生Pcore導入XPS工程。EDK Processor會自動為每一個共享存儲器產生Memory映射,設置Compilation標簽為Export as a pcore to EDK,選擇目標板的芯片類型,然后在工程目錄下生成一個Pcore文件夾,包含Pcore相關的所有文件。把System Generator產生的所有文件復制到XPS工程中,將其添加進MicroBlaze系統(tǒng)中。
進行系統(tǒng)搭建的同時可以進行仿真驗證,System Generator中的Blockset工具庫中,WaveScope可以查看系統(tǒng)仿真的波形。圖7和圖8分別顯示了圖像退化和復原的仿真波形圖,通過WaveScope Block我們可以查看仿真模型中任意信號線中的信號變化,結果顯示本文設計的系統(tǒng)能夠實現圖像的退化和復原。
設計在Xilinx的Virtex-II PRO開發(fā)板上進行了驗證,在Xilinx的嵌入式系統(tǒng)開發(fā)平臺EDK中對系統(tǒng)進行了構建,主核采用MicroBlaze軟核,時鐘頻率選擇50MHz,使用PlatGen功能,生成硬件網表,最后生成比特流文件,將其下載到FPGA開發(fā)板中進行功能驗證。驗證結果顯示功能正確,但是對圖像數據的輸入輸出處理還不完善,在后期的SoC實現中應主要完成這方面的改進。
圖7 圖像退化模型的仿真結果
圖8 圖像復原模型的仿真結果
本文提出了一種面向SoC的異構多核的系統(tǒng)設計,可以方便地實現圖像處理。System Generator在很多方面擴展了MathWorks公司的Simulink平臺,提供了適合硬件設計的數字信號處理建模環(huán)境,加速、簡化了FPGA的DSP系統(tǒng)級硬件設計,結合Xilinx的EDK開發(fā)工具,可以方便快速地搭建面向SoC的異構多核系統(tǒng),表1給出了基于SG的SoC設計和SoC傳統(tǒng)的Top-Down設計方法的對比。從表1可以清晰看到System Generator簡化了SoC的設計流程,提高了設計效率。
表1 基于SG的SoC設計和Top-Down設計流程對比
本文運用System Generator實現了圖像的退化和復原的基本算法,生成Pcore協(xié)處理器核,在FPGA中進行嵌入式設計,運用軟硬件協(xié)同設計的方法,實現了基于System Generator的異構多核片上系統(tǒng)設計。該方法消減了大部分手動硬件語言編寫,使設計流程趨于簡化,在一定程度上提高了設計效率,在教學實踐和工程實際中都能夠發(fā)揮重要作用。
[1]陳芳園,張冬松,王志英.異構多核處理器體系結構設計研究[J].計算機工程與科學,2011,33(12):28-29.
[2]岳虹.嵌入式異構多核處理器設計與實現關鍵技術研究[D]. 國防科學技術大學.2006:5-12.
[3]Jerraya A, Wolf W. Multiprocessor systems-on-chips[M].SanFrancisco, USA:Morgan Kaufmann Publishers, 2004.
[4]Harding, B F, R C Cofer. Rapid system prototyping with FPGAs-Embedded technology series[M]. Amsterdam:Elsevier/Newnes, 2006. 301.
[5]薛良峰,齊歡.圖像復原的逆濾波器技術探討[J].自動檢測技術,2002,21(5):46-47.
[6]Castleman K R. Digital Imagine Processing[M]. 北京:電子工業(yè)出版社,2008. 325-329.
[7]XILINX. System Generator for DSP Getting Started Guide[EB/OL]. http ://china.xilinx.com/support/documentation/dt_sysgendsp_sysgen10-1.htm, 2008-4-29.
[8]Alba M Sanchez G., Ricardo Alvarez G., Sully Sanchez G. Architexture for fi ltering images using Xilinx System Generator[J]. International Journal of Mathematics and Computers in Simulation.2007,2(1).