《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于USB2.0與FPGA技術的高速數據采集系統的設計
基于USB2.0與FPGA技術的高速數據采集系統的設計
袁江南
摘要: 一種基于USB2.0接口芯片ISP1581與FPGA技術的通用數據采集平臺。系統采用TI公司的10位、20MSPS的TLC876高速A/D芯片,可以靈活地進行高速、低速采集的配置,構建多種以PC機為界面的數據采集平臺。PC端采集軟件平臺采用了多線程程序設計技術。
Abstract:
Key words :

    摘 要: 一種基于USB2.0接口芯片" title="接口芯片">接口芯片ISP1581與FPGA技術的通用數據采集" title="數據采集">數據采集平臺。系統采用TI公司的10位、20MSPS的TLC876高速A/D" title="A/D">A/D芯片,可以靈活地進行高速、低速采集的配置,構建多種以PC機為界面的數據采集平臺。PC端采集軟件平臺采用了多線程程序設計技術。
    關鍵詞: USB2.0  FPGA  數據采集  多線程

 

    近年來筆記本電腦迅速普及和更新,其中大部分已經不配置RS232接口,而USB接口已成為今后一段時間PC機與外設接口的主流。本采集系統的設計構建了一個基于USB接口的多功能通用數據采集、傳輸平臺,將嵌入式系統的實時性、靈活性和PC機強大的數據存儲、處理、顯示功能結合起來。該采集系統在智能儀器儀表、測控系統、工控系統等領域有廣闊的應用前景。
1 系統總體結構設計
1.1 系統總體結構
    系統總體結構框圖如圖1所示,系統包括:單片機與USB接口模塊、FPGA模塊、信號調理及A/D模塊。其中,單片機外圍電路相對簡單,整個系統主要通過PC機的程序界面控制操作;USB接口負責與PC機通信;FPGA模塊負責完成數據的采集與緩存。

                            
1.2 單片機與USB接口模塊
    本設計的目的是構建以PC機為平臺的數據采集系統" title="數據采集系統">數據采集系統,單片機的功能僅限于接收PC機的命令、控制FPGA工作。PC機作為整個系統的人機界面,控制整個數據采集系統進行采集、存儲和處理。由此單片機可以選擇低成本的8XC51系列。為了提高系統的靈活性,采用單片機與USB接口芯片分離的方案,選擇Philip公司的ISP1581 USB2.0接口芯片。該芯片與8XC51系列單片機的接口非常簡單,可以極大地降低系統成本。
1.3 FPGA模塊
    采用FPGA進行采樣控制的最大特點是系統具有重構性和通用性。設計中采用了Altera公司的低成本FPGA的Cyclone系列(實際試驗時,在更便宜的Acex1k器件上也可以實現),控制高速A/D芯片以20MSPS的速度采樣。FPGA模塊的設計具體包括FIFO、單片機接口、A/D控制接口、DMA控制模塊和主控制器等子模塊的設計。
1.4 PC機端軟件平臺
     PC機采集程序使用VC++實現,直接調用Philips公司提供的驅動程序進行數據讀寫,大大降低了開發難度與風險。本設計中,PC機端軟件設計包括應用程序的界面設計、多線程數據采集、存儲與處理模塊的設計,以及與USB底層驅動程序的通信動態鏈接庫的設計。
2 USB接口模塊設計
2.1 USB接口芯片

    USB接口芯片ISP1581具有體積小、高速、與單片機的接口相對簡單等特點。除了控制端點外,ISP1581還有7個輸入(IN)端點和7個輸出(OUT)端點。每個端點可以靈活配置數據傳輸方式以及數據緩存區(FIFO)的大小,端點FIFO最大容量可以達到2KB。ISP1581芯片在配置枚舉時需要單片機固件" title="固件">固件的支持,一旦正確完成了配置和驅動加載,單片機對于ISP1581芯片就如同普通存儲器一樣可以進行讀寫操作,以發送或接收數據。
2.2 固件編程
    USB通信完全由PC主機發起。在這種結構下,固件總是一直在等待主機命令,再根據命令去執行相應的程序。固件的基本思想是采用模塊化設計,分成 main.c等7個模塊。ISP1581固件結構如圖2所示。圖中,main.c為主循環,isr.c主要負責中斷處理,Chap9.c主要負責響應主機的請求。用戶的應用程序將來也可以包括在main.c循環中。

                                
