国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

基于ISP1581的USB數(shù)據(jù)采集系統(tǒng)的實(shí)現(xiàn)

發(fā)布時(shí)間:2011-1-29 19:59    發(fā)布者:conniede
關(guān)鍵詞: FPGA , ISP1581 , USB
數(shù)據(jù)采集廣泛應(yīng)用于信號(hào)檢測、信號(hào)處理、儀器儀表等領(lǐng)域。目前,有各種數(shù)據(jù)采集卡或采集系統(tǒng)可供選擇,但由于數(shù)據(jù)源以及用戶需求的多樣性,有時(shí)并不能滿足要求。特別是在某些應(yīng)用中,需要同時(shí)高速采集多個(gè)通道的數(shù)據(jù),而且為了分析比較各通道信號(hào)間的相互關(guān)系,常常要求所有通道的采集必須同步。目前常用的數(shù)據(jù)采集卡是具有ISA總線、PCI總線等接口形式的A/D采集卡,雖然數(shù)據(jù)傳輸率很高,但是還存在整個(gè)系統(tǒng)笨重,缺乏靈活性,不能實(shí)現(xiàn)即插即用,不適合小型、便攜設(shè)備應(yīng)用等缺點(diǎn)。通用串行總線(USB)是為了解決日益增加的PC機(jī)外設(shè)與有限的主板插槽和端口之間的矛盾而制定的一種串行通信標(biāo)準(zhǔn)。USB的出現(xiàn)很好地解決了以上問題。USB不僅具有快速的傳輸性能,而且USB協(xié)議本身具有其糾錯(cuò)能力,它的即插即用模式和易擴(kuò)展性能都具有很強(qiáng)的發(fā)展前途和應(yīng)用價(jià)值。根據(jù)項(xiàng)目實(shí)際需求,本文設(shè)計(jì)了一種基于ISP1581的高速USB多通道數(shù)據(jù)采集系統(tǒng),系統(tǒng)最高采樣率每通道可達(dá)500 K字,并且具有增益控制調(diào)節(jié)、外觸發(fā)同步采集等功能,目前該系統(tǒng)已成功地應(yīng)用于某水下定位系統(tǒng)。

1 系統(tǒng)硬件組成

如圖1所示,系統(tǒng)由信號(hào)調(diào)理電路模塊、A/D采集模塊、USB數(shù)據(jù)傳輸模塊三個(gè)部分組成。


1.1 信號(hào)調(diào)理電路模塊

由于從傳感器進(jìn)來的信號(hào)一般都比較小(大約在微伏量級(jí)),A/D無法直接對(duì)這些信號(hào)進(jìn)行采集,需要通過信號(hào)調(diào)理電路模塊對(duì)其進(jìn)行放大,以滿足A/D采集的量程范圍。另外,由于信號(hào)容易受到外界噪聲以及電噪聲的干擾,通過信號(hào)調(diào)理電路所具有的濾波功能,可以濾除信號(hào)頻帶外的噪聲。

1.2 A/D采集模塊

A/D采集模塊由1片FPGA和2片A/D組成,完成4路信號(hào)的模/數(shù)轉(zhuǎn)換。模數(shù)轉(zhuǎn)換器選擇的是AD7655芯片。AD7655是一款高速、低功耗4通道16位模數(shù)轉(zhuǎn)換器,采用5 V單電源供電,模擬輸入信號(hào)范圍為0 V~5 V;高輸入阻抗,可對(duì)4路模擬輸入同時(shí)高速采樣并進(jìn)行數(shù)字化轉(zhuǎn)換,采樣速率最高可達(dá)1 MS/s,支持并行或串行接口。由于本采集系統(tǒng)要求對(duì)各路信號(hào)的相位嚴(yán)格一致,而AD7655只能同時(shí)對(duì)4個(gè)通道中的2路信號(hào)同時(shí)進(jìn)行采樣,因此,1片A/D僅連接了2路模擬信號(hào)。另外,為了保證所有通道信號(hào)的相位一致性,2片A/D需要使用同一個(gè)轉(zhuǎn)換信號(hào)來控制轉(zhuǎn)換的進(jìn)行,故在電路連接時(shí),把每個(gè)A/D芯片的轉(zhuǎn)換信號(hào)(CNVST)管腳連接在一起,然后連接到FPGA上的轉(zhuǎn)換信號(hào)輸出管腳上,由FPGA輸出的轉(zhuǎn)換信號(hào)驅(qū)動(dòng)。FPGA與A/D之間的數(shù)據(jù)讀取采用總線的方式,將每一片A/D的讀控制信號(hào)都獨(dú)立連接到FPGA上,由FPGA控制各路采樣數(shù)據(jù)的讀取。采集電路連接如圖2所示。


