戴 權(quán),楊應(yīng)平,賈信庭,陳夢葦,李志強
(1.武漢理工大學(xué) 理學(xué)院,湖北 武漢430070;2.武漢理工大學(xué) 信息工程學(xué)院,湖北 武漢430070)
隨著電子技術(shù)和計算機技術(shù)日新月異的發(fā)展,圖像信息扮演著越來越重要的角色。圖像采集處理系統(tǒng)在產(chǎn)品檢測、目標跟蹤、自動導(dǎo)航中廣泛應(yīng)用[1]。傳統(tǒng)的基于計算機的圖像處理系統(tǒng)因其體積與功耗的限制而不能進一步推廣[2]。隨著近20年超大規(guī)模集成電路的發(fā)展,在嵌入式系統(tǒng)上實現(xiàn)圖像處理已成為可能[3]。FPGA在時序、邏輯控制和并行處理方面具有很大的優(yōu)勢,DSP則擅長各種復(fù)雜的圖像處理算法。采用FPGA和DSP進行圖像采集處理的硬件構(gòu)架被國內(nèi)外學(xué)者廣泛采用[4-5]。本文在此基礎(chǔ)上,充分考慮成本、速度、靈活性和便攜性等因素,設(shè)計了一種基于DSP、FPGA和ARM9的圖像采集處理平臺。該平臺采用DSP作為主處理器進行復(fù)雜算法的運算,F(xiàn)PGA作為協(xié)處理器,內(nèi)嵌NiosⅡ軟核構(gòu)建可編程片上系統(tǒng)SoPC(System on Programmable Chip),完成圖像的采集存儲。同時,利用ARM9在任務(wù)控制方面的優(yōu)勢,通過主機接口HPI(Host Port Interface)與DSP進行數(shù)據(jù)通信并顯示圖像,使其成為一個實時便攜的嵌入式系統(tǒng)。該系統(tǒng)設(shè)計靈活,擴展和通用性強,具有較好的實時性和通用性。
圖像采集處理系統(tǒng)主要包括FPGA圖像采集、DSP圖像處理和ARM主機控制3大部分。硬件系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)硬件結(jié)構(gòu)模塊圖
FPGA模塊主要負責(zé)配置CMOS傳感器、圖像數(shù)據(jù)的采集存儲和圖像預(yù)處理工作。為了滿足I/O口的數(shù)量及性能,該平臺采用Altera公司的EP3C25F324C8N型號的FPGA芯片。FPGA通過SoPC Builder定制NiosⅡ軟核處理器及外設(shè)IP核來完成相關(guān)工作。SoPC模塊結(jié)構(gòu)如圖2所示。系統(tǒng)核心是NiosⅡ嵌入式處理器核,其他外設(shè)模塊核通過片上的Avalon總線與NiosⅡCore相連,定制靈活,不需要在印制電路板PCB(Printed Circuit Board)這個層面上作很多修改。在這些外設(shè)模塊中,On-Chip Memory和JTAG UART是構(gòu)成硬件最小系統(tǒng)的必需模塊。PIO用來控制LED進行指示工作。Flash控制器和SDRAM控制器掛接在三態(tài)橋上來復(fù)用地址和數(shù)據(jù)線,以節(jié)約I/O口的使用,其他模塊可作擴展功能使用。圖像傳感器則采用Omnivision公司型號為OV7670的CMOS傳感器,用戶可以自由控制圖像質(zhì)量、數(shù)據(jù)格式和傳輸方式;通過串行攝像頭控制總線SCCB(Serial Camera Control Bus)總線接口編程,還可以控制圖像白平衡、飽和度、色度等。OV7670的采集和總線時序用硬件描述語言直接配置。
圖2 SoPC系統(tǒng)結(jié)構(gòu)模塊圖
DSP模塊用來實現(xiàn)復(fù)雜的算法以及與FPGA和ARM模塊進行數(shù)據(jù)交換和搬移。系統(tǒng)選用TI公司的TMS320C6713型號的DSP芯片作為主處理器。這是一款專用于圖像處理設(shè)計的高性能浮點數(shù)字信號處理芯片,它的運行速率最高可達225 MHz。該芯片集成了大量豐富的外圍設(shè)備模塊,包括EDMA、EMIF、HPI等。DSP模塊和FPGA模塊共享一個64 MB的SDRAM作為數(shù)據(jù)存儲器,一個4 MB的Flash作為程序存儲器,兩個16 MB的SRAM用來緩存圖像數(shù)據(jù)。SDRAM、Flash、SRAM被分別映射到DSP的CE0、CE1和CE2地址空間。
ARM模塊通過HPI接口從DSP處得到處理后的圖像數(shù)據(jù),直接顯示在TFT或VGA顯示器上。系統(tǒng)選用三星公司型號為S3C2410的ARM9芯片。ARM與DSP之間的硬件連接如圖3所示。為了減少因PCB走線過長而產(chǎn)生的開關(guān)噪聲,采用三態(tài)緩沖芯片74LVCH162445來增強輸出端口的電流驅(qū)動能力。在HPI中,每一次傳輸由主機發(fā)起,HPI接口的地址線、控制線只有主機到DSP方向,所以將緩存芯片方向控制信號接高來定向傳輸。HPI的數(shù)據(jù)線則為雙向傳輸,當(dāng)nOE信號為高電平時,主機空閑或發(fā)起一次寫數(shù)據(jù)操作;當(dāng)nOE信號為低電平時,主機發(fā)起一次讀數(shù)據(jù)操作。另外,74LVCH162445的使能信號直接接到nGCS4腳防止總線沖突。ARM的加入使系統(tǒng)的外圍擴展性進一步加強,如可通過以太網(wǎng)接口和RS232串口與PC進行數(shù)據(jù)通信或嵌入操作系統(tǒng)對整個平臺進行便攜控制。
圖3 ARM與DSP之間的硬件連接圖
NiosⅡ處理器是Altera公司特有的基于通用FPGA架構(gòu)的CPU軟核,使用者可以根據(jù)需要來調(diào)整嵌入式系統(tǒng)的特性及性能,使開發(fā)更具靈活性[6]。系統(tǒng)使用NiosⅡ來生成SCCB協(xié)議所需要的時序,達到對CMOS傳感器配置的目的。SCCB協(xié)議時序如圖4所示。在SCL為高電平期間,SDA由高電平向低電平的變化視為起始信號,而SDA由低電平向高電平的變化視為終止信號。當(dāng)SCCB總線進行數(shù)據(jù)傳送時,在時鐘信號為高電平期間,數(shù)據(jù)線上的數(shù)據(jù)必須保持穩(wěn)定,只有在時鐘信號為低電平期間,數(shù)據(jù)線才允許狀態(tài)變化。OV7670共有201個寄存器來控制圖像的輸出,這里通過SCCB總線配置其中的167個,輸出格式為RGB565的QVGA模式,像素大小為320×240。另外,NiosⅡ還負責(zé)Flash和SDRAM控制器模塊的配置,F(xiàn)lash用來固化程序,SDRAM則作為程序運行空間。
圖4 SCCB協(xié)議時序圖
CMOS傳感器初始配置完成后,經(jīng)測試,傳感器輸出的QVGA時序如圖5所示,幀率為60 f/s。幀同步信號VSYNC每一個上升沿標志著新的一幀到來,低電平有效,有效期間包含240個行有效周期。圖6描述的是行時序。行同步信號HREF高電平有效,有效期間采集640個數(shù)據(jù)。由于寄存器格式的設(shè)置,其中320個數(shù)據(jù)有效,即在一個完整的行同步和幀同步有效期間,采集一幅320×240的圖像。傳感器被設(shè)置為RGB565輸出格式,所以每兩個PCLK代表一個有效像素點。PCLK的頻率為25 MHz。
圖5 OV7670輸出的QVGA時序
圖6 OV7670的行時序
采集到的圖像數(shù)據(jù)經(jīng)FPGA預(yù)處理后緩存在SRAM中供DSP讀取和處理。圖7描述了型號為IW61WV1024的SRAM的寫時序。顯然,CMOS傳感器產(chǎn)生的QVGA時序不能滿足SRAM的寫時序,本文采用Verilog HDL硬件描述語言實現(xiàn)一個SRAM控制器和地址發(fā)生器來作為CMOS和SRAM的橋梁。圖8為SRAM控制器的仿真結(jié)果。為確保圖像的實時處理和顯示,兩塊SRAM被配置為乒乓模式。即DSP在讀取SRAM_A的數(shù)據(jù)同時,F(xiàn)PGA往SRAM_B中寫入采集到的數(shù)據(jù);下一個周期,DSP讀取SRAM_B中新寫入的數(shù)據(jù),而FPGA則往SRAM_A中寫入下一幀數(shù)據(jù)。這樣使得圖像數(shù)據(jù)流水般地被DSP讀取,實現(xiàn)快速處理和實時顯示。
圖7 SRAM的寫時序
圖8 SRAM控制器仿真結(jié)果
DSP通過外部存儲器接口EMIF(External Memory Interface)來使用片外的SRAM存儲器,所以對EMIF寄存器的初始化是必不可少的。接著增強型直接存儲器訪問EDMA(Enhanced Direct Memory Access)接口通道控制器將圖像數(shù)據(jù)從SRAM搬移到片內(nèi)L2高速緩沖存儲器Cache中進行處理。處理后的數(shù)據(jù)將通過HPI通道被ARM讀取。EDMA通道控制器基于RAM結(jié)構(gòu),其通道由一個參數(shù)表來配置,每個參數(shù)入口如圖9所示。
圖9 EDMA事件的通道參數(shù)
其中,EDMA通道選項參數(shù)OPT在數(shù)據(jù)傳輸過程中發(fā)揮關(guān)鍵的作用,它決定了傳輸優(yōu)先級、傳輸單元大小、源數(shù)據(jù)和目的數(shù)據(jù)維數(shù)、源地址和目的地址更新模式、事件鏈接使能等。EDMA通道選項參數(shù)OPT的配置程序如下:
DSP處理完圖像數(shù)據(jù)后,ARM通過HPI接口訪問DSP中的圖像數(shù)據(jù),具體過程為:首先,ARM初始化HPI控制寄存器HPIC來設(shè)置數(shù)據(jù)傳輸模式;然后,配置地址寄存器HPIA來設(shè)置目的地址或源地址;最后,主機讀寫數(shù)據(jù)寄存器HPID來實現(xiàn)數(shù)據(jù)的傳輸。
利用S3C2410內(nèi)集成的液晶顯示器LCD(Liquid Crystal Display)控制器來完成圖像數(shù)據(jù)的顯示。LCD驅(qū)動程序的關(guān)鍵就是設(shè)置LCDCON1-LCDCON5寄存器來產(chǎn)生與具體應(yīng)用相對應(yīng)的時序。LCDCON1寄存器設(shè)置VCLK中信號的頻率;LCDCON2、LCDCON3寄存器的HOZVAL域和LINEVAL域設(shè)置場同步信號和行同步信號;HOZAL和LINEVAL的值由LCD屏的尺寸決定。
在整個系統(tǒng)底層驅(qū)動調(diào)試完成以后,為測試系統(tǒng)的實際性能,通過采集圖像并實時顯示的實驗對系統(tǒng)進行聯(lián)調(diào)。圖10(a)、圖10(b)、圖10(c)、圖10(d)分別是原始采集圖像、灰度處理圖像、二值化處理圖像和負片效果處理后的圖像。實驗證明,系統(tǒng)整體運行流暢。通過簡單算法的處理,驗證了該圖像采集處理系統(tǒng)具有較好的實時性。
圖10 經(jīng)過處理后的圖片
設(shè)計了一個基于DSP、FPGA和ARM9的高速圖像采集處理平臺,詳述了系統(tǒng)的硬件模塊和軟件構(gòu)架。該平臺實現(xiàn)了圖像的采集和處理并能實時顯示,滿足高速性和便攜性的應(yīng)用要求。系統(tǒng)硬件可配置,通用性強,適用于實時測量、自動循跡、模式識別等高速數(shù)據(jù)處理的應(yīng)用領(lǐng)域。
[1]Duan Jinghong,Deng Yaling,Liang Kun.Development of image processing system based on DSP and FPGA[C].The Eighth International Conference on Electronic Measurement and Instruments,IEEE,2007:791-794.
[2]Yan Lei,Zhao Gang,RYU S H,et al.The platform of image acquisition and processing system based on DSP and FPGA[C].International Conference on Smart Manufacturing Application,KINTEX,2008:470-473.
[3]Jia Xuedong,Wang Hongxia,Liu Xiaochuan.The design and implementation of a flexible FPGA/DSP based architecture for real-time image processing[C].Fourth International Symposium on Precision Mechanical Measurements:SPIE,2008:71302Z-1-71302Z-6.
[4]Yan Luxin,Zhang Tianxu,Zhong Sheng.A DSP/FPGAbased parallel architecture for real-time image processing[C].Proceedings of the 6th World Congress on Intelligent Control and Automation,IEEE,Dalian,2006:10022-10025.
[5]BATLLE J,MARTI J,RIDAO P,et al.A new FPGA/DSP-based parallel architecture for real-time image processing[J].Real-Time Imaging,2002,10(8):345-356.
[6]任文平,賈贊,申東婭,等.基于FPGA的圖像處理電路的設(shè)計與實現(xiàn)[J].電子技術(shù)應(yīng)用,2010(2):44-46.