新聞中心

EEPW首頁 > 測試測量 > 設(shè)計應(yīng)用 > PXI總線中頻數(shù)字化儀系統(tǒng)設(shè)計

PXI總線中頻數(shù)字化儀系統(tǒng)設(shè)計

作者:楊志興,王瑞霞,高長全 時間:2020-04-29 來源: 收藏

  楊志興,王瑞霞,高長全(電子測試技術(shù)重點實驗室,山東?青島?266555)

本文引用地址:http://www.butianyuan.cn/article/202004/412568.htm

  摘?要:針對測試系統(tǒng)構(gòu)建中需要的高速數(shù)據(jù)采集設(shè)備,提出一種基于總線的的設(shè)計方案。該設(shè)備可以實現(xiàn)400 Msps的實時采樣率和14位的采樣精度;軟件開發(fā)模式采用上位機應(yīng)用程序和底層動態(tài)庫相結(jié)合的開發(fā)模式,方便不同用戶的定制。驅(qū)動程序通過開發(fā),采用實現(xiàn)數(shù)據(jù)的上傳。經(jīng)過聯(lián)合調(diào)試,本系統(tǒng)穩(wěn)定工作在Windows平臺下,實現(xiàn)了數(shù)字化儀要求的各項功能。不僅滿足當前項目的需求,還可應(yīng)用于雷達、電子對抗等自動測試系統(tǒng)構(gòu)建中。

  關(guān)鍵詞:PXI;;;

  0 引言

  近年來隨著科技的不斷進步,高速數(shù)據(jù)采集系統(tǒng)不斷地向高精度、高速率、小型化等方向發(fā)展。尤其在一些特定場合,比如艦船、飛機等環(huán)境下,其對測試設(shè)備的小型化提出了更高的要求 [1] 。而PXI由于其自身的架構(gòu)及特點 [2] ,特別適合這種對體積要求苛刻的環(huán)境中。其中PXI作為模塊化測試系統(tǒng)的重要組成部分,由于其技術(shù)難度高、開發(fā)設(shè)計難度大成為系統(tǒng)集成中的短板,相關(guān)產(chǎn)品只能通過國外采購,主要存在如下的問題:采購周期長、成本昂貴、技術(shù)不可控,維修困難,嚴重制約著PXI模塊化系統(tǒng)的自主發(fā)展。

  本文基于“虛擬儀器”的設(shè)計理念并結(jié)合近期從事的PXI合成儀器項目需求,提出一種基于PXI總線的中頻數(shù)字化儀實現(xiàn)方案,即可滿足軟件無線電系統(tǒng)構(gòu)建的需要,同時也可作為單獨PXI模塊進行數(shù)據(jù)采集、處理和分析。

  1 硬件設(shè)計

  1.1 總體方案

  本文研制的中頻PXI數(shù)字化儀模塊是一個單槽3U尺寸模塊,14位垂直分辨率,最高采樣率達400MHzSa/s。其總體硬件框圖如圖1所示。