1.3 USB數(shù)據(jù)傳輸模塊

USB數(shù)據(jù)傳輸模塊是本系統(tǒng)的核心。要開發(fā)USB功能設(shè)備,首先需要對(duì)設(shè)計(jì)產(chǎn)品的功能進(jìn)行全面了解,包括數(shù)據(jù)傳輸速率、傳輸類型、所需要的硬件資源等。在充分了解設(shè)計(jì)的產(chǎn)品后,要選擇合適的USB接口芯片,如果選擇得好,可以大大節(jié)省開發(fā)時(shí)間和費(fèi)用。

USB接口芯片是一種集成了USB協(xié)議的微處理器,能自動(dòng)對(duì)各種USB事件作出響應(yīng),以處理USB總線上的數(shù)據(jù)傳輸。所有的主機(jī)和設(shè)備上都至少含有1塊實(shí)現(xiàn)其功能的USB接口芯片。按照不同的標(biāo)準(zhǔn),USB接口芯片有如下幾種分類方式,以功能分類則可以分為:主控制器芯片、集線器芯片、功能設(shè)備芯片;以使用方式進(jìn)行分類則可以分為:帶USB接口的專用MCU、帶USB接口的通用MCU、純粹的USB接口芯片。

本設(shè)計(jì)中選用了Philips公司的USB2.0接口芯片ISP1581,該芯片屬于純粹的USB接口芯片。這類USB接口芯片價(jià)格較低,接口方便,靈活性高,針對(duì)不同的硬件環(huán)境可以配合多種MCU使用,如單片機(jī)DSP、FPGA[3-4]。ISP1581支持2種工作模式:通用處理器模式和斷開總線模式。本設(shè)計(jì)中采用DSP來控制ISP1581,連接方式選用通用處理器模式,原理圖如圖3所示。


2 USB接口軟件開發(fā)

軟件分為USB固件程序開發(fā)和USB設(shè)備驅(qū)動(dòng)程序開發(fā)兩大部分。

2.1 USB固件程序開發(fā)

所有基于微處理器及其外圍電路的功能設(shè)備的正常工作都離不開固件的參與,固件的作用就是輔助硬件,即控制硬件來完成預(yù)期的功能,如沒有固件的參與和控制,硬件設(shè)備只是芯片簡單的堆砌,無法實(shí)現(xiàn)預(yù)期的功能,如同一臺(tái)沒有安裝操作系統(tǒng)的計(jì)算機(jī),無法正常工作。因此,用戶必須編寫固件程序來輔助硬件完成USB通信任務(wù)。具體如下:

(1)初始化。主要是設(shè)置一些特殊寄存器的初值,以實(shí)現(xiàn)所需的設(shè)備屬性或功能,例如開中斷、使能端點(diǎn)、配置端口等。

(2)輔助硬件完成設(shè)備的重新枚舉(ReNumeration)過程。包括模擬設(shè)備的斷開與重新連接,對(duì)收到的設(shè)置包進(jìn)行分析判斷,從而對(duì)主設(shè)備請(qǐng)求做出適當(dāng)?shù)捻憫?yīng),完成對(duì)設(shè)備的配置任務(wù)。

(3)對(duì)中斷的處理。

(4)數(shù)據(jù)的接收和發(fā)送。

(5)外圍電路的控制。

固件程序設(shè)計(jì)成中斷驅(qū)動(dòng)模式,采用模塊化設(shè)計(jì),其總體結(jié)構(gòu)如圖4所示。


各模塊的主要功能如下:

(1)主程序:完成DSP及USB接口芯片的初始化、數(shù)據(jù)發(fā)送/接收標(biāo)志位的判斷及中斷請(qǐng)求等待。