2.3  單片機端程序設計
    單片機端程序主要包括初始化模塊,外圍Flash、EEPROM、RAM、液晶顯示器、按鍵等的讀寫控制模塊,USB接口芯片固件模塊,A/D采樣工作模式、速度以及采樣數據的讀寫的FPGA硬件控制模塊等。本設計的指導思想是:充分利用PC機和嵌入式系統的優點,對MCU端的要求盡量簡化。具體軟件流程示意圖如圖3所示。

                                      
    USB作為一個通信接口,首先必須完成配置,然后才能進行用戶數據的發送/接收,在循環中必須隨時檢查是否有主機的配置命令。配置枚舉過程是USB固件編程當中較為復雜的部分,其流程如圖4所示。USB設備接入到主機并被主機識別后,主機首先以默認的地址(00H)發送一個設置(SETUP)包,新接入的設備必須接收此包并響應請求。然后主機會發送輸入包讀取設備描述符,初步判斷設備的屬性后,再設置設備的地址,隨后再用這個地址讀取設備的各種描述符以識別并且配置設備。可見,在設備配置過程中,主機讀取的數據較多,設備一旦接收到一個SETUP包之后便會判斷主機的請求類型,然后進入請求處理循環等待主機的進一步命令,如果再次收到一個IN令牌便會向控制端點中寫入數據,并且根據數據長度再次寫端點直到數據發送完畢。USB的標準請求包括讀取設備描述符、配置描述符、端點描述符、設置地址、配置設備等,廠商請求由用戶自行定義。

                                    
    ISP1581接收到主機的數據后,將根據相應的情況設置片內的中斷寄存器標志中斷源,然后向單片機申請中斷,中斷服務程序流程如圖5所示。單片機響應中斷后,首先讀取中斷標志寄存器并判斷中斷源,然后設置相應的標志。在用戶的發送/接收程序中,將根據相應的標志產生相應的動作。例如,主機發送一段數據給ISP1581,ISP1581接收、握手完畢后,設置中斷標志并申請中斷。在用戶的任務中發現有數據接收的標志,就可以讀出ISP1581中的數據。而ISP1581向主機發送數據時,首先是主機發送一個IN類型的令牌發起一次傳輸,如果此時ISP1581相應端點的FIFO非空,則立即發送數據,然后向單片機申請中斷,響應中斷以后如果還有數據要發送,則應該向ISP1581的FIFO中寫入數據,否則直接清空中斷標志即可。主機和數據采集器之間的握手配合要事先設計好。

                                    
    根據輸入傳輸要求,在具體的設計中,除了主數據傳輸端點外,還配置了一個數據緩沖區為64字節的、工作于中斷傳輸方式的端點作為命令端口,負責與主機進行通信握手。如果主機想從設備讀取數據,則首先發送一個讀取命令,單片機接收到該命令后,就向主數據端點的FIFO中寫入數據,隨后主機發出讀數據令牌,正好有數據可以發送。通過命令端口還可以發送各種命令,控制數據采集器動作。
3 FPGA數據采集模塊設計
3.1 模塊劃分
    FPGA模塊劃分為A/D接口、FIFO、單片機接口、DMA接口控制、主控制器等模塊,其中設置了一些可以單片機寫入的寄存器。A/D的采集速度,FIFO的空、滿、數據寫入、讀出速度都可以靈活配置。整個模塊以Verilog語言寫成,稍加修改可以同各種A/D芯片接口。整個設計在Altera公司的Cyclone系列的EP1C12中完成。在ACEX1K系列EC1K100器件上也可以實現,工作時鐘頻率為50MHz。
    為了提高系統的靈活性,在信號的調理、濾波模塊中使用了Lattice公司的ispPAC80可編程濾波器作為輸入濾波器,可以靈活地設定抗混疊濾波器的截止頻率,最大截至頻率可以達到750kHz,完全可以滿足一般中、高頻信號的濾波。FPGA作為A/D控制器可以同多種A/D芯片接口,本設計中使用了TI公司的10位高速A/D芯片TLC876。芯片工作于流水線方式,最高采樣速率為20MSPS。
