湯 偉,劉慧忠*,連鈺洋,王 震,裴之勇
(1.陜西科技大學(xué) 電氣與信息工程學(xué)院,陜西 西安710021;2.陜西科技大學(xué) 輕工與能源學(xué)院,陜西 西安710021)
在當(dāng)今的信息化社會里,工業(yè)數(shù)字攝像機不僅應(yīng)用于工業(yè)檢測、印制板檢測、食品飲料檢測等工業(yè)行業(yè),也應(yīng)用于交通、電子警察系統(tǒng)、醫(yī)學(xué)影像采集等生活中,更可以在危險場合中進行視頻監(jiān)控等。工業(yè)數(shù)字攝像機是通過外部信號觸發(fā)采集,實現(xiàn)實時的現(xiàn)場圖像采集,它具有采集圖像方便、傳輸迅速、成像清晰等特點。傳統(tǒng)的工業(yè)攝像機利用計算機對圖像傳感器進行配置控制,有著靈活性差、實時性差和可靠性差等缺點[1]。將工業(yè)數(shù)字攝像機和飛速發(fā)展的FPGA(Field-Programmable Gate Array)理論結(jié)合起來,形成新的工業(yè)數(shù)字攝像機,具有高精度、速度快和靈活性強的優(yōu)勢,在采集原圖像信息的同時還可以對原圖像信息進行處理[2]。
基于FPGA 的工業(yè)數(shù)字攝像機系統(tǒng)主要由3部分組成:圖像采集部分、FPGA 核心控制、圖像實時顯示。圖像采集就是把光信號轉(zhuǎn)換為電信號,將模擬圖像轉(zhuǎn)化為數(shù)字圖像,常見的圖像傳感器有CMOS 圖像傳感器和CCD 圖像傳感器。CDD 圖像傳感器一般用于對圖像要求比較高的場合,其價格昂貴;CMOS 圖像傳感器采集的圖像清晰,價格便宜。FPGA 完成對圖像傳感器的控制、圖像的轉(zhuǎn)化、圖像緩存、接口控制以及顯示控制。圖像的輸出結(jié)果通過液晶屏顯示出來。
本設(shè)計選用美國美光(Micron)公司的CMOS圖像傳感器MT9P031。FPGA 采用Altera公司的EP3C40F484C6芯片,SDRAM 存儲器選用Micron 公司的MT47H64M16HR 存儲器,液晶屏顯示器選用SHARP 公司的3.5in(1in=2.54cm)液晶屏LQ035。工業(yè)數(shù)字攝像機的硬件系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 工業(yè)數(shù)字攝像機的系統(tǒng)結(jié)構(gòu)圖Fig.1 System structure of industrial digital cameras
工業(yè)數(shù)字攝像機的系統(tǒng)的主要設(shè)計集中在FPGA 的編程開發(fā)上,F(xiàn)PGA 主要有以下4個模塊:圖像傳感器的配置模塊、圖像數(shù)據(jù)格式轉(zhuǎn)化模塊、SDRAM 存儲器的控制模塊和液晶屏的控制模塊。
本設(shè)計采用Micron公司的MT9P031CMOS圖像傳感器,其是一種具有2 592H×1 944V 有源像素陣列的1/2.5in的CMOS圖像傳感器,采用10mm×10mm 尺寸的iLCC-48引腳封裝,有48個引腳。MT9P031 的外圍電路如圖2 所示,控制器通過SCLK、S_DATA、TRIGGER 引腳配置圖像傳感器,12位像素數(shù)據(jù)通過D_OUT[11∶0]引腳輸出[3-4]。
圖2 圖像傳感器MT9P031的外圍電路圖Fig.2 External circuit of the image sensor MT9P031
圖像傳感器MT9P031 的相關(guān)操作是通過I2C(Inter-Integrated Circuit)串行接口總線讀/寫對應(yīng)寄存器來完成操作的。I2C 總線是飛利浦公司推出的一種總線技術(shù),它有兩根雙向信號線,一根是數(shù)據(jù)線SDA,另一根是時鐘線SCL。I2C 接口總線定義了幾種不同的傳輸代碼,如表1。
Start bit是起始位,時鐘線為高電平,數(shù)據(jù)線由高電平轉(zhuǎn)低電平時有效;Slave Address是器件地址,包括7個地址位和1個方向位,最低有效位為“0”時表示寫模式,為“1”時表示讀模式;ACK/NoACK 是應(yīng)答位,每一個被傳送的字節(jié)后面都必須跟隨一位應(yīng)答位;8bit message是數(shù)據(jù),每次傳送8 位數(shù)據(jù),其后是應(yīng)答位;Stop bit是停止位,時鐘線為高電平,數(shù)據(jù)線由低電平變?yōu)楦唠娖綍r有效[5-6]。
表1 I2C串行接口傳輸代碼Tab.1 Serial interface transmission code
圖像傳感器MT9P031 輸出12 位像素數(shù)據(jù)時,同時輸出幀有效信號和行有效信號,當(dāng)二者都是高電平時,像素數(shù)據(jù)有效。MT9P031圖像傳感器中共有256個寄存器,寄存器的設(shè)置決定了圖像傳感器的工作狀態(tài)。圖像傳感器配置模塊通過I2C總線接口的SCL 信號和SDA 信號設(shè)置圖像傳感器中寄存器的值,進而控制圖像傳感器的工作狀態(tài)。狀態(tài)機轉(zhuǎn)換如圖3所示。
圖3 圖像傳感器配置模塊狀態(tài)機轉(zhuǎn)換圖Fig.3 Image sensor configuration module state machine transition diagram
圖4 I2 C串行總線寫操作時序仿真圖Fig.4 Simulation diagram of I2 C serial bus write operation
圖像傳感器與總線之間通過高阻態(tài)的形式相連,故應(yīng)答也是高阻。圖像傳感器的地址是BAH,向寄存器R0x2D 中寫入數(shù)據(jù)0x0000F,其時序仿真圖如圖4所示。
圖像傳感器MT9P031輸出的每個像素點是12bits的Bayer格式數(shù)據(jù)。Bayer數(shù)據(jù)格式是一種未經(jīng)過處理加工的數(shù)據(jù)格式,每個像素點只包含RGB顏色空間中的一種顏色分量。其顏色分布形式如圖5所示。為了得到RGB圖像,需要利用其周圍像素點的相關(guān)性估算出缺少的顏色分量,本設(shè)計中采用線性插值算法的方式估算缺少的顏色分量。Bayer格式中,奇數(shù)行是G、B 分量,偶數(shù)行是B、G 分量,偶數(shù)列是G、B 分量,奇數(shù)列是R、G 分量。對于一個2×2的插值窗口,有四種可能的插值情況,分別為:
(1)R=R12, G=G11+G22, B=B21;
(2)R=R11, G=G21+G12, B=B22;
(3)R=R22, G=G12+G21, B=B11;
(4)R=R21, G=G22+G11, B=B12。
算法的實現(xiàn)采用Altera公司的行緩存區(qū)IP核Altshift_taps實現(xiàn)。具體思路就是設(shè)置兩個行列計數(shù)器,列計數(shù)器從場有效信號到達后第一個有效數(shù)據(jù)開始計數(shù),計數(shù)到一行數(shù)據(jù)后,行數(shù)器加一,列計數(shù)器重新計數(shù)。由行列計數(shù)器的奇偶判斷4種插值情況。
圖5 Bayer圖像數(shù)據(jù)格式Fig.5 Bayer image data format
本設(shè)計采用Micron公司的MT47H64M16HR DDR2SDRAM(Double Data Rate 2SDRAM)。
該存儲器的位寬為16 位,單個BANK 有8M個 單 元,共 有8 個BANKS[7]。存 儲 器 配 置 模塊主要包括以下幾個部分:DDR2SDRAM 控制器IP核、狀態(tài)控制模塊和緩存模塊。其原理圖如圖6所示。
圖6 SDRAM 存儲器配置模塊原理圖Fig.6 SDRAM memory configuration module schematics
模塊輸入數(shù)據(jù)時截取圖像轉(zhuǎn)換模塊輸出數(shù)據(jù)中的高10 位,這樣每個像素的RGB 寬度為30位。采用兩個寫FIFO(WFIFO1和WFIFO2)將每個像素的數(shù)據(jù)寫入DDR2 存儲器中,其中WFIFO1的WR1_DATA[15∶0]數(shù)據(jù)總線的[9∶0]位數(shù)據(jù)送紅色分量(R[9∶0]),[14∶10]位數(shù)據(jù)送綠色分量的高5位(G[9∶5]),WFIFO2的WR2_DATA[15∶0]數(shù)據(jù)總線的[9∶0]位數(shù)據(jù)送黑色分量(B[9∶0]),[14∶10]位數(shù)據(jù)送綠色分量的低5位(G[4∶0])。從DDR2器件讀取數(shù)據(jù)時,RFIFO1中RD1_DATA[15∶0]的[9∶0]位送紅色分量通道,RFIFO2 的RD2_DATA[15∶0]的[9∶0]位數(shù)據(jù)送黑色分量通道,RD1_DATA[15∶0]的[14∶10]位與RD2_DATA[15∶0]的[14∶10]位合并成10位送綠色分量通道,最后將這3個R、G、B顏色分量送LCD 控制器模塊,供LCD 液晶屏顯示。DDR2控制器哥。
ALTERA 公司提供的IP核DDRII SDRAM controller with ALTMEMPHY,讀寫FIFO 存儲器通過Quartus II軟件中MegaWizard 工具生成,時鐘由PLL倍頻所得。
LQ035一 款3.5in 彩 色TFT LCD,具 有320RGB×240的高分辨率,接口支持數(shù)字24位RGB/串行RGB/CCIR656/CCIR601等標準。
LQ035 的 控 制 采 用SPI(Serial Peripheral Interface--串行外設(shè)接口)總線,其時序如圖7。液晶屏控制器通過SPI接口對LQ035的內(nèi)部寄存器進行讀寫,從而控制LQ035液晶屏的顯示模式。完成一次SPI接口總線的讀寫需要24個時鐘周期,前6個位數(shù)據(jù)為設(shè)備號,第7位為數(shù)據(jù)與命令的區(qū)分位,第8位為讀寫位,[15∶8]位為寄存器地址位,[7∶0]位為數(shù)據(jù)位。SPI接口與I2C接口總線不同,其沒有應(yīng)答位。其狀態(tài)轉(zhuǎn)換圖與圖像傳感器的配置類似,由于篇幅原因,不再詳細敘述。
圖7 SPI接口時序圖Fig.7 SPI Interface Timing Diagram
本設(shè)計中圖像傳感器MT9P031的工作模式采用VGA 640×480 分辨率binning模式,向圖像傳感器寄存器寫入數(shù)據(jù)控制MT9P031的工作狀態(tài)。圖像傳感器MT9P031外部輸入25 MHz的時鐘,其通過片上鎖相環(huán)倍頻達到96 MHz。圖像傳感器工作時各數(shù)據(jù)計算結(jié)果如表2。
表2 MT9P031行周期和幀周期Tab.2 Row time and frame time of MT9P031
續(xù)表
其列有效像素(Column_Size)有2 599個,行有效像 素(Row_Size)有1 919 個,Column_Skip 和Row_Skip寄存器為3,Horizontal_Blank寄存器為0,Vertical_Blank為25,Row_Bin與Column_Bin確定HBMIN為1 458PIXCLK。最后得出其行周期為37.05μs,幀周期為18.75ms,每秒可產(chǎn)生53幀圖像。
圖8 系統(tǒng)測試結(jié)果圖Fig.8 System test results figure
完成系統(tǒng)設(shè)計后,使用Quartus II軟件編譯設(shè)計代碼。本測試采用Altera 公司的Cyclone III系列芯片EP3C40F484芯片,編譯結(jié)果顯示共需約5 000個邏輯單元,占芯片總量的13%,3 704個寄存器和117個引腳,占芯片總量的35%。將設(shè)計代碼下載到FPGA 芯片中后,系統(tǒng)開始采集并顯示圖像。圖8為系統(tǒng)所拍攝的室內(nèi)圖像,測試結(jié)果可看到系統(tǒng)實時圖像顯示清晰,畫面穩(wěn)定,功能符合設(shè)計要求。
基于FPGA 的工業(yè)數(shù)字攝像機系統(tǒng)采用FPGA 芯片作為數(shù)據(jù)核心處理單元,CMOS 圖像傳感器負責(zé)獲取圖像數(shù)據(jù),F(xiàn)PGA 完成對圖像傳感器芯片的控制、數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)緩存及接口控制,VGA 控制器完成實時圖像的輸出和顯示。一個完整的工業(yè)數(shù)字攝相機不僅包括圖像的采集顯示,還包括圖像的及時處理算法(如濾波處理等),這些處理算法數(shù)據(jù)運算量大,同時實時性要求高,基于FPGA 的工業(yè)數(shù)字攝像機可滿足以上傳統(tǒng)攝像機達不到的要求。同時該系統(tǒng)設(shè)計靈活,在設(shè)計過程中采用了Altera IP核,簡化了設(shè)計過程,還可將不同的處理算法移植到該系統(tǒng),滿足不同的場合不同的算法處理,適合應(yīng)用到多種工業(yè)現(xiàn)場。
[1] 樊博,王延杰,孫宏海,等.FPGA 實現(xiàn)高速實時多端口圖像處理系統(tǒng)的研究[J].液晶與顯示,2012,28(4):620-625.Fan B,Wang Y J,Sun H H,et al.High speed real-time multiport image processing system realized on FPGA[J].Chinese Journal of Liquid Crystals and Displays,2012,28(4):620-625.(in Chinese)
[2] 劉波文,張軍,何用.FPGA 嵌入式項目開發(fā)[M].北京:北京航空航天大學(xué)出版社,2012:117-331.Liu B W,Zhang J,He Y,et al.FPGA Embedded Project Development[M].Beijing:Beihang University Press,2012:117-331.(in Chinese)
[3] 劉延飛,郭鎖利,王曉戎,等.基于Altera FPGA/CPLD 的電子系統(tǒng)設(shè)計及工程實踐[M].北京:人民郵電出版社,2009:252-288.Liu Y F,Guo S L,Wang X R,et al.Electronic System Design and Engineering Practice Based on Altera FPGA/CPLD [M].Beijing:Posts &Telecom Press,2009:252-288.(in Chinese)
[4] 朱奕丹,方怡冰.基于FPGA 的圖像采集與VGA 顯示系統(tǒng)[J].計算機應(yīng)用,2011,31(5):1258-1261.Zhu Y D,F(xiàn)ang Y B.Image acquisition and VGA display system based on FPGA[J].Journal of Computer Applications,2011,31(5):1258-1261.(in Chinese)
[5] 左事君,劉新朝,何巧珍,等.基于FPGA 的高清視頻采集與顯示系統(tǒng)設(shè)計[J].電子技術(shù)應(yīng)用,2011,37(06):56-58.Zuo S J,Liu X C,He Q Z,et al.Design of high definition video acquisition and display system based on FPGA[J].Application of Electronic Technique,2011,37(06):56-58.(in Chinese)
[6] 郭永彩,蘇渝維,高潮.基于FPGA 的紅外圖像實時采集系統(tǒng)設(shè)計與實現(xiàn)[J].儀器儀表學(xué)報,2011,32(3):514-519.Guo Y C,Su Y W,Gao C.Design and implementation of real-time infrared image collection system based on FPGA[J].Chinese Journal of Scientific Instrument,2011,32(3):514-519.(in Chinese)
[7] 鄭佳,李永亮,李娜.基于FPGA 的DDR 控制器的實現(xiàn)[J].無線電工程,2007,37(10):23-25.Zheng J,Li Y L,Li N.Implementation of DDR controller based on FPGA[J].Radio Engineering,2007,37(10):23-25.(in Chinese)