(2)中斷服務(wù)程序:中斷服務(wù)程序是整個(gè)固件程序設(shè)計(jì)的重點(diǎn)。首先通過讀取ISP1581中斷寄存器的值判斷所發(fā)生中斷的類型,然后根據(jù)具體的中斷類型進(jìn)入相應(yīng)的處理子程序或設(shè)置相應(yīng)的標(biāo)志位。中斷服務(wù)程序中需要處理的有總線復(fù)位中斷、高速狀態(tài)變化中斷、SETUP中斷及端點(diǎn)的IN/OUT中斷。在所有的中斷處理程序中,EP0SETUP中斷處理是最重要的,它是USB設(shè)備與PC機(jī)間建立通信鏈路的基礎(chǔ)。

(3)請(qǐng)求處理程序:USB標(biāo)準(zhǔn)請(qǐng)求處理程序負(fù)責(zé)處理枚舉階段主機(jī)發(fā)給設(shè)備的標(biāo)準(zhǔn)請(qǐng)求,以及正常工作時(shí)主機(jī)發(fā)送的廠商請(qǐng)求。USB2.0協(xié)議中規(guī)定了11種USB標(biāo)準(zhǔn)請(qǐng)求,對(duì)這11種標(biāo)準(zhǔn)請(qǐng)求作出正確的響應(yīng)是設(shè)備成功枚舉的重中之重。當(dāng)固件接收到第1個(gè)SETUP中斷后,就進(jìn)入U(xiǎn)SB枚舉過程,其過程是由主機(jī)發(fā)出一系列USB標(biāo)準(zhǔn)設(shè)備請(qǐng)求并要求及時(shí)得到設(shè)備響應(yīng),如果不需要進(jìn)行操作,也必須指示一個(gè)空響應(yīng),使主機(jī)能為該設(shè)備準(zhǔn)備其所請(qǐng)求的資源,建立好兩者之間的信息溝通機(jī)制。

(4)數(shù)據(jù)接收/發(fā)送程序:當(dāng)用戶通過主機(jī)端應(yīng)用程序向設(shè)備索要數(shù)據(jù)或向設(shè)備發(fā)送數(shù)據(jù)時(shí),DSP調(diào)用數(shù)據(jù)發(fā)送/接收子程序完成數(shù)據(jù)的發(fā)送/接收。數(shù)據(jù)的發(fā)送和接收過程如下:

發(fā)送數(shù)據(jù):選擇端點(diǎn)索引→寫發(fā)送緩沖區(qū)長度寄存器→寫發(fā)送數(shù)據(jù)到數(shù)據(jù)端口寄存器→等待發(fā)送完畢標(biāo)志。

接收數(shù)據(jù):選擇端點(diǎn)索引→讀接收緩沖區(qū)長度寄存器→從數(shù)據(jù)端口寄存器讀取接收到的數(shù)據(jù)。

(5)硬件接口訪問程序:硬件接口程序負(fù)責(zé)完成DSP對(duì)ISP1581的讀寫操作,它是整個(gè)固件程序中最底層也是使用最頻繁的部分,在這里主要定義了2種類型的函數(shù):ISP1581常用寄存器訪問函數(shù)和數(shù)據(jù)端口寄存器訪問函數(shù)。

常用寄存器訪問函數(shù):

void outport(unsigned int *reg_addr, unsigned short value);

unsigned short inport(unsigned int *reg_addr);

數(shù)據(jù)端口寄存器訪問函數(shù):

void write_ep(unsigned short *addr, unsigned short size);

unsigned short read_ep(unsigned short *addr);

write_ep為寫端點(diǎn)發(fā)送緩沖區(qū)函數(shù),其中參數(shù)*addr為指向待發(fā)送緩沖區(qū)的起始地址指針,參數(shù)size為要發(fā)送數(shù)據(jù)的字節(jié)數(shù);read_ep為讀端點(diǎn)接收緩沖區(qū)函數(shù),參數(shù)含義與write_ep函數(shù)相同,返回值為接收數(shù)據(jù)的字節(jié)數(shù)。

2.2 驅(qū)動(dòng)程序開發(fā)

Windows環(huán)境下驅(qū)動(dòng)程序有3種模型:VxD模型、KMD模型、WDM模型。WDM模型是微軟力推的全新驅(qū)動(dòng)程序模型,現(xiàn)在主流的操作系統(tǒng)都是采用基于WDM模型的驅(qū)動(dòng)程序,因此本采集系統(tǒng)也采用WDM驅(qū)動(dòng)程序模型來開發(fā)USB設(shè)備的驅(qū)動(dòng)程序。

