《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于ARM9的CMOS圖像采集系統(tǒng)的設(shè)計與實(shí)現(xiàn)
基于ARM9的CMOS圖像采集系統(tǒng)的設(shè)計與實(shí)現(xiàn)
來源:微型機(jī)與應(yīng)用2011年第13期
吳文忠
(廣東金融學(xué)院 實(shí)驗(yàn)教學(xué)中心,,廣東 廣州 510521)
摘要: 采用32位ARM微處理器、CMOS圖像傳感器和CPLD為核心器件,設(shè)計實(shí)現(xiàn)面向機(jī)器視覺領(lǐng)域的CMOS圖像采集系統(tǒng),,主要功能模塊有SDRAM存儲單元、圖像采集單元,、以太網(wǎng)傳輸模塊,、UART串口通信模塊、Flash模塊,、電源模塊等,;與傳統(tǒng)的“圖像采集卡-PC-終端控制設(shè)備”模式的機(jī)器視覺系統(tǒng)相比,具有體積小,、成本低,、功耗低、實(shí)時性強(qiáng),、設(shè)計靈活等優(yōu)點(diǎn),。實(shí)驗(yàn)測試結(jié)果表明,該圖像采集系統(tǒng)硬件平臺方案設(shè)計合理,、可行,,具有實(shí)際參考價值。該系統(tǒng)可應(yīng)用于視頻圖像監(jiān)控,、圖像自動檢測,、醫(yī)療及軍事檢測等場所,具有良好的應(yīng)用前景,。
Abstract:
Key words :

摘  要: 采用32位ARM微處理器,、CMOS圖像傳感器CPLD為核心器件,設(shè)計實(shí)現(xiàn)面向機(jī)器視覺領(lǐng)域的CMOS圖像采集系統(tǒng),,主要功能模塊有SDRAM存儲單元,、圖像采集單元、以太網(wǎng)傳輸模塊,、UART串口通信模塊,、Flash模塊、電源模塊等,;與傳統(tǒng)的“圖像采集卡-PC-終端控制設(shè)備”模式的機(jī)器視覺系統(tǒng)相比,,具有體積小、成本低,、功耗低,、實(shí)時性強(qiáng)、設(shè)計靈活等優(yōu)點(diǎn),。實(shí)驗(yàn)測試結(jié)果表明,,該圖像采集系統(tǒng)硬件平臺方案設(shè)計合理,、可行,具有實(shí)際參考價值,。該系統(tǒng)可應(yīng)用于視頻圖像監(jiān)控,、圖像自動檢測、醫(yī)療及軍事檢測等場所,,具有良好的應(yīng)用前景,。
關(guān)鍵詞: ARM9;機(jī)器視覺,;CMOS圖像傳感器,;圖像采集

 機(jī)器視覺在國民經(jīng)濟(jì)、科學(xué)研究以及國防建設(shè)等領(lǐng)域都有著廣泛的應(yīng)用,。在大批量工業(yè)生產(chǎn)過程中,用人工視覺檢查產(chǎn)品質(zhì)量效率低且精度不高,,用機(jī)器視覺可以提高生產(chǎn)效率和自動化程度,。圖像采集系統(tǒng)是機(jī)器視覺系統(tǒng)的重要組成部分,目前圖像采集常用的兩種圖像傳感器為CCD與CMOS圖像傳感器,。CCD一般輸出帶制式的模擬信號,,需要經(jīng)過視頻解碼器得到數(shù)字信號才能傳入微處理器中,而CMOS圖像傳感器直接輸出數(shù)字信號,,可以直接與微處理器進(jìn)行連接,。不同的CMOS圖像傳感器有不同的性能,主要表現(xiàn)在圖像分辨率大小不同,、幀速率不同,、曝光方式不同等,CMOS圖像傳感器可直接通過I2C來設(shè)置圖像分辨率大小及曝光,、增益等參數(shù),,而CCD圖像傳感器則需要對視頻解碼器進(jìn)行設(shè)置來控制圖像的曝光、增益等參數(shù)信息,。相對于CCD圖像傳感器,,CMOS圖像傳感器具有低功耗、小體積,、高速數(shù)據(jù)傳輸和方便控制等優(yōu)點(diǎn),,因此,CMOS圖像傳感器更適用于嵌入式系統(tǒng)應(yīng)用中[1],。本文從實(shí)際應(yīng)用出發(fā),,采用32位ARM9微處理器S3C2410A作為CPU來控制其他功能模塊,設(shè)計實(shí)現(xiàn)面向機(jī)器視覺的CMOS圖像采集系統(tǒng),,主要功能模塊有SDRAM存儲單元,、圖像采集單元,、以太網(wǎng)傳輸模塊、UART串口通信模塊,、Flash模塊,、電源模塊等。與傳統(tǒng)的“圖像采集卡-PC-終端控制設(shè)備”模式的機(jī)器視覺系統(tǒng)相比,,具有體積小,、成本低、功耗低,、實(shí)時性強(qiáng),、設(shè)計靈活等優(yōu)點(diǎn)。
