《電子技術(shù)應用》
您所在的位置:首頁 > 測試測量 > 業(yè)界動態(tài) > 基于USB和DSP的數(shù)據(jù)采集系統(tǒng)的設(shè)計

基于USB和DSP的數(shù)據(jù)采集系統(tǒng)的設(shè)計

《電子技術(shù)應用》2007年第1期
2007-11-07
作者:戴小俊1,2,, 丁鐵夫1, 鄭喜

摘 要:介紹了一種利用USB2.0的高速傳輸特性,,基于USB和DSP的數(shù)據(jù)采集" title="數(shù)據(jù)采集">數(shù)據(jù)采集系統(tǒng)。詳細論述了系統(tǒng)的總體結(jié)構(gòu),、部分硬件設(shè)計,,并簡要敘述了相應固件程序的實現(xiàn)。
關(guān)鍵詞:USB? DSP? FPGA? 高速傳輸

?

測量儀器一般由數(shù)據(jù)采集,、數(shù)據(jù)分析和顯示三部分組成,,而數(shù)據(jù)分析和顯示可以由PC機的軟件來完成,因此只要額外提供一定的數(shù)據(jù)采集硬件就可以和PC機組成測量儀器,。這種基于PC機的測量儀器被稱為虛擬儀器[1],。而在一些數(shù)據(jù)量比較大,、采集時間比較長的場合,就需要采用高速的數(shù)據(jù)傳輸通道,?;谔摂M儀器的思想和高速傳輸通道的要求,設(shè)計了一種基于DSP和USB2.0的高速數(shù)據(jù)傳輸接口,。
1 數(shù)據(jù)采集系統(tǒng)" title="數(shù)據(jù)采集系統(tǒng)">數(shù)據(jù)采集系統(tǒng)硬件
數(shù)據(jù)采集系統(tǒng)由A/D數(shù)據(jù)采集單元,、USB從接口單元、U盤讀寫單元組成,。硬件原理圖如圖1所示,。被測信號經(jīng)A/D轉(zhuǎn)換后寫入FIFO中;當FIFO數(shù)據(jù)半滿后,,產(chǎn)生中斷,,通知DSP進行數(shù)據(jù)壓縮處理;DSP把壓縮好的數(shù)據(jù)依次寫入USB接口芯片" title="接口芯片">接口芯片的4個從FIFO中,,4個從FIFO對應USB的4個端點,DSP一邊寫入數(shù)據(jù),,已寫滿的從FIFO就一邊通過相應端點由SIE把數(shù)據(jù)發(fā)送到上位機,,上位機一邊把收到的數(shù)據(jù)通過多線程存儲到硬盤中,一邊把數(shù)據(jù)解壓并把波形實時顯示出來,。對于少量的數(shù)據(jù),,可以存儲到U盤,送回PC機進行分析顯示,。

?


1.1 A/D采集模塊
作為單通道輸入的MAX1189,,主要控制信號有CS、R/C(Read/Conversion),、EOC(End of Conversion),。圖2為MAX1189的時序圖[2]。如圖2所示,,每個采樣周期長達CS信號的三個周期,。在第一個CS信號的下降沿,如果R/C為低電平,,也就進入了應答模式,,這是開始采樣前必須的準備工作。為了適應不同的輸入極性要求,,MAX1189的內(nèi)部參考電壓可以在每次轉(zhuǎn)換結(jié)束后進行設(shè)置,,這是通過在第二個CS下降沿時,R/C的高低電平變化來控制的,,非常簡便,。低電平時,,ADC內(nèi)部參考電壓無需進行轉(zhuǎn)換,這樣在開始下一個周期的轉(zhuǎn)換時無需等待電壓的變化,。高電平" title="高電平">高電平時,,內(nèi)部參考電壓會進行調(diào)變,這樣在開始下一周期的轉(zhuǎn)換時需要等待大約12?滋s的時間,。在CS信號的第三個下降沿,,EOC信號變?yōu)榈碗娖剑硎静蓸咏Y(jié)束,,此時R/C信號為高電平,,會把采樣數(shù)據(jù)放到總線上,這樣就完成了一個周期的采樣,。采樣模塊的控制信號是由FPGA控制的,。


