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

基于ISP1581的USB數據采集系統的實現

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

1 系統硬件組成

如圖1所示,系統由信號調理電路模塊、A/D采集模塊、USB數據傳輸模塊三個部分組成。


1.1 信號調理電路模塊

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

1.2 A/D采集模塊

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


1.3 USB數據傳輸模塊

USB數據傳輸模塊是本系統的核心。要開發USB功能設備,首先需要對設計產品的功能進行全面了解,包括數據傳輸速率、傳輸類型、所需要的硬件資源等。在充分了解設計的產品后,要選擇合適的USB接口芯片,如果選擇得好,可以大大節省開發時間和費用。

USB接口芯片是一種集成了USB協議的微處理器,能自動對各種USB事件作出響應,以處理USB總線上的數據傳輸。所有的主機和設備上都至少含有1塊實現其功能的USB接口芯片。按照不同的標準,USB接口芯片有如下幾種分類方式,以功能分類則可以分為:主控制器芯片、集線器芯片、功能設備芯片;以使用方式進行分類則可以分為:帶USB接口的專用MCU、帶USB接口的通用MCU、純粹的USB接口芯片。

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


2 USB接口軟件開發

軟件分為USB固件程序開發和USB設備驅動程序開發兩大部分。

2.1 USB固件程序開發

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

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

(2)輔助硬件完成設備的重新枚舉(ReNumeration)過程。包括模擬設備的斷開與重新連接,對收到的設置包進行分析判斷,從而對主設備請求做出適當的響應,完成對設備的配置任務。

(3)對中斷的處理。

(4)數據的接收和發送。

(5)外圍電路的控制。

固件程序設計成中斷驅動模式,采用模塊化設計,其總體結構如圖4所示。


各模塊的主要功能如下:

(1)主程序:完成DSP及USB接口芯片的初始化、數據發送/接收標志位的判斷及中斷請求等待。

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

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

(4)數據接收/發送程序:當用戶通過主機端應用程序向設備索要數據或向設備發送數據時,DSP調用數據發送/接收子程序完成數據的發送/接收。數據的發送和接收過程如下:

發送數據:選擇端點索引→寫發送緩沖區長度寄存器→寫發送數據到數據端口寄存器→等待發送完畢標志。

接收數據:選擇端點索引→讀接收緩沖區長度寄存器→從數據端口寄存器讀取接收到的數據。

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

常用寄存器訪問函數:

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

unsigned short inport(unsigned int *reg_addr);

數據端口寄存器訪問函數:

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

unsigned short read_ep(unsigned short *addr);

write_ep為寫端點發送緩沖區函數,其中參數*addr為指向待發送緩沖區的起始地址指針,參數size為要發送數據的字節數;read_ep為讀端點接收緩沖區函數,參數含義與write_ep函數相同,返回值為接收數據的字節數。

2.2 驅動程序開發

Windows環境下驅動程序有3種模型:VxD模型、KMD模型、WDM模型。WDM模型是微軟力推的全新驅動程序模型,現在主流的操作系統都是采用基于WDM模型的驅動程序,因此本采集系統也采用WDM驅動程序模型來開發USB設備的驅動程序。

對于USB設備,其WDM驅動程序分為USB底層(總線)驅動程序和USB功能(設備)驅動程序。USB底層驅動程序由操作系統提供,負責與實際的硬件打交道,實現底層通信。USB功能驅動程序由設備開發者編寫,不對實際的硬件進行操作,而是通過向USB底層驅動程序發送包含請求塊URB(USB Request Block)的IRP,以實現對USB設備信息的發送和接收。

目前,WDM驅動程序開發工具有3種:Microsoft公司的DDK、Numega公司的DriverStudio和Jungo公司的WinDriver。其中,DDK的開發難度較大,開發者需要對整個體系結構和WDM規范有很好的理解和把握,還要熟悉上千個DDK函數的功能和使用場合,且測試流程繁瑣;DriverStudio的開發難度低一些,它將DDK函數按照邏輯功能進行組織,把很多常用功能封裝成類,建立了一個基于C++語言的面向對象的編程環境,開發者面對的不再是上千個復雜凌亂的DDK函數,而是邏輯清晰的類庫;WinDriver的開發幾乎沒有難度,開發者所編寫的只是定制和調用它提供的通用驅動,開發周期較短,特別適合于驅動程序初學者使用。

利用WinDriver開發設備驅動程序,有2種方法:

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

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

為了縮短開發周期,在實際應用中選用了第1種方法生成驅動程序。具體步驟如下:

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

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

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

(4)重新安裝這個USB設備的驅動程序,利用DriverWizard生成的文件,就可開發應用程序了。

經過反復測試發現,在現有硬件上批量傳輸的速度在60 Mb/s左右,可以滿足當前系統采樣頻率為500 kHz時的數據采集要求,即500K×4路×16=32 Mb/s。但與USB2.0規范的極限速度相比,現有的批量傳輸速度還不及其13%,分析其原因:

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

(2) 從訪問寄存器的時序參數可以看出,讀/寫周期最小為80 ns,即DSP對ISP1581讀寫的最高頻率是12.5 MHz,由于每次讀寫操作的數據為2 B,所以DSP與接口芯片之間數據傳輸的最高速率是25 MB/s,最后的實際值應該小于此值。

(3) 利用WinDriver開發驅動,事實上它只是定制和調用WinDriver提供的通用驅動而已,所以并非有針對性地對特定硬件編程,程序執行效率上也不免大打折扣。

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

因此若想在現有硬件平臺上獲得更高的速度可以在以下幾個方面進行:采用端點的雙緩沖模式、采用ISP1581的DMA模式、采用效率更高的驅動開發方式及優化固件程序以提高硬件的工作效率等。
本文地址:http://m.qingdxww.cn/thread-51070-1-1.html     【打印本頁】

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

廠商推薦

  • Microchip視頻專區
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久九九青青国产精品| 日韩精品视频免费在线观看| 午夜国产高清精品一区免费| 亚洲成人一级| 动漫美女搞鸡| 午夜不卡久久精品无码免费| 午夜性福利| 天堂bt资源www在线| 亚洲激情欧美| 国产精品麻豆AV| 亚洲精品久久久无码AV片软件| 日韩a毛片| 天天草狠狠干| 天天看天天色| 亚洲人成在线精品不卡网| 国产精品自产拍在线观看网站| 亚洲AV色香蕉一区二区9255| 日韩精品在线一区二区| 日韩不卡在线视频| 一级黄色a级片| 综合久久一区二区三区| 男人j进女人j一进一出| 亚洲成人18| 欧美中文字幕在线看| 自偷自拍视频| 97在线视频免费播放| 日本888 xxxx| 婷婷六月久久综合丁香一二| 五月丁香啪啪| 一句顶一万句在线阅读| 久久亚洲网站| 亚洲成a人一区二区三区| 色噜噜噜噜色| 亚洲国产情侣偷自在线二页| 国产亚洲一区在线| 校园纯肉H教室第一次| 亚洲国产精品久久精品怡红院| 日本视频三区| 色哟哟久久| XXX老姥群交| 日本美女抠逼|