《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動態(tài) > 基于FPGA的多軟核圖像處理系統(tǒng)設(shè)計

基于FPGA的多軟核圖像處理系統(tǒng)設(shè)計

2009-04-29
作者:丁浩楠,蔣本珊

??? 摘? 要: 介紹以圖像處理為應(yīng)用背景、基于FPGA芯片建立的多軟核系統(tǒng)設(shè)計。系統(tǒng)中包含兩個Nios II軟核處理器和兩個用于進(jìn)行圖像顏色空間轉(zhuǎn)換的CSC MegaCore IP核。兩個Nios II軟核處理器共享程序存儲器、數(shù)據(jù)存儲器及啟動存儲器。在硬件設(shè)計方面,CSC MegaCore IP作為外圍組件通過一個自定義的接口控制器連接到以Nios II軟核處理器為核心的SoPC系統(tǒng)中。在軟件設(shè)計方面,運行在每個Nios II軟核處理器上的程序通過硬件Mutex核協(xié)調(diào)對共享數(shù)據(jù)存儲器的訪問。?

????關(guān)鍵詞: 現(xiàn)場可編程門陣列;可編程芯片系統(tǒng);多核系統(tǒng);圖像處理

?

??? 本設(shè)計在Altera Cyclone II EP2C35F672C6芯片上實現(xiàn)多軟核系統(tǒng),旨在利用FPGA芯片的并行處理結(jié)構(gòu)以及兩個Nios II軟核處理器間的并行處理和協(xié)作,提升數(shù)字圖像處理系統(tǒng)的性能。?

1 CSC MegaCore IP核?

??? Altera視頻圖像處理組合是Altera公司提供的一組用于開發(fā)視頻和圖像處理的MegaCore IP核。這些MegaCore IP在涉及圖像處理和顯示的應(yīng)用中有著廣泛應(yīng)用。這些IP核的功能包括:顏色空間轉(zhuǎn)換、色度重采樣、伽瑪校正、二維FIR濾波器、二維中值濾波器等[1]。?

??? 顏色空間是在三維坐標(biāo)系下精確表示各種顏色的三維線性空間。不同的顏色空間采用不同的基色:RGB顏色空間采用紅、綠、藍(lán)三種顏色;CMY顏色空間采用青、品紅、黃三種顏色。不同的硬件設(shè)備使用不同的顏色空間,例如:計算機顯示器使用RGB顏色空間,數(shù)字電視使用YCbCr(亮度色度)顏色空間。將圖像數(shù)據(jù)在使用不同顏色空間的硬件設(shè)備間傳輸時,通常都需要進(jìn)行顏色空間的轉(zhuǎn)換[2]。顏色空間轉(zhuǎn)換(CSC)MegaCore提供了靈活且高效的方式將圖像數(shù)據(jù)從一個顏色空間轉(zhuǎn)換到另一個顏色空間。?

??? 在兩個不同的顏色空間進(jìn)行圖像數(shù)據(jù)的轉(zhuǎn)換時,需要提供一個特定的、具有12個系數(shù)的轉(zhuǎn)換矩陣。該矩陣中的系數(shù)由進(jìn)行轉(zhuǎn)換的兩個顏色空間決定。例如:din_0、din_1、din_2為被輸入的像素在原顏色空間下的坐標(biāo),[x0,x1,x2,…,x11]為轉(zhuǎn)換矩陣的系數(shù),dout_0、dout_1、dout_2為輸入像素經(jīng)轉(zhuǎn)換后在目標(biāo)顏色空間下的坐標(biāo),則計算方法如下:?

??? dout_0=x0×din_0+x1×din_1+x2×din_2+x3?

??? dout_1=x4×din_0+x5×din_1+x6×din_2+x7?

??? dout_2=x8×din_0+x9×din_1+x10×din_2+x11?

2 CSC MegaCore IP核與Nios II系統(tǒng)的接口設(shè)計?

??? 本設(shè)計的CSC MegaCore IP具有兩個Avalon端口:一個只寫的Avalon從端口,用于接收Nios II軟核處理器通過Avalon總線傳來的輸入數(shù)據(jù);另一個Avalon主端口,將經(jīng)過CSC MegaCore IP處理后的數(shù)據(jù)通過Avalon總線寫到存儲器中。?

