陶彥輝,劉克毅
(新疆工程學(xué)院 機械工程系,新疆 烏魯木齊 830000)
FIFO寫數(shù)據(jù)方式是重要的GPIF可編程接口數(shù)據(jù)模式傳輸方法。GPIF為內(nèi)部通用可編程接口,其對外部FIFO或內(nèi)部同步FIFO控制方法采用主機控制,即采用內(nèi)部集成的控制邏輯實現(xiàn)對USB端點FIFO的控制。GPIF模式使用外部同步FIFO芯片時,數(shù)據(jù)傳輸速率達480Mb/s;GPIF模式使用USB自帶的FIFO時,其傳輸速率也可達96Mb/s,所以GPIF模式極適用于高速數(shù)據(jù)傳輸。GPIF可編程接口模式內(nèi)部端點的數(shù)據(jù)傳輸方式有:單字節(jié)讀、寫數(shù)據(jù)傳輸和FIFO讀、寫數(shù)據(jù)數(shù)據(jù)傳輸[1]。
FIFO寫數(shù)據(jù)方式是通過USB芯片主機直接傳輸數(shù)據(jù)到芯片端點的數(shù)據(jù)緩沖區(qū)EPxFIFOBUF邏輯單元之中,繼而再通過程序?qū)懭胪獠縁IFO或內(nèi)部FIFO邏輯。USB芯片F(xiàn)IFO寫數(shù)據(jù)方式如圖1所示。GPIF可編程接口模式中的FIFO寫數(shù)據(jù)方式是通過時鐘觸發(fā)實現(xiàn)動作的,F(xiàn)IFO寫數(shù)據(jù)方式觸發(fā)時序圖如圖2所示。寫波形圖程序初始化設(shè)定GPIFADR
圖1 USB芯片F(xiàn)IFO寫數(shù)據(jù)方式
值為0x0000,隨著IFCLK時鐘的動作,F(xiàn)IFO邏輯中存儲的信息將按時鐘動作次序?qū)懭霐?shù)據(jù)總線之中,同時數(shù)據(jù)指針將伴隨著時鐘的動作而自動增加,這個過程不斷重復(fù)以便完成數(shù)據(jù)的連續(xù)寫入。當(dāng)FIFO邏輯中的數(shù)據(jù)寫完后,GPIF可編程接口將會得到一個觸發(fā)指令,使其處于空閑狀態(tài)[2]。
硬件部分的主控芯片采用EZ-USB系列USB芯片CY7C68013,128腳封裝,數(shù)據(jù)緩存使用CY7C68013自帶的同步FIFO邏輯。D/A轉(zhuǎn)換芯片使用8位DAC的MAX5384,參考電壓為5V,USB接口供電。晶振選用24MHz有源晶振。
圖2 FIFO寫數(shù)據(jù)方式觸發(fā)時序圖
主控USB芯片在以FIFO寫數(shù)據(jù)方式工作時必須采用GPIF模式接法,即需要連接USB芯片的GPIF可編程接口引腳。GPIF可編程接口的引腳FD0與模數(shù)轉(zhuǎn)換模塊MAX5384的引腳DIN連通;USB芯片內(nèi)部同步FIFO邏輯中的數(shù)據(jù)將通過引腳FD0輸送至MAX5384。GPIF可編程接口的引腳FIFOADR1與引腳CS連通,當(dāng)FIFOADR1電壓由低電平至高電平上升時,數(shù)模轉(zhuǎn)換開始[3]。FIFO寫數(shù)據(jù)方式信號發(fā)生部分電路連接如圖3所示。
USB芯片固件程序分為基本固件程序及GPIF波形圖固件程序。基本固件程序由Keil uVision3編寫,GPIF波形圖固件程序由USB芯片的波形圖設(shè)計軟件GPIFDesigner編寫[4]。
2.2.1 基本固件程序
FIFO寫數(shù)據(jù)方式的基本固件程序核心部分是將數(shù)據(jù)由內(nèi)部同步FIFO中寫入到外部DA5384上,其主要代碼如下:
圖3 FIFO寫數(shù)據(jù)方式信號發(fā)生部分電路連接
2.2.2 GPIF波形圖固件程序
GPIF波形圖固件程序的設(shè)計需按電路圖中的USB芯片和D/A轉(zhuǎn)換芯片連接方式完成軟連接之后才能開始,GPIF Designer實現(xiàn)CY7C68013和MAX5384接口軟連接。在GPIF Designer中利用FIFOWr項目完成FIFO寫波形圖固件程序。
上位機應(yīng)用程序由VC++開發(fā),在VC++程序中調(diào)用cyioctl控制函數(shù)的UsbOpenDriver(&hDevice,DeviceName)打開USB設(shè)備接口端口,讀取數(shù)據(jù),并對數(shù)據(jù)進行處理。信號發(fā)生器程序有兩個模塊:信號產(chǎn)生模塊和信號發(fā)送模塊。信號產(chǎn)生模塊主要是利用程序產(chǎn)生正、反鋸齒形信號,正、余弦信號,方波信號和隨機信號等。信號發(fā)送模塊是將程序產(chǎn)生的信號數(shù)據(jù)發(fā)送至USB芯片。
2.3.1 信號產(chǎn)生模塊
信號產(chǎn)生模塊就是生成信號數(shù)據(jù),信號數(shù)據(jù)由公式生成。其中方波信號生成程序的主要代碼如下:
2.3.2 信號發(fā)送模塊
信號發(fā)送模塊的作用是將信號產(chǎn)生模塊產(chǎn)生的數(shù)據(jù)發(fā)送至USB芯片中。信號發(fā)送模塊主要是利用cyioctl控制函數(shù)方法[5]中的 DeviceIoControl()函數(shù)來完成,主要程序代碼如下:
采用示波器調(diào)試后,該虛擬儀器基本實現(xiàn)了電壓信號的發(fā)生,利用USB接頭電源虛擬儀器可以按設(shè)計要求發(fā)出正、反鋸齒形信號,正、余弦信號,方波信號和隨機信號等。虛擬儀器輸出端輸出的信號電壓設(shè)計幅度值為0V~3.2V,輸出的信號電壓設(shè)計頻率為6MHz。但設(shè)計中也存在一些缺陷,硬件部分沒有考慮信號干擾問題,導(dǎo)致示波器調(diào)試時出現(xiàn)信號變形,產(chǎn)生信號的參數(shù)不可調(diào),不能自定義信號,后續(xù)將在設(shè)計中增加自定義參數(shù)模塊。
[1]陳瑩.基于USB的數(shù)據(jù)采集系統(tǒng)研究與設(shè)計[D].西安:西安科技大學(xué),2011:10-12.
[2]錢峰.EZ-USB FX2單片機原理、編程及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2006.
[3]仝瑞普.基于slave FIFO模式USB數(shù)據(jù)傳輸系統(tǒng)設(shè)計與實現(xiàn)[D].南京:南京理工大學(xué),2008:19-26.
[4]兀穎.基于 USB 3.0的數(shù)據(jù)采集系統(tǒng)設(shè)計[D].西安:中國科學(xué)院大學(xué),2013:39-45.
[5]薛園園.USB應(yīng)用開發(fā)技術(shù)大全[M].北京:人民郵電出版社,2007.