1 系統(tǒng)結(jié)構(gòu)
 典型的機(jī)器視覺系統(tǒng)一般包括圖像采集模塊,、圖像數(shù)字化模塊,、數(shù)字圖像處理模塊、光源系統(tǒng),、智能判斷決策模塊和機(jī)械控制執(zhí)行模塊[2],。其中圖像采集和數(shù)字圖像處理模塊的速度是評價嵌入式視覺系統(tǒng)硬件設(shè)計的性能指標(biāo),文獻(xiàn)[3~6]分別給出了目前常見的四種嵌入式視覺系統(tǒng)結(jié)構(gòu):(1)采用USB接口攝像頭結(jié)構(gòu)[3]:圖像采集部分的硬件用USB接口的CMOS攝像頭,,攝像頭應(yīng)可與集成的USB的CPU接口直接相連,。USB接口可以實(shí)現(xiàn)高速的串行通信,但USB攝像頭要開發(fā)專門的驅(qū)動,,大大增加了軟件的開發(fā)量和難度,。(2)引入異步FIFO結(jié)構(gòu)[4]:在圖像傳感器和主控CPU間采用異步FIFO解決傳感器輸出數(shù)據(jù)頻率和主控CPU采集頻率不匹配的問題,當(dāng)FIFO滿時CPU再快速讀取FIFO數(shù)據(jù),。異步FIFO可以是雙口RAM或者在FPGA內(nèi)開辟,。

 (3)CPLD為核心的圖像采集結(jié)構(gòu)[5]:直接由CPLD根據(jù)圖像傳感器輸出的時序信號,控制SRAM的讀寫,,當(dāng)一幀數(shù)據(jù)信息采集完畢后向CPU發(fā)送采集完畢信號,;CPU需要對圖像進(jìn)行處理時,再通過CPLD到SRAM里讀取數(shù)據(jù),。(4)由外部中斷實(shí)現(xiàn)圖像采集結(jié)構(gòu)[6]:圖像傳感器的幀同步、行同步和像元同步信號分別與CPU的一個外部中斷連接,,CPU根據(jù)中斷次數(shù)來判斷一幀圖像是否采集完成,。
 通過對幾種方案的對比分析,綜合實(shí)際應(yīng)用及開發(fā)難度等因素,,確定系統(tǒng)結(jié)構(gòu)如圖1所示,,系統(tǒng)由圖像采集、圖像緩沖和圖像處理三部分組成,。在圖像緩存中,,CPLD將圖像傳感器采集的10位數(shù)據(jù)移位成32位,,再通過外部請求DMA的辦法,由主控CPU的DMA控制器將32位數(shù)據(jù)送到RAM保存,。這樣可以減少常見中低速圖像采集的資源浪費(fèi),,又避免了CPU響應(yīng)滯后的缺點(diǎn)。

