摘 要:提出一種高速大容量數(shù)據(jù)采集卡的硬件方案,并對(duì)系統(tǒng)的結(jié)構(gòu)及工作原理進(jìn)行說(shuō)明。方案選取高性能ADC AT84AS001 實(shí)現(xiàn)數(shù)/模轉(zhuǎn)換,使用DDR 內(nèi)存條進(jìn)行數(shù)據(jù)存儲(chǔ),并通過(guò)PCI接口與計(jì)算機(jī)互連,可通過(guò)軟件界面對(duì)采集卡的工作狀態(tài)進(jìn)行控制。經(jīng)過(guò)調(diào)試,系統(tǒng)可穩(wěn)定運(yùn)行,最高采樣速率達(dá)500 MHz,存儲(chǔ)容量為256 MB,對(duì)于雷達(dá)對(duì)抗及測(cè)量領(lǐng)域具有一定的工程應(yīng)用價(jià)值。
關(guān)鍵詞:數(shù)據(jù)采集;DDR;PCI接口;WDM驅(qū)動(dòng)
中圖分類(lèi)號(hào):TP274文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1004-373X(2008)24-014-03
Research of High Speed and Mass Storage Data Acquisition Card
LI Hanzhao,LI Qian
(Naval University of Engineering,Wuhan,440033,China)
Abstract:This paper proposes a hardware design plan of high speed and mass storage data acquisition card.The structure and work principle of the system are illustrated.high performance ADC AT84AS001 to realize digital-to-analog conversion and DDR memory-chip to complete data storage is chosen.Then PCI is usedto connect the card with the computer.In this way,the operation mode of the card is controlled by software graphical user interface.The system runs stable after debug,it can provide 500 MHz sampling rate and the storage capacities is 256 MB.In a word,this system can be applied in the field of radar and surver.
Keywords:data acquisition;DDR;PCI interface;WDM driver
1 引 言
數(shù)據(jù)采集與存儲(chǔ)系統(tǒng)是信號(hào)與信息處理系統(tǒng)的重要組成部分。隨著雷達(dá)對(duì)抗技術(shù)和軟件無(wú)線(xiàn)電技術(shù)的發(fā)展,在一些應(yīng)用中需要對(duì)數(shù)據(jù)進(jìn)行高速采集和大容量實(shí)時(shí)存儲(chǔ),目前市場(chǎng)上同時(shí)具備上述兩種功能的采集系統(tǒng)還不多見(jiàn),為此提出一種具備可擴(kuò)展大容量存儲(chǔ)設(shè)備接口的基于PCI總線(xiàn)的數(shù)據(jù)采集系統(tǒng)。該系統(tǒng)的最高采樣速率可達(dá)500 MHz,使用256 MB的DDR內(nèi)存條實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ),計(jì)算機(jī)通過(guò)PCI總線(xiàn)和采集卡相連,可通過(guò)軟件界面實(shí)現(xiàn)對(duì)硬件設(shè)
備的控制。
2 系統(tǒng)結(jié)構(gòu)
圖1是采集卡的硬件功能框圖,其中虛線(xiàn)框中的模塊都是在FPGA芯片內(nèi)部實(shí)現(xiàn)的,選用的是Altera公司Stratix2系列的EP2S60F1020芯片。該芯片具有24 176個(gè)ALM單元(等效6萬(wàn)個(gè)LE單元),嵌入式RAM達(dá)到2.5 Mb,具有嵌入 DPA 電路,消除了信號(hào)偏移引發(fā)的相位對(duì)齊問(wèn)題[1]。圖1中的主控模塊負(fù)責(zé)接收來(lái)自PCI接口的計(jì)算機(jī)信息,并向系統(tǒng)的其他部分發(fā)送相關(guān)的控制命令。在進(jìn)行數(shù)據(jù)采集時(shí),A/D轉(zhuǎn)換芯片的輸出在經(jīng)過(guò)信號(hào)處理后,在數(shù)據(jù)存儲(chǔ)模塊的控制下被存入DDR內(nèi)存條;在將數(shù)據(jù)讀出時(shí),每次讀出的數(shù)據(jù)都先暫存在FPGA的RAM中,再通過(guò)PCI總線(xiàn)存入計(jì)算機(jī)的硬盤(pán)。