3.2 與單片機及ISP1581的接口
    FPGA在與單片機信號的接口過程中,使用了同步設計的方法。即首先對單片機的I/O信號進行采樣同步化,獲得各信號上升、下降沿的時刻,輸出同步脈沖,然后在這些時刻點處根據同步脈沖的出現與否來控制系統進行動作。這種設計的優點是可以在設計中采用同步狀態機,以獲得較高的運行速度和穩定的工作性能。這也是ALTERA、XILINX等公司的FPGA數字系統設計中所推薦使用的方法。
    為了提高FPGA中的FIFO與ISP1581中的數據存儲器的數據交換速度,FPGA與ISP1581之間采用DMA方式進行數據交換。
    ISP1581有兩種工作方式,由BUS_CONF、MODE0、MODE1三根引腳控制:
    (1)如果上電時檢測到BUS_CONF引腳為低電平,則工作于分裂總線方式(Split Bus Mode)。ISP1581具有8-bit地址/數據復用總線和16-bit的DMA專用數據線。此時MODE1引腳如果為低電平,則可以將芯片的ALE/A0引腳與89X51的ALE腳直接相連,進行地址/數據總線復用;而如果MODE1為高電平,則ALE/A0腳要接其他的89X51引腳,由用戶編程將ALE/A0腳拉高/低進行地址/數據復用,而MODE0腳在這種方式下沒有使用或作為其他用途。
    (2)如果上電時檢測到BUS_CONF引腳為高電平,則工作于通用處理器方式(Generic Processor Mode)。此時MODE1腳沒有使用(可接Vcc),MODE0引腳則可接低/高電平,這樣可以使芯片的讀/寫引腳分別符合Motorola/89X51微處理器的讀寫規范。所以讓ISP1581芯片工作于分裂總線方式可以方便地與8051系列單片機接口,其AD[7:0]作為數據/地址總線復用,RD、WE、ALE分別為讀、寫、地址鎖存線,DATA[15:0]作為DMA數據總線使用。
    ISP1581芯片中與DMA相關的引腳有DREQ、DACK、DIOR、DIOW。DMA傳輸前必須設定工作模式、初始化DMA相關寄存器,然后對DMA命令寄存器寫入一個命令便可以啟動DMA傳輸。傳輸模式有主、從、IDE、ATA等方式。通用數據采集系統比較適合采用從模式,在這種模式下,單片機接收到主機發來的開始采集命令后,立即命令FPGA啟動采樣,然后命令ISP1581啟動DMA傳輸,ISP1581將DREQ引腳拉高,表示請求數據,此時FPGA將數據準備好后,拉低DACK引腳,待準備好數據后,在DIOR線上產生讀脈沖,供ISP1581將數據讀入內部FIFO。DMA也可以使用主模式,此時讀脈沖DIOR由ISP1581產生。DMA工作時序圖如圖6所示。

                           