2 硬件設(shè)計
 系統(tǒng)總體硬件結(jié)構(gòu)圖如圖2所示,。其中,,圖像采集器采用柯達(dá)公司的CMOS單色圖像傳感器KAC9638;圖像的緩存由CPLD芯片XC95144和外擴(kuò)SDRM(HY57V561620)組成,;圖像處理核心部分采用Samsung公司的ARM9(S3C2410A),,并外擴(kuò)了UART、以太網(wǎng)通信接口,、USB口及LCD人機(jī)接口,,方便系統(tǒng)調(diào)試和與其他設(shè)備交換數(shù)據(jù)。


 硬件系統(tǒng)工作流程是:(1)系統(tǒng)上電后ARM9通過I2C接口直接對圖像傳感器進(jìn)行初始化,,然后等待上位機(jī)命令,;(2)接收到上位機(jī)命令后,ARM9先進(jìn)行DMA初始化,,然后向CPLD發(fā)送采集命令。CPLD啟動圖像采集并申請ARM9的DMA,,將一幀圖像的數(shù)據(jù)保存到ARM9的SDRAM中,;(3)完成圖像采集后ARM9進(jìn)入DMA完成,進(jìn)行圖像處理并將結(jié)果通過串口輸出,。
2.1 存儲器選擇
 S3C2410A芯片外部可尋址的存儲空間是1 GB,,被分成8個存儲塊,每塊128 MB,,各個存儲塊由片選信號nGCS0~nGCS7譯碼產(chǎn)生,。數(shù)據(jù)總線引腳為DATA0~DATA31共32根,可配置成8 bit/16 bit/32 bit的數(shù)據(jù)寬度,;地址總線引腳為ADDR0~ADDR26共27根,,支持128 MB空間。S3C2410A是32位的微處理器,,外部總線也是32位,,要充分發(fā)揮其32位總線性能優(yōu)勢,應(yīng)采用32位的存儲系統(tǒng),。方法是采用兩片16位數(shù)據(jù)寬度的Flash存儲器芯片并聯(lián)或一片32位數(shù)據(jù)寬度的Flash存儲器芯片,。本設(shè)計采用了兩片Intel的E28F128J3A組成了16M×32bit的NOR Flash,其中一片為高16位,,另一片為低16位,。采用三星公司的兩片半字SDRAM (HY57V561620)共同組成一個16 M×32 bit的SDRAM系統(tǒng),,提高了其與CPU的通信效率。
2.2 通信接口設(shè)計
2.2.1 UART及USB接口設(shè)計

 S3C2410A的UART提供了三個獨(dú)立的異步串行I/O口,,每個串行口可以獨(dú)立地工作在中斷模式和DMA模式,。UART使用系統(tǒng)時鐘,支持最高230.4 kb/s波特率的數(shù)據(jù)通信,。每個UART串行口提供兩個16 B的FIFO分別用來做發(fā)送和接收緩沖,。本系統(tǒng)采用MAX202芯片作為RS-232的接收器/驅(qū)動器,將UART0和UART1連接到9DB接頭與DSP和PC通信,。S3C2410A有2個USB主設(shè)備和1個USB從設(shè)備,,USB設(shè)備控制器允許DMA模式的批量傳輸、中斷傳輸和控制傳輸,。在系統(tǒng)設(shè)計中,,USB設(shè)備用來和PC機(jī)通信供調(diào)試用,因此使用從設(shè)備口(兼容USB Ver1.1標(biāo)準(zhǔn)),。
2.2.2 以太網(wǎng)接口電路設(shè)計
 S3C2410A片上沒有以太網(wǎng)口,,因此必須外加以太網(wǎng)控制器才能擴(kuò)展。系統(tǒng)采用16位以太網(wǎng)控制器CS8900A,,該芯片的特點(diǎn)是:符合IEEE802.3標(biāo)準(zhǔn),,支持全雙工收發(fā)可達(dá)10 Mb/s,內(nèi)置SRAM收發(fā)緩沖,,減輕了對主處理器的開銷,。以太網(wǎng)電路如圖3所示,S3C2410A通過16位數(shù)據(jù)線,,20位地址線連接CA8900A,。片選信號為nGCS3,即將CS8900A的內(nèi)部寄存器和幀緩沖區(qū)映射到S3C2410A的Band4中連續(xù)4 KB的存儲區(qū)中,,主機(jī)可以通過這個存儲空間直接訪問CS8900A的內(nèi)部寄存器和幀緩沖區(qū),。CS8900A與RJ-45接口直接連接一個網(wǎng)絡(luò)變壓器,起到電平轉(zhuǎn)換及電氣隔離的作用,。此外,,CS8900A提供兩種操作模式:I/O模式和內(nèi)存模式,本系統(tǒng)通過CPLD選擇其工作模式,。