3 系統(tǒng)實(shí)現(xiàn)
3.1 A/D轉(zhuǎn)換部分的實(shí)現(xiàn)
設(shè)計(jì)中選用AT84AS001作為A/D轉(zhuǎn)換芯片,它是Atmel公司的高性能12位、500 MSPS ADC,對(duì)于IF采樣應(yīng)用具有低功耗和真12位的特點(diǎn)。通過(guò)使用它的板載S/H電路和先進(jìn)的高速處理技術(shù),它可在150 MHz 的中心頻率和±100 MHz 的IF帶寬時(shí)實(shí)現(xiàn)高達(dá)500 MSPS的采樣率[2]。
AT84AS001為雙倍數(shù)據(jù)率時(shí)鐘輸出,即在它的輸出時(shí)鐘的上下邊緣都有數(shù)據(jù)輸出,其輸入/輸出時(shí)序如圖2所示。圖2中的VIN為模擬輸入;CLKI為外部時(shí)鐘輸入;CLKO為芯片的輸出時(shí)鐘,其速率是輸入時(shí)鐘的一半;D[0∶11]和DN[0∶11]為差分輸出對(duì)。方案中選用EP2S60F1020的LVDS專(zhuān)用接口來(lái)實(shí)現(xiàn)數(shù)據(jù)的接收。它是Stratix2系列FPGA高速差分I/O口,具有動(dòng)態(tài)相位自動(dòng)校準(zhǔn)功能以及數(shù)據(jù)重排電路,其參數(shù)可通過(guò)Quartus 2軟件進(jìn)行設(shè)置。

3.2 數(shù)據(jù)存儲(chǔ)部分的實(shí)現(xiàn)
DDR內(nèi)存條在設(shè)計(jì)中選用三星公司的M470L3224FTO-CBC內(nèi)存條,內(nèi)嵌4片DDR存儲(chǔ)芯片,數(shù)據(jù)總線(xiàn)寬度64 b,存儲(chǔ)容量256 MB,采用200引腳的SO-DIMMM200的連接器,符合JEDEC標(biāo)準(zhǔn)。DDR SDRAM具有一個(gè)獨(dú)特的數(shù)據(jù)脈沖信號(hào)(DQS),內(nèi)存條就是根據(jù)DQS來(lái)分割1個(gè)時(shí)鐘周期內(nèi)的2次數(shù)據(jù),從而實(shí)現(xiàn)雙數(shù)據(jù)率的。EP2S60 FPGA 芯片支持和DDR存儲(chǔ)器的互連,在器件頂部和底部的I/O Bank中含有專(zhuān)用的DQS移相電路,可將輸入的DQS信號(hào)移相進(jìn)行時(shí)延補(bǔ)償,用來(lái)驅(qū)動(dòng)輸入寄存器,使輸入的DQ信號(hào)有最大的采樣窗口。片內(nèi)集成的PLL可對(duì)時(shí)鐘信號(hào)進(jìn)行90°移相,用來(lái)驅(qū)動(dòng)輸出寄存器,并產(chǎn)生DQS輸出信號(hào)[3]。
圖3為數(shù)據(jù)存儲(chǔ)部分的接口圖, DDR控制模塊由命令控制部分和接口部分組成,它的接口部分直接與DDR內(nèi)存條的數(shù)據(jù)線(xiàn)相連,用于發(fā)送和接收雙數(shù)據(jù)率數(shù)據(jù),而命令控制部分則負(fù)責(zé)接收采集卡主控模塊的控制信號(hào)、協(xié)調(diào)整個(gè)數(shù)據(jù)傳輸過(guò)程以及產(chǎn)生內(nèi)存條的控制信號(hào)。控制模塊的主要信號(hào)說(shuō)明如下:Order[1∶0]信號(hào)用于通知DDR控制模塊發(fā)起讀/寫(xiě)操作;r_address用于給出每次讀操作的起始地址;Write_done,Read_done為讀/寫(xiě)操作完成的指示信號(hào);DQ_en和DQS_en為DDR接口的DQ,DQS使能信號(hào)[4]。
數(shù)據(jù)處理模塊輸出的信號(hào)數(shù)據(jù)位寬32 b,由于內(nèi)存條的數(shù)據(jù)總線(xiàn)寬度為64 b且為雙時(shí)鐘沿輸出,每個(gè)時(shí)鐘周期需向DDR接口部分提供128 b的數(shù)據(jù),故要先對(duì)數(shù)據(jù)進(jìn)行串并轉(zhuǎn)換,將其轉(zhuǎn)化為128 b的數(shù)據(jù)REG_128。在內(nèi)存條的工作過(guò)程中,要進(jìn)行定時(shí)刷新、預(yù)充、激活等操作,所以使用1個(gè)雙時(shí)鐘FIFO作為數(shù)據(jù)緩沖,WEN為FIFO的寫(xiě)使能信號(hào),rdusedw指示FIFO中當(dāng)前剩余的數(shù)據(jù)個(gè)數(shù),在FIFO將被讀空時(shí),DDR控制模塊會(huì)插入等待周期,等新數(shù)據(jù)存入其中后再繼續(xù)讀操作。

