李秀圣
(濰坊學院,山東 濰坊 261061)
隨著科技進步,人們對實際應用中的圖像處理系統在成本、體積、性能上的要求不斷提高[1-3]。專業DSP(數字信號處理器)的出現,能夠解決采用計算機進行圖像處理帶來的成本高和體積大的問題,但是一些高速數字信號處理操作具有算法復雜、數據量巨大的特點,從性能上講,單DSP難以滿足應用的要求。ASIC(專用集成電路)設計成本高、靈活性低,且會受到ASIC廠商的限制。在這種背景下,大規模現場可編程邏輯陣列(FPGA)的出現解決了上述困難,為電路的靈活性設計提供了方便[4-5]。
從系統開發成本、性能、開發難易程度等多方面綜合考慮,基于FPGA和DSP的系統具有靈活性高、實用性強、可靠性高的優點。在此類系統中,FPGA和DSP之間數據的通信方式和速度,將直接影響著整個圖像處理系統的效率。為提高處理效率,本文試圖借助于一片低功耗FPGA、一片DSP和一片雙口RAM,設計出一種功耗低、設計靈活、能夠實現復雜處理算法且高效、穩定的圖像處理系統。
整個系統主要由CMOS圖像傳感器、FPGA、雙口RAM、DSP、視頻D/A和若干存儲器組成。根據FPGA和DSP自身特點及各自功能,將整個系統劃分為圖像采集模塊、數據幀存模塊、實時顯示模塊、高速緩沖模塊、圖像壓縮模塊和圖像存儲模塊。系統總體結構如圖1所示。

圖1 系統硬件結構圖
首先,在圖像采集模塊通過控制COM S圖像傳感器,使圖像數據以25幀/秒的速率向FPGA輸送;然后,通過FPGA的控制將圖像數據緩存在片外SDRAM中,之后由實時顯示模塊控制ADV 7123實現圖像的實時顯示。若通過外部控制選擇壓縮模式,則原始圖像數據將由幀存模塊移至高速緩沖模塊中,DSP通過EM IF接口外擴存儲器的方式實現對雙口RAM中圖像數據的高效讀取;最后,由DSP對圖像數據進行JPEG壓縮,并通過高速緩沖模塊將數據傳至FPGA的存儲控制模塊中實現數據存儲。
2.1 圖像采集模塊
本系統采用的CMOS圖像傳感器為M T9M 011,此傳感器主要有Active Pixel Senso r、Anolog Processor、控制寄存器、時序控制、模數轉換等模塊組成。通過以上幾個模塊的共同作用,在對傳感器進行正確的配置之后,就可以輸出10位的圖像數據和一些同步信號。在本系統中采用I2C實現傳感器配置,FPGA管腳通過模擬I2C時序,完成對CMOS傳感器的初始化配置,其中要配置的寄存器如表1所示。

表1 M T9M 01寄存器設置
2.2 高速緩沖模塊
本模塊利用單片雙口RAM實現FPGA和DSP之間數據的高速傳輸,并通過在其內部建立乒乓傳輸機制,達到實時數據傳輸的要求,其工作方式如圖2所示。

圖2 高速緩沖模塊示意圖

圖3 DSP電路設計結構圖
系統所用的雙口RAM為低功耗雙端口靜態RAM(CY7C025),存儲容量為8K×16bit,最高存儲速度可達15ns,并能實現異步讀寫操作。CY7C025兩側端口中除了都含有普通靜態RAM具有的地址、數據和控制引腳外,還各包含三個特殊的引腳,即(中斷引腳)(旗語引腳)(忙信號引腳),整個芯片還有一個M引腳,主要用于存儲器擴展時使用。
由圖2可知,在CY7C025內部根據存儲空間大小,將其等分為兩部分,在進行數據高速緩沖的過程中,通過對兩塊存儲空間采用乒乓機制管理,達到雙向的數據緩沖。
2.3 DSP外部存儲器接口電路設計
本系統選用超低功耗DSP(TM S320VC5502)實現圖像處理算法,并采用外部存儲器接口(EM IF)實現外部存儲器擴展,具體擴展方式如圖3所示。
TM S320VC5502的EM IF可以訪問的存儲空間大小為16MB,該系統通過配置把空間平分為四部分, EM IF的片選信號線分別對應這四個空間的選通控制。另外EM IF的組成還包括數據線D [31:0]、地址線A[21:2]、字節使能線BE[3:0]及各類存儲器的讀/寫控制信號線等。
在系統設計中,對 空間分配0x010000-0x012FFF的地址空間用來外擴雙口RAM(CY7C025),對空間分配0x400000-0x47FFFF的地址空間用來外擴FLASH(SST39V F400A),對空間分配0x800000-0xBFFFFF的空間用來外擴SDRAM(H Y57V 643220DT-7)。在圖3所示的DSP電路設計中,雙口RAM主要負責FPGA與DSP間的數據通信;FLASH主要用來固化系統程序,并且上電時配置從該存儲器完成自舉;SDRAM作為DSP的內存,主要用來存放壓縮前后的圖像數據并為某些常變量分配空間。
FPGA方面的軟件設計主要是實現各功能模塊的程序編寫,如攝像頭I2 C配置模塊、SDRAM控制器、圖像預處理器、VGA控制器、SD卡控制器、高速緩沖器等;DSP方面的設計主要包括兩部分,一部分是外部存儲器驅動的編寫,另一部分是在DSP內部實現高效的圖像壓縮算法。FPGA程序設計采用Verilog硬件描述語言來開發,軟件開發環境為Quartus||;DSP程序開發采用C語言,某些算法功能模塊采用DSP匯編語言來完成,軟件開發環境為CCS2.2[6-7]。系統軟件設計流程見圖4。

