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

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

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

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

?

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

?


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


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


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

?


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

參考文獻(xiàn)
[1]? 覃章健,,黃洪全,,葛良全.基于USB2.0的實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)研究.中國(guó)測(cè)試技術(shù),2005,,31(5).
[2] ?美國(guó)美信公司. 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ì)算機(jī)通信中的應(yīng)用[J].計(jì)算機(jī)數(shù)字與工程[J],2005,(6):99-103.
[6] ?曹軍軍,陳小勤.基于USB2.0的數(shù)據(jù)采集卡的設(shè)計(jì)與實(shí)現(xiàn)[J],儀器與儀表,,2006,(1):37-38.
[7] ?陶峻,,潘亞濤,陳健.基于DSP的USB傳輸系統(tǒng)的實(shí)現(xiàn)[J].電子技術(shù),2002,(3):56-59.

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