楊婭洲,張志偉,史瑞忠,趙輝
(中北大學(xué)信息與通信工程學(xué)院,山西太原, 030051)
隨著現(xiàn)代電子技術(shù)的不斷發(fā)展,在圖像采集和處理領(lǐng)域,CMOS圖像傳感器逐漸被大多數(shù)人所接受。CMOS圖像傳感器的集成度高,操作更加便捷,相較于CCD圖像傳感器有了更大的改進(jìn)。此外CMOS圖像傳感器在抗輻射性能,系統(tǒng)復(fù)雜程度和可靠性,非破壞性讀出方式,優(yōu)化的曝光控制都要優(yōu)于CCD[1-3]。結(jié)合上述的分析比較,本系統(tǒng)設(shè)計(jì)將使用CMOS圖像傳感器作為圖像的采集。
FPGA是一種在線(xiàn)可編程的硅芯片,可以根據(jù)設(shè)計(jì)的需求在線(xiàn)更改設(shè)計(jì)的電路。FPGA可以由硬件描述語(yǔ)言設(shè)計(jì)出要實(shí)現(xiàn)的電路功能,然后編譯工具可以自動(dòng)生成電路結(jié)構(gòu),F(xiàn)PGA的內(nèi)部也會(huì)自動(dòng)的布局布線(xiàn),搭建電路。與ASIC專(zhuān)用電路相比,F(xiàn)PGA是一種半定制的開(kāi)發(fā)芯片,它的開(kāi)發(fā)周期短,可以反復(fù)擦除程序,反復(fù)更改代碼,直到設(shè)計(jì)出最優(yōu)的需求電路,但是ASIC專(zhuān)用集成電路,開(kāi)發(fā)流程復(fù)雜,不易開(kāi)發(fā)。FPGA的另一個(gè)優(yōu)點(diǎn)是并行執(zhí)行機(jī)制,與基于處理器的系統(tǒng)串行執(zhí)行不同。基于處理器的系統(tǒng)的任務(wù)切換由中斷優(yōu)先級(jí)控制,面臨著嚴(yán)格限時(shí)的任務(wù)相互取占的風(fēng)險(xiǎn)。而FPGA的內(nèi)部設(shè)計(jì)是基于硬件電路的思想,是真正意義上并行執(zhí)行操作,符合實(shí)際電路的設(shè)計(jì)過(guò)程,每次執(zhí)行都是為實(shí)現(xiàn)某一電路功能,可以減少處理器系統(tǒng)多線(xiàn)程帶來(lái)的不穩(wěn)定性。由于FPGA并行數(shù)據(jù)的處理能力十分強(qiáng)大,在數(shù)據(jù)的傳輸過(guò)程中又很高速、穩(wěn)定[4],所以FPGA更加適合作為主控芯片。
本系統(tǒng)以FPGA作為主控芯片,首先通過(guò)FPGA配置CMOS圖像傳感器的設(shè)置參數(shù),如曝光補(bǔ)償,自動(dòng)對(duì)焦,圖像增益等,盡可能使采集到的圖像最佳。CMOS圖像傳感器采集外界的圖像信息,圖像信息通過(guò)IIC總線(xiàn)[5]送入FPGA系統(tǒng),然后FPGA系統(tǒng)將處理之后圖像信息緩存在SDRAM中。經(jīng)過(guò)處理后的圖像信息通過(guò)USB接口傳到PC機(jī)上,在計(jì)算機(jī)上用上位機(jī)軟件可以實(shí)現(xiàn)圖像的實(shí)時(shí)顯示和保存。本設(shè)計(jì)系統(tǒng)框圖如圖1所示。
圖1 系統(tǒng)整體框圖
本此設(shè)計(jì)的主控芯片使用的是Cyclone IV系列的EP4 CE10E22C8芯片,該芯片具有10320個(gè)邏輯單元,414Kbit RAM,654個(gè)邏輯塊,IO口的標(biāo)準(zhǔn)電壓為3.3V,集成了加法器和乘法器,該芯片完全滿(mǎn)足設(shè)計(jì)需求。而且芯片的功耗低,性?xún)r(jià)比高,適合用來(lái)批量生產(chǎn)和使用。CMOS圖像傳感器選用豪威公司的OV5640攝像頭,該圖像傳感器可以達(dá)到500W像素,具有自動(dòng)對(duì)焦和防抖技術(shù)可以清楚的采集到圖像信息。由于主控芯片基于SRAM結(jié)構(gòu),在電路掉電后無(wú)法保存數(shù)據(jù)和程序,所以需要配置一片外的flash芯片,配置芯片選用EPCS4,在quartus II軟件中生成jic類(lèi)型的文件后,可以通過(guò)下載器USB Blaster下載到flash中固化程序。時(shí)鐘部分使用了24M的有源晶振,CLK0和CLK1為FPGA提供時(shí)鐘,USB_CLK為CY7C68013芯片提供時(shí)鐘。供電部分選用USB輸入的5V電源經(jīng)過(guò)LDO芯片AMS1117-3.3、 AMS1117-1.2和AMS1117-2.5。輸出的3.3V電壓為VCCIO端口BANK電源和其它電路的工作電源。輸出的1.2V電壓為VCCIOINT供電,輸出的2.5V電壓為PLL所在的BANK單獨(dú)供電。
圖像的傳輸模塊采用USB2.0[6],在接口驅(qū)動(dòng)的部分采用了 USB 驅(qū)動(dòng)芯片 CY7C68013A-56LFXC,它集成了 8051 微控制器和可編程的外圍接口,在傳出數(shù)據(jù)時(shí)可以通過(guò)相應(yīng)的寄存器設(shè)置完成傳輸方向,傳輸速度的配置。USB2.0的數(shù)據(jù)傳輸率可達(dá)到56Mbytes/s。
SDRAM采用型號(hào)為MT48LC16M16A2的芯片。它具有16bits 的數(shù)據(jù)位寬,256M的存儲(chǔ)容量。為了保證圖像的實(shí)時(shí)性和幀率的穩(wěn)定性,對(duì)于圖像的緩存采用了乒乓存儲(chǔ)方式,當(dāng)上一幀圖像數(shù)據(jù)輸出時(shí),下一幀圖像數(shù)據(jù)也可以同時(shí)緩存,這種緩存模式可以保證圖像顯示的不間斷性和顯示出來(lái)的圖像完整性。
FPGA使用 Quartus Ⅱ軟件作為開(kāi)發(fā)工具,軟件程序開(kāi)發(fā)使用 Verilog HDL 語(yǔ)言設(shè)計(jì)。
FPGA內(nèi)部模塊的具體設(shè)計(jì)如圖2所示。
圖2 FPGA 內(nèi)部的模塊
OV5640攝像頭采用的兩線(xiàn)式SCCB總線(xiàn),和IIC總線(xiàn)協(xié)議基本一致,把OV5640攝像頭看作IIC器件。本次設(shè)計(jì)可以用IIC配置模塊主要是通過(guò)對(duì)IIC總線(xiàn)的操作實(shí)現(xiàn)對(duì)OV5640攝像頭參數(shù)的配置和控制,IIC通信協(xié)議分為起始信號(hào)、結(jié)束信號(hào)、應(yīng)答信號(hào)。當(dāng)SCL為高電平時(shí),SDA由高電平向低電平跳變,F(xiàn)PGA向OV5640攝像頭發(fā)送一個(gè)起始信號(hào),等待OV5640攝像頭應(yīng)答。待FPGA收到應(yīng)答信號(hào)之后,開(kāi)始寫(xiě)入OV5640攝像頭器件地址。FPGA再次收到應(yīng)答信號(hào)之后,開(kāi)始寫(xiě)入OV5640攝像頭的寄存器地址加數(shù)據(jù)。待FPGA收到應(yīng)答信號(hào)之后,開(kāi)始對(duì)OV5640攝像頭的下一個(gè)寄存器寫(xiě)入數(shù)據(jù)。配置OV5640攝像頭參數(shù)的數(shù)據(jù)傳輸結(jié)束之后。FPGA會(huì)向OV5640攝像頭發(fā)送一個(gè)停止信號(hào),此時(shí)在SCL信號(hào)為高電平時(shí),SDA信號(hào)從低電平拉高為高電平。總線(xiàn)又回到空閑狀態(tài)。
圖像采集模塊主要是用來(lái)采集初始的圖像數(shù)據(jù),用于后續(xù)的處理模塊調(diào)用。在圖像灰度化的算法中,把一個(gè)具有 RGB三個(gè)顏色通道的圖像數(shù)據(jù)轉(zhuǎn)換為只有一個(gè)灰度通道的圖像數(shù)據(jù),第一步是把RGB565通過(guò)verilog語(yǔ)法的位拼接轉(zhuǎn)成RGB888。
img_y0即為要提取的灰度值,通過(guò)灰度化計(jì)算只是過(guò)濾掉了圖像的顏色信息,而不改變改變圖像的其他特征,極大的保證了圖像的完整性。圖像的灰度化是保留原有像素的透明度的,即透明度不參與像素的運(yùn)算,極大的保證了圖像的完整性。圖像灰度化模塊首先用三個(gè)寄存器分別對(duì)RGB三個(gè)不同顏色數(shù)據(jù)進(jìn)行存儲(chǔ),然后根據(jù)灰度化的公式對(duì)三個(gè)顏色的數(shù)據(jù)進(jìn)行計(jì)算得到一個(gè)灰度化的值,計(jì)算過(guò)程中用到FPGA的乘法器和移位寄存器等。經(jīng)過(guò)灰度化的圖像數(shù)據(jù)可以減少后期二值化處理[7]的運(yùn)算量。下一步是圖像的二值化處理。圖像二值化是將圖像上的像素點(diǎn)的灰度值根據(jù)設(shè)定的閾值設(shè)置為白色或黑色,使圖像顯示黑白效果,凸顯出圖像的特征信息,為后續(xù)應(yīng)用進(jìn)一步簡(jiǎn)化計(jì)算量。這里我們以8bit表示的灰度圖像為例,灰度值的范圍為0~255,二值化就是通過(guò)選取適當(dāng)?shù)拈撝?,與圖像中的256個(gè)亮度等級(jí)進(jìn)行比較。本次設(shè)計(jì)將閾值設(shè)為70,如果亮度值大于設(shè)定的閾值70,像素點(diǎn)就設(shè)置為白色(255),如果亮度值低于閾值70,像素點(diǎn)就設(shè)置為黑色(0)。從而明顯地反映出圖像的整體和局部特征,處理之后的圖像數(shù)據(jù)通過(guò)FIFO接入SDRAM緩存模塊,用來(lái)供外部設(shè)備讀取。
在本次設(shè)計(jì)中FIFO1完成二值化數(shù)據(jù)和 SDRAM 控制器之間的異步數(shù)據(jù)發(fā)送和同步,F(xiàn)IFO2 完成 SDRAM 控制器和USB傳輸模塊之間的異步數(shù)據(jù)發(fā)送和同步。
本系統(tǒng)的上位機(jī)使用賽普拉斯公司 USB Control 來(lái)實(shí)現(xiàn)圖像的顯示和保存。使用 Signal Tap II 抓取的經(jīng)過(guò)FPGA處理的8位圖像數(shù)據(jù)如圖3所示。實(shí)驗(yàn)結(jié)果用深綠色水杯進(jìn)行測(cè)試,實(shí)時(shí)采集到1280×1024 分辨率下 20 幀的原圖像,如圖3所示。經(jīng)過(guò)FPGA處理之后的圖像結(jié)果如圖4所示。由于FPGA的并行處理能力強(qiáng)大,運(yùn)行速度快,可以快速處理采集到的圖像,同時(shí)通過(guò)USB的高速傳輸使采集的圖像實(shí)時(shí)顯示在PC機(jī)上,可以更加精準(zhǔn)的保存實(shí)時(shí)圖像。
圖3 Signal Tap II 數(shù)據(jù)
圖4 實(shí)時(shí)采集的原圖像
圖5 經(jīng)過(guò)FPGA處理之后的圖像
本設(shè)計(jì)將FPGA、CMOS圖像傳感器、USB等電子器件集成在一塊,可以彌補(bǔ)傳統(tǒng)工業(yè)相機(jī)體積龐大,操作不便的缺點(diǎn)。同時(shí)FPGA高速的并行處理能力,不僅可以節(jié)省圖像采集和處理的時(shí)間,而且采集數(shù)據(jù)更加可靠穩(wěn)定。經(jīng)過(guò)實(shí)測(cè),采集圖像的實(shí)時(shí)性高,延遲低,分辨率高。