摘要:說明基于USB技術(shù)的實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)的硬件、軟件實(shí)現(xiàn);重點(diǎn)介紹PDIUSBD12帶并行總線的USB接口器件以及基于多線程思想設(shè)計(jì)應(yīng)用程序的方法。
關(guān)鍵詞:USB PDIUSBD12 多線程 實(shí)時(shí)數(shù)據(jù)采集
1 問題的提出
隨著信息技術(shù)的飛速發(fā)展,各種數(shù)據(jù)的實(shí)時(shí)采集和處理在現(xiàn)代工業(yè)控制中已成為必不可少的。這就為我們的設(shè)計(jì)提出了兩個(gè)方面的要求:一方面,要求接口簡單靈活且有較高的數(shù)據(jù)傳輸率;另一方面,由于數(shù)據(jù)量通常都較大,要求主機(jī)能夠?qū)?shí)時(shí)數(shù)據(jù)做出快速響應(yīng),并及時(shí)進(jìn)行分析和處理。
傳統(tǒng)的外設(shè)與主機(jī)的通信接口難以滿足上述第一個(gè)方面的要求。這些接口一般采用PCI部線或RS-232串行總線。PCI總線雖然有很高的傳輸率(可達(dá)132Mbps),還能“即插即用”,但是它們的擴(kuò)充槽相當(dāng)有限,且插拔并不方便。
RS-232串行總線雖然連接方便,可是它的帶寬非常有限,傳輸速度太慢,而且1條RS-232串口通信電纜只能連接1個(gè)物理設(shè)備。USB技術(shù)正是順序這一要求提出的,它集PCI和RS-232的優(yōu)點(diǎn)于一身:具有較高的傳輸速率(USB協(xié)議1.1支持最高傳輸速度達(dá)12Mbps,USB協(xié)議2.0支持最高傳輸速度可達(dá)148Mbps),實(shí)現(xiàn)了真正意義上的“即插即用”(Plug & Play),同時(shí)USB上最多可以連接127個(gè)外設(shè)。因此,將USB技術(shù)應(yīng)用于數(shù)據(jù)的實(shí)時(shí)采集是非常適合的。
實(shí)時(shí)系統(tǒng)對(duì)多任務(wù)的要求比較普遍。往往在后臺(tái)采集數(shù)據(jù)、進(jìn)行數(shù)據(jù)顯示的同時(shí),還要在前臺(tái)界面對(duì)用戶的操作做出響應(yīng)。在實(shí)時(shí)系統(tǒng)中,對(duì)實(shí)時(shí)數(shù)據(jù)做出及時(shí)而準(zhǔn)確的反應(yīng)是十分重要的。由于受A/D采集速度等因素的限制,從硬件上采用USB接口技術(shù)的確可以提高速度,但畢竟?jié)摿τ邢蓿虼嗽诂F(xiàn)有硬件設(shè)計(jì)基礎(chǔ)上充分發(fā)揮軟件的作用就能進(jìn)一步提升速度。使用傳統(tǒng)的單線程編程技術(shù)效率較低,無法及時(shí)處理,必須充分利用Windows的多任務(wù)處理功能,采用多線程編程技術(shù)來處理數(shù)據(jù)。
在這個(gè)實(shí)時(shí)采集系統(tǒng)的設(shè)計(jì)上,我們將這兩種技術(shù)結(jié)合起來:在硬件上采用USB技術(shù);軟件用VC++進(jìn)行開發(fā),采用多線程編程,使系統(tǒng)的效率從這兩方面都得到提升。
2 系統(tǒng)體系結(jié)構(gòu)
2.1 硬件結(jié)構(gòu)
整個(gè)系統(tǒng)硬件結(jié)構(gòu)如圖1所示。
實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)主要由多路選擇開關(guān)、A/D轉(zhuǎn)換、單片機(jī)系統(tǒng)、PDIUSBD12、微機(jī)組成。多路選擇開關(guān)對(duì)多路信號(hào)進(jìn)行選擇,使其分時(shí)輸入;A/D轉(zhuǎn)換實(shí)現(xiàn)模擬信號(hào)的數(shù)字化;單片機(jī)系統(tǒng)主要完成信號(hào)采集、數(shù)據(jù)通信;PDIUSBD12實(shí)現(xiàn)USB接口;微機(jī)完成數(shù)據(jù)接收、存入數(shù)據(jù)庫、數(shù)據(jù)處理、計(jì)算、顯示等功能。
其中PDIUSBD12是系統(tǒng)USB技術(shù)得以實(shí)現(xiàn)的關(guān)鍵。它是Philips公司的一個(gè)帶并行總線的USB接口器件,支持本地的DMA傳輸。它完全符合USB1.1版的規(guī)范,同時(shí)集成了SIE(串行接口引擎)、FIFO存儲(chǔ)器、收發(fā)器以及電壓調(diào)整器。其主端點(diǎn)的雙緩沖配置增加了數(shù)據(jù)吞吐量并輕松實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)傳輸,功能框圖如圖2所示。

