基于FPGA和USB的圖像采集系統(tǒng)設計與實現(xiàn)
張莉1 李敬文 1 陳永祿2
(1.蘭州交通大學 電子與信息工程學院,甘肅 蘭州 730070;2. 西北工業(yè)大學 自動化學院,陜西 西安 710072 )
摘 要 介紹了基于FPGA及USB的高速圖像采集系統(tǒng)的實現(xiàn)方法。通過介紹Altera公司的現(xiàn)場可編程門陣列(FPGA)以及USB通用接口芯片CY7C68013的性能特點,提出了基于FPGA的數(shù)據(jù)采集系統(tǒng)硬件平臺設計方案;討論并給出了軟件設計方法,包括FPGA內(nèi)部功能模塊程序設計、驅(qū)動程序設計以及應用程序設計等。
關(guān)鍵字 FPGA;USB;數(shù)據(jù)采集
1 引言
隨著圖像處理技術(shù)迅猛發(fā)展,對圖像采集設備要求也越來越高。USB接口設備支持即插即用,安裝方便,易于擴展,且USB 2.0能達到480 Mb/s的理論傳輸速度,非常適合在類似于圖像采集的高速數(shù)據(jù)采集系統(tǒng)中應用,本文采用USB接口總線實現(xiàn)了高速的數(shù)據(jù)傳輸。
在超高速數(shù)據(jù)采集方面,F(xiàn)PGA(現(xiàn)場可編程門陣列)有著單片機和DSP所無法比擬的優(yōu)勢。新一代的FPGA甚至集成了中央處理器(CPU)或數(shù)字信號處理器(DSP)的內(nèi)核,在一片F(xiàn)PGA上進行軟硬件協(xié)同設計,為實現(xiàn)片上可編程系統(tǒng)(SOPC)提供了強大的硬件支持。 FPGA時鐘頻率高,內(nèi)部延時小,現(xiàn)在器件的最高工作頻率可達300MHz;硬件資源豐富,單片集成的可用門數(shù)達1000萬門;全部控制邏輯由硬件資源完成,速度快,效率高;組成形式靈活,可以集成外圍控制、譯碼和接口電路[1]。因此,本系統(tǒng)中用FPGA來控制A/D和USB控制芯片的運行。
2 圖像采集系統(tǒng)設計方案
本系統(tǒng)主要由主機(能支持USB2.0協(xié)議的PC機)、USB微處理器、FPGA邏輯控制器和A/D轉(zhuǎn)換模塊組成,如圖1所示。主機是系統(tǒng)的終端,主要完成數(shù)據(jù)接收、數(shù)據(jù)處理、數(shù)據(jù)顯示以及數(shù)據(jù)保存等功能;USB微處理器主要完成數(shù)據(jù)采集、數(shù)據(jù)通信及控制等功能;FPGA器件作為本系統(tǒng)的控制核心,用來控制處理A/D、D/A,進行實時信號采集和傳輸控制;A/D轉(zhuǎn)換電路實現(xiàn)模擬信號的數(shù)字化。其數(shù)據(jù)傳輸分兩部分:控制信號傳輸和采集數(shù)據(jù)傳輸。
系統(tǒng)工作時,通過用戶界面的采集開始按鈕發(fā)出圖像采集命令,USB微處理器接收到主機采樣控制信號后,通過在FPGA芯片中的邏輯控制電路控制圖像采集,向數(shù)據(jù)轉(zhuǎn)換電路送出相應的控制信號即采樣模式控制字,之后數(shù)據(jù)采集分系統(tǒng)自主控制轉(zhuǎn)換,把模擬視頻信號轉(zhuǎn)化成數(shù)字視頻值號,同時分離出同步信號和狀態(tài)信號。這些信號進入邏輯控制芯片F(xiàn)PGA中,用FPGA作為采樣控制器,將數(shù)字視頻信號實時存入微控制器的可配置端點緩沖區(qū)FIFO中。當FIFO容量達到指定程度后,自動將數(shù)據(jù)打包傳送給USB總線,USB微處理器依次取走批量數(shù)據(jù),傳輸給主機,在采樣數(shù)據(jù)傳輸給主機時,USB微處理器持續(xù)讀取采樣的結(jié)果,保證了連續(xù)高速采集數(shù)據(jù)的實時性。同時在主機端可以進行圖像的實時顯示、保存等功能。
3 系統(tǒng)硬件設計
3.1 FPGA的設計流程
FPGA的開發(fā)采用后的是一種“自頂向下”的方法,首先從系統(tǒng)設計入手,在頂層進行功能方框的劃分和結(jié)構(gòu)設計,在方框圖一級進行仿真、糾錯,并用硬件描述語言對高層次的系統(tǒng)進行描述,在系統(tǒng)一級進行驗證。然后用綜合優(yōu)化工具生成具體門電路的網(wǎng)表,其對應的物理實現(xiàn)級可以是印刷電路板或?qū)S眉呻娐?。由于設計的主要仿真和調(diào)試過程是在高層次上完成的,這不僅有利于早期發(fā)現(xiàn)結(jié)構(gòu)設計上的錯誤,避免設計工作的浪費,而且也減少了邏輯功能仿真的工作量,提高了設計的一次成功率[2]。
3.2 USB接口設計
USB 接口芯片選用Cypress公司EZ-USB FX2芯片CY7C68013A。EZ-USB芯片可以將固件儲存在主機上,而不必裝入芯片內(nèi)。在開機或是連接時,再將固件加載到芯片內(nèi)。此芯片使用每個指令周期4個脈沖周期,每一個指令需要1到5個指令周期,CPU是以24MHz來驅(qū)動。
大部分的EZ-USB芯片支持最大數(shù)目的端點:一個控制端點,30個額外的端點地址以及所有的4種傳輸類型。EZ-USB的固件有兩個來源:外部的EEPROM的初始化字節(jié)的內(nèi)容,以及芯片的EA輸入狀態(tài)[3]。
該芯片的內(nèi)部結(jié)構(gòu)如圖2所示。
圖2 CY7C68103(EZ-USB-FX2)的邏輯區(qū)塊圖
4 系統(tǒng)軟件設計
4.1 固體程序設計