在數(shù)據(jù)讀取過(guò)程中,每次讀操作先將DDR內(nèi)存中的數(shù)據(jù)讀入RAM,在RAM被存滿(mǎn)后READ_DONE信號(hào)有效,測(cè)試卡向計(jì)算機(jī)發(fā)出中斷,在計(jì)算機(jī)接收中斷后通過(guò)PCI接口將RAM中的數(shù)據(jù)讀走,然后再啟動(dòng)下一次讀操作,如此循環(huán)直到數(shù)據(jù)全部讀完。圖3中的雙口RAM容量為128 b×4 096,其輸入信號(hào)W_AD數(shù)據(jù)寬度為128 b;輸出信號(hào)LOCAL_DATA數(shù)據(jù)寬度為32 b;W_EN為寫(xiě)使能信號(hào);W_DA為RAM的寫(xiě)地址; Ram_data為讀地址,由PCI接口模塊提供。
3.3 PCI接口部分的實(shí)現(xiàn)
PCI總線(xiàn)是當(dāng)前計(jì)算機(jī)的一種主流標(biāo)準(zhǔn)總線(xiàn)[5],由于其協(xié)議十分復(fù)雜,在設(shè)計(jì)中使用PCI9054芯片作為總線(xiàn)的I/O加速器,PCI9054數(shù)據(jù)線(xiàn)為32 b,突發(fā)傳輸速率達(dá)到132 MB/s,具有可選的串行E2PROM接口,本地總線(xiàn)時(shí)鐘可和PCI時(shí)鐘異步。設(shè)計(jì)中選用它的C工作模式,從模式傳輸。
PCI9054在本質(zhì)上是一個(gè)橋設(shè)備,它把PCI總線(xiàn)對(duì)某一段PCI總線(xiàn)地址空間的各種操作包括讀、寫(xiě)等轉(zhuǎn)換為相應(yīng)的地址總線(xiàn)上的操作。因此要把某一段本地地址映射為PCI地址,即當(dāng)主機(jī)CPU要訪(fǎng)問(wèn)本地地址空間時(shí),要知道其對(duì)應(yīng)的PCI總線(xiàn)地址[6]。在本設(shè)計(jì)中,通過(guò)地址空間0將本地地址總線(xiàn)映射到PCI總線(xiàn)。首先要設(shè)置本地地址空間0的地址范圍寄存器,該寄存器的值反映了要把該地址空間映射到PCI的內(nèi)存地址空間還是I/O地址空間,以及該地址空間的大小。
PCI9054的內(nèi)部寄存器要根據(jù)具體的硬件設(shè)備進(jìn)行配置,設(shè)計(jì)中采用串行E2PROM來(lái)對(duì) PCI9054 進(jìn)行上電配置,選用的是Micorchip Technology公司的4 kB串行E2PROM 93LC66B。計(jì)算機(jī)啟動(dòng)或復(fù)位時(shí),PCI9054首先讀取E2PROM的值,寫(xiě)入對(duì)應(yīng)的寄存器,然后BIOS枚舉出每類(lèi)總線(xiàn)(當(dāng)然包括PCI)上的每一個(gè)設(shè)備 ,建立管理設(shè)備的數(shù)據(jù)結(jié)構(gòu),當(dāng)加載操作系統(tǒng)的時(shí)候 ,要把這個(gè)數(shù)據(jù)結(jié)構(gòu)的指針傳遞給操作系統(tǒng),當(dāng)操作系統(tǒng)啟動(dòng)后將再次為包括PCI9054在內(nèi)的硬件設(shè)備分配資源,包括內(nèi)存空間、中斷請(qǐng)求、I/O空間等。
3.4 PCI驅(qū)動(dòng)程序的開(kāi)發(fā)
驅(qū)動(dòng)程序是上層應(yīng)用程序和底層硬件之間進(jìn)行數(shù)據(jù)交換的媒介。方案選用WDM驅(qū)動(dòng)程序模式,開(kāi)發(fā)工具是 DriverStudio工具包中的DriverWorks,它是以VC++為平臺(tái),將編寫(xiě)WDM驅(qū)動(dòng)程序所需的對(duì)內(nèi)核及硬件的訪(fǎng)問(wèn)封裝成類(lèi),使用其向?qū)Чδ芸梢宰詣?dòng)生成驅(qū)動(dòng)程序框架,只需添加相應(yīng)代碼就可完成驅(qū)動(dòng)的編寫(xiě)[7]。
驅(qū)動(dòng)程序與硬件的通信為:
(1) 對(duì)PCI本地空間的訪(fǎng)問(wèn)。在系統(tǒng)中,計(jì)算機(jī)需要訪(fǎng)問(wèn)FPGA的內(nèi)部寄存器。在驅(qū)動(dòng)程序中使用KMemoryRange在OnStartDevice例程中實(shí)現(xiàn)PCI局部存儲(chǔ)空間到計(jì)算機(jī)內(nèi)存的映射;一旦映射成功,驅(qū)動(dòng)程序就可以使用KMemoryRange成員函數(shù)對(duì)本地空間進(jìn)行訪(fǎng)問(wèn);
(2) 中斷響應(yīng)。在數(shù)據(jù)讀出的過(guò)程中,每次RAM讀滿(mǎn)時(shí)采集卡要通知計(jì)算機(jī)接收數(shù)據(jù);因此采用硬件中斷響應(yīng)的辦法,內(nèi)核會(huì)傳遞這個(gè)中斷給測(cè)試卡驅(qū)動(dòng)程序的中斷服務(wù)例程,控制計(jì)算機(jī)發(fā)起下一次讀操作。硬件中斷的處理由類(lèi)KInterrupt實(shí)現(xiàn)。
3.5 應(yīng)用程序的實(shí)現(xiàn)
應(yīng)用程序與WDM的通信過(guò)程是:
(1) 首先用CreateFile打開(kāi)設(shè)備;
(2) 用DeviceIoControl和WDM驅(qū)動(dòng)進(jìn)行通信,包括對(duì)采集卡控制寄存器的訪(fǎng)問(wèn)和對(duì)存儲(chǔ)空間的訪(fǎng)問(wèn);
(3) 應(yīng)用程序退出時(shí)要用CloseHand關(guān)閉設(shè)備,釋放相關(guān)的系統(tǒng)資源。
應(yīng)用程序?qū)χ袛嗟捻憫?yīng)是通過(guò)WIN32事件通知的方法實(shí)現(xiàn)的:先由應(yīng)用程序創(chuàng)建一個(gè)事件,直接將該事件句柄傳遞給驅(qū)動(dòng)程序。接著驅(qū)動(dòng)程序創(chuàng)建一個(gè)KEvent指針,接受這個(gè)句柄,并分配相關(guān)資源。當(dāng)中斷觸發(fā)了事件的發(fā)生時(shí),驅(qū)動(dòng)就會(huì)產(chǎn)生信息通知應(yīng)用程序,同時(shí)立即清中斷以便等待下一個(gè)中斷。
4 結(jié) 語(yǔ)
研制的基于PCI總線(xiàn)的數(shù)據(jù)采集卡的最高采樣速率可達(dá)500 MHz,存儲(chǔ)容量為256 MB,如果要擴(kuò)展存儲(chǔ)容量,只需更換內(nèi)存條并修改程序參數(shù)即可。通過(guò)實(shí)際使用表明,該系統(tǒng)運(yùn)行穩(wěn)定,操作方便,擴(kuò)展性強(qiáng),具有一定的工程應(yīng)用價(jià)值。
參考文獻(xiàn)
[1]Altera Coporation.Stratix Device Handbook.2005.
[2]Atmel Inc.12 b 500 MSPS ADC AT84AS001 Datasheet.2007.
[3]Altera Coporation.Interfacing DDR SDRAM with Stratix Ⅱ Devices.2004.
[4]Jedec Standard.Double Data Rata(DDR) SDRAM Specification.2004.
[5]李貴山,戚德虎.PCI局部總線(xiàn)開(kāi)發(fā)者指南.西安:西安電子科技大學(xué)出版社,1997.
[6]PLX Technology Inc.PCI9054 Data Book V2.1.2000.
[7]武安河.Windows 2000/XP WDM設(shè)備驅(qū)動(dòng)開(kāi)發(fā).北京:電子工業(yè)出版社,2005.
[8]Tom Shanley.PCI系統(tǒng)結(jié)構(gòu).4版.劉暉,冀然然,夏意軍,譯.北京:電子工業(yè)出版社,2000.
[9]Micron Technology Inc.Initialization Sequence for DDR SRAM.TN-46-08.2003.
[10]張凱.PowerLogic PowerPCB 高速電路設(shè)計(jì).北京:國(guó)防工業(yè)出版,2004.