圖4 系統軟件流程圖
系統上電,FPGA電路完成初始化動作后,就開始進行圖像的采集及實時顯示,并等待外界提供圖像壓縮命令;DSP完成自舉后,等待FPGA提供外部中斷信號的到來,一旦外界提供了壓縮命令,則FPGA開啟通向DSP的數據通道,開始對原始數據進行緩沖,數據以一定量(4K×16bit)被存儲在雙口RAM之后,FPGA會向DSP實時發送一個中斷信號;DSP一旦收到來自FPGA方向的中斷信號,則立即開始開啟DMA通道并從雙口RAM中搬運數據到SDRAM中,同時進行下一步的JPEG壓縮動作,等待一副圖片壓縮完成之后,DSP則會向FPGA提供一個壓縮完成信號。如果FPGA收到了來自DSP的壓縮完畢信號后,借助于雙口RAM,壓縮完的數據則以類似的傳輸方式從DSP端被搬移到FPGA端,并以文件形式存儲在SD卡當中。如果編碼信號仍然有效,則會遵循同樣的規則開始下一幀圖像的傳輸與壓縮;如果編碼信號無效,則FPGA會通知DSP而結束編碼。
為了對該高速處理系統進行性能測試,在FPGA的采集模塊設置采集圖像分辨率為640×480,同時在DSP內實現了JPEG圖像壓縮算法。通過對JPEG算法中某些模塊(如DCT、Zigzag等)進行優化或采用匯編描述進行實測,在視頻 YUV下選擇采樣率為4:2:2時,壓縮一幀分辨率為640×480的圖像,所用的時間在23m s左右,壓縮比在10:1-20:1左右,且SNR值基本上保證在40db以上。綜合DSP完成JPEG壓縮算法、圖像采集、傳輸和JPEG文件存儲所用的時間,大約在31m s左右,因此系統整體能保證對采集來的圖像進行實時處理。
本文提出的利用單片雙口RAM做通信媒質來完成FPGA與DSP之間數據高速通訊的結構,為如何更好的實現嵌入式圖像處理系統提供了一個較好的解決方案。同時,FPGA和DSP協同作業的結構,既提高了系統的處理效率,又給系統的總體設計帶來了很大的靈活性。本系統不僅能夠滿足對靜態圖像的JPEG壓縮處理,同樣也適合其他的圖像處理或視頻壓縮算法的實現。
[1]趙保軍,史彩成,畢莉,等.基于FPGA和DSP實現的實時圖像壓縮[J].電子學報,2003,31(9):1317-1319.
[2]馬秀娟,考麗,趙國良.基于 FPGA和DSP的高速數據采集實時處理系統的設計[J].電子器件,2007,30(3):1009-1013.
[3]李剛,付宇卓,王世明.一種基于FPGA和DSP得視頻處理系統[J].計算機仿真,2005,22(10):254-256.
[4]Amara Amara,Frederic Amiel,Thomas Ea.FPGA vs.ASIC for low power app lication[J].M icroelectronics Journal,2006, 37(8):669-677.
[5]Bouridane A,Crookes D,Donachy P,et al.A high level FPGA-based abstractmachine fo r image p rocessing[J].Journal of Systems A rchitecture,1999,45(10):809-824.
[6]李立,金華標,陳智君,等.基于FPGA和DSP的高分辨率圖像采集系統[J].圖像采集與處理,2007,23(1):117-122.
[7]Au K M,Law N F,Siu W C.Unifiled feature analysis in JPEG and JPEG2000-comp ressed domains[J].Pattern Recognition,2007,40(7):2049-2062.