4 PC機多線程數據采集程序設計
    USB的數據傳輸使用了虛擬管道的概念,可以同時接入127個設備。每個設備可以擁有若干個端點,每個端點可以跟主機組成一個連接,構成一個通信的最小實體。在數據傳輸過程中,只要帶寬允許,主機可以同時跟幾個端點通信,因此要求在主機的應用程序中開啟多個線程進行通信。在本設計中,采用了命令端點和數據端點分開的方式。命令端點配置成中斷或批量傳輸方式,在主機應用程序中專門開啟一個線程同該端點進行通信,開啟另外一個線程進行采樣數據傳輸,而兩個傳輸之間互相不影響。用戶界面使用另外的線程,這樣在傳輸過程中,應用程序可以隨時響應用戶的命令。在具體的設計中,點擊數據采集開始命令即建立并且啟動一個采集線程。在這個無限循環的線程函數中設置了一個標志變量,如果該變量為真,則線程函數繼續運行;否則線程終止,停止采集。這樣用戶界面線程可以通過修改線程運行標志變量來控制線程的運行。采用多線程采集程序的一個問題是線程函數必須是一個全局函數,不屬于任何一個類,這樣它就無法訪問類的私有成員或保護成員,解決這個問題的方法是:因為線程函數在創建時允許傳送一個指針參數給它,于是可以構造一個結構數據類型,數據成員中包含一個指向類的指針。在創建線程時將想要訪問的類的指針包含在一個按前述定義的結構變量中,并將該結構的指針作為參數傳給線程函數。這樣就可以在線程函數中定義一個類對象,并把前述的類指針賦給它,通過類指針就可以訪問該對象中的所有成員了。在本設計中采用多線程程序設計后,系統工作非常穩定。
   目前,國內外的數據采集系統常用的接口方式有多種,如 RS232 串行口、并行口,ISA 總線、PCI總線等。這些總線接口雖各具優點,但也都有其難以克服的缺點而被逐漸淘汰。USB接口具有連接方便、無需外接電源、即插即用、支持熱插拔、動態加載驅動程序等特有優點,在主機和數據采集系統之間可以實現簡單、快捷、可靠的連接和通信。本設計應用ISP1581USB接口芯片與FPGA技術,構建了一個使用靈活的通用數據采集系統。該系統充分利用了PC機的大存儲量,強大的數據處理能力,高清晰的大屏幕顯示(相對于嵌入式系統而言),以及嵌入式系統的實時與靈活性。目前正在使用此平臺構建一個在消聲室環境中針對機械振動噪聲的采集與分析系統。此系統在智能儀器以及工業自動化等眾多領域中必將有廣泛的應用前景。