??? 完成上述兩個Avalon接口的功能,需要CSC MegaCore IP對外提供如下幾個必備的Avalon總線信號:reset、clock信號用于系統(tǒng)復(fù)位和時鐘信號;write、writedata信號用于只寫的Avalon從端口;write、writedata、address信號用于Avalon主端口(用于Avalon主端口和用于只寫的Avalon從端口的write、writedata是不同的信號,只是名稱相同)。?

??? 由于定制的CSC MegaCore IP沒有提供Avalon主端口需要的address信號,所以在本設(shè)計中需要增加地址生成邏輯功能。增加該功能有兩種方式:第一種方式是對由定制自動生成的CSC MegaCore IP的頂層設(shè)計進(jìn)行更改,在CSC頂層設(shè)計文件對外提供的接口中增加address信號,并且在CSC頂層設(shè)計文件中加入生成address信號的VHDL代碼。另一種方式是用VHDL語言實現(xiàn)一個接口,CSC MegaCore IP只向該接口提供與應(yīng)用相關(guān)的信號,address信號由在該接口設(shè)計文件中的VHDL代碼生成。?

??? 本設(shè)計對兩種設(shè)計方案都進(jìn)行了嘗試,最終采用了第二種方法。因為單獨設(shè)立一個接口一方面可以解決address信號的生成問題,另一方面設(shè)立該接口文件可以使設(shè)計的層次更加清晰且具有靈活性和通用性。?

??? 設(shè)立這樣一個接口后,可以將該接口封裝為SoPC自定義組件加入Nios II系統(tǒng)中。這樣,CSC MegaCore IP就成為了Nios II系統(tǒng)的外圍組件,在設(shè)計中與Nios II系統(tǒng)處于同一個頂層。而且,由于Altera視頻圖像處理組合中其他的IP核都具有與CSC MegaCore IP相似的對外接口[1],這樣一個接口的設(shè)立也解決了Altera視頻圖像處理組合中其他的IP核與Nios II系統(tǒng)的連接問題。?

3 多軟核系統(tǒng)的設(shè)計?

??? 目前,隨著業(yè)界對計算機芯片的組織和體系結(jié)構(gòu)研究的不斷深入,簡單地通過提高系統(tǒng)時鐘頻率、增加Cache容量以及處理器指令的超標(biāo)量化和流水化等方式實現(xiàn)系統(tǒng)性能提升的策略已經(jīng)到達(dá)了回報減小點。傳統(tǒng)方式對系統(tǒng)性能的提升遇到了瓶頸,有學(xué)者已經(jīng)指出,在單一處理器的條件下,系統(tǒng)性能的提高大致正比于復(fù)雜度提高的平方根[3]。?

??? 隨著SoPC技術(shù)的發(fā)展,設(shè)計者普遍采用了一種新辦法來改善性能:在同一芯片上安排多個軟核處理器并帶有大的共享Cache。同一芯片上多個處理器的使用,亦稱為多核(multiple cores)。在FPGA中采用多個軟核處理器,根據(jù)時間和功耗要求劃分任務(wù),可以更高效地利用器件的資源、提升器件的處理效率,從而提升系統(tǒng)整體性能。?

??? 硬件資源共享是多核系統(tǒng)的強大功能之一,在多核系統(tǒng)中最普遍的共享資源是存儲器。共享存儲器的數(shù)據(jù)從端口需要與共享存儲器的軟核處理器的數(shù)據(jù)主端口連接。如果某一處理器正在對共享存儲器的特定區(qū)域進(jìn)行寫操作,而同時另一個處理器正在對同一區(qū)域進(jìn)行讀或?qū)懖僮?,則很可能出現(xiàn)數(shù)據(jù)錯誤。因此,在共享存儲器時需要通過使用Mutex核或Mailbox核通知其他處理器何時正在使用共享資源,以便處理器之間不會相互干擾。?

??? 圖1為本設(shè)計中兩個Nios II軟核處理器與共享存儲器的連接框圖。其中:SDRAM為共享的程序存儲器,用于存放兩個處理器的代碼;Flash存儲器為共享的啟動存儲器;On_chip_memory是利用片上資源實現(xiàn)的雙口RAM,在系統(tǒng)中是共享的數(shù)據(jù)存儲器,用于存放圖像數(shù)據(jù)。?

