《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于DSP的PCI總線數(shù)據(jù)采集系統(tǒng)的研究
基于DSP的PCI總線數(shù)據(jù)采集系統(tǒng)的研究
摘要: 基于DSP的PCI總線數(shù)據(jù)采集系統(tǒng)充分利用了DSP豐富的內(nèi)部資源,、強大的數(shù)字信號處理能力及PCI總線的高傳輸速度,,能夠方便的開發(fā)數(shù)據(jù)壓縮、語音壓縮存儲等新功能信號,并進行預(yù)處理與分析處理,。通過PCI總線進行數(shù)據(jù)傳送可大大提高傳輸速度,。
關(guān)鍵詞: DSP PCI 數(shù)據(jù)采集
Abstract:
Key words :

  1 引言

  隨著數(shù)字信號處理器性能的不斷提高及其成本與售價的大幅下降,,數(shù)字信號處理應(yīng)用領(lǐng)域飛速擴展,,信號處理進入了一個新的發(fā)展時期。同時隨著計算機技術(shù)以及互聯(lián)網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,,越來越多的數(shù)據(jù)需要經(jīng)過計算機來進行處理,、存儲、傳輸籌操作,。計算機的應(yīng)用已經(jīng)遍及我們生活的每一個角落,。由于計算機本身的特點,通用計算機通常僅負(fù)責(zé)沒有實時性要求的工作,,而不適于進行實時性要求很高的數(shù)字信號處理,。將計算機和 DSP有機地結(jié)合起來,充分利用各自的優(yōu)點,,它們將會相得益彰,,滿足現(xiàn)實應(yīng)用中對數(shù)據(jù)實時處理能力,、數(shù)據(jù)傳輸能力以及數(shù)據(jù)管理能力提出的越來越高的要求。 PCI總線以其眾多優(yōu)點在計算機中具有不可取代的作用,,采用PCI總線使DSP與計算機通信可以很好地滿足其對高速數(shù)據(jù)傳輸?shù)囊?。本文以實際開發(fā)系統(tǒng)為背景,以TI公司的TMS320VC5402與PLX公司的PCI9052為基礎(chǔ),。詳細(xì)論述了基于DSP的PCI總線結(jié)構(gòu)的數(shù)據(jù)采集系統(tǒng)硬件及軟件設(shè)計方案和實現(xiàn)方法,。

  2 數(shù)據(jù)采集系統(tǒng)硬件設(shè)計

  2.1 系統(tǒng)結(jié)構(gòu)及原理

  基于DSP的PCI總線高速數(shù)據(jù)采集系統(tǒng)的結(jié)構(gòu)如圖1所示,它主要由A/

 

D轉(zhuǎn)換器,、DSP數(shù)據(jù)讀取及處理,、PCI通信接口和PC機等部分組成。模擬信號經(jīng)A/D采樣后由DSP通過并行I/O讀取,,并將處理后的數(shù)據(jù)通過PCI總線送到通用計算機做進一步處理[1],。
 

 

