<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 模擬技術(shù) > 設計應用 > 基于USB2.0與FPGA技術(shù)的高速數據采集系統的設計

基于USB2.0與FPGA技術(shù)的高速數據采集系統的設計

作者:袁江南 時(shí)間:2008-07-25 來(lái)源:電子技術(shù)應用 收藏

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

本文引用地址:http://dyxdggzs.com/article/86243.htm

  根據輸入傳輸要求,在具體的設計中,除了主數據傳輸端點(diǎn)外,還配置了一個(gè)數據緩沖區為64字節的、工作于中斷傳輸方式的端點(diǎn)作為命令端口,負責與主機進(jìn)行通信握手。如果主機想從設備讀取數據,則首先發(fā)送一個(gè)讀取命令,單片機接收到該命令后,就向主數據端點(diǎn)的FIFO中寫(xiě)入數據,隨后主機發(fā)出讀數據令牌,正好有數據可以發(fā)送。通過(guò)命令端口還可以發(fā)送各種命令,控制數據采集器動(dòng)作。

3 數據采集模塊設計

  3.1 模塊劃分
  
  模塊劃分為接口、FIFO、單片機接口、DMA接口控制、主控制器等模塊,其中設置了一些可以單片機寫(xiě)入的寄存器。的采集速度,FIFO的空、滿(mǎn)、數據寫(xiě)入、讀出速度都可以靈活配置。整個(gè)模塊以Verilog語(yǔ)言寫(xiě)成,稍加修改可以同各種芯片接口。整個(gè)設計在A(yíng)ltera公司的Cyclone系列的EP1C12中完成。在A(yíng)CEX1K系列EC1K100器件上也可以實(shí)現,工作時(shí)鐘頻率為50MHz。

  為了提高系統的靈活性,在信號的調理、濾波模塊中使用了Lattice公司的ispPAC80可編程濾波器作為輸入濾波器,可以靈活地設定抗混疊濾波器的截止頻率,最大截至頻率可以達到750kHz,完全可以滿(mǎn)足一般中、高頻信號的濾波。作為A/D控制器可以同多種A/D芯片接口,本設計中使用了TI公司的10位高速A/D芯片TLC876。芯片工作于流水線(xiàn)方式,最高采樣速率為20MSPS。

  3.2 與單片機及ISP1581的接口

  FPGA在與單片機信號的接口過(guò)程中,使用了同步設計的方法。即首先對單片機的I/O信號進(jìn)行采樣同步化,獲得各信號上升、下降沿的時(shí)刻,輸出同步脈沖,然后在這些時(shí)刻點(diǎn)處根據同步脈沖的出現與否來(lái)控制系統進(jìn)行動(dòng)作。這種設計的優(yōu)點(diǎn)是可以在設計中采用同步狀態(tài)機,以獲得較高的運行速度和穩定的工作性能。這也是ALTERA、XILINX等公司的FPGA數字系統設計中所推薦使用的方法。

  為了提高FPGA中的FIFO與ISP1581中的數據存儲器的數據交換速度,FPGA與ISP1581之間采用DMA方式進(jìn)行數據交換。

  ISP1581有兩種工作方式,由BUS_CONF、MODE0、MODE1三根引腳控制:

  (1)如果上電時(shí)檢測到BUS_CONF引腳為低電平,則工作于分裂總線(xiàn)方式(Split Bus Mode)。ISP1581具有8-bit地址/數據復用總線(xiàn)和16-bit的DMA專(zhuān)用數據線(xiàn)。此時(shí)MODE1引腳如果為低電平,則可以將芯片的ALE/A0引腳與89X51的ALE腳直接相連,進(jìn)行地址/數據總線(xiàn)復用;而如果MODE1為高電平,則ALE/A0腳要接其他的89X51引腳,由用戶(hù)編程將ALE/A0腳拉高/低進(jìn)行地址/數據復用,而MODE0腳在這種方式下沒(méi)有使用或作為其他用途。

  (2)如果上電時(shí)檢測到BUS_CONF引腳為高電平,則工作于通用處理器方式(Generic Processor Mode)。此時(shí)MODE1腳沒(méi)有使用(可接Vcc),MODE0引腳則可接低/高電平,這樣可以使芯片的讀/寫(xiě)引腳分別符合Motorola/89X51微處理器的讀寫(xiě)規范。所以讓ISP1581芯片工作于分裂總線(xiàn)方式可以方便地與8051系列單片機接口,其AD[7:0]作為數據/地址總線(xiàn)復用,RD、WE、ALE分別為讀、寫(xiě)、地址鎖存線(xiàn),DATA[15:0]作為DMA數據總線(xiàn)使用。

  ISP1581芯片中與DMA相關(guān)的引腳有DREQ、DACK、DIOR、DIOW。DMA傳輸前必須設定工作模式、初始化DMA相關(guān)寄存器,然后對DMA命令寄存器寫(xiě)入一個(gè)命令便可以啟動(dòng)DMA傳輸。傳輸模式有主、從、IDE、ATA等方式。通用數據采集系統比較適合采用從模式,在這種模式下,單片機接收到主機發(fā)來(lái)的開(kāi)始采集命令后,立即命令FPGA啟動(dòng)采樣,然后命令I(lǐng)SP1581啟動(dòng)DMA傳輸,ISP1581將DREQ引腳拉高,表示請求數據,此時(shí)FPGA將數據準備好后,拉低DACK引腳,待準備好數據后,在DIOR線(xiàn)上產(chǎn)生讀脈沖,供ISP1581將數據讀入內部FIFO。DMA也可以使用主模式,此時(shí)讀脈沖DIOR由ISP1581產(chǎn)生。DMA工作時(shí)序圖如圖6所示。


