沈玉德,韓桂英
(大連民族學院 信息與通信工程學院,遼寧 大連 116600)
隨著社會的不斷發展,工業生產和生活領域有許多圖像采集和監控需求,并且要求也越來越高,大部分傳統的圖像監測裝置已經不能滿足現狀而且有價格高、體積大、功耗大、速度慢、精度低等缺點,已不利于大范圍的使用和推廣。本方案正是以此為出發點,設計一種基于CPLD和AVR的高速、低功耗圖像采集系統。目前圖像采集常用的兩種圖像傳感器為CCD傳感器和CMOS傳感器。CCD傳感器一般輸出模擬信號,需要經過視頻解碼器解碼得到數字信號再傳入CPU中處理,而CMOS圖像傳感器直接輸出的是數字信號,可與CPU直接相連,且可直接通過IIC總線來設置圖像分辨率大小、曝光、增益等參數,無需再用視頻解碼器。相對于CCD圖像傳感器而言,CMOS圖像傳感器具有功耗低,體積小,傳輸數據速度快且方便控制等優點。因此CMOS圖像傳感器更適合應用在微處理器中[1]。CPLD是復雜的可編程邏輯器件,規模大,適合在時序邏輯電路中的應用,在信號處理領域也有廣泛的應用[2-4]。根據總體功能設計可用CPLD增加系統的集成性,擴展性等,本系統采用CPLD完成系統所需的邏輯功能以及和SRAM構成快速緩存裝置,實現頻率不同的AVR單片機和CMOS圖像采集系統的連接,同時提高了整個系統模塊的控制和開發空間。與傳統模式的圖像采集系統相比,該系統可以快速采集圖像信息以及進行簡單的分析處理,且體積小、成本低、功耗低、設計靈活等特點,便于大范圍的推廣。
本采集系統包括了圖像采集、邏輯控制、圖像緩存與圖像處理、傳輸等4個部分。對比CCD與CMOS圖像傳感器的各自優缺點,系統選擇CMOS數字圖像傳感器來構建本系統的數字化采集單元;圖像存儲部分采用CPLD和SRAM相結合的方案對圖像數據進行高速緩存;將AVR單片機作為圖像采集系統的核心模塊控制各個子模塊,并對被采集圖像數據進行簡單處理和傳輸;利用RS232總線作為圖像采集系統與任務機進行圖像數據傳輸的接口,用按鍵及TFT彩屏實現人機交互,方便系統調試,用SD卡進行圖像的外部存儲。系統上電時,AVR單片機通過SCCB總線對CMOS圖像傳感器(OV7670)進行初始化[2],CMOS圖像傳感器通過CPLD將采集的圖像數據寫入SRAM中,AVR單片機通過對CPLD內部總線的控制,讀取SRAM中的圖像數據并進行簡單的處理,隨后可用TFT彩屏顯示圖像,并可通過按鍵模塊選擇將一幀圖像數據存儲在SD卡中或通過UART模塊傳輸給上位機進行進一步處理,從而實現了圖像采集系統的數字化采集、處理、傳輸和存儲。整個系統由AVR單片機控制管理,大大提高了系統的實時性、穩定性和易維護性。系統總體框圖如圖1所示。

圖1 系統總體框圖Fig.1 System framework
本系統采用高性能、低功耗的AVR單片機ATmega128作為系統核心控制器[3-4],主要完成對CMOS圖像傳感器、TFT彩屏、SD卡的初始化以及控制CPLD內部總線等。CPLD使用Altera公司的EPM240T100C5芯片,生成系統所需的各種邏輯電路和快速讀寫SRAM功能,大大提高了圖像的采集效率。圖像采集部分使用CMOS圖像傳感器OV7670作為圖像采集器, OV7670具有標準的SCCB接口,適合低壓嵌入式應用,用戶可以完全控制圖像質量、數據格式和傳輸方式,并且價格低廉是本系統的不二選擇。SRAM選用ISSI公司的IS61LV5128AL芯片,3.3V供電,存儲容量為512K字節。本系統選用2.8英寸TFT帶觸摸屏的ILI9325模塊,人機交互快捷方便。圖像存儲部分采用自彈式SD卡,具有通用性并且便于PC讀取的特點。
本系統從實際出發,采用性價比高的8位AVR微處理器ATmega128作為CPU來控制其他功能模塊,主要功能模塊有圖像采集模塊、CPLD模塊、SRAM緩存模塊、TFT顯示模塊、UART模塊、SD卡存儲模塊等。硬件系統工作流程為:1)系統上電后AVR通過SCCB總線接口對圖像傳感器OV7670進行初始化;2)CPLD根據圖像傳感器的時序信號進行讀寫SRAM,將一幀完整的圖像數據保存在SRAM中;3)一幀圖像采集完成后,AVR通過CPLD讀取SRAM中的數據,進行簡單的圖像處理并且用TFT顯示,或者通過串口輸出給上位機。
本系統采用的Atmega128單片機、MAX II系列CPLD、ILI9325 TFT、SRAM以及SD卡都統一使用3.3 V電壓,通過電源轉換芯片AMS1117-3.3可將+5 V轉換成+3.3 V電壓,提供穩定的供電電壓。OV7670所需電源模擬電壓在2.45~3.0 V之間,可直接串接二極管壓降0.7 V后獲得2.6 V的電源模擬電壓,十分簡化了電源電路的復雜程度。

