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