文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2015.11.019
中文引用格式: 魏麗玲,朱平,石永亮. 基于FPGA的圖像采集與存儲(chǔ)系統(tǒng)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2015,41(11):67-69,73.
英文引用格式: Wei Liling,Zhu Ping,Shi Yongliang. Design of image capture and storage system based on FPGA[J].Application of Electronic Technique,2015,41(11):67-69,73.
0 引言
隨著科學(xué)技術(shù)的發(fā)展,視覺技術(shù)被廣泛應(yīng)用于軍事、工業(yè)以及測(cè)控領(lǐng)域。視覺是人們主要的信息源,通過圖像采集系統(tǒng)對(duì)周圍環(huán)境圖像數(shù)據(jù)進(jìn)行采集,這樣機(jī)器能夠替代人類獲得環(huán)境信息,此種系統(tǒng)被廣泛應(yīng)用于測(cè)控系統(tǒng),以獲得飛行器的環(huán)境參數(shù)。利用高性能的FPGA控制圖像數(shù)據(jù)的采集與圖像數(shù)據(jù)處理,通過交錯(cuò)雙平面技術(shù)對(duì)處理后的圖像數(shù)據(jù)進(jìn)行存儲(chǔ),通過USB總線,將處理后的數(shù)據(jù)傳輸給上位機(jī)進(jìn)行解包并顯示。
1 系統(tǒng)的總體設(shè)計(jì)
系統(tǒng)工作過程:采集存儲(chǔ)模塊的FPGA通過模擬IIC時(shí)序,對(duì)CMOS模擬傳感器進(jìn)行初始化與配置,并采集圖像數(shù)據(jù),通過信號(hào)調(diào)理電路將采集的模擬信號(hào)進(jìn)行濾波放大,并將調(diào)理放大的信號(hào)進(jìn)行A/D轉(zhuǎn)換后輸出給FPGA,F(xiàn)PGA將接收的數(shù)據(jù)通過內(nèi)部FIFO緩存后傳輸給Flash芯片進(jìn)行存儲(chǔ)。FPGA回讀Flash芯片內(nèi)的數(shù)據(jù),通過LVDS總線(型號(hào)DS92LV1023)發(fā)送給監(jiān)控讀數(shù)模塊,通過USB接口(型號(hào)CY7C68013)傳輸給上位機(jī),由上位機(jī)對(duì)圖像進(jìn)行解碼顯示。系統(tǒng)的原理框圖如圖1所示。
FPGA采用XILINX公司的XC3S1400AN,內(nèi)部包含有豐富的RAM資源,便于數(shù)據(jù)采集[1-3]。
2 CMOS圖像數(shù)據(jù)采集模塊
通過FPGA對(duì)CMOS圖像采集模塊進(jìn)行邏輯控制。其中采集模塊主要完成對(duì)視頻圖像的采集,對(duì)采集到的信號(hào)進(jìn)行模數(shù)轉(zhuǎn)換,并對(duì)此信號(hào)進(jìn)行低通濾波及放大后[4-7]傳輸給圖像數(shù)據(jù)存儲(chǔ)模塊進(jìn)行存儲(chǔ)。
在本文的系統(tǒng)設(shè)計(jì)中,對(duì)圖像數(shù)據(jù)的采集是核心模塊。視頻前端應(yīng)用CMOS圖像傳感器(型號(hào)OV7670),輸出的圖像數(shù)據(jù)最高為30幀/s,30萬像素,芯片內(nèi)部的寄存器達(dá)201個(gè),通過FPGA控制單片機(jī)對(duì)傳感器寄存器進(jìn)行配置。單片機(jī)采用IIC總線為傳感器寄存器串行傳輸數(shù)據(jù),在對(duì)IIC總線時(shí)序控制中,利用54個(gè)SDA時(shí)鐘傳輸32 bit的配置數(shù)據(jù),其中前兩個(gè)時(shí)鐘周期完成時(shí)序模塊的初始化,延時(shí)4個(gè)周期后,啟動(dòng)串行數(shù)據(jù)的傳輸,傳送完一個(gè)字節(jié)數(shù)據(jù)后等待從接收器(CMOS圖像傳感器)的應(yīng)答信號(hào),當(dāng)單片機(jī)確定從接收器正確接收后,啟動(dòng)發(fā)送下一個(gè)字節(jié)的配置數(shù)據(jù),直到發(fā)送完4個(gè)字節(jié)的配置數(shù)據(jù)后,發(fā)送終止信號(hào),結(jié)束IIC總線的傳輸,完成傳感器的初始化,從而控制圖像數(shù)據(jù)的質(zhì)量、圖像數(shù)據(jù)的制式以及數(shù)據(jù)的傳輸方式。其中IIC總線傳輸模塊的時(shí)鐘為30 kHz。
CMOS圖像傳感器將采集到的光信號(hào)轉(zhuǎn)換為模擬信號(hào),被轉(zhuǎn)換的模擬信號(hào)很微弱,為達(dá)到A/D轉(zhuǎn)換芯片對(duì)處理信號(hào)電平的要求,需要對(duì)傳感器輸出的模擬信號(hào)進(jìn)行放大處理,經(jīng)A/D轉(zhuǎn)換芯片將模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)輸出。FPGA的解碼部分通過控制3種同步信號(hào)(像素時(shí)鐘同步信號(hào)、行同步信號(hào)和場(chǎng)同步信號(hào)),進(jìn)而得到8 bit的RGB制式的圖像數(shù)據(jù)信號(hào)。圖像傳感器的分辨率為640×480,行同步信號(hào)為“1”時(shí)有效,每行顯示的有效數(shù)據(jù)是640 bit;每列顯示的有效數(shù)據(jù)是480 bit,場(chǎng)同步信號(hào)為“0”時(shí)輸出轉(zhuǎn)化后的有效數(shù)據(jù),當(dāng)其變?yōu)椤?”時(shí),表明一幀圖像數(shù)據(jù)傳輸完成。采集到的數(shù)據(jù)通過FPGA芯片的內(nèi)部FIFO緩存。
3 圖像數(shù)據(jù)存儲(chǔ)模塊
本文采用的FPGA片內(nèi)存儲(chǔ)器有限,考慮到大數(shù)據(jù)量的圖像數(shù)據(jù),需要外部擴(kuò)展存儲(chǔ)器,選用K9WBG08U1M型號(hào)的Flash,此Flash最大存儲(chǔ)4 GB圖像數(shù)據(jù),以頁為單位對(duì)數(shù)據(jù)進(jìn)行讀寫,以塊為單位對(duì)數(shù)據(jù)進(jìn)行擦除,包含3種地址控制信號(hào)(列地址、行地址和塊地址)。圖像存儲(chǔ)模塊在上電初始化后,F(xiàn)PGA控制時(shí)序擦除Flash內(nèi)存,并等待存儲(chǔ)視頻前端采集到的圖像數(shù)據(jù)。采用交錯(cuò)雙平面式對(duì)接收到的圖像數(shù)據(jù)進(jìn)行存儲(chǔ),將1片4 GB的Flash分成2片2 GB的Flash,對(duì)其中一片F(xiàn)lash進(jìn)行寫操作的同時(shí)對(duì)另一片F(xiàn)lash進(jìn)行讀操作,此種交錯(cuò)方式使輸入輸出不間斷,實(shí)現(xiàn)圖像數(shù)據(jù)的無縫處理,提高數(shù)據(jù)傳輸與處理的效率。
為了方便對(duì)圖像數(shù)據(jù)進(jìn)行讀寫操作,引入3種控制信號(hào):地址使能信號(hào)、命令使能信號(hào)和數(shù)據(jù)鎖存信號(hào)。在FPGA的邏輯時(shí)序控制中,當(dāng)?shù)刂肥鼓苄盘?hào)有效為“0”時(shí),F(xiàn)PGA的8個(gè)I/O口并行輸出地址,在對(duì)Flash芯片進(jìn)行尋址時(shí)寫入32 bit地址(13 bit是字節(jié)地址,19 bit是頁地址和塊地址),分5次輸出;當(dāng)命令使能信號(hào)有效為“0”時(shí),8位I/O口輸出命令,當(dāng)數(shù)據(jù)鎖存信號(hào)有效為“0”時(shí),8位I/O口輸入8 bit圖像數(shù)據(jù)。圖2所示為Flash存儲(chǔ)模塊工作時(shí)序流程圖。
4 監(jiān)控讀數(shù)模塊
通過綜合考慮,圖像數(shù)據(jù)存儲(chǔ)模塊與監(jiān)控讀數(shù)模塊通過低壓差分傳輸方式(LVDS)進(jìn)行數(shù)據(jù)的傳輸,此種傳輸方式適用于高速短距離傳輸,但是,在利用普通雙絞線進(jìn)行數(shù)據(jù)的傳輸時(shí),信號(hào)的傳輸損耗隨著信號(hào)頻率的增加而增加?;诖朔N限制,在圖像數(shù)據(jù)的發(fā)送端加入驅(qū)動(dòng)以增強(qiáng)信號(hào),在圖像數(shù)據(jù)的接收端采用均衡補(bǔ)償法補(bǔ)償信號(hào)在傳輸過程中的損耗。
此監(jiān)控讀數(shù)模塊采用LVDS接口和422接口與圖像數(shù)據(jù)存儲(chǔ)模塊進(jìn)行通信。LVDS接口主要負(fù)責(zé)存儲(chǔ)命令的下發(fā)和回讀存儲(chǔ)模塊的圖像數(shù)據(jù),422接口主要負(fù)責(zé)對(duì)存儲(chǔ)模塊狀態(tài)的監(jiān)控,通過回讀存儲(chǔ)模塊的狀態(tài)信息以確定存儲(chǔ)模塊是否正常工作。圖3所示為監(jiān)控讀數(shù)模塊與數(shù)據(jù)存儲(chǔ)模塊的LVDS接口示意圖。存儲(chǔ)模塊接收到讀數(shù)命令,通過LVDS接口,將數(shù)據(jù)傳輸給監(jiān)控讀數(shù)模塊,監(jiān)控讀數(shù)模塊通過檢測(cè)數(shù)據(jù)的高兩位判斷是否為有效數(shù)據(jù)。若為有效數(shù)據(jù),將此數(shù)據(jù)存儲(chǔ)到外部的FIFO中,若為無效數(shù)據(jù),則丟棄。監(jiān)控讀數(shù)模塊向存儲(chǔ)模塊發(fā)送啟動(dòng)存數(shù)數(shù)據(jù)命令后,數(shù)據(jù)存儲(chǔ)模塊通過422接口將本身的狀態(tài)信息發(fā)送給數(shù)據(jù)監(jiān)控模塊,通過這些狀態(tài)信息能夠判斷存儲(chǔ)模塊是否正常工作。
5 系統(tǒng)測(cè)試結(jié)果
在對(duì)本系統(tǒng)的硬件和軟件模塊調(diào)試成功后,對(duì)系統(tǒng)的總體功能進(jìn)行測(cè)試。CMOS模擬傳感器對(duì)圖像數(shù)據(jù)進(jìn)行采集后,通過數(shù)據(jù)存儲(chǔ)模塊對(duì)采集到的數(shù)據(jù)進(jìn)行存儲(chǔ),由監(jiān)控讀數(shù)模塊通過LVDS接口回讀圖像數(shù)據(jù),并將此數(shù)據(jù)通過USB接口上傳給上位機(jī),上位機(jī)對(duì)此數(shù)據(jù)進(jìn)行解碼并顯示,圖4所示為還原后的圖像數(shù)據(jù)。其中FAF6為幀開始標(biāo)志,幀標(biāo)志前面的3個(gè)字節(jié)是幀計(jì)數(shù)。
6 結(jié)論
本文利用CMOS傳感器實(shí)現(xiàn)了對(duì)圖像數(shù)據(jù)實(shí)時(shí)采集的要求。應(yīng)用K9WBG08U1M型號(hào)的Flash芯片通過交叉雙平面技術(shù)對(duì)此圖像數(shù)據(jù)進(jìn)行存儲(chǔ),實(shí)現(xiàn)了數(shù)據(jù)的無縫傳輸,以流水線的數(shù)據(jù)傳輸方式提高了本系統(tǒng)的傳輸效率。監(jiān)控讀數(shù)模塊通過LVDS接口和422接口對(duì)存儲(chǔ)模塊的數(shù)據(jù)進(jìn)行回讀并在上位機(jī)上顯示。系統(tǒng)充分利用了具有高性能的XC3S1400AN(所用FPGA型號(hào))芯片,提高了系統(tǒng)的運(yùn)行速度,具有很高的參考價(jià)值。
參考文獻(xiàn)
[1] 吳萌.一種高速、大容量圖像存儲(chǔ)系統(tǒng)設(shè)計(jì)[D].西安:中國科學(xué)院西安光學(xué)精密機(jī)械研究所,2009.
[2] 邢彥梅,董曉倩,張園.一種基于JPEG2000算法的圖像傳感器設(shè)計(jì)[J].電視技術(shù),2012,36(11):44-46.
[3] 王小艷,張會(huì)新,孫永生,等.Camera link協(xié)議和FPGA的數(shù)字圖像信號(hào)源設(shè)計(jì)[J].國外電子元器件,2008,16(7):59-61.
[4] 任偉,張彥軍,白先民.基于LVDS的高速數(shù)據(jù)傳輸裝置的設(shè)計(jì)[J].科學(xué)技術(shù)與工程,2012,12(29):7759-7763.
[5] 郭錚,劉文怡,馮妮.基于FPGA多通道高速數(shù)據(jù)采集存儲(chǔ)器設(shè)計(jì)[J].電視技術(shù),2012,37(17):55-57.
[6] 蔣鵬,吳建峰,董林璽.一種改進(jìn)的無線多媒體傳感器網(wǎng)絡(luò)分布式圖像壓縮算法[J].傳感技術(shù)學(xué)報(bào),2012,25(6):815-820.
[7] 張健,吳曉冰.LVDS技術(shù)原理和設(shè)計(jì)簡(jiǎn)介[J].電子技術(shù)應(yīng)用,2000,26(5):59-61.