微信截圖_20200509145334.jpg

  主要包括:信號調(diào)理部分、抗混疊濾波、DDS部分、A/D轉(zhuǎn)換部分、FPGA控制部分、PCI接口部分和電源等部分組成。其中:信號調(diào)理部分實現(xiàn)模擬信號的放大和濾波;ADC部分主要實現(xiàn)信號由模擬到數(shù)字信號的轉(zhuǎn)換;FPGA部分主要是完成數(shù)字下變頻、包絡(luò)檢波以及電路的控制等;PCI總線接口作為數(shù)字化儀與PC機的接口,實現(xiàn)數(shù)字化儀和上位機軟件的信息交互,包括命令下發(fā)和數(shù)據(jù)上傳等。

  整機工作原理如下:在觸發(fā)信號到來之后,首先對輸入中頻信號進行調(diào)理,完成模擬中頻信號的程控增益控制、抗混疊濾波等,預(yù)處理后的中頻信號經(jīng)過高速ADC采樣,采樣數(shù)據(jù)送入FPGA進行數(shù)字下變頻操作變換到基帶形成IQ信號,之后根據(jù)需要進行復(fù)數(shù)FFT操作得到頻譜數(shù)據(jù)存儲到板載緩存中。此時FPGA將使本地信號(LINT#)信號有效,引發(fā)PCI9054的本地,接著會觸發(fā)PCI信號INTA#,向計算機發(fā)送中斷請求。主機CPU響應(yīng)中斷以方式讀取FIF0中的頻譜數(shù)據(jù),從而完成一次數(shù)據(jù)傳輸。最后在上位機軟件中進行處理和顯示。

  1.2 PXI接口設(shè)計

  目前主要存在2種方案實現(xiàn)PXI接口電路 [3] :①采用可編程邏輯器件;②采用專用的PCI接口芯片。在本設(shè)計中考慮到數(shù)字化儀板卡的體積、成本和開發(fā)周期,采用PLX公司的專用的PCI接口芯片PCI9054來實現(xiàn)PXI接口,接口實現(xiàn)示意圖如圖2所示。

微信截圖_20200509145342.jpg

  為了適應(yīng)不同的局部處理器,PCI9054局部總線類型有3種:C模式,M模式,J模式。本文采用C模式(MODE[1:0]=00),即地址線和數(shù)據(jù)線分開模式 [3] 。本設(shè)計中發(fā)送命令時工作在PCI Target模式,而讀取數(shù)據(jù)的時候則工作在DMA模式。在DMA方式下,數(shù)據(jù)傳輸不同于普通的I/O讀寫方式,它是由PCI9054接管PXI總線,負責(zé)實現(xiàn)數(shù)據(jù)在CPU和硬件設(shè)備之間進行數(shù)據(jù)傳輸,而無需CPU的干預(yù)。本設(shè)計中只涉及數(shù)據(jù)從Local側(cè)到PCI側(cè)的傳輸,因此選擇DMA0通道并采用block DMA的傳輸方式實現(xiàn)FIFO緩沖區(qū)的頻譜數(shù)據(jù)的讀取操作。

  2 軟件設(shè)計

  2.1 軟件體系結(jié)構(gòu)

  完成數(shù)字化儀硬件設(shè)計之后,就需要開發(fā)相應(yīng)的軟件,由軟硬件協(xié)同配合才能整個數(shù)字化儀模塊的具體功能。整套中頻數(shù)字化儀軟件系統(tǒng)由上位機應(yīng)用程序、動態(tài)鏈接庫和驅(qū)動程序構(gòu)成,其體系結(jié)構(gòu)如圖3所示。

微信截圖_20200509145352.jpg

  2.2 整機工作流程

  數(shù)字化儀程序的工作流程如下:首先是數(shù)字化儀硬件的初始化,完成后,由上位機軟件根據(jù)用戶選定的功能和輸入的參數(shù)形成控制命令通過驅(qū)動程序?qū)⑵湎掳l(fā)到硬件板卡。PXI板卡進行相應(yīng)的參數(shù)分解形成有效的硬件動作命令實現(xiàn)數(shù)據(jù)的采集,采集一定量的中頻數(shù)據(jù)后形成硬件中斷給驅(qū)動程序,上位機響應(yīng)中斷并通過DMA的方式將數(shù)據(jù)讀取到上位機軟件中,從而完成一次有效的數(shù)據(jù)采集和傳輸。之后再由上位機軟件進行相應(yīng)的處理、顯示和存儲等功能。

  2.3 驅(qū)動程序設(shè)計

  由于本設(shè)計中的PXI中頻數(shù)字化儀不屬于Windows標準的外部設(shè)備,因此為了能夠運行在Windows平臺上,需要開發(fā)相應(yīng)的驅(qū)動程序。Windows操作系統(tǒng)下,開發(fā)設(shè)備驅(qū)動程序的方法有很多種,本文采用DriverStudio工具進行設(shè)備驅(qū)動程序的開發(fā)。

  首先,利用DriverStudio中的DriverWorks [5] 生成驅(qū)動程序框架,之后需要根據(jù)功能要求來添加相應(yīng)的代碼。驅(qū)動程序的開發(fā)涉及到硬件訪問、中斷控制和DMA傳輸?shù)裙δ苣K。限于篇幅,本文重點闡述中斷和DMA的實現(xiàn)過程。

  2.3.1 中斷實現(xiàn)

  從上文介紹的數(shù)字化儀整機運行原理中可以看出,數(shù)字化儀的數(shù)據(jù)采集過程相對于上位機軟件的運行,是一種完全異步的過程。為了實現(xiàn)兩者的同步,需要借助于中斷來實現(xiàn)。本設(shè)計中需要處理的中斷類型有2種:①本地中斷,即當FIFO中的數(shù)據(jù)采集半滿之后,由FPGA通過LINT#信號發(fā)給PCI9054;②DMA中斷,當上位機軟件收到PCI9054的本地中斷后,開始啟動DMA讀操作。當DMA傳輸完成后由DMA中斷控制器產(chǎn)生。兩種中斷存在先后關(guān)系,只有2個中斷的協(xié)調(diào)配合才能實現(xiàn)1次中頻數(shù)據(jù)的正確傳輸任務(wù)。

  由于這兩種中斷共享同一個中斷服務(wù)例程,因此需要在中斷服務(wù)例程 [6] (ISR,Interrupt Service Routine)中進行中斷源識別,再進行對應(yīng)處理。本設(shè)計中的中斷處理流程如圖所示。