4 PC機多線(xiàn)程數據采集程序設計

  的數據傳輸使用了虛擬管道的概念,可以同時(shí)接入127個(gè)設備。每個(gè)設備可以擁有若干個(gè)端點(diǎn),每個(gè)端點(diǎn)可以跟主機組成一個(gè)連接,構成一個(gè)通信的最小實(shí)體。在數據傳輸過(guò)程中,只要帶寬允許,主機可以同時(shí)跟幾個(gè)端點(diǎn)通信,因此要求在主機的應用程序中開(kāi)啟多個(gè)線(xiàn)程進(jìn)行通信。在本設計中,采用了命令端點(diǎn)和數據端點(diǎn)分開(kāi)的方式。命令端點(diǎn)配置成中斷或批量傳輸方式,在主機應用程序中專(zhuān)門(mén)開(kāi)啟一個(gè)線(xiàn)程同該端點(diǎn)進(jìn)行通信,開(kāi)啟另外一個(gè)線(xiàn)程進(jìn)行采樣數據傳輸,而兩個(gè)傳輸之間互相不影響。用戶(hù)界面使用另外的線(xiàn)程,這樣在傳輸過(guò)程中,應用程序可以隨時(shí)響應用戶(hù)的命令。在具體的設計中,點(diǎn)擊數據采集開(kāi)始命令即建立并且啟動(dòng)一個(gè)采集線(xiàn)程。在這個(gè)無(wú)限循環(huán)的線(xiàn)程函數中設置了一個(gè)標志變量,如果該變量為真,則線(xiàn)程函數繼續運行;否則線(xiàn)程終止,停止采集。這樣用戶(hù)界面線(xiàn)程可以通過(guò)修改線(xiàn)程運行標志變量來(lái)控制線(xiàn)程的運行。采用多線(xiàn)程采集程序的一個(gè)問(wèn)題是線(xiàn)程函數必須是一個(gè)全局函數,不屬于任何一個(gè)類(lèi),這樣它就無(wú)法訪(fǎng)問(wèn)類(lèi)的私有成員或保護成員,解決這個(gè)問(wèn)題的方法是:因為線(xiàn)程函數在創(chuàng )建時(shí)允許傳送一個(gè)指針參數給它,于是可以構造一個(gè)結構數據類(lèi)型,數據成員中包含一個(gè)指向類(lèi)的指針。在創(chuàng )建線(xiàn)程時(shí)將想要訪(fǎng)問(wèn)的類(lèi)的指針包含在一個(gè)按前述定義的結構變量中,并將該結構的指針作為參數傳給線(xiàn)程函數。這樣就可以在線(xiàn)程函數中定義一個(gè)類(lèi)對象,并把前述的類(lèi)指針賦給它,通過(guò)類(lèi)指針就可以訪(fǎng)問(wèn)該對象中的所有成員了。在本設計中采用多線(xiàn)程程序設計后,系統工作非常穩定。

  目前,國內外的數據采集系統常用的接口方式有多種,如 RS232 串行口、并行口,ISA 總線(xiàn)、PCI總線(xiàn)等。這些總線(xiàn)接口雖各具優(yōu)點(diǎn),但也都有其難以克服的缺點(diǎn)而被逐漸淘汰。接口具有連接方便、無(wú)需外接電源、即插即用、支持熱插拔、動(dòng)態(tài)加載驅動(dòng)程序等特有優(yōu)點(diǎn),在主機和數據采集系統之間可以實(shí)現簡(jiǎn)單、快捷、可靠的連接和通信。本設計應用ISP1581接口芯片與FPGA技術(shù),構建了一個(gè)使用靈活的通用數據采集系統。該系統充分利用了PC機的大存儲量,強大的數據處理能力,高清晰的大屏幕顯示(相對于嵌入式系統而言),以及嵌入式系統的實(shí)時(shí)與靈活性。目前正在使用此平臺構建一個(gè)在消聲室環(huán)境中針對機械振動(dòng)噪聲的采集與分析系統。此系統在智能儀器以及工業(yè)自動(dòng)化等眾多領(lǐng)域中必將有廣泛的應用前景。

參考文獻

[1] 蕭世文. USB2.0硬件設計[M].北京:清華大學(xué)出版社,2002.
[2]  周立功.PDIUSBD12USB固件編程與驅動(dòng)開(kāi)發(fā)[M].北京:北京航空航天大學(xué)出版社,2003.
[3]  張念淮. USB總線(xiàn)接口開(kāi)發(fā)指南[M].北京:國防工業(yè)出版社,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).


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 單片機 USB FPGA A/D

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>