對(duì)于USB設(shè)備,其WDM驅(qū)動(dòng)程序分為USB底層(總線)驅(qū)動(dòng)程序和USB功能(設(shè)備)驅(qū)動(dòng)程序。USB底層驅(qū)動(dòng)程序由操作系統(tǒng)提供,負(fù)責(zé)與實(shí)際的硬件打交道,實(shí)現(xiàn)底層通信。USB功能驅(qū)動(dòng)程序由設(shè)備開發(fā)者編寫,不對(duì)實(shí)際的硬件進(jìn)行操作,而是通過向USB底層驅(qū)動(dòng)程序發(fā)送包含請(qǐng)求塊URB(USB Request Block)的IRP,以實(shí)現(xiàn)對(duì)USB設(shè)備信息的發(fā)送和接收。

目前,WDM驅(qū)動(dòng)程序開發(fā)工具有3種:Microsoft公司的DDK、Numega公司的DriverStudio和Jungo公司的WinDriver。其中,DDK的開發(fā)難度較大,開發(fā)者需要對(duì)整個(gè)體系結(jié)構(gòu)和WDM規(guī)范有很好的理解和把握,還要熟悉上千個(gè)DDK函數(shù)的功能和使用場合,且測試流程繁瑣;DriverStudio的開發(fā)難度低一些,它將DDK函數(shù)按照邏輯功能進(jìn)行組織,把很多常用功能封裝成類,建立了一個(gè)基于C++語言的面向?qū)ο蟮木幊汰h(huán)境,開發(fā)者面對(duì)的不再是上千個(gè)復(fù)雜凌亂的DDK函數(shù),而是邏輯清晰的類庫;WinDriver的開發(fā)幾乎沒有難度,開發(fā)者所編寫的只是定制和調(diào)用它提供的通用驅(qū)動(dòng),開發(fā)周期較短,特別適合于驅(qū)動(dòng)程序初學(xué)者使用。

利用WinDriver開發(fā)設(shè)備驅(qū)動(dòng)程序,有2種方法:

(1)用Wizard自動(dòng)生成驅(qū)動(dòng)程序的框架代碼,根據(jù)實(shí)際要求修改代碼,加入定制的功能,再在用戶態(tài)執(zhí)行和調(diào)試代碼,并將性能要求苛刻的部分插入到核心態(tài),從而完成整個(gè)驅(qū)動(dòng)程序的編寫。在使用這種方法時(shí),WinDriver已經(jīng)完成了驅(qū)動(dòng)程序編寫的大部分工作,減少了工作量,使編寫驅(qū)動(dòng)成為相對(duì)較簡單。但此方法生成的設(shè)備驅(qū)動(dòng)程序,其通用性和可移植性較差;

(2)完全用WinDriver提供的API函數(shù)來寫驅(qū)動(dòng)程序。這樣要比修改由Wizard生成的框架代碼靈活得多,并且編寫的程序更簡短。但這要求開發(fā)者熟悉驅(qū)動(dòng)程序的框架,能熟練運(yùn)用WinDriver API函數(shù)。

為了縮短開發(fā)周期,在實(shí)際應(yīng)用中選用了第1種方法生成驅(qū)動(dòng)程序。具體步驟如下:

(1) 啟動(dòng)Driver Wizard,檢測連接的USB設(shè)備,生成inf文件,這個(gè)inf文件和WinDriver包含的windrvr6.sys一起,就是新開發(fā)USB設(shè)備的驅(qū)動(dòng)程序。

(2) 點(diǎn)擊Next按鈕,進(jìn)入資源列表窗口,窗口中顯示了管道(Pipe)的一些基本信息。此窗口還可以用于對(duì)外設(shè)進(jìn)行讀寫,測試硬件資源的正確性,窗口中的Log部分即為測試結(jié)果。

(3) 點(diǎn)擊Next按鈕,進(jìn)入代碼生成窗口,在窗口中選擇生成C語言代碼。之后Driver Wizard將自動(dòng)生成針對(duì)ISP1581的樣本程序和工程文件(包括代碼文件、說明文件以及適用于VC++編譯器的項(xiàng)目文件)。

(4)重新安裝這個(gè)USB設(shè)備的驅(qū)動(dòng)程序,利用DriverWizard生成的文件,就可開發(fā)應(yīng)用程序了。