微信截圖_20200509145406.jpg

  中斷實現(xiàn)部分的關(guān)鍵代碼如下:

BOOLEAN Digitizer::Isr_Irq(void)

{

t<<”enter Isr_Irq.”<<EOL;

ULONG status;

status=m_IoPortRange0.ind(INTCSR);

if((status&0x8000)!=0)

{

m_LocInt=1;

t<<”Local Interrup”<<EOL;

m_IoPortRange0.outd(INTCSR,0x40100);

m_IoPortRange0.outd(DMAMODE0,0x20C01);

m_DpcFor_Irq.Request(NULL,NULL);

return TRUE;

}

else if((status&0x200000)!=0)

{

m_LocInt=0;//DMA0

t<<”DMA Interrup”<<EOL;

m_IoPortRange0.outb(DMACSR0,0x8);

m_DpcFor_Irq.Request(NULL,NULL);

return TRUE;

}

else

{

t<<”Interrupt didn’t happen.”<<EOL;

return FALSE;

}

}

  2.3.2 DMA實現(xiàn)

  為了開發(fā)DMA功能,結(jié)合硬件設(shè)計和軟件開發(fā)框架,開發(fā)人員需要對PCI9054芯片和Driver Studio開發(fā)框架均要熟悉,只有軟硬件配合才能完成DMA功能。PCI9054芯片中的DMA硬件支持部分在其數(shù)據(jù)手冊中詳細的介紹,這里不再敘述。下面重點從軟件開發(fā)角度進行介紹。

  DriverWorks提供了3個類來實現(xiàn),分別是:KDmaAdapter,KDmaTransfer,KcommonDmaBuffer。其中,KdmaAdapter類用于建立1個DMA適配器,標明1個DMA通道的特性和提供串行化訪問的服務(wù);KDmaTransfer類用于控制DMA的傳輸,啟動1個DMA傳輸、DMA傳輸數(shù)據(jù)緩沖區(qū)物理地址和傳輸字節(jié)數(shù)以及DMA傳輸結(jié)束后數(shù)據(jù)由公用緩沖區(qū)拷貝到應(yīng)用程序數(shù)據(jù)緩沖區(qū);KcommonDmaBuffer類用于申請系統(tǒng)提供的公用緩沖區(qū) [8] 。整個DMA數(shù)據(jù)傳輸?shù)牧鞒倘鐖D5所示。

微信截圖_20200509145431.jpg

  首先,當應(yīng)用程序檢測到硬件板卡完成1次中頻數(shù)據(jù)采集后,通過調(diào)用Win32 API函數(shù)ReadFile()函數(shù)啟動數(shù)據(jù)的讀取 [9] 。由系統(tǒng)的I/O管理器將這個請求封裝成一個相應(yīng)的請求包(IRP),然將其傳遞給驅(qū)動程序。驅(qū)動程序首先將其進行隊列化,形成1個新的串行IRP傳遞給SerialRead例程 [10] ,在該例程中,通過初始化KDmaTransfer類的實例并在OnDmaReady回調(diào)函數(shù)啟動DMA傳輸和判斷傳輸是否完成。限于篇幅,本文只給出實現(xiàn)DMA的關(guān)鍵代碼:

VOID Digitizer::StartDMA(ULONG PAddress,

ULONG NBytes)

