針對高性能CMOS圖像傳感器的工業(yè)數字攝像機的設計與應用,介紹利用高檔微控制器AT89LS8252,設計數字相機內部FPGA邏輯配置與初始化的控制硬件電路和軟件編程。并應用AT89LS8252的SPI(Serial Peripheral Interface)串行外設接口擴展了多通道數模轉換器、DataFlash存儲器、溫度傳感器和MCU的Flash串行模式編程,可以作為多SPI接口外設的典型應用。 隨著(zhù)CMOS圖像傳感器技術(shù)的不斷完善,其性能不斷提高,目前很多機器視覺(jué)和數字圖像處理應用中開(kāi)始使用CMOS圖像傳感器設計數字攝像機,CMOS圖像傳感器具有集成度高,功耗低,數字圖像數據輸出,控制時(shí)序簡(jiǎn)單等特點(diǎn)。因此本文提出一種利用MCU實(shí)現CMOS數字攝像機控制系統硬件電路設計方案。設計中充分考慮到工業(yè)相機功能的擴展和相機自身圖像預處理功能的二次開(kāi)發(fā),所以采用高性能的MCUAT89LS8252來(lái)實(shí)現攝像機內部FPGA(Field Programmable Gate Array)邏輯配置、在線(xiàn)邏輯下載、攝像機參數下載初始化、溫度讀出等控制功能。 CMOS數字攝像機總體系統描述 CMOS數字攝像機機,一般由:圖像傳感器、時(shí)序邏輯產(chǎn)生單元、圖像預處理單元、配置初始化控制單元、圖像數據輸出接口單元五部分組成。下面對各部分簡(jiǎn)要介紹: CMOS圖像傳感器的時(shí)序邏輯一般由FPGA產(chǎn)生,由3.3V或5V單電源對系統供電,也有一些高級CMOS圖像傳感器需要外加一組電壓較低的參考模擬電壓,在系統提供的驅動(dòng)時(shí)序下按像素時(shí)鐘速率將8bit或10bit的像素數據分單通道和多通道連續輸出。 設計中應用Xilinx公司的高性能的FPGAXC2VP4來(lái)完成驅動(dòng)時(shí)序發(fā)生和圖像預處理功能。攝像機內部對圖像數據進(jìn)行預處理,有利于上位機圖像處理算法的簡(jiǎn)化,更能夠提高圖像處理的實(shí)時(shí)性。根據不同機器視覺(jué)應用的需要,可以為攝像機提供多種不同圖像預處理方案,如灰度變換、動(dòng)態(tài)范圍擴展、中值濾波等,用戶(hù)可以選擇相應的配置文件下載到攝像機中,就能夠實(shí)現需要的圖像預處理功能。高級用戶(hù)也可以根據自己應用需求,自行開(kāi)發(fā)攝像機內部FPGA圖像預處理的算法,嵌入到FPGA配置邏輯文件中,按照設計中的配置方法下載到攝像機中,就可實(shí)現用戶(hù)自己開(kāi)發(fā)的圖像預處理功能。數字攝像機圖像數據輸出接口也有很多種方式,可以采用CameraLink接口、以太網(wǎng)接口、USB接口、1394接口等。 文中重點(diǎn)描述攝像機的邏輯配置和初始化控制單元的設計,以AT89LS8252為控制器完成對FPGA的并行配置功能,應用MAX3232串口芯片和上位機通信,完成接收FPGA配置文件和初始化攝像機的參數,并將攝像機內部溫度數據發(fā)送給上位機。LT1665產(chǎn)生一組CMOS傳感器需要的8路模擬參考電壓。應用DataFlashAT45DB041B保存FPGA上電配置文件。溫度傳感器MAX6630可獲得攝像機內部的工作溫度數據,對于攝像機工作環(huán)境溫度過(guò)高的情況,可以向上位機發(fā)出報警,并采用制冷措施。攝像機總體結構,見(jiàn)圖1。 圖1 CMOS數字攝像機總體框圖 FPGA并行邏輯配置的MCU實(shí)現 設計中應用XilinxFPGAXC2VP4為時(shí)序邏輯控制單元和圖像預處理核心,因此每次FPGA上電開(kāi)始工作前必須將配置文件加載到FPGA內部的SRAM中,這個(gè)過(guò)程就是FPGA的邏輯配置(FPGAConfiguration)。為實(shí)際應用和攝像機圖像處理功能二次開(kāi)發(fā)需要著(zhù)想,采用并行邏輯配置的方法,可以減少攝像機的配置時(shí)間。設計中使用高檔MCUAT89LS8252作為攝像機的控制器,實(shí)現RS232串口下載配置文件在電路邏輯配置ICR(In-CircuitReconfigurability)功能。為攝像機的使用者開(kāi)發(fā)攝像機FPGA圖像預處理功能提供了方便的配置方法,從而不用使用FPGA專(zhuān)門(mén)的配置芯片和配置電纜,減少了攝像機的端口,提高了攝像機的性能。 AT89LS8252是低功耗、高性能CMOS8位微控制器,內含8KB的Flash程序存儲器可用SPI串行接口總線(xiàn)進(jìn)行程序下載和2KB的EEPROM,256B的片內RAM,32線(xiàn)可編程I/O,3個(gè)定時(shí)器,9個(gè)中斷源、6個(gè)中斷矢量,可編程UART串口,具有低功耗節電方式,可低電壓供電、工作電源范圍2.7~6V,最高工作頻率為12MHz,可編程看門(mén)狗定時(shí)器WDT,雙數據指針DPTR0和DPTR1,具有斷電標志位POF,SPI外圍器件擴展串行口。設計中選用體積最小的44引腳TQFP貼片封裝AT89LS8252_12AI,工作電壓為3.3V,工作頻率為11.0592MHz。所有器件都使用3.3V單電源供電,采用3.3VCMOS數字電路邏輯電平。單片機的引腳定義和FPGA配置接口電路的實(shí)現見(jiàn)圖2。 圖2 MCU接口定義原理圖 XilinxFPGA有5種配置模式,本設計中使用的是被動(dòng)并行配置模式(Slave SelectMAP Mode),這種模式的優(yōu)點(diǎn)是在相同的配置時(shí)鐘下比其它串行配置模式速度都要快。串行配置方式MCU需要8個(gè)機器周期配置一個(gè)字節,而并行模式只需要一個(gè)機器周期配置一個(gè)字節。被動(dòng)并行配置方式過(guò)程:首先系統檢測電源,HSWAP_EN信號把用戶(hù)定義I/O引腳上拉,INIT、DONE為低后配置存儲器清空。然后檢測PROG_B是否由低變高,若為高電平再一次清除存儲器。釋放INIT_B,采樣配置模式引腳設置,接下來(lái)進(jìn)行數據并行邏輯配置。AT89LS8252可以把存儲在DataFlashAT45DB041B中的配置文件讀出按照上述配置時(shí)序來(lái)進(jìn)行配置。 表1 FPGA配置引腳功能說(shuō)明 注:信號CS_B、RDWR_B、BUSY、INIT_B、D0-D7在配置結束后復用為A4-A7。 系統初始化和擴展SPI外設器件設計 攝像機啟動(dòng)邏輯配置成功后,需要對系統進(jìn)行初始化,也就是對攝像機的一些功能參數寄存器進(jìn)行設置。根據攝像機工作過(guò)程和功能一般有如下一些需要初始化的功能參數: *攝像機工作模式參數:有FreeRun模式、測試圖像輸出模式,外部觸發(fā)模式等。 *傳感器輸出幀頻參數:控制傳感器每秒鐘輸出圖像的幀數。 *傳感器積分時(shí)間參數:控制傳感器一幀圖像的曝光時(shí)間。 *輸出圖像AOI參數:對傳感器靶面中感興趣區域圖像的輸出,需要設定行和列兩個(gè)參數。 *圖像數據輸出位數參數:對于高精度的圖像傳感器,可以選擇8bit,10bit,12bit圖像輸出。 *DigitalShift功能參數:對傳感器像素Nbit的數值進(jìn)行左移或右移操作后輸出。 *Binning模式輸出參數:有水平Binning,垂直Binning,全幅Binning。Binning就是一種像素合并技術(shù),把相鄰的兩或多個(gè)像素值合并成一個(gè)像素值,降低了圖像分辨率,但是能夠提高攝像機的感光靈敏度。*參考電壓參數:包括增益電壓參數、偏置電壓參數、自校準電壓參數。雖然CMOS圖像傳感器已經(jīng)把ADC器件集成到傳感器內部,但是在攝像機不同的工作情況下,還需要改變這些參考電壓,使攝像機輸出用戶(hù)滿(mǎn)意的圖像。設計中使用的LT1665可以輸出8路0~3.3V模擬參考電壓。 圖3 SPI串口外設擴展電路原理圖 這些初始化參數的寄存器,一部分是設置在FPGA中,另一部分是外設器件的工作寄存器。但是這些寄存器中的參數,在每次掉電后會(huì )自動(dòng)清空,因此設計中使用AT89LS8252的EEPROM來(lái)保存這些參數。參數由RS232串口接收按參數地址存入EEPROM,使用MCU的雙DPTR,DPTR1寫(xiě)入,DPTR0讀出,使得對EEPROM的讀寫(xiě)更加便捷。每次參數下載成功或上電后,由初始化程序把EEPROM的參數通過(guò)MCU和FPGA之間的數據總線(xiàn)和地址總線(xiàn)寫(xiě)入參數寄存器,其它外設器件的參數寄存器由SPI總線(xiàn)寫(xiě)入。 因為FPGA信號CS_B、RDWR_B、BUSY、INIT_B、D0-D7在邏輯配置結束后可作為普通用戶(hù)定義I/O,所以在配置結束后這些引腳被定義為MCU和FPGA初始化的數據總線(xiàn)(P0口)和地址總線(xiàn)(P2口)。 SPI(SerialPeripheralInterface)是MOTOROLA公司推出的一種同步串行外設接口,允許MCU與各個(gè)廠(chǎng)家生產(chǎn)的標準外圍設備直接接口,以串口方式交換信息。SPI使用4條線(xiàn):串行時(shí)鐘SCK,主機輸入\從機輸出數據線(xiàn)MISO(簡(jiǎn)稱(chēng)SO),主機輸出\從機輸入數據線(xiàn)MOSI(簡(jiǎn)稱(chēng)SI)和低電平有效的從機選擇線(xiàn)CS。MCU與外設器件的SCK、MOSI、MISO、都是同各端相連。擴展多個(gè)外設器件時(shí),SPI無(wú)法通過(guò)數據線(xiàn)譯碼選擇,故SPI接口的外設器件都有片選端CS,MCU通過(guò)不同的I/O口線(xiàn)來(lái)分時(shí)選通相應外設器件。設計中SS為DataFlash器件的片選信號,TCS為溫度傳感器的片選信號,VCS為多路DA器件的片選信號。圖3為SPI外設器件擴展電路原理圖。 SPI串行擴展系統中MCU作為主器件,啟動(dòng)一次傳送時(shí)產(chǎn)生8個(gè)時(shí)鐘由SCK送出,作為同步時(shí)鐘控制數據的輸入與輸出,對于不同的外設器件,SCK的上升沿還是下降沿進(jìn)行輸入輸出操作是不同的,有四種操作模式。4種SPI操作模式和LSB在先輸出或MSB在先輸出、主從模式、SPI時(shí)鐘速度選擇都可以在MCU的SPI控制寄存器(SPCR)中設置,其中CPHA、CPOL是設置時(shí)鐘SCK相位和極性,決定SPI的操作模式。設計中使用了三種操作模式,DataFlash器件工作在模式3、溫度傳感器工作在模式1、多路DA器件工作在模式0。 軟件設計 完成系統邏輯配置和初始化的軟件設計包括兩部分:MCU的匯編語(yǔ)言編程和PC上位機的VC編程。 MCU程序設計 AT89LS8252按照圖4的主程序流程圖來(lái)完成邏輯配置和攝像機的參數初始化。下面詳細闡述一下FPGA配置文件下載到DataFlash的程序設計。因為AT45DB041B的存儲空間為4,325,376bit,完全能夠存儲3,006,496bit的配置文件。 圖4 MCU主程序流程圖 AT45DB041B內部存儲結構是將整個(gè)存儲空間分為2048個(gè)page,每個(gè)page為264Byte,經(jīng)由兩個(gè)264Byte的buffer來(lái)實(shí)現連續的數據寫(xiě)入。過(guò)程是先進(jìn)行寫(xiě)buffer1操作,然后發(fā)由buffer1寫(xiě)page命令,在buffer1寫(xiě)page的同時(shí)進(jìn)行buffer2操作,當buffer2寫(xiě)完后再發(fā)由buffer2寫(xiě)page命令,再一次進(jìn)行buffer1的寫(xiě)操作,如此反復操作實(shí)現了AT45DB041B的連續快速寫(xiě)入。讀出時(shí)可以用連續陣列讀命令就可以完成配置文件數據連續讀出。 上位機編程 上位機客戶(hù)端程序通過(guò)VisualC++軟件編寫(xiě),完成配置文件按page容量264字節的分割串口傳送,初始化參數串口傳送,按串口通信協(xié)議發(fā)送接收控制命令字,配置文件初始化參數的回讀校驗,用戶(hù)窗口界面等功能。 結束語(yǔ) 設計中充分利用AT89LS8252的SPI接口、EEPROM、雙DPTR、可編程UART串口等資源,是該高檔MCU的設計的典型應用。創(chuàng )新應用高檔MCU AT89LS8252 對FPGA并行配置的方法,CMOS攝像機參數初始化的方法,多SPI外設器件擴展的設計,為高性能CMOS數字攝像機的研究和FPGA圖像處理核心的二次開(kāi)發(fā)建立了功能全面的控制系統,并且為其它數字攝像機系統設計應用系統提供了成功范例。 |