?

?

??? 由于兩個Nios II CPU使用同一個SDRAM作為程序存儲器,因此需要用SoPC Builder提供的存儲器分區(qū)功能來指定每個Nios II CPU使用的存儲器區(qū)域。SoPC Builder的分區(qū)功能使用處理器的異常地址來定義不同處理器之間代碼存放的分界,每個處理器的異常地址用來決定處理器代碼存放的基地址,其末地址由下一個異常地址或存儲器的末地址決定。每個Nios II CPU有5個主要的代碼段需要被鏈接到存儲器中,它們分別是: .text、.rodata、.rwdata、heap和stack段。在對程序存儲器分區(qū)時,必須為每個處理器的heap和stack段提供足夠的地址空間,否則heap和stack段可能溢出,進(jìn)而破壞處理器的代碼運行。?

??? 本設(shè)計中的兩個Nios II CPU還共享了一個Flash存儲器,作為啟動存儲器。與程序存儲器類似,在多Nios II軟核處理器系統(tǒng)中,每個處理器必須從自己獨立的存儲區(qū)域啟動,多個處理器不能從同一非易失存儲器的同一地址啟動。SoPC Builder對啟動存儲器提供了與程序存儲器類似的分區(qū)功能,用處理器的復(fù)位地址來定義不同處理器之間啟動代碼的分界。?

??? 在本設(shè)計中,多軟核系統(tǒng)的所有硬件資源通過SoPC Builder連接矩陣的互聯(lián)情況如圖2所示。Mutex核用于兩個Nios II CPU對On_chip_memory的互斥訪問。兩個Nios II CPU通過SoPC Builder中的連接矩陣與這些資源相連接,實現(xiàn)了資源共享。此外,本設(shè)計中每個Nios II CPU都有獨立的cpu_timer(計時器)、custom_comp(自定義CSC MegaCore IP接口)外設(shè)。?

?

?

圖2 多軟核系統(tǒng)中硬件資源通過連接矩陣的互聯(lián)情況

?

??? Nios II IDE具有在片上對多處理器同時進(jìn)行調(diào)試的能力。Nios II IDE multiprocessor collection支持在FPGA片上對多軟核系統(tǒng)的軟件進(jìn)行調(diào)試。Nios II IDE下載軟件代碼到每一個處理器,然后運行軟件。在multiprocessor collection中不同處理器的啟動并不是在同一個時鐘周期開始的,只要一個處理器對應(yīng)的代碼下載完畢,該處理器就開始執(zhí)行代碼。?

??? 運行在兩個Nios II處理器上的軟件通過硬件Mutex核協(xié)調(diào)對共享片上數(shù)據(jù)存儲器的訪問。運行在兩個Nios II CPU上的程序各負(fù)責(zé)一半的圖像數(shù)據(jù)處理任務(wù),并將處理后的圖像數(shù)據(jù)寫入共享數(shù)據(jù)存儲器中。最后由一個Nios II CPU將結(jié)果數(shù)據(jù)從共享緩存中讀出,并輸出到結(jié)果文件中。?

??? 此外,軟核處理器上運行的代碼通過Altera公司提供的Altera Host Based File System文件系統(tǒng)對存儲在計算機上的文件進(jìn)行讀寫操作。Altera Host Based File System文件系統(tǒng)與Altera Zip Read-Only File System只讀文件系統(tǒng)相比,可以對文件進(jìn)行寫操作,更加符合本設(shè)計的需求。加入Altera Host Based File System后即可在代碼中使用ANSI C對存儲在計算機上的文件進(jìn)行訪問,代碼如下:?

??? FILE*fp_bin=NULL;?

??? fp_bin=fopen(″/mnt/host/hostfs_read_binary.bin″,″r″);?

??? fread(buffer,1,BUF_SIZE,fp_bin);?