{

t<<”Entering StartDMA”<<EOL;

m_IoPortRange0.outd(DMAMODE0,0x20DC1);

m_IoPortRange0.outd(DMAPADR0,PAddress);

m_IoPortRange0.outd(DMALADR0,0x8);

m_IoPortRange0.outd(DMASIZ0,NBytes);

m_IoPortRange0.outd(DMADPR0,0x8);

m_IoPortRange0.outb(DMACSR0,0x3);

}

  圖6是本設(shè)計中的DMA讀操作在FPGA中的時序圖。

微信截圖_20200509145441.jpg

  2.4 應(yīng)用程序設(shè)計

  上位機應(yīng)用軟件采用模塊化、分層設(shè)計的思想,將軟件按照功能劃分為控制測量模塊、數(shù)據(jù)分析模塊和用戶操作模塊,開發(fā)語言采用當下較為流行的C#。系統(tǒng)軟件頂層設(shè)計圖如圖7所示。

微信截圖_20200509145449.jpg

  整個軟件從功能上可以分為控制測量模塊、數(shù)據(jù)處理顯示模塊和用戶操作模塊。其中控制測量模塊主要實現(xiàn)命令的下傳以及采集數(shù)據(jù)的上報;數(shù)據(jù)處理顯示模塊主要是對采集到的信號進行信號處理,包括加窗、FFT、軌跡運算、峰值處理、信號錄制以及處理結(jié)果的顯示等;用戶操作模塊則是提供人機交互的接口,用于將用戶的操作指令進行合規(guī)性分析,并將用戶的操作意圖正確設(shè)置到設(shè)備中。最終實現(xiàn)的上位機軟件成果如圖8所示。

微信截圖_20200509145456.jpg

  3 結(jié)論

  本文所研究的中頻數(shù)字化儀是一種基于PXI總線的模塊化中頻信號采集儀器,具有高采樣率、高分辨率、大數(shù)據(jù)存儲容量以及快速的數(shù)據(jù)傳輸?shù)燃夹g(shù),技術(shù)實現(xiàn)上完全自主可控。在軟件設(shè)計上采用虛擬儀器的設(shè)計思想,按照模塊化和層次化進行開發(fā),分別完成了上位機軟件設(shè)計和底層驅(qū)動程序開發(fā)。目前,本系統(tǒng)可以穩(wěn)定工作在Windows7平臺下,實現(xiàn)了中頻數(shù)字化儀要求的各項功能,不但滿足了當前的PXI測試系統(tǒng)構(gòu)建的需要,而且提供了一個較為通用的驅(qū)動程序包,可以應(yīng)用到其他需要中頻數(shù)字化儀的PXI測試系統(tǒng)中。

  參考文獻:

  [1] 郭文飛.基于PXI總線的直升機電氣系統(tǒng)測試平臺的研制[D].哈爾濱:哈爾濱工業(yè)大學(xué),2016.

  [2] 苗忠海.基于PXI總線的數(shù)據(jù)采集系統(tǒng)設(shè)計[J].電子設(shè)計工程,2018(12):67-69.

  [3] PLX Technology.PCI9054 DataBook.1.0ed.PLX Press,1998:174-298.

  [4] 程月平.PCI總線數(shù)據(jù)采集系統(tǒng)的軟件設(shè)計[J].儀表技術(shù),2017(10):14-17.

  [5] 史云輝.基于PCI總線的數(shù)據(jù)采集卡接口的設(shè)計及實現(xiàn)[J].電子測試,2017(10):21-23.

  [6] 王海霞.基于PCI總線的四通道CAN通訊卡的設(shè)計[J].電子設(shè)計工程,2016(5):41-44.

  [7] 崔荃.多通道數(shù)據(jù)采集系統(tǒng)的設(shè)計與實現(xiàn)[D].成都:成都理工大學(xué),2015.

  [8] 楊亞軍.Windows下視頻采集卡的WDM驅(qū)動開發(fā)[D].西安:西安電子科技大學(xué),2015.

  [9] 武安河,周利莉.Windows設(shè)備驅(qū)動程序開發(fā)實務(wù)[M].北京:電子工業(yè)出版社,2001.

  [10] 李小平.基于PXI總線結(jié)構(gòu)的數(shù)據(jù)采集系統(tǒng)設(shè)計[D].哈爾濱:哈爾濱工程大學(xué),2017.

  (注:本文來源于科技期刊《電子產(chǎn)品世界》2020年第05期第63頁,歡迎您寫論文時引用,并注明出處。)



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