系統(tǒng)框圖

  A/D轉(zhuǎn)換器采用TI公司的TLC5510,TLC5510為8 bit,、20 MS/s的高速并行A/D轉(zhuǎn)換器,。TLC5510在每個時鐘的下降沿采樣,該采樣點的轉(zhuǎn)換數(shù)據(jù)經(jīng)過2.5個延遲后,,在時鐘的上升沿輸出,也就是每個點的轉(zhuǎn)換時間為2.5個時鐘周期,,一旦轉(zhuǎn)換流水線啟動,,則在每個時鐘的上升沿都有一個轉(zhuǎn)換數(shù)據(jù)輸出。

  DSP與計算機之間的通信由接口電路PCI9052實現(xiàn),。PCI9052是PLX公司推出的一種簡單,、高效的PCI從設(shè)備接口,可實現(xiàn)多種外設(shè)局部總線和PCI總線的互連,。根據(jù)PCI規(guī)范,,主設(shè)備和從設(shè)備的劃分本質(zhì)上是確定數(shù)據(jù)傳輸雙方訪問與被訪問的能力和關(guān)系。在此,,PCI9052只能由主機或其它擁有總線主控制能力的設(shè)備進行數(shù)據(jù)的讀寫操作,。但由于其內(nèi)部有64Byte寫FIFO和32Byte讀FIFO,使PCI9052的局部總線和PCI總線能互相獨立工作,,可支持傳輸速度為132 Mb/s的突發(fā)傳輸[2],。 

  DSP采用TI公司的TMS320VC5402,它的處理能力可達到100 Mb/s,具有改進型的8位HPI接口,,有16 K*16 Bit DARAM,,以及4 K*l6 Bit ROM存儲空間。具有較高的性價比[3],。

  2.2 PCI9052與TMS320VC5402的接口

  PCI9052的局部總線設(shè)置為8位局部總線,,采用地址數(shù)據(jù)非復(fù)用模式,,PCI9052和TMS320VC5402的接口電路如圖2所示[4,5]。此時,,LBE1為LA1,,LBE0為LA0。將PCI9052的LBE0接HPI的HBIL,,用以區(qū)分第一字節(jié)和第二字節(jié),。PCI9052的LA17接TMS320VC5402的HCNTL1,LA16接HC-NTL0,,以選擇HPI寄存器,。PCI9052的LAD[0:7]接TMS320VC5402的HD[7:0]。TMS320VC5402的HINT反向后接至PCI9052的LINT1,,之所以反向是由于HINT低電平有效,,而UNT1是高電平有效。PCI9052的LW/R反向后接至TMS320VC5402的HR/W,,因為LW/R高電平表示寫,,低電平表示讀;而HR/W高電平表示主機要讀HPI,,低電平表示主機要寫HPI,。PCI9052的CS0與CS1相或后連接至HCS,RD和WR分別連接到HDS1,,HDS2,。TMS320VC5402的LRDY通過一定的邏輯組合再加上一個D觸發(fā)器與PCI9052的LRDY相連以實現(xiàn)PCI9052與HPI的同步。PCI9052局部時鐘采用40MHz,。其中CPLD選用EPM7128,,使用MAX+PLUSⅡ進行設(shè)計。

連接示意圖

  HPI主機接口采用訪問寄存器的方式來進行DSP內(nèi)部數(shù)據(jù)的讀寫,,把HPI口單純映射到PCI的I/O空間或者存儲器空間都有不可避免的缺點,,因此本接口電路采用雙映射方式,利用映射來訪問控制,、地址寄存器和單個數(shù)據(jù)口,,而利用存儲器映射來訪問連續(xù)數(shù)據(jù)口。以實現(xiàn)TMS320VC5402與PCI9052之間方便,、高效的數(shù)據(jù)通信[6],。

  3 數(shù)據(jù)采集系統(tǒng)軟件的設(shè)計

  數(shù)據(jù)采集系統(tǒng)的軟件設(shè)計包括三個部分:DSP上的采集程序及響應(yīng)程序。數(shù)據(jù)采集卡的驅(qū)動程序,,在驅(qū)動程序上構(gòu)建的應(yīng)用程序,。驅(qū)動程序是實現(xiàn)DSP與計算機通信的關(guān)鍵,本文主要介紹設(shè)備驅(qū)動模型及其初始化的設(shè)計方法,。

 

     3.1 驅(qū)動程序模型

     Win2000不支持直接訪問硬件,,虛擬驅(qū)動器依賴運行在內(nèi)核模式的真正的驅(qū)動器,。內(nèi)核模式驅(qū)動程序使用系統(tǒng)級代碼編寫,且運行在內(nèi)核模式下,,因為內(nèi)核模式允許直接硬件訪問,。內(nèi)核驅(qū)動程序可被進一步分成遺留模式的驅(qū)動程序和Windows驅(qū)動模式的驅(qū)動程序(WDM)。

  Windows驅(qū)動程序模型(WDM)如圖3所示,。圖中左邊是一個設(shè)備對象堆棧,。設(shè)備對象是系統(tǒng)為幫助軟件管理硬件而創(chuàng)建的數(shù)據(jù)結(jié)構(gòu)。處于堆棧最底層的設(shè)備對象稱為物理設(shè)備對象(PDO),。在設(shè)備對象堆棧的中間某處有一個功能設(shè)備對象(FDO),。FDO的上面和下面還會有一些過濾設(shè)備對象。位于FDO上面的過濾設(shè)備對象稱為上層過濾器,,位于FDO下面的過濾器設(shè)備對象稱為下層過濾器,。