??? for(i=0;i

??? {?

??? printf(″%X″,buffer[i]);?

??? }?

??? 設(shè)計中進(jìn)行讀/寫的文件是BMP位圖文件。BMP位圖文件由四個部分組成:位圖文件頭、位圖信息頭、調(diào)色板數(shù)據(jù)和圖像數(shù)據(jù)區(qū)。為了對設(shè)計進(jìn)行簡化,假設(shè)處理的BMP位圖文件為非壓縮且沒有調(diào)色板的位圖文件。在這類文件中圖像數(shù)據(jù)區(qū)開始于0036h,使用ANSI C中的fseek( )函數(shù)即可讀到圖像數(shù)據(jù)實體。?

4 多核系統(tǒng)與單核系統(tǒng)的性能對比?

??? 由于本設(shè)計為多軟核系統(tǒng),為了與單Nios II軟核系統(tǒng)進(jìn)行比較,在軟件設(shè)計中加入了監(jiān)測軟件執(zhí)行時間的代碼。對不同像素數(shù)的圖像進(jìn)行處理時,單核系統(tǒng)與多核系統(tǒng)的程序執(zhí)行時間如表1所示。?

?

?

??? 對表1中的數(shù)據(jù)進(jìn)行分析可知,由于在多核系統(tǒng)中,CPU之間進(jìn)行通信需要一定的時間開銷,在待處理數(shù)據(jù)量不大時,如1 024像素,單Nios II軟核系統(tǒng)(單Nios II 軟核CPU帶一個CSC MegaCore IP)與雙Nios II軟核系統(tǒng)(雙Nios II軟核CPU帶雙CSC MegaCore IP)在處理耗時上的差別并不明顯。當(dāng)處理的圖像數(shù)據(jù)量增大時,雙Nios II軟核系統(tǒng)對性能的提升逐漸顯示,如圖3所示。?

?

?

??? 以一幅64×64的BMP位圖的處理時間為例,雙核系統(tǒng)的處理時間為3 961 ms,與之配置相同的單核系統(tǒng)的處理時間為4 656 ms,多軟核系統(tǒng)的性能提高約為15%。?

??? 經(jīng)過對Quartus II軟件綜合報告進(jìn)行分析,單核系統(tǒng)對FPGA片上的邏輯單元(LE)占用為17%,多核系統(tǒng)對FPGA片上的邏輯單元(LE)占用為27%,多占用了10%的邏輯資源。因此,可以說在設(shè)計中用器件的邏輯資源換取了程序執(zhí)行時間,而且系統(tǒng)性能的提升量是邏輯資源消耗量的1.5倍,達(dá)到了設(shè)計的預(yù)期目標(biāo)。?

??? 本設(shè)計基于FPGA實現(xiàn)了圖像顏色空間轉(zhuǎn)換的多核系統(tǒng)。利用SoPC Builder軟件完成硬件系統(tǒng)的搭建,成功地將硬件系統(tǒng)下載到DE2開發(fā)版,并且在軟件設(shè)計中實現(xiàn)了對共享數(shù)據(jù)存儲器的訪問控制以及程序執(zhí)行時間的監(jiān)測。為CSC MegaCore IP核與Nios II系統(tǒng)間設(shè)計的接口使得本設(shè)計具有一定的靈活性,CSC MegaCore IP核可以用Altera視頻圖像處理組合中的任一個IP核替換。?

??? 本設(shè)計利用多個軟核(包括兩個Nios II軟核處理器和兩個CSC MegaCore IP)并行對圖像進(jìn)行顏色空間的轉(zhuǎn)換。與單核系統(tǒng)相比較,多軟核系統(tǒng)性能有較大提高且沒有過多地占用邏輯資源。?

參考文獻(xiàn)?

[1] Altera Crop.Video and image processing suite user?guide[PDF].http://www.altera.com.cn/technology/dsp/applications/video_imaging/dsp-vid_index.html,2006-04-01/2007-03-30.?

[2] Altera Crop.Color space converter v3.0.0 megacore?function release notes[PDF].http://www.altera.com.cn/technology/dsp/applications/video_imaging/dsp-vid_index.html,2006-04-01/2007-03-30.?

[3] STALLINGS W.計算機組織與體系結(jié)構(gòu)性能設(shè)計(第7版)[M].北京:清華大學(xué)出版社,2006.?

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。