1.2 DSP與FIFO的連接
主處理器DSP既要控制采集,又要完成數(shù)據(jù)的處理和傳輸,,因此數(shù)據(jù)采集模塊采集來的數(shù)據(jù)不能直接傳送給DSP,這會極大影響DSP的處理效率,。解決辦法是利用數(shù)據(jù)緩沖器如雙口RAM、FIFO等,,對數(shù)據(jù)進行適度緩存,,當緩存的數(shù)據(jù)量達到一個設(shè)定值時,可以通知CPU進行一次高速數(shù)據(jù)傳輸,,將緩存的數(shù)據(jù)一次性地讀入,。在設(shè)計中采用了緩沖,較好地解決了采集端與處理端的速度匹配問題,。
FIFO的讀寫由各自的控制時鐘FIFOR和FIFOW控制,,寫時鐘與采樣時鐘同步,讀時鐘與DSP處理數(shù)據(jù)的時序有關(guān),。當FIFO半滿后,,F(xiàn)PGA會根據(jù)FIFOHF、FIFOE/F,、FIFOPAFE的相應位判斷FIFO是否半滿,,F(xiàn)PGA便向DSP發(fā)出中斷請求。本設(shè)計中采用外部中斷的EXTINT3來作為FIFO緩沖數(shù)據(jù)的DMA傳輸觸發(fā)事件,。DSP響應FPGA中斷請求,,讀取數(shù)據(jù)進行數(shù)據(jù)壓縮。當DSP數(shù)據(jù)處理速度跟不上采集數(shù)據(jù)速度時,,F(xiàn)IFO就會全滿,,F(xiàn)PGA根據(jù)FIFOHF、FIFOE/F、FIFOPAFE相應位狀態(tài)判斷到FIFO已全滿,,于是向USB接口芯片單片機發(fā)出最高級中斷請求,,通知系統(tǒng)數(shù)據(jù)己溢出,采集發(fā)生嚴重錯誤,。
1.3 USB從接口電路
USB從接口單元采用CYPRESS的CY7C68013芯片,。如圖3所示,USB接口芯片CY7C68013由3.3V電源供電,。PAO/INTO#選擇INTO工作方式,,其中斷級別最高,當FIFO全滿造成數(shù)據(jù)溢出導致數(shù)據(jù)采集發(fā)生嚴重錯誤時,,該中斷請求發(fā)生,,系統(tǒng)通知數(shù)據(jù)溢出錯誤,并停止數(shù)據(jù)采集,。RESET#為USB接口芯片復位輸入,。


USB的FDO~FDl5與DSP的I/O數(shù)據(jù)線相連,用于DSP與USB從FIFO通信,,SLWR為寫控制時鐘,。FLAGB、FLAGC用于輸出2,4,6,8相應端點從FIFO的空滿狀態(tài),,以便DSP寫USB從FIFO時獲取空滿狀態(tài),。
FIFOADRO、FIFOADR1用于DSP尋址2,4,6,8相應端點USB從FIFO,,F(xiàn)IFOADRO及FIFOADR1功能真值表如表1所示,。FIFOADRO,、FIFOADR1的初值為00,,對應DSP寫端點2的從FIFO, FPGA對寫USB從FIFO的控制時鐘SLWR計數(shù),當達到512次時,,表示端點2己寫滿,,計數(shù)器清零,F(xiàn)IFOADRO和FIFOADR1的值自加一次變?yōu)?1,,對應DSP寫端點4的從FIFO,。以此類推,DSP依次寫2,4,6,8端點數(shù)據(jù),,當FIFOADRO和FIFOADR1的值為11時,,再自加一次,F(xiàn)IFOADRO和FIFOADR1的值又變?yōu)?0,因此,,DSP可循環(huán)寫2,4,6,8端點,。需要說明的是,當DSP開始寫一新端點的從FIFO之前,DSP要讀一次FLAGB,、FLAGC標志位,,若該端點不空,則等待,;若空,,則進行寫數(shù)據(jù)操作[3]

?