驅(qū)動程序模型

  總線驅(qū)動器的任務(wù)之一就是枚舉總線上的設(shè)備。并為每個設(shè)備創(chuàng)建一個PDO,。一旦總線驅(qū)動器程序檢查到新硬件存在,,PnP管理器就創(chuàng)建一個PDO,創(chuàng)建完P(guān)DO后,,PnP管理器參照注冊表中的信息查找與這個PDO相關(guān)的過濾器和功能驅(qū)動程序,。系統(tǒng)安裝程序負(fù)責(zé)這些注冊表項,而驅(qū)動程序包中控制硬件安裝的INF文件負(fù)責(zé)添加其他表項,。這些表項定義了過濾器和功能驅(qū)動程序在堆棧中的次序,。

  3.2 驅(qū)動程序的初始化

  PnP管理器先裝入硬件需要的驅(qū)動程序,然后再調(diào)用驅(qū)動程序中的AddDevice函數(shù),。一個驅(qū)動程序可以被多個類似的硬件使用。但驅(qū)動程序的某些全局初始化操作只能在第一次被裝入時執(zhí)行一次,。而DriverEntry例程就是用于這個目的,。DriverEntry是內(nèi)核模式驅(qū)動程序主入口點常用的名字。

  DriverEntry的第一個參數(shù)是一個指針,,指向一個被初始化的驅(qū)動程序?qū)ο?,該對象代表用戶的?qū)動程序。DriverEntry的第二個參數(shù)是設(shè)備服務(wù)鍵鍵名,,其主要工作是把各種函數(shù)指針填入驅(qū)動程序?qū)ο?。這些指針為操作系統(tǒng)指明了驅(qū)動程序容器中各種子例程的位置。

  PnP管理器先裝入最底層的過濾器驅(qū)動程序并調(diào)用其AddDevice函數(shù),。該函數(shù)創(chuàng)建一個FiDO,這樣就在過濾器驅(qū)動程序和FiDO之間建立了水平連接,。然后AddDevice把PDO連接到FiDO上。PnP管理器繼續(xù)下上執(zhí)行,,裝入并調(diào)用每個底層過濾器,、功能驅(qū)動程序,、高層過濾器,直到完成這個堆棧,。

  DriverObject參數(shù)指向一個驅(qū)動程序?qū)ο?,就是在DriverEntry例程中初始化的那個驅(qū)動程序?qū)ο蟆DO參數(shù)指向設(shè)備堆棧底部的物理設(shè)備對象,。AddDevice函數(shù)的基本任務(wù)是創(chuàng)建一個設(shè)備對象并把它連接到以PDO為底的設(shè)備堆棧中,。

  當(dāng)AddDevice函數(shù)將FDO和FiDO創(chuàng)建且連接好后,PnP管理器分配資源且發(fā)送PRP_MN_START_DEVICE,,功能驅(qū)動程序需要在這個IRP上做大量工作,,包括分配并配置額外的軟件資源以及為設(shè)備操作做準(zhǔn)備。處理這個IRP主要通過PnPStartDevice函數(shù)完成,。PnPStartDevice函數(shù)首先將IRP傳遞到底層驅(qū)動程序,。等待完成后,調(diào)用IoGetCurrentIrpStackLocation函數(shù)得到當(dāng)前自己的堆棧單元,。I/O堆棧單元的Parameters聯(lián)合有一個名為StarDevice的子結(jié)構(gòu),,該結(jié)構(gòu)包含了資源分配信息。在StarDevice里就可以將分配的資源填充到PDO的設(shè)備擴展域中,,并且調(diào)用IoConnectInterrupt函數(shù)連接中斷,。

  層次結(jié)構(gòu)可以使I/O請求過程更加明了。每個影響到設(shè)備的操作都使用I/O請求包,。通常IRP先被送到設(shè)備堆棧的最上層驅(qū)動程序,,然后逐漸過濾到下面的驅(qū)動程序。內(nèi)核通常通過發(fā)送I/O請求包(IRP)來運行驅(qū)動程序中的代碼,。

  4 結(jié)束語

  基于DSP的PCI總線數(shù)據(jù)采集系統(tǒng)充分利用了DSP豐富的內(nèi)部資源,、強大的數(shù)字信號處理能力及PCI總線的高傳輸速度,能夠方便的開發(fā)數(shù)據(jù)壓縮,、語音壓縮存儲等新功能信號,,并進行預(yù)處理與分析處理。通過PCI總線進行數(shù)據(jù)傳送可大大提高傳輸速度,。本系統(tǒng)適用于高速數(shù)據(jù)的采集和處理以及需要進行大量數(shù)據(jù)傳輸?shù)膽?yīng)用場合,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。