2.3 圖像采集模塊電路設(shè)計
 圖像傳感器采用柯達(dá)公司生產(chǎn)的CMOS單色圖像傳感器KAC9638,。KAC9638是高性能、低功耗,、SXGA CMOS有源像元傳感器,,具有以下特點(diǎn):(1)KAC9638是1/2英寸,1 024×1 280有效圖像陣列的CMOS圖像傳感器,在滿足應(yīng)用場合所需的分辨率條件下,,還具有良好的動態(tài)范圍(55 dB),,最小照度(2.40/Lux-sec)等性能;(2)KAC9638內(nèi)置10位的A/D轉(zhuǎn)換器,,直接輸出8位或10位的數(shù)字灰度值,,在保證精度的同時不需另外接A/D轉(zhuǎn)換器,大大簡化外圍電路,;(3)KAC9638具有良好的電源管理功能和低功耗特性,。數(shù)據(jù)傳送時芯片的總功耗為150 mW。此外,,為進(jìn)一步降低系統(tǒng)的功耗,,芯片還具有可編程“上電”和“下電”模式。CMOS圖像傳感器目前普遍采用I2C總線,,本系統(tǒng)通過S3C2410A的I2C總線與KAC9638的SCL,、SDA連接。由S3C2410A直接完成對圖像傳感器的初始化,。KAC9638內(nèi)部嵌入了一個10位A/D轉(zhuǎn)換器,,因而可以同步輸出10位的數(shù)字視頻流,但是S3C2410A具有32位的外部總線,,直接將10位數(shù)據(jù)接到總線上會造成資源浪費(fèi),,降低CPU效率,因此,,KAC9638和S3C2410A之間連接CPLD,,由CPLD完成10位視頻數(shù)據(jù)到32位的轉(zhuǎn)換,圖像采集接口電路結(jié)構(gòu)框圖如圖4所示,。

 為使S3C2410A能像訪問內(nèi)存一樣讀取圖像傳感器的數(shù)據(jù),將CPLD映射到S3C2410A的存儲單元上,。CPLD上的圖像緩存片選信號nGCS4,,地址映射到S3C2410A的Bank4,地址范圍:0x20000000~0x27ffffff,。實(shí)際只用其中的一個地址0x20000000(即DMA的源地址),。圖像傳感器由S3C2410A的clockout0引腳提供。此外,,PCLK,、HREF、VSYNC分別為像素,、行,、幀同步信號;OE為圖像傳感器啟動采集信號,;XINT是ARM9與CPLD的外部中斷聯(lián)絡(luò)信號,;XDREQ和XDACK為S3C2410A的DMA的請求和握手信號,。
3 系統(tǒng)驅(qū)動軟件設(shè)計
3.1 I2C串行總線通信協(xié)議

 I2C總線是嵌入式系統(tǒng)常見的網(wǎng)絡(luò)接口,由SCL(串行時鐘)和SDA(串行數(shù)據(jù))兩根總線構(gòu)成,。該總線有嚴(yán)格的時序要求,,總線工作時,由串行時鐘線SCL傳送時鐘脈沖,,由串行數(shù)據(jù)線SDA傳送數(shù)據(jù),。總線必須由主設(shè)備控制,,主設(shè)備產(chǎn)生串行時鐘控制總線的傳輸方向,,并產(chǎn)生起始和停止條件。I2C總線傳輸一個字節(jié)的時序如圖5所示,。當(dāng)主設(shè)備寫從設(shè)備時,,傳輸?shù)臄?shù)據(jù)要跟有從設(shè)備的地址。從設(shè)備不能主動執(zhí)行數(shù)據(jù)傳輸,,所以主控設(shè)備讀從設(shè)備時必須發(fā)送一個帶有從設(shè)備地址的讀請求,。本系統(tǒng)中ARM9是主設(shè)備,圖像傳感器是從設(shè)備,,ARM9通過I2C總線改寫KAC9638寄存器的值完成初始化,。根據(jù)I2C通信協(xié)議,改變某個寄存器的值的過程是:先發(fā)送CMOS傳感器特定寫地址(7位地址+0),,緊接著發(fā)送需要寫的寄存器的地址,,再發(fā)送數(shù)據(jù);而要讀取某個寄存器的值的過程是:先發(fā)送CMOS傳感器特定寫地址,,緊接著發(fā)送需要讀的寄存器的地址,,再發(fā)送CMOS傳感器特定讀地址(7位地址+1),最后接收數(shù)據(jù),。