圖2 系統主控電路Fig.2 Main system circuit
ATmega128的外圍電路主要包括晶振模塊、復位電路、JTAG在線調試下載接口、SPI模式的SD卡接口電路(可同時接ISP下載接口)、串口通信電路、SCCB總線、TFT控制電路以及數據傳輸電路等。各模塊設計為:1)CPU晶振選用16 MHz;2)JTAG接口與IEEE.1149.1標準兼容,遵循JTAG標準的邊界掃描功能;3)SD卡選擇SPI模式,其接口定義如圖3所示,可同時連接ISP模式的程序下載接口;4)大部分的AVR芯片都含有一個硬件串行通信接口UART,利用該接口可以實現控制系統與PC的通信構成RS-232 的網絡,AVR系統輸出圖像就可以在PC機上顯示;5)利用2個I/O口分別接OV7670圖像傳感器的SDA和SCL,生成SCCB總線,ATmega128直接完成對圖像傳感器的初始化;6)通過對TFT讀寫的控制,PC口經8位數據模式連接TFT數據接口,實現人機交互,方便系統調試。

圖3 系統主控電路Fig.3 SPI mode of SD
CPLD選 用 了Altera公 司MAX II系 列 中 的EPM240T100C5芯片,通過AVR單片機控制主要完成對SRAM的快速讀寫,以及生成系統所需邏輯單元;由AVR單片機控制其內部的總線開關確定把CMOS圖像采集系統采集的數據是否繼續發送,同時單片機控制CPLD內部總線,使CPLD快速對SRAM進行讀寫操作,并且通過外部中斷的方式判斷一幀數據的完整性。CPLD對應連接SRAM的地址總線、數據總線和控制總線,同時擴展了信號的輸入總線和輸出總線,并在CPLD內部構成系統所需邏輯單元,簡化了電路的復雜度,提高可靠性[5-6]。SRAM選用ISSI公司的IS61LV5128AL,512k×8bit,總共有(A0...A18)共 19根地址線,8位數據線。圖像傳感器輸出為8位數據,ATmega128位8位微處理器,選用8位SRAM降低了程序編寫的難度。SRAM接口圖如圖4所示。
綜上所述,系統在硬件結構設計方面完善合理,盡可能的降低成本,充分利用資源,同時也提高了系統的工作效率和可靠性。
AVR單片機程序的設計,選用了AVR_GCC編輯器,該編輯器更新速度快,代碼效率高,可移植性強。并在AVR Studio中實現模擬仿真。PC機通過JTAG接口,對ATmega128單片機進行在線編程和調試。
本系統的單片機程序由主程序和中斷子程序構成。系統上電后,單片機的主程序對各模塊進行初始化,并且完成對顯示屏的寫操作,等待中斷響應通過CPLD從SRAM中讀取一幀圖像數據;主程序還有掃描判斷語句,判斷是否有外部觸發,如果有外部觸發通過CPLD內部總線,只讀取SRAM中一幀圖像數據,通過簡單處理以圖片形式存儲在SD卡中或通過串口發送并在PC機上進行進一步處理。程序流程如圖5所示。

圖5 系統程序流程圖Fig.5 System program flowchart
CPLD于單片機相比,一個非常重要的優勢在于它的高速性。尤其在圖像采集等需要高速傳輸數據時非常合適。本系統用的是VHDL語言在QUARTUS Ⅱ 平臺進行了調試、仿真、下載。
本系統中CPLD的核心作用是快速讀寫SRAM,主要通過CPLD的內部接口管理電路來實現。系統啟動后:CPLD通過OV7670圖像傳感器為每一個像素數據產生的像素時鐘PCLK、行有效時鐘HREF和幀同步時鐘VSYNC,用來生成讀寫SRAM相應的地址信號;根據地址信號和AVR單片機提供的讀寫信號來判斷CPLD接口電路的工作狀態;最后CPLD根據工作狀態,控制數據/地址接口模塊進行對應的操作。值得注意的是,CPLD內部各個程序單元都統一由OV7670的像素時鐘PCLK驅動,達到整體系統同步的作用。SRAM的片選信號CE、寫有效信號WE和讀有效信號OE中,根據實踐經驗可以直接將片選信號CE和讀有效信號OE接地,只根據寫有效信號WE就可以控制CPLD對SRAM的讀寫操作,這樣一來不僅節省了CPLD和SRAM連接的管腳數,同樣也簡化了軟件的編寫。在仿真軟件中達到了預期的邏輯控制,確保了圖像傳感器的正常高速工作。仿真波形如圖6所示。

圖6 仿真波形Fig.6 SRAM simulation waveform
該系統基于CPLD與AVR構建了圖像采集的硬件平臺,軟件設計采用模塊化設計思想,提高了系統的可靠性和維護性。該系統在系統在QUARTUS II軟件和AVR Studio中進行了仿真并達到了預期的控制和采集功能。該系統具有功耗低、體積小、傳輸數據速度快且控制方便等優點,在圖像檢測及相應的領域具有一定的推廣價值。
[1]吳文忠.基于ARM9的CMOS圖像采集系統的設計與實現[J].微型機與應用,2011,30:83-86.
WU Wen-zhong.Design and implementation of CMOS image acquisition system based on ARM9[J].Microcomputer & Its Applications,2011,30:83-86.
[2]AH_wangph.OV7670/0V7171CMOS VGA圖像傳感器[EB/OL].[2010-12-09]. http://wenku.baidu.com/view/796a397816888486 8762d671.html.pdf.
[3]金鐘夫.AVR ATmega128單片機C程序設計與實踐[M].北京:北京航空航天大學出版社, 2008.
[4]黃任.AVR單片機與CPLD/FPGA綜合應用入門[M].北京航空航天大學出版社, 2004.
[5]王道憲.CPLD/FPGA編程邏輯器件應用與開發[M].國防工業出版社, 2004.
[6]孔德明.基于CPLD控制的實用數據采集系統[J].電子產品世界, 2005,19:101-103.
KONG De-ming.A practical data acquisition system based on CPLD[J].Electronic Engineering and Product World, 2005,19:101-103.