圖3 固件流程圖
設備固件是設備運行的核心,可采用匯編語言或單片機C語言設計。只有在該程序運行時,外設才能被稱為具有給定功能的外部設備。固件程序負責初始化各硬件單元,重新配置設備及A/D采樣控制。其主要功能是控制CY7C68013接收并處理USB驅(qū)動程序的請求,控制芯片CY7C68013接收應用程序的控制指令,控制A/D模塊的數(shù)據(jù)采集與存儲,通過CY7C68013緩存數(shù)據(jù)并傳輸至主機等。利用EZ-USB FX2系列提供的固件結(jié)構(gòu),可以簡化固件開發(fā)。用戶僅需提供其USB描述符,以及實現(xiàn)外圍功能的程序代碼,即可完成完全兼容的USB設備設置。
固件程序框圖如圖3所示。
4.2 驅(qū)動程序設計
在Windows內(nèi)執(zhí)行的USB設備驅(qū)動程序,必須符合Microsoft定義的Win32驅(qū)動程序模型(WDM)規(guī)格。在USB通信中使用的分層式驅(qū)動程序模型,每一層的驅(qū)動程序分別處理USB通信的某一部分。使用分層式的模型結(jié)構(gòu)會比較有規(guī)律,因為相同的工作可以使用單一驅(qū)動程序來做即可,不需要包含在每一個驅(qū)動程序內(nèi)。按照下面步驟,可以實現(xiàn)對USB設備的配置[4]:
(1)USB設備的驅(qū)動程序模型必須是WDM驅(qū)動程序,這說明驅(qū)動程序中必須有AddDevice這個成員函數(shù),而且function.h文件中必須有下列定義:
#define DRIVER_FUNCTION_ADD_DEVICE
#define DRIVER_FUNCTION_PNP
#define DRIVER_FUNCTION_POWER
(2)USB設備是即插即用設備,因此在驅(qū)動程序中要聲明以下的類的成員函數(shù)。
KPnPDevice,KUSBLowerDevice,KUSBInterface
在驅(qū)動程序結(jié)束處還要聲明一個數(shù)據(jù)類型:KUSBPipe
(3)在設備對象類中,必須重載OnStartDevice和OnStopDevice函數(shù)。
(4)在設備類構(gòu)造體中,首先調(diào)用類KUSBLowerDevice中的成員函數(shù)來初始化其實例,然后調(diào)用類KUSBInterface中的成員函數(shù)來初始化其實例,最后再調(diào)用類KUSBPipe中的成員函數(shù)來初始化其例程。
(5)在成員函數(shù)OnStartDevice中,調(diào)用函數(shù)。
KUSBLowerDevice::ActivateConfiguration配置設備,這個函數(shù)把類KUSBPipe和KUSBInterface對象聯(lián)系在一起,以及USB管道和它的接口鏈接起來。
(6)在成員函數(shù)OnStopDevice中,調(diào)用KUSBLowerDevice::DeActivateConfiguration。
應用程序與驅(qū)動程序完成USB通信的結(jié)構(gòu)圖如圖4所示。
圖4 應用程序與驅(qū)動程序完成USB通信的結(jié)構(gòu)
4.3 用戶應用程序設計
使用VC6.0作為應用程序的開發(fā)環(huán)境。由于通用驅(qū)動程序GPD即ezusb.sys提供了基本USB設備請求和數(shù)據(jù)傳輸?shù)挠脩裟J浇涌?,用戶模式應用程序通過Win32函數(shù)DeviceIo Control0給設備驅(qū)動器發(fā)送請求。Ezusb.sys提供了基本設備請求、批量讀寫、同步讀寫等一系列IOCTL函數(shù)。通過調(diào)用這些函數(shù),可以打開設備句柄、進行讀寫操作、關(guān)閉設備句柄,從而對USB設備進行相應操作。同時應用程序還需對接收的圖像數(shù)據(jù)進行整合、處理,實現(xiàn)圖像顯示以及保存功能。
5 結(jié)束語
本文的創(chuàng)新點是充分發(fā)揮了CY7C68013的優(yōu)勢,利用FX2的內(nèi)部可編程狀態(tài)機GPIF實現(xiàn)了與FPGA的連接,系統(tǒng)升級方便。待系統(tǒng)的硬件和軟件逐步完善以后,再實現(xiàn)對實時的視頻信號采集與傳輸,并將進一步把DSP引入該系統(tǒng),利用DSP在數(shù)字信號處理方面的優(yōu)勢(一般計算機完成一次乘累加運算需要11個機器周期,而DSP完成同樣的運算只需要1個機器周期),在PC外部對采集的數(shù)據(jù)進行預處理,然后再通過USB總線送入主機進一步處理,DSP與USB2.0技術(shù)的結(jié)合將大大改善大容量數(shù)據(jù)傳輸?shù)乃俣绕款i問題,在圖像和視頻傳輸?shù)葦?shù)據(jù)量較大且對實時性要求較高的領域必將有廣闊的應用前景。隨著USB口的進一步普及和計算機的發(fā)展,本文設計的這種USB圖像采集系統(tǒng)必將得到更加廣泛的應用。
參考文獻
[1] 李洪偉,袁斯華編著. 基于Quartus II的FPGA/CPLD設計. 北京:電子工業(yè)出版社 2006
[2] 劉皖,何道君,譚明編著. FPGA設計與應用. 北京:清華大學出版社 2006
[3] 蕭世文編著. USB2.0硬件設計. 北京:清華大學出版社. 2002
[4] 張惠娟,周利華,翟鴻鳴編著. Windows環(huán)境下的設備驅(qū)動程序設計. 西安:西安電子科技大學出版社 2002
基金項目:圖的染色理論研究 基金項目批準號:10771091
收稿日期:4月15日 修改日期:4月22日
作者簡介:張莉:(1982-)女,籍貫:甘肅,在讀研究生,研究方向:計算機測量與控制;李敬文:(1965-)男,籍貫:遼寧,碩士生導師,研究方向:計算機應用,圖染色。
|