3.2 圖像采集CPLD時序控制
 CPLD采集兩個10位像元數(shù)據(jù)組合成32位(不夠的位用0補(bǔ)充)可以提高圖像采集效率,。并且設(shè)計中使用DMA的方式保存圖像數(shù)據(jù),可以減少CPU的開銷,。以CPLD為核心器件設(shè)計的圖像采集邏輯結(jié)構(gòu)圖如圖6所示,。

 邏輯結(jié)構(gòu)圖的工作原理如下:
 (1)CLKOUT0為S3C2410A的輸出時鐘引腳,根據(jù)S3C2410A內(nèi)部寄存器MisCCR中4~6位的不同設(shè)置可以輸出不同的時鐘,,如系統(tǒng)時鐘FCLK,、AHB(內(nèi)部)總線時鐘HCLK和APB(外部)總線時鐘PCLK等。系統(tǒng)將其作為CMOS圖像傳感器的主時鐘輸入MCLK,。
 (2)啟動信號START為S3C2410A的一個I/O,,高電平有效,由于KAC9638的啟動信號OE是低電平有效,所以它們之間要連接一個非門,。
 (3)VSYNC為傳感器的幀同步信號,,輸出一幀有效圖像時該信號一直為高電平,用該信號連接S3C2410A的外部中斷XINT,,使CPU能控制一幀圖像的開始和結(jié)束,。
 (4)D[9:0]為圖像傳感器輸出的數(shù)據(jù)流,D[15:10]位用0填充,,組成16位數(shù)據(jù)輸入到緩沖,。緩沖的寫入允許信號是啟動信號START和幀有效信號VSYNC的邏輯與。在緩沖內(nèi)兩個周期移位成32位數(shù)據(jù),。
 (5)緩沖寫入時鐘WRCLK由傳感器的像元輸出時鐘PCLK提高,,一個周期寫入一個10位A/D值,所以一次輸出32位數(shù)據(jù)時,,輸出時鐘周期是PCLK的二分頻,。并將PCLK的二分頻作為S3C2410A外部DMA的請求信號XDREQ。
 (6)片選信號線nGCS4:作為32位緩沖的控制線,,低電平有效,。在進(jìn)行數(shù)據(jù)采集時將DMA方式的源地址設(shè)置在BANK4范圍內(nèi),讀操作時即選中該緩沖,。
 圖7是用Verilog語言編寫的程序仿真的圖像采集時序圖,。

3.3 DMA方式采集圖像數(shù)據(jù)程序設(shè)計
 系統(tǒng)采集一幀圖像數(shù)據(jù)的流程圖如圖8所示。

 (1)啟動圖像采集:主控CPU從串口或其他通信口接收到采集命令后,,通過START信號線通知CPLD采集信號,,CPLD再通過硬件引腳OE啟動KAC9638采集圖像數(shù)據(jù)。
 (2)DMA初始化:包括DMA的源地址,、目標(biāo)地址,、DMA次數(shù)等初始化。
 (3)開外中斷:當(dāng)一幀數(shù)據(jù)采集完成后,,通過外部中斷通知CPU,。
 (4)DMA數(shù)據(jù)傳輸無需CPU干預(yù),一幀圖像完成后產(chǎn)生中斷,。
 (5)DMA中斷產(chǎn)生并且外部中斷產(chǎn)生才算是一幀圖像采集完成,然后交由主控CPU進(jìn)行處理,。若只有其中一個中斷產(chǎn)生,,并且等待另一個中斷超時,則是在采集過程中丟失了數(shù)據(jù),,采集圖像失敗,。
4 硬件調(diào)試
4.1 硬件調(diào)試環(huán)境

 在系統(tǒng)硬件調(diào)試中,使用集成開發(fā)環(huán)境配合JATG仿真器進(jìn)行調(diào)試是目前采用最多的一種調(diào)試方式[7]。集成開發(fā)環(huán)境選用ARM公司的ADS1.2,。JTAG仿真器也稱為JTAG調(diào)試器,,是通過ARM芯片的JATG邊界掃描口進(jìn)行調(diào)試的設(shè)備。屬于完全非插入式(即不使用片上資源)調(diào)試,。
