李秀圣
(濰坊學(xué)院,山東 濰坊 261061)
隨著科技進(jìn)步,人們對(duì)實(shí)際應(yīng)用中的圖像處理系統(tǒng)在成本、體積、性能上的要求不斷提高[1-3]。專業(yè)DSP(數(shù)字信號(hào)處理器)的出現(xiàn),能夠解決采用計(jì)算機(jī)進(jìn)行圖像處理帶來的成本高和體積大的問題,但是一些高速數(shù)字信號(hào)處理操作具有算法復(fù)雜、數(shù)據(jù)量巨大的特點(diǎn),從性能上講,單DSP難以滿足應(yīng)用的要求。ASIC(專用集成電路)設(shè)計(jì)成本高、靈活性低,且會(huì)受到ASIC廠商的限制。在這種背景下,大規(guī)?,F(xiàn)場(chǎng)可編程邏輯陣列(FPGA)的出現(xiàn)解決了上述困難,為電路的靈活性設(shè)計(jì)提供了方便[4-5]。
從系統(tǒng)開發(fā)成本、性能、開發(fā)難易程度等多方面綜合考慮,基于FPGA和DSP的系統(tǒng)具有靈活性高、實(shí)用性強(qiáng)、可靠性高的優(yōu)點(diǎn)。在此類系統(tǒng)中,FPGA和DSP之間數(shù)據(jù)的通信方式和速度,將直接影響著整個(gè)圖像處理系統(tǒng)的效率。為提高處理效率,本文試圖借助于一片低功耗FPGA、一片DSP和一片雙口RAM,設(shè)計(jì)出一種功耗低、設(shè)計(jì)靈活、能夠?qū)崿F(xiàn)復(fù)雜處理算法且高效、穩(wěn)定的圖像處理系統(tǒng)。
整個(gè)系統(tǒng)主要由CMOS圖像傳感器、FPGA、雙口RAM、DSP、視頻D/A和若干存儲(chǔ)器組成。根據(jù)FPGA和DSP自身特點(diǎn)及各自功能,將整個(gè)系統(tǒng)劃分為圖像采集模塊、數(shù)據(jù)幀存模塊、實(shí)時(shí)顯示模塊、高速緩沖模塊、圖像壓縮模塊和圖像存儲(chǔ)模塊。系統(tǒng)總體結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)硬件結(jié)構(gòu)圖
首先,在圖像采集模塊通過控制COM S圖像傳感器,使圖像數(shù)據(jù)以25幀/秒的速率向FPGA輸送;然后,通過FPGA的控制將圖像數(shù)據(jù)緩存在片外SDRAM中,之后由實(shí)時(shí)顯示模塊控制ADV 7123實(shí)現(xiàn)圖像的實(shí)時(shí)顯示。若通過外部控制選擇壓縮模式,則原始圖像數(shù)據(jù)將由幀存模塊移至高速緩沖模塊中,DSP通過EM IF接口外擴(kuò)存儲(chǔ)器的方式實(shí)現(xiàn)對(duì)雙口RAM中圖像數(shù)據(jù)的高效讀取;最后,由DSP對(duì)圖像數(shù)據(jù)進(jìn)行JPEG壓縮,并通過高速緩沖模塊將數(shù)據(jù)傳至FPGA的存儲(chǔ)控制模塊中實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)。
2.1 圖像采集模塊
本系統(tǒng)采用的CMOS圖像傳感器為M T9M 011,此傳感器主要有Active Pixel Senso r、Anolog Processor、控制寄存器、時(shí)序控制、模數(shù)轉(zhuǎn)換等模塊組成。通過以上幾個(gè)模塊的共同作用,在對(duì)傳感器進(jìn)行正確的配置之后,就可以輸出10位的圖像數(shù)據(jù)和一些同步信號(hào)。在本系統(tǒng)中采用I2C實(shí)現(xiàn)傳感器配置,FPGA管腳通過模擬I2C時(shí)序,完成對(duì)CMOS傳感器的初始化配置,其中要配置的寄存器如表1所示。
表1 M T9M 01寄存器設(shè)置
2.2 高速緩沖模塊
本模塊利用單片雙口RAM實(shí)現(xiàn)FPGA和DSP之間數(shù)據(jù)的高速傳輸,并通過在其內(nèi)部建立乒乓傳輸機(jī)制,達(dá)到實(shí)時(shí)數(shù)據(jù)傳輸?shù)囊?其工作方式如圖2所示。
圖2 高速緩沖模塊示意圖
圖3 DSP電路設(shè)計(jì)結(jié)構(gòu)圖
系統(tǒng)所用的雙口RAM為低功耗雙端口靜態(tài)RAM(CY7C025),存儲(chǔ)容量為8K×16bit,最高存儲(chǔ)速度可達(dá)15ns,并能實(shí)現(xiàn)異步讀寫操作。CY7C025兩側(cè)端口中除了都含有普通靜態(tài)RAM具有的地址、數(shù)據(jù)和控制引腳外,還各包含三個(gè)特殊的引腳,即(中斷引腳)(旗語引腳)(忙信號(hào)引腳),整個(gè)芯片還有一個(gè)M引腳,主要用于存儲(chǔ)器擴(kuò)展時(shí)使用。
由圖2可知,在CY7C025內(nèi)部根據(jù)存儲(chǔ)空間大小,將其等分為兩部分,在進(jìn)行數(shù)據(jù)高速緩沖的過程中,通過對(duì)兩塊存儲(chǔ)空間采用乒乓機(jī)制管理,達(dá)到雙向的數(shù)據(jù)緩沖。
2.3 DSP外部存儲(chǔ)器接口電路設(shè)計(jì)
本系統(tǒng)選用超低功耗DSP(TM S320VC5502)實(shí)現(xiàn)圖像處理算法,并采用外部存儲(chǔ)器接口(EM IF)實(shí)現(xiàn)外部存儲(chǔ)器擴(kuò)展,具體擴(kuò)展方式如圖3所示。
TM S320VC5502的EM IF可以訪問的存儲(chǔ)空間大小為16MB,該系統(tǒng)通過配置把空間平分為四部分, EM IF的片選信號(hào)線分別對(duì)應(yīng)這四個(gè)空間的選通控制。另外EM IF的組成還包括數(shù)據(jù)線D [31:0]、地址線A[21:2]、字節(jié)使能線BE[3:0]及各類存儲(chǔ)器的讀/寫控制信號(hào)線等。
在系統(tǒng)設(shè)計(jì)中,對(duì) 空間分配0x010000-0x012FFF的地址空間用來外擴(kuò)雙口RAM(CY7C025),對(duì)空間分配0x400000-0x47FFFF的地址空間用來外擴(kuò)FLASH(SST39V F400A),對(duì)空間分配0x800000-0xBFFFFF的空間用來外擴(kuò)SDRAM(H Y57V 643220DT-7)。在圖3所示的DSP電路設(shè)計(jì)中,雙口RAM主要負(fù)責(zé)FPGA與DSP間的數(shù)據(jù)通信;FLASH主要用來固化系統(tǒng)程序,并且上電時(shí)配置從該存儲(chǔ)器完成自舉;SDRAM作為DSP的內(nèi)存,主要用來存放壓縮前后的圖像數(shù)據(jù)并為某些常變量分配空間。
FPGA方面的軟件設(shè)計(jì)主要是實(shí)現(xiàn)各功能模塊的程序編寫,如攝像頭I2 C配置模塊、SDRAM控制器、圖像預(yù)處理器、VGA控制器、SD卡控制器、高速緩沖器等;DSP方面的設(shè)計(jì)主要包括兩部分,一部分是外部存儲(chǔ)器驅(qū)動(dòng)的編寫,另一部分是在DSP內(nèi)部實(shí)現(xiàn)高效的圖像壓縮算法。FPGA程序設(shè)計(jì)采用Verilog硬件描述語言來開發(fā),軟件開發(fā)環(huán)境為Quartus||;DSP程序開發(fā)采用C語言,某些算法功能模塊采用DSP匯編語言來完成,軟件開發(fā)環(huán)境為CCS2.2[6-7]。系統(tǒng)軟件設(shè)計(jì)流程見圖4。
圖4 系統(tǒng)軟件流程圖
系統(tǒng)上電,FPGA電路完成初始化動(dòng)作后,就開始進(jìn)行圖像的采集及實(shí)時(shí)顯示,并等待外界提供圖像壓縮命令;DSP完成自舉后,等待FPGA提供外部中斷信號(hào)的到來,一旦外界提供了壓縮命令,則FPGA開啟通向DSP的數(shù)據(jù)通道,開始對(duì)原始數(shù)據(jù)進(jìn)行緩沖,數(shù)據(jù)以一定量(4K×16bit)被存儲(chǔ)在雙口RAM之后,FPGA會(huì)向DSP實(shí)時(shí)發(fā)送一個(gè)中斷信號(hào);DSP一旦收到來自FPGA方向的中斷信號(hào),則立即開始開啟DMA通道并從雙口RAM中搬運(yùn)數(shù)據(jù)到SDRAM中,同時(shí)進(jìn)行下一步的JPEG壓縮動(dòng)作,等待一副圖片壓縮完成之后,DSP則會(huì)向FPGA提供一個(gè)壓縮完成信號(hào)。如果FPGA收到了來自DSP的壓縮完畢信號(hào)后,借助于雙口RAM,壓縮完的數(shù)據(jù)則以類似的傳輸方式從DSP端被搬移到FPGA端,并以文件形式存儲(chǔ)在SD卡當(dāng)中。如果編碼信號(hào)仍然有效,則會(huì)遵循同樣的規(guī)則開始下一幀圖像的傳輸與壓縮;如果編碼信號(hào)無效,則FPGA會(huì)通知DSP而結(jié)束編碼。
為了對(duì)該高速處理系統(tǒng)進(jìn)行性能測(cè)試,在FPGA的采集模塊設(shè)置采集圖像分辨率為640×480,同時(shí)在DSP內(nèi)實(shí)現(xiàn)了JPEG圖像壓縮算法。通過對(duì)JPEG算法中某些模塊(如DCT、Zigzag等)進(jìn)行優(yōu)化或采用匯編描述進(jìn)行實(shí)測(cè),在視頻 YUV下選擇采樣率為4:2:2時(shí),壓縮一幀分辨率為640×480的圖像,所用的時(shí)間在23m s左右,壓縮比在10:1-20:1左右,且SNR值基本上保證在40db以上。綜合DSP完成JPEG壓縮算法、圖像采集、傳輸和JPEG文件存儲(chǔ)所用的時(shí)間,大約在31m s左右,因此系統(tǒng)整體能保證對(duì)采集來的圖像進(jìn)行實(shí)時(shí)處理。
本文提出的利用單片雙口RAM做通信媒質(zhì)來完成FPGA與DSP之間數(shù)據(jù)高速通訊的結(jié)構(gòu),為如何更好的實(shí)現(xiàn)嵌入式圖像處理系統(tǒng)提供了一個(gè)較好的解決方案。同時(shí),FPGA和DSP協(xié)同作業(yè)的結(jié)構(gòu),既提高了系統(tǒng)的處理效率,又給系統(tǒng)的總體設(shè)計(jì)帶來了很大的靈活性。本系統(tǒng)不僅能夠滿足對(duì)靜態(tài)圖像的JPEG壓縮處理,同樣也適合其他的圖像處理或視頻壓縮算法的實(shí)現(xiàn)。
[1]趙保軍,史彩成,畢莉,等.基于FPGA和DSP實(shí)現(xiàn)的實(shí)時(shí)圖像壓縮[J].電子學(xué)報(bào),2003,31(9):1317-1319.
[2]馬秀娟,考麗,趙國良.基于 FPGA和DSP的高速數(shù)據(jù)采集實(shí)時(shí)處理系統(tǒng)的設(shè)計(jì)[J].電子器件,2007,30(3):1009-1013.
[3]李剛,付宇卓,王世明.一種基于FPGA和DSP得視頻處理系統(tǒng)[J].計(jì)算機(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]李立,金華標(biāo),陳智君,等.基于FPGA和DSP的高分辨率圖像采集系統(tǒng)[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.