国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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

2020-07-23 06:50楊志興王瑞霞高長全
電子產(chǎn)品世界 2020年5期
關鍵詞:中斷

楊志興 王瑞霞 高長全

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

關鍵詞:PXI;中頻數(shù)字化儀;WDM;Block DMA;中斷

0 引言

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

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

1 硬件設計

1.1 總體方案

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

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

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

1.2 PXI接口設計

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

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

2 軟件設計

2.1 軟件體系結構

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

2.2 整機工作流程

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

2.3 驅動程序設計

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

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

2.3.1 中斷實現(xiàn)

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

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

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

BOOLEAN Digitizer::Isr_lrq(void)

{

t《”enter Isr_lrq.”<

ULONG status;

status=m _IoPortRange0 .ind( INTCSR);

if《status&Ox8000)1=0)

{

m一Loclnt=l:

t《" Locallnterrup"《EOL;

m—IoPortRangeO.outd(INTCSR,Ox40100);

m—IoPortRangeO.outd(DMAMODEO,Ox20COI);

m_DpcFor_lrq. Request(NULL, NULL);

retum TRUE;

else if《status&Ox200000)1=0)

{

m—Loclnt=O;//DMAO

t《" DMA Interrup"《EOL;

m_ IoPortRangeO.outb(DMACSRO,Ox8);

m_DpcFor_lrq.Request(NULL, NULL);

retum TRUE;

else

{

t《" Interrupt didn't happen."《EOL;

retum FALSE;

2.3.2 DMA實現(xiàn)

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

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

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

VOID Digitizer::StartDMA(ULONG PAddress,ULONG NBytes)

{

t《”Entering StartDMA”<

m_IoPortRangeO.outd(DMAMODEO,Ox20DCI);

m_ IoPortRangeO.outd(DMAPADRO,PAddress);

m_ IoPortRangeO.outd(DMALADRO,Ox8);

m_ IoPortRangeO.outd(DMASIZO,NBytes);

m_IoPortRangeO.outd(DMADPRO,Ox8);

m_IoPortRangeO.outb(DMACSRO,Ox3);

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

2.4 應用程序設計

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

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

3 結論

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

參考文獻:

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

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

[3] PLX Technology.PC19054 DataBook.l.0 ed.PLXPress.1998:174-298.

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

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

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

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

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

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

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

作者簡介:

楊志興(1983-),男,河北石家莊人,碩士,工程師,研究方向為PXI模塊及自動測試系統(tǒng),E-mail:38453869@qq.com。

猜你喜歡
中斷
在D-策略控制下服務員單重休假且休假不中斷的M/G/1排隊系統(tǒng)分析
“單片機中斷概述”微課教學設計
一種考慮GPS信號中斷的導航濾波算法
基于FPGA的中斷控制器設計*
Linux中斷線程化分析及中斷延時測試
一起跨BSC切換CS域業(yè)務中斷的案例分析
對80C51系列單片機中斷問題的研究
跟蹤導練(二)(5)
千里移防,衛(wèi)勤保障不中斷
AT89C51與中斷有關的寄存器功能表解
岫岩| 富锦市| 沅江市| 同心县| 三河市| 伊金霍洛旗| 平原县| 稷山县| 达日县| 顺昌县| 安宁市| 都昌县| 富锦市| 沂水县| 竹溪县| 玛沁县| 奈曼旗| 阜宁县| 舞钢市| 遂昌县| 汾阳市| 无极县| 绵竹市| 海宁市| 西乌珠穆沁旗| 盐亭县| 奉新县| 读书| 大邑县| 忻州市| 英德市| 陕西省| 突泉县| 舟山市| 荔波县| 密云县| 抚远县| 民权县| 镇远县| 内丘县| 吉木乃县|