4.2 硬件調(diào)試步驟及結(jié)果
 (1)BootLoad系統(tǒng)引導(dǎo)測試
先使用英蓓特公司開發(fā)的Flash燒寫工具將BootLoad程序燒寫到Flash,,若在PC超級終端上能正確接收目標(biāo)板的串口返回的啟動信息,表明系統(tǒng)正常運(yùn)行,,可以用ADS下載程序到SDRAM進(jìn)行調(diào)試,。
 (2)圖像傳感器測試
 ①I2C配置測試
 將ADS編譯好的bin文件下載到目標(biāo)板的SDRAM,,超級終端接收到返回的圖像傳感器ID正確,,則表明I2C通信正常。通過I2C配置圖像大小為3(H)×5(V),,用示波器測量傳感器幀同步(vsync),、行同步(hsync)及像元時鐘(pclk)的關(guān)系。如圖9所示,,11個像元時鐘(設(shè)定的每行3個像元加上每行開始的8個全黑像元)對應(yīng)1個行同步時鐘,,圖10顯示了幀同步信號及行同步信號的關(guān)系:5個行同步時鐘對應(yīng)1個幀同步時鐘。測試結(jié)果表明S3C2410A可以正確配置圖像傳感器的工作方式,。

?、趫D像采集測試
 為方便檢驗(yàn)采集到的圖像,將ARM采集到的圖像數(shù)據(jù)通過UART口發(fā)送到PC終端,,再將數(shù)據(jù)組合成圖像顯示,。接收到的數(shù)據(jù)如圖11所示。

 采用CMOS圖像傳感器,、CPLD和ARM9的DMA結(jié)合完成圖像的采集是本系統(tǒng)的特點(diǎn),。該方法提高了圖像的采集速度,減少了CPU的開銷,。CMOS圖像傳感器價格適中,,外圍簡單,且集成I2C接口便于編程控制,;CPLD將CMOS傳感器輸出數(shù)據(jù)移位成32位數(shù)據(jù),,可以使傳感器以更高的速度輸出;ARM9的DMA負(fù)責(zé)圖像采集,,使得CPU可以解放出來處理其他任務(wù),。實(shí)驗(yàn)測試結(jié)果證明,該圖像采集系統(tǒng)硬件平臺方案設(shè)計合理,、可行,。該系統(tǒng)在實(shí)際中可以應(yīng)用于視頻圖像監(jiān)控,、圖像自動檢測、醫(yī)療及軍事檢測等場所,,具有良好的應(yīng)用前景,。
參考文獻(xiàn)
[1] 李繼軍,杜云剛,,張麗華等.CMOS圖像傳感器的研究進(jìn)展[J].激光與光電子學(xué)進(jìn)展,,2009(04):45-52.
[2] 付斌,王科俊,,陸揚(yáng).基于USB2.0的CMOS圖像采集系統(tǒng)的實(shí)現(xiàn)[J].微計算機(jī)信息,,2009(10):96-98.
[3] 李洪宇.機(jī)器視覺圖像采集設(shè)計與研究[D].大慶:大慶石油學(xué)院,2007.
[4] 龍再川,,趙凱生,,洪明堅,等.ARM系統(tǒng)中DMA方式在數(shù)據(jù)采集中的應(yīng)用[J].國外電子元器件,,2007(2):66-69.
[5] 林志琦,,張修謙,富麗,,等.基于TMS320F2812和CPLD的200萬像素數(shù)字圖像采集系統(tǒng)接口的設(shè)計[J].長春理工大學(xué)學(xué)報,,2007,30(2):39-41.
[6] 葉權(quán)來,,鄭黎明.ARM9平臺下的CMOS圖像傳感器數(shù)據(jù)采集系統(tǒng)[J].電子工程師,,2007,33(6):70-72.
[7] 符意德,,陸陽.嵌入式系統(tǒng)原理及接口技術(shù).北京:清華大學(xué)出版社,,2007.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。