在這個(gè)系統(tǒng)中,單片機(jī)采用的是80C52。PDIUSBD12與80C52的接口有2種方式:多路地址/數(shù)據(jù)總線方式、單地址/數(shù)據(jù)總線方式。我們采用的是前一種方式:使用了80C52的INT0、ALE、WR、RD和P0口,當(dāng)PDIUSBD12接收到主機(jī)的有效信息時(shí),會(huì)產(chǎn)生一個(gè)中斷通知80C52進(jìn)行處理。在此種方式下,PDIUSBD12在ALE下降沿的時(shí)候,對(duì)單片機(jī)的輸出地址進(jìn)行鎖存。若輸出地址為奇數(shù),則表示對(duì)PDIUSBD12發(fā)送指令;若輸出地址為偶數(shù),則表示對(duì)PDIUSBD12進(jìn)行數(shù)據(jù)傳輸。接口電路如圖3所示。
80C52將A/D采集的數(shù)據(jù)經(jīng)PDIUSBD12的并行接口送入FIFO存儲(chǔ)器。當(dāng)USB的傳輸速率達(dá)到12Mbps時(shí),MMU(存儲(chǔ)器管理單元)和集成RAM作為USB之間速度差異的緩沖區(qū),這就允許單片機(jī)以它自己的速率對(duì)USB信息包進(jìn)行讀寫。若FIFO中數(shù)據(jù)已滿,SIE會(huì)立即對(duì)數(shù)據(jù)做處理:同步模式的識(shí)別、并行/串行轉(zhuǎn)換、位填充/解除填充、CRC校驗(yàn)/產(chǎn)生、PID校驗(yàn)/產(chǎn)生、地址識(shí)別和握手評(píng)估/產(chǎn)生。SIE實(shí)現(xiàn)了全部的USB協(xié)議層,完全由硬件實(shí)現(xiàn)而不需要固件的參與。數(shù)據(jù)經(jīng)處理后由收發(fā)器通過數(shù)據(jù)線D+、D-傳送到主機(jī)。對(duì)一個(gè)單片機(jī)而言,PDIUSBD12看起來就像1個(gè)帶8位數(shù)據(jù)總線和1個(gè)地址位的存儲(chǔ)器件。
2.2 軟件結(jié)構(gòu)
USB的軟件系統(tǒng)包括三部分:客戶應(yīng)用軟件、設(shè)備固件以及USB設(shè)備驅(qū)動(dòng)程序。其中,設(shè)備固件和USB設(shè)備驅(qū)動(dòng)程序又被稱為主機(jī)軟件。軟件層次如圖4所示。
2.2.1 固件設(shè)備
設(shè)備固件(firmware)是儲(chǔ)存在程序內(nèi)存中的代碼。它使得USB接口芯片與主機(jī)和外設(shè)中其它電路能夠通信。固件由USB驅(qū)動(dòng)程序(USBD)、主控制器驅(qū)動(dòng)程序(HCD)兩部分組成。USBD的功能可以概括為:配置管理、總線管理、數(shù)據(jù)傳輸管理、提供客戶服務(wù)。USBD把IRP劃分為USB和設(shè)備需要大小的塊,確保每一個(gè)設(shè)備能分配到它所要求的USB資源,這樣它就可以支持USB設(shè)備配置。USBD提供了一個(gè)編程接口USBDI(USB驅(qū)動(dòng)程序接口),給客戶驅(qū)動(dòng)程序一種方式,用于傳輸請(qǐng)求,傳輸?shù)姆较蚩梢允莵碜曰虬l(fā)往USB的功能單元。大量的客戶服務(wù)是由USB的驅(qū)動(dòng)程序提供的,它幫助USB的客戶控制和訪問它們的功能單元。HCD提供了對(duì)USB的低級(jí)支持,通過把IRP轉(zhuǎn)換成為單獨(dú)的事務(wù)處理后在USB上執(zhí)行。





