引言
隨著數(shù)字信號(hào)處理芯片性價(jià)比的不斷提高,,數(shù)字信號(hào)處理的應(yīng)用領(lǐng)域飛速發(fā)展,同時(shí)Pentium高速CPU的出現(xiàn),,要求有極高的數(shù)據(jù)通量予以支持,,而低速的ISA總線在解決這些問(wèn)題方面逐漸無(wú)能為力,取而代之的是高速的PCI總線,。PCI總線可將高速外圍設(shè)備直接掛在CPU總線上,,33MHz/32位時(shí)數(shù)據(jù)傳輸速率可達(dá)132MB/s,66MHz/64位時(shí)更是性能加倍,,打破了數(shù)據(jù)傳輸速率的瓶頸,,使得CPU的性能得到充分發(fā)揮。如果采用美國(guó)TI公司生產(chǎn)的高速高性能數(shù)字信號(hào)處理器DSP取代原來(lái)的單片機(jī)作為板載CPU,,可以充分利用PCI總線的優(yōu)點(diǎn)直接將采集的數(shù)據(jù)傳到微機(jī)內(nèi)存,,有效地解決了數(shù)據(jù)的實(shí)時(shí)傳輸和存儲(chǔ)問(wèn)題。
測(cè)控系統(tǒng)的硬件組成
系統(tǒng)基本硬件結(jié)構(gòu)如圖1所示,。整個(gè)高速測(cè)控系統(tǒng)主要由信號(hào)調(diào)理電路,、DSP模塊、FIFC)存儲(chǔ)器,、CPLD控制電路,、PC19054接口芯片等組成。系統(tǒng)采用主從結(jié)構(gòu),,PC機(jī)作為上位機(jī),,用于完成對(duì)系統(tǒng)的控制(如AD轉(zhuǎn)換的開始、DSP復(fù)位,、中斷響應(yīng),、數(shù)據(jù)接收與處理等)。DSP作為下位機(jī),,用于完成數(shù)據(jù)的采集與處理,、PWM波以及其他外圍信號(hào)的控制等。
DSP測(cè)控模塊介紹
系統(tǒng)采用的DSP芯片為TI公司的TMS320LF2407,。電路設(shè)計(jì)時(shí),,利用的DSP內(nèi)部的16通道A/D轉(zhuǎn)換實(shí)現(xiàn)數(shù)據(jù)采集,DSP與FIFO的電路接口電壓都為3.3V,,可實(shí)現(xiàn)無(wú)縫連接,,DSP的數(shù)據(jù)總線直接與FIFO的數(shù)據(jù)輸入端口相連,DSP與FIFO的時(shí)鐘頻率應(yīng)設(shè)為相同,。這樣,無(wú)需插入等待周期,,控制信號(hào)經(jīng)CPLD直接轉(zhuǎn)換為FIFO的讀寫信號(hào),,實(shí)現(xiàn)數(shù)據(jù)的高速存儲(chǔ),。
先進(jìn)先出存儲(chǔ)器
在DMA傳輸方式下,由于PCI9054內(nèi)部的FIFO只有32級(jí)深度,,實(shí)時(shí)傳送高速數(shù)據(jù)時(shí),,PCI9054內(nèi)部的FIFO會(huì)很快存滿,而DSP內(nèi)的數(shù)據(jù)仍會(huì)源源不斷的傳送過(guò)來(lái),,易造成數(shù)據(jù)的丟失,,因此必須要擴(kuò)展外部FIFO。
本系統(tǒng)采用I D T公司高速CMOS同步FIFO芯片IDT72V3660,,它的容量為4096×36bit,;有高達(dá)100MHz的讀寫速度;可以兼容3.3V和5V兩種接口電壓,。該FIFO具有標(biāo)準(zhǔn)的"滿"(FF#),、"半滿"(HF#)、"空"(EF#)等標(biāo)志,。系統(tǒng)可以根據(jù)這些標(biāo)志信號(hào)控制對(duì)FIFO的讀寫操作,。在CPLD的邏輯控制下,當(dāng)WEN#有效時(shí),,在WCLK的每一個(gè)上升沿,,F(xiàn)IFO會(huì)把輸人數(shù)據(jù)線上的數(shù)據(jù)存入內(nèi)部存儲(chǔ)器。當(dāng)REN#有效且輸出允許(OE#有效)時(shí),,在RCLK的每一個(gè)上升沿,,F(xiàn)IFO會(huì)把內(nèi)部存儲(chǔ)器中的數(shù)據(jù)發(fā)送到輸出數(shù)據(jù)總線上(低電平用"#"表示)。
控制邏輯芯片CPLD
本系統(tǒng)采用Altera公司的EPM7128來(lái)實(shí)現(xiàn)系統(tǒng)的邏輯控制,,主要包括DSP控制邏輯,、FIFO控制邏輯、PCI9054接口控制邏輯三個(gè)部分,,其中,,對(duì)PC219054的邏輯控制是設(shè)計(jì)的重點(diǎn)。設(shè)計(jì)中利用MaxPlusⅡ軟件進(jìn)行VHDL語(yǔ)言編程,、仿真和調(diào)試,。
PCI9054及外部接口分析
PCI與板載CPU的橋接有兩種設(shè)計(jì)方案,一種是采用FPGA,,通過(guò)軟件編程實(shí)現(xiàn)硬件功能,。另一種是利用專用PCI橋接芯片,適合快速開發(fā)的場(chǎng)合,。
本系統(tǒng)采用PLX公司的PCI總線專用接口控制芯片PC19054,。它符合PCIV2.1和PCIV2_2規(guī)范;可同時(shí)支持3.3V和5V兩種信號(hào)環(huán)境;提供了兩個(gè)獨(dú)立的可編程DMA控制器,;內(nèi)部有6種可編程FIFO,,以實(shí)現(xiàn)零等待突發(fā)傳輸及局部總線和PCI總線之間的異步操作;在PCI總線端支持33MHz/32位,,傳輸速率最高可達(dá)132MB/s,;在局部端可編程實(shí)現(xiàn)8/16/32位的數(shù)據(jù)寬度,支持復(fù)用/非復(fù)用的32位地址/數(shù)據(jù),,時(shí)鐘最高可達(dá)50MHz,。
PCI9054局部總線可工作在M、J,、C三種模式,,M模式是專門為Motorola公司的 MPC850和MPC860提供直接非復(fù)用的接口;J模式地址/數(shù)據(jù)線復(fù)用,;C模式與J模式差別不大,,但地址/數(shù)據(jù)線非復(fù)用,更符合連接習(xí)慣,。本設(shè)計(jì)采用C模式,。
PCI9054的數(shù)據(jù)傳輸模式可分為主模式、從模式,、DMA模式,。模式的選擇主要根據(jù)硬件設(shè)計(jì)者對(duì)硬件的設(shè)計(jì)需要而定。本系統(tǒng)采用DMA模式,,在DMA傳輸模式下,,PCI9054既是PCI端的主控方,又是局部端的主控方,。
PCI9054集成了兩個(gè)互相獨(dú)立的DMA通道,,每個(gè)通道都支持Block DMA和Scatter/(3ather DMA,其中通道0還支持請(qǐng)求(Demand)DMA傳輸方式,。當(dāng)有通道進(jìn)行DMA傳輸時(shí),,DMA控制器將發(fā)起對(duì)局部總線和PCI總線操作,其傳輸過(guò)程如圖2所示,。 PC219054提供了三個(gè)物理總線接口:PCI總線接口,、EEPROM接口、局部總線接口,。PCI總線接口依照PCI擴(kuò)展板上定義的引腳分配情況將彼此對(duì)應(yīng)的信號(hào)連接在一起即可,。本系統(tǒng)采用的EEPROM為4K、3.3V串行的93LC66B,,通過(guò)對(duì)PCI時(shí)鐘分頻來(lái)產(chǎn)生EEPROM時(shí)鐘,,內(nèi)部存放PCI9054的配置信息,,系統(tǒng)加電時(shí)PCI9054自動(dòng)加載EEPROM中的配置信息,并由BIOS通過(guò)PCI總線對(duì)配置寄存器讀寫,,來(lái)完成各種控制功能,。接口電路如圖3所示,。
PCI9054在DMA傳輸方式下,,通過(guò)設(shè)置其DMA控制器內(nèi)部的寄存器即可實(shí)現(xiàn)兩總線之間的數(shù)據(jù)傳送。傳輸過(guò)程由以下幾個(gè)步驟實(shí)現(xiàn):
1.設(shè)置傳輸方式寄存器:通過(guò)寄存器DMA MODE0或DMAMODE1的位9來(lái)設(shè)置DMA通道的傳輸方式,,置0表示Block傳輸,,置1表示Scatter/Gather傳輸;
2.設(shè)置命令/狀態(tài)寄存器:?jiǎn)?dòng)/停止DMA操作,,并讀此寄存器返回DMA狀態(tài),;
3.設(shè)置描述寄存器:設(shè)置DMA的傳輸方向;
4.設(shè)置傳輸計(jì)數(shù)寄存器:以字節(jié)為單位設(shè)置傳輸數(shù)據(jù)量,;
5.設(shè)置PCI地址寄存器:設(shè)置PCI總線側(cè)的地址空問(wèn),;
6.設(shè)置局部地址寄存器:設(shè)置局部總線側(cè)的地址空間。 當(dāng)進(jìn)行數(shù)據(jù)采集時(shí),,由應(yīng)用程序或通過(guò)DSP的外部引腳(pi
n21)向DSP發(fā)出采集命令,,同時(shí)復(fù)位FIFO,在13SP內(nèi)部程序和CPLD的控制下,,數(shù)據(jù)經(jīng)DO-31源源不斷地輸入到FIFO中,,當(dāng)FIFO半滿時(shí)發(fā)出半滿標(biāo)志信號(hào)(HF#),CPLD接到半滿信號(hào)后,,立即向PCI9054發(fā)出中斷請(qǐng)求信號(hào)(LINT),,驅(qū)動(dòng)程序響應(yīng)中斷,在中斷響應(yīng)程序內(nèi),,發(fā)出讀命令,、要讀取的字節(jié)數(shù)、傳輸方向,、地址信號(hào)等,,PCI9054設(shè)定"DMA傳輸開始位"啟動(dòng)數(shù)據(jù)傳輸,當(dāng)ADS#為低(有效),,BLAST為高(無(wú)效),,LW/R為低(有效)時(shí),表明PCI9054開始一個(gè)有效的讀數(shù)據(jù)周期,,CPLD產(chǎn)生一個(gè)低電平信號(hào)REN#給FIFO,,同時(shí)作為Ready信號(hào)返回給PCI9054, 表明已準(zhǔn)備就緒,。直到ADS#為高(無(wú)效)且BLAST#為低(有效)時(shí),,表明PCI9054已經(jīng)開 始最后一個(gè)周期,同時(shí)設(shè)定D M A"傳輸結(jié)束位"結(jié)束DMA操作,此時(shí)REN#信號(hào)再次變高電平(無(wú)效),,完成一次數(shù)據(jù)突發(fā)傳輸,。接口電路如圖4所示。
該系統(tǒng)的軟件設(shè)計(jì)主要包括DSP測(cè)控程序,、PCI設(shè)備驅(qū)動(dòng)程序和Windows應(yīng)用程序三個(gè)部分,。驅(qū)動(dòng)程序是連接硬件系統(tǒng)和應(yīng)用程序的橋梁,是整個(gè)測(cè)控系統(tǒng)開發(fā)中的關(guān)鍵一步,。在此簡(jiǎn)單介紹一下PCI設(shè)備驅(qū)動(dòng)程序開發(fā)過(guò)程,。
在Windows環(huán)境下共有三種類型的驅(qū)動(dòng)程序,分別是VXD,、NT,、WDM。因?yàn)閃DM可以應(yīng)用在windows98/2000/XP下,,支持即插即用,、電源管理、WMI等功能,,是Windows NT驅(qū)動(dòng)體系基礎(chǔ)上發(fā)展起來(lái)的未來(lái)主流驅(qū)動(dòng)程序體系,,所以為這里選擇設(shè)計(jì)WDM驅(qū)動(dòng)程序。
開發(fā)工具選擇Compuware公司提供的DriverStudio完~成驅(qū)動(dòng)程序的開發(fā),,DriverWorks是DriverStudio中的一個(gè)部分,,DriverWorks中的類庫(kù)封裝了針對(duì)驅(qū)動(dòng)程序的各種通用操作,使用其中的DriverWizard向?qū)Чδ?,能夠非常方便地?shí)現(xiàn)WDM驅(qū)動(dòng)程序的開發(fā),。
其中PCI配置空間的訪問(wèn)采用KPciConfiguration實(shí)現(xiàn)。I/O訪問(wèn)采用DriverStudio中的KIoRange類實(shí)現(xiàn),。硬件中斷響應(yīng)的處理可以采用Kinterrupt類實(shí)現(xiàn),。DMA讀主要是利用三個(gè)類來(lái)實(shí)現(xiàn)數(shù)據(jù)傳輸,分別為: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用于申請(qǐng)系統(tǒng)提供的公用緩沖區(qū),。
執(zhí)行過(guò)程中驅(qū)動(dòng)程序首先設(shè)置PCI9054的工作方式和中斷寄存器、DMA配置寄存器,,然后等待本地中斷的到來(lái),。當(dāng)FIFO半滿時(shí)表明本地中斷到來(lái),在設(shè)備成員函數(shù)Isr_IrqO中屏蔽本地中斷,,在設(shè)備成員函數(shù)DpcFor_Irq()中調(diào)用KDmaTransfer:Continue()函數(shù)進(jìn)行DMA傳輸,。一次數(shù)據(jù)傳輸完畢后,,驅(qū)動(dòng)程序通過(guò)操作系統(tǒng)將內(nèi)核中的數(shù)據(jù)拷貝到用戶態(tài)內(nèi)存,交給應(yīng)用軟件處理,。
結(jié)語(yǔ)
在實(shí)驗(yàn)室中利用PCI9054作為接口芯片的高速測(cè)控系統(tǒng),,可實(shí)現(xiàn)持續(xù)數(shù)據(jù)傳輸速率達(dá)50MB/s,且系統(tǒng)運(yùn)行穩(wěn)定,,具有廣泛的應(yīng)用前景,。