經(jīng)過反復(fù)測試發(fā)現(xiàn),在現(xiàn)有硬件上批量傳輸?shù)乃俣仍?0 Mb/s左右,可以滿足當(dāng)前系統(tǒng)采樣頻率為500 kHz時(shí)的數(shù)據(jù)采集要求,即500K×4路×16=32 Mb/s。但與USB2.0規(guī)范的極限速度相比,現(xiàn)有的批量傳輸速度還不及其13%,分析其原因:

(1) USB2.0規(guī)范定義的最大速度為480 Mb/s,但它是包含令牌包在內(nèi)的傳輸,因此,若扣除通信協(xié)議中的令牌,實(shí)際傳輸速度要遠(yuǎn)低于480 Mb/s。

(2) 從訪問寄存器的時(shí)序參數(shù)可以看出,讀/寫周期最小為80 ns,即DSP對(duì)ISP1581讀寫的最高頻率是12.5 MHz,由于每次讀寫操作的數(shù)據(jù)為2 B,所以DSP與接口芯片之間數(shù)據(jù)傳輸?shù)淖罡咚俾适?5 MB/s,最后的實(shí)際值應(yīng)該小于此值。

(3) 利用WinDriver開發(fā)驅(qū)動(dòng),事實(shí)上它只是定制和調(diào)用WinDriver提供的通用驅(qū)動(dòng)而已,所以并非有針對(duì)性地對(duì)特定硬件編程,程序執(zhí)行效率上也不免大打折扣。

(4) 計(jì)算機(jī)與USB設(shè)備的通信中還包含對(duì)計(jì)算機(jī)硬盤的寫操作,使用測試軟件對(duì)所用機(jī)器硬盤進(jìn)行寫測試,測得平均速度在22~25 MB/s之間,因此硬盤的寫速度也是影響USB數(shù)據(jù)傳輸速度的原因之一。

因此若想在現(xiàn)有硬件平臺(tái)上獲得更高的速度可以在以下幾個(gè)方面進(jìn)行:采用端點(diǎn)的雙緩沖模式、采用ISP1581的DMA模式、采用效率更高的驅(qū)動(dòng)開發(fā)方式及優(yōu)化固件程序以提高硬件的工作效率等。
本文地址:http://www.qingdxww.cn/thread-51070-1-1.html     【打印本頁】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
lzy89c55 發(fā)表于 2011-2-14 10:49:07
頂一下
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

廠商推薦

  • Microchip視頻專區(qū)
  • 更佳設(shè)計(jì)的解決方案——Microchip模擬開發(fā)生態(tài)系統(tǒng)
  • 想要避免發(fā)生災(zāi)難,就用MPLAB SiC電源仿真器!
  • 利用模擬開發(fā)工具生態(tài)系統(tǒng)進(jìn)行安全電路設(shè)計(jì)
  • Cortex-M4外設(shè) —— TC&TCC結(jié)合事件系統(tǒng)&DMA優(yōu)化任務(wù)培訓(xùn)教程
  • 貿(mào)澤電子(Mouser)專區(qū)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人欧美精品久久久久影院 | 久久综合精品国产一区二区三区 | 99久久精品免费看国产一区二区 | 亚洲欧美视频 | 日日摸夜夜摸狠狠摸97 | www成人国产在线观看网站 | 日日操干 | 国产成人夜色91 | 国产手机精品一区二区 | 视频91在线| 老司机在线精品 | 老子影院午夜精品欧美视频 | 久久99热这里只有精品国产 | 欧美日韩黄色 | 狠狠婷 | 日本精品久久久一区二区三区 | 国产成人成人一区二区 | 欧美综合视频在线 | 久久精品国产精品亚洲毛片 | 痴女中文字幕在线视频 | 一级一级特黄女人精品毛片视频 | 免费日韩一级片 | 四虎影视国产精品婷婷 | 看草逼| 国产成人免费观看 | 啦啦啦在线观看免费观看4 啦啦啦手机在线播放视频 啦啦啦视频在线视频免费4 | 中国女人特级毛片 | 2021国产麻豆剧果冻传媒入 | 亚洲欧洲精品在线 | a集毛片| 午夜视频在线观看区二区 | 精品一区二区三区在线观看l | 日本欧美另类 | 亚洲天堂在线观看视频 | 亚洲另类天天更新影院在线观看 | 欧美视频在线一区 | 91精品国产色综合久久 | 第三人称复仇韩剧在线观看免费 | 蜜桃臀在线成人亚洲 | 日韩在线伦理片免费观看 | 精品亚洲欧美高清不卡高清 |