參考文獻
[1] 蕭世文. USB2.0硬件設計[M].北京:清華大學出版社,2002.
[2]  周立功.PDIUSBD12USB固件編程與驅動開發[M].北京:北京航空航天大學出版社,2003.
[3]  張念淮. USB總線接口開發指南[M].北京:國防工業出版社,2001.
[4]  Philips Semiconductors. ISP1581 programming guide[Z].2004.
[5]  USB.org. Universal serial bus specification rev.2.0[Z].2006. http://www.usb.org/developers/docs/.
[6] 倪明輝. USB在FPGA控制的高速數據采集系統中的應用[J]. 計算機測量與控制,2006,14(2).

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
国产美女精品在线| 亚洲国产精品999| 欧美电影免费观看| 久久午夜精品| 欧美一区二区三区播放老司机| 在线视频中文亚洲| 亚洲精品在线视频| 亚洲欧洲三级电影| 亚洲经典三级| 亚洲国产欧美日韩另类综合| 久久精品2019中文字幕| 欧美一区二区三区精品| 西西人体一区二区| 亚洲永久在线观看| 亚洲女爱视频在线| 亚洲欧美激情一区二区| 亚洲女人av| 欧美一区二区三区另类| 欧美在线精品免播放器视频| 欧美专区中文字幕| 欧美一区在线视频| 久久国产一区二区| 亚洲激情在线观看| 亚洲精品精选| 一区二区久久久久| 一区二区三区 在线观看视| 亚洲视频综合| 午夜久久久久| 久久国产精品久久久久久久久久| 久久久99精品免费观看不卡| 久久躁日日躁aaaaxxxx| 久久综合一区二区| 欧美激情第8页| 欧美性理论片在线观看片免费| 国产精品久久午夜夜伦鲁鲁| 国产女主播一区二区三区| 国产一区二区精品在线观看| 在线观看福利一区| 99国产精品99久久久久久| 亚洲影院色无极综合| 久久大综合网| 亚洲精品少妇| 亚洲综合电影一区二区三区| 欧美在线综合| 老鸭窝亚洲一区二区三区| 欧美激情精品久久久久久黑人| 欧美日韩国产va另类| 国产精品另类一区| 激情综合网激情| 亚洲精品资源美女情侣酒店| 亚洲一二三四区| 久久精品五月| 国产精品99久久99久久久二8| 性欧美超级视频| 另类激情亚洲| 国产精品v一区二区三区| 国产乱人伦精品一区二区 | 久久成人精品无人区| 免费成人网www| 国产精品国产三级国产aⅴ入口 | 亚洲欧洲av一区二区| 最新中文字幕一区二区三区| 亚洲女优在线| 麻豆免费精品视频| 欧美午夜在线一二页| 狠狠88综合久久久久综合网| 日韩视频在线永久播放| 欧美一区二区视频97| 一级日韩一区在线观看| 久久久综合网| 国产精品盗摄久久久| 亚洲电影中文字幕| 亚洲嫩草精品久久| aa成人免费视频| 久久久青草婷婷精品综合日韩| 欧美日韩中文精品| 激情欧美日韩一区| 亚洲一区在线观看免费观看电影高清| 亚洲欧洲在线看| 久久成人一区| 国产精品久久久久av免费| 在线观看视频欧美| 亚洲综合久久久久| 在线午夜精品自拍| 欧美不卡在线| 国产亚洲欧美一区| 亚洲一区二区三区777| 亚洲毛片av| 久久中文字幕一区二区三区| 国产精品亚洲美女av网站| 亚洲免费播放| 亚洲精品日韩在线观看| 久久久久久久综合色一本| 国产精品久久网站| 日韩一级免费观看| 亚洲日本无吗高清不卡| 欧美专区18| 国产精品一级久久久| 夜夜嗨av一区二区三区四季av | 亚洲精品在线免费观看视频| 久久综合给合| 国产综合视频在线观看| 午夜一区二区三区在线观看 | 欧美成人嫩草网站| 精品粉嫩aⅴ一区二区三区四区| 亚洲免费影视| 性娇小13――14欧美| 国产精品久久久久免费a∨大胸| 99在线观看免费视频精品观看| 亚洲精品少妇| 欧美成人xxx| ●精品国产综合乱码久久久久| 久久国产精品久久久久久久久久 | 亚洲色无码播放| 欧美精品一区二区三区蜜臀| 亚洲国产日韩美| 亚洲精品欧洲精品| 欧美激情亚洲一区| 91久久一区二区| 99re66热这里只有精品4| 欧美激情久久久久| 亚洲欧洲日本专区| 99日韩精品| 欧美日韩免费一区二区三区| 亚洲美女啪啪| 亚洲制服少妇| 国产精品美女久久福利网站| 亚洲一区亚洲| 久久精品国亚洲| 国产综合香蕉五月婷在线| 久久精彩视频| 欧美国产在线电影| 91久久久久久久久| 在线亚洲欧美| 国产精品久久久久久久久借妻| 亚洲一二三区在线观看| 欧美永久精品| 激情六月婷婷综合| 亚洲欧洲精品一区二区三区不卡 | 欧美一区二区三区视频免费| 久久久亚洲高清| 亚洲高清久久| 在线一区观看| 国产精品久久久久av| 香蕉av福利精品导航| 久久久久这里只有精品| 亚洲国产精品久久久久婷婷老年 | 亚洲人永久免费| 欧美日韩一区在线| 午夜精彩国产免费不卡不顿大片| 久久精品在线| 亚洲第一精品福利| 亚洲一区二区精品| 国产日韩在线不卡| 亚洲国产精品999| 欧美日韩精品免费在线观看视频| aa日韩免费精品视频一| 欧美在线一二三四区| 亚洲春色另类小说| 亚洲一区视频在线| 国产一区二区三区免费观看| 亚洲狠狠丁香婷婷综合久久久| 欧美女同视频| 亚洲欧美日本另类| 麻豆久久久9性大片| 一区二区高清| 麻豆av福利av久久av| 一区二区三区鲁丝不卡| 久久久国产成人精品| 亚洲美女免费精品视频在线观看| 欧美在线视频播放| 亚洲欧洲精品天堂一级| 欧美在线首页| 亚洲精品老司机| 久久精品一区二区三区中文字幕| 亚洲黄色av一区| 久久精品二区| 99视频精品在线| 蜜臀va亚洲va欧美va天堂| 亚洲调教视频在线观看| 欧美a级在线| 亚洲欧美日韩综合| 欧美理论大片| 久久国产欧美| 国产精品久久国产精品99gif| 亚洲人成人一区二区在线观看| 国产精品久久久久久五月尺| 91久久久一线二线三线品牌| 国产精品久久久久免费a∨大胸| 亚洲人成网站777色婷婷| 国产精品一二一区| 99精品国产99久久久久久福利| 国产一区在线观看视频| 亚洲性xxxx| 91久久亚洲| 美女日韩欧美| 欧美一级成年大片在线观看| 欧美午夜美女看片| 日韩午夜精品| 在线看视频不卡|