1.4 U盤讀寫單元
此電路單元采用USB主控芯片CH375,。CH375 是一USB總線的通用接口芯片,,支持USB-HOST主機方式和USB-DEVICE/SLAVE設(shè)備方式。此系統(tǒng)中只采用USB的主功能,,用來讀寫U盤[4],。
CH375 芯片的RD#和WR#引腳分別連接DSP的讀選通輸出引腳和寫選通輸出引腳。CS#由地址譯碼電路驅(qū)動,。INT#輸出的中斷請求是低電平有效,,可以連接到DSP的中斷輸入引腳。當WR#為高電平并且CS#和RD#及A0都為低電平時,,CH375中的數(shù)據(jù)通過D7~D0 輸出,;當RD#為高電平并且CS#和WR#及A0都為低電平時,D7~D0上的數(shù)據(jù)被寫入CH375芯片中,;當RD#為高電平并且CS#和WR#都為低電平而A0 為高電平時,,D7~D0上的數(shù)據(jù)被作為命令碼寫入CH375芯片中。CH375內(nèi)置了處理Mass-Storage 海量存儲設(shè)備的專用通訊協(xié)議的固件,,DSP可以直接以扇區(qū)為基本單位讀寫常用的USB 存儲設(shè)備(包括USB硬盤/USB閃存盤/U 盤),。
2 軟件設(shè)計
本設(shè)計的軟件主要由兩大部分組成:USB芯片軟件及DSP通信軟件。其中,,USB芯片軟件的設(shè)計是關(guān)鍵,,它又包括固化程序、驅(qū)動程序,、PC機端應用程序" title="應用程序">應用程序[5]以及DSP端通信接口程序,。
2.1 固化程序
?USB芯片的固化程序主要負責:
(1) 寄存器初始化工作,設(shè)置一些特殊功能寄存器的初值以實現(xiàn)所需的屬性或者功能,;
(2) 輔助硬件完成設(shè)備的枚舉過程,,對主機的設(shè)備請求作出適當?shù)捻憫?BR>(3) 完成中斷處理、數(shù)據(jù)接收及發(fā)送以及對外圍電路的控制,。
2.2 驅(qū)動程序
開發(fā)USB設(shè)備驅(qū)動程序可采用Jungo公司的WinDriverv6.03,,并以VC++6.0作為輔助開發(fā)環(huán)境。利用WinDriver提供的開發(fā)平臺,,用戶即可完成驅(qū)動程序的設(shè)計工作,,剩下的底層細節(jié)由WinDriver內(nèi)核統(tǒng)一處理,從而降低了對開發(fā)者編程能力的要求,同時也大大縮短了開發(fā)周期,。下面對使用WinDriver開發(fā)驅(qū)動程序的步驟作一個簡要說明:
(1) 啟動WinDriver的DriverWizard工具,;
(2) 利用DriverWizard檢測硬件是否正常;
(3) 在DriverWizard中選擇所使用的開發(fā)環(huán)境,,這里使用VC6.0開發(fā)環(huán)境,,并生成驅(qū)動程序代碼;
(4) 對生成的代碼進行修改,,使其符合系統(tǒng)的需要,;
(5) 在WinDriver環(huán)境的用戶模式下調(diào)試驅(qū)動程序。
2.3 PC端應用程序
USB主機應用程序是計算機中完成特定功能的程序,,其關(guān)鍵是實現(xiàn)從USB 外設(shè)讀取或發(fā)送特定數(shù)量的數(shù)據(jù),、USB標準設(shè)備請求和特定的命令等。另外,,可以對數(shù)據(jù)做進一步的處理,,如:存儲、顯示,、快速傅立葉變換等,。
主機應用程序的編寫使用VC編譯環(huán)境中的API函數(shù)實現(xiàn)。應用程序的編程方法與串口編程類似,。首先必須查找設(shè)備,,調(diào)用WIN32函數(shù)CreateFilea( )打開設(shè)備的句柄;然后調(diào)用WIN32函數(shù)DeviceIoControl( )就可以進行數(shù)據(jù)讀寫和控制操作,;最后關(guān)閉設(shè)備句柄,。
2.4 DSP端通信接口程序
在本設(shè)計中,DSP處于主控地位,,通過INT中斷決定什么時候接收USB送來的數(shù)據(jù),,并把接收來的數(shù)據(jù)做簡單的壓縮運算,決定何時往USB發(fā)送這些數(shù)據(jù),。在讀數(shù)據(jù)時,,應首先判斷FX2的FIFO2是否為空,,如果不為空則將數(shù)據(jù)讀進來,,一次讀進一個16位數(shù)。在寫數(shù)據(jù)時,,首先判斷要寫的數(shù)據(jù)個數(shù)是否為512字節(jié)的整倍數(shù),。
由于開發(fā)此系統(tǒng)涉及到USB驅(qū)動開發(fā)以及應用程序的設(shè)計,比較繁瑣,,嘗試利用Mass Storage協(xié)議開發(fā)虛擬設(shè)備,,把數(shù)據(jù)采集卡當作一個Windows的外圍設(shè)備,采用文件系統(tǒng)格式直接以文件形式存儲數(shù)據(jù)。這部分主要是修改CY7C68013的固件程序,,如設(shè)備描述符,、端點描述符,主機會把采集卡認為是一Mass Storage設(shè)備,,然后利用SCSI協(xié)議以及文件系統(tǒng)就可以直接存儲由DSP傳過來的數(shù)據(jù),,這樣就省去了復雜的驅(qū)動和應用程序設(shè)計。
本文介紹了基于USB2.0的16bit數(shù)據(jù)采集系統(tǒng),,采用數(shù)據(jù)壓縮算法完成了數(shù)據(jù)量的壓縮以及高速數(shù)據(jù)傳輸[6],。由于USB的即插即用特性,彌補了傳統(tǒng)數(shù)據(jù)采集卡插拔困難的缺點,,相信隨著技術(shù)的進步,,USB技術(shù)必將得到更廣泛的應用。

參考文獻
[1]? 覃章健,,黃洪全,,葛良全.基于USB2.0的實時數(shù)據(jù)采集系統(tǒng)研究.中國測試技術(shù),2005,,31(5).
[2] ?美國美信公司. MAX-1189 DataSheet.pdf. 2004.1.
[3] ?EZ-USB FX2 Manual technical reference. Cypress Semiconductor, 2002.1.
[4] ?南京沁恒電子有限公司.USB總線接口芯片CH375[DB/OL].http://www.winchiphead.com/product/ch375detail.htm,
???? 2005-05-10.
[5] ?鄧鵬飛,,李小波,張劍云.USB2.0在DSP與計算機通信中的應用[J].計算機數(shù)字與工程[J],2005,(6):99-103.
[6] ?曹軍軍,陳小勤.基于USB2.0的數(shù)據(jù)采集卡的設(shè)計與實現(xiàn)[J],儀器與儀表,,2006,(1):37-38.
[7] ?陶峻,,潘亞濤,陳健.基于DSP的USB傳輸系統(tǒng)的實現(xiàn)[J].電子技術(shù),2002,(3):56-59.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,,以便迅速采取適當措施,,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118,;郵箱:aet@chinaaet.com,。