<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è) > 嵌入式系統 > 設計應用 > 基于DSP的PCI高速測控系統結構的研究設計

基于DSP的PCI高速測控系統結構的研究設計

作者: 時(shí)間:2012-07-18 來(lái)源:網(wǎng)絡(luò ) 收藏

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

PC219054提供了三個(gè)物理總線(xiàn)接口:總線(xiàn)接口、EEPROM接口、局部總線(xiàn)接口。總線(xiàn)接口依照擴展板上定義的引腳分配情況將彼此對應的信號連接在一起即可。本系統采用的EEPROM為4K、3.3V串行的93LC66B,通過(guò)對PCI時(shí)鐘分頻來(lái)產(chǎn)生EEPROM時(shí)鐘,內部存放PCI9054的配置信息,系統加電時(shí)PCI9054自動(dòng)加載EEPROM中的配置信息,并由BIOS通過(guò)PCI總線(xiàn)對配置寄存器讀寫(xiě),來(lái)完成各種控制功能。接口電路如圖3所示。

PCI9054在DMA傳輸方式下,通過(guò)設置其DMA控制器內部的寄存器即可實(shí)現兩總線(xiàn)之間的數據傳送。傳輸過(guò)程由以下幾個(gè)步驟實(shí)現:

1.設置傳輸方式寄存器:通過(guò)寄存器DMA MODE0或DMAMODE1的位9來(lái)設置DMA通道的傳輸方式,置0表示Block傳輸,置1表示Scatter/Gather傳輸;
2.設置命令/狀態(tài)寄存器:?jiǎn)?dòng)/停止DMA操作,并讀此寄存器返回DMA狀態(tài);
3.設置描述寄存器:設置DMA的傳輸方向;
4.設置傳輸計數寄存器:以字節為單位設置傳輸數據量;
5.設置PCI地址寄存器:設置PCI總線(xiàn)側的地址空問(wèn);
6.設置局部地址寄存器:設置局部總線(xiàn)側的地址空間。

當進(jìn)行數據采集時(shí),由應用程序或通過(guò)的外部引腳(pin21)向發(fā)出采集命令,同時(shí)復位FIFO,在13SP內部程序和CPLD的控制下,數據經(jīng)DO-31源源不斷地輸入到FIFO中,當FIFO半滿(mǎn)時(shí)發(fā)出半滿(mǎn)標志信號(HF#),CPLD接到半滿(mǎn)信號后,立即向PCI9054發(fā)出中斷請求信號(LINT),驅動(dòng)程序響應中斷,在中斷響應程序內,發(fā)出讀命令、要讀取的字節數、傳輸方向、地址信號等,PCI9054設定DMA傳輸開(kāi)始位啟動(dòng)數據傳輸,當ADS#為低(有效),BLAST為高(無(wú)效),LW/R為低(有效)時(shí),表明PCI9054開(kāi)始一個(gè)有效的讀數據周期,CPLD產(chǎn)生一個(gè)低電平信號REN#給FIFO,同時(shí)作為Ready信號返回給PCI9054, 表明已準備就緒。直到ADS#為高(無(wú)效)且BLAST#為低(有效)時(shí),表明PCI9054已經(jīng)開(kāi) 始最后一個(gè)周期,同時(shí)設定D M A傳輸結束位結束DMA操作,此時(shí)REN#信號再次變高電平(無(wú)效),完成一次數據突發(fā)傳輸。接口電路如圖4所示。

該系統的軟件設計主要包括測控程序、PCI設備驅動(dòng)程序和Windows應用程序三個(gè)部分。驅動(dòng)程序是連接硬件系統和應用程序的橋梁,是整個(gè)測控系統開(kāi)發(fā)中的關(guān)鍵一步。在此簡(jiǎn)單介紹一下PCI設備驅動(dòng)程序開(kāi)發(fā)過(guò)程。

在Windows環(huán)境下共有三種類(lèi)型的驅動(dòng)程序,分別是VXD、NT、WDM。因為WDM可以應用在windows98/2000/XP下,支持即插即用、電源管理、WMI等功能,是Windows NT驅動(dòng)體系基礎上發(fā)展起來(lái)的未來(lái)主流驅動(dòng)程序體系,所以為這里選擇設計WDM驅動(dòng)程序。

開(kāi)發(fā)工具選擇Compuware公司提供的DriverStudio完~成驅動(dòng)程序的開(kāi)發(fā),DriverWorks是DriverStudio中的一個(gè)部分,DriverWorks中的類(lèi)庫封裝了針對驅動(dòng)程序的各種通用操作,使用其中的DriverWizard向導功能,能夠非常方便地實(shí)現WDM驅動(dòng)程序的開(kāi)發(fā)。

其中PCI配置空間的訪(fǎng)問(wèn)采用KPciConfiguration實(shí)現。I/O訪(fǎng)問(wèn)采用DriverStudio中的KIoRange類(lèi)實(shí)現。硬件中斷響應的處理可以采用Kinterrupt類(lèi)實(shí)現。DMA讀主要是利用三個(gè)類(lèi)來(lái)實(shí)現數據傳輸,分別為:KDmaTransfer、KdmaAdapter和K C o m m o n D m a B U ff e r。KDmaTransfer用于DMA傳輸控制。KdmaAdapter用于建立一個(gè)DMA適配器來(lái)說(shuō)明DMA通道的特性。KCommonDmaBuffer用于申請系統提供的公用緩沖區。

執行過(guò)程中驅動(dòng)程序首先設置PCI9054的工作方式和中斷寄存器、DMA配置寄存器,然后等待本地中斷的到來(lái)。當FIFO半滿(mǎn)時(shí)表明本地中斷到來(lái),在設備成員函數Isr_IrqO中屏蔽本地中斷,在設備成員函數DpcFor_Irq()中調用KDmaTransfer:Continue()函數進(jìn)行DMA傳輸。一次數據傳輸完畢后,驅動(dòng)程序通過(guò)操作系統將內核中的數據拷貝到用戶(hù)態(tài)內存,交給應用軟件處理。

結語(yǔ)

在實(shí)驗室中利用PCI9054作為接口芯片的系統,可實(shí)現持續數據傳輸速率達50MB/s,且系統運行穩定,具有廣泛的應用前景。


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

關(guān)鍵詞: DSP PCI 高速測控

評論


相關(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>