<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 設(shè)計(jì)應(yīng)用 > 基于多語(yǔ)言混合編程的任意波形發(fā)生器軟件系統(tǒng)設(shè)計(jì)*

          基于多語(yǔ)言混合編程的任意波形發(fā)生器軟件系統(tǒng)設(shè)計(jì)*

          作者:滕友偉(中國(guó)電子科技集團(tuán)公司第四十一研究所,青島 266555) 時(shí)間:2022-04-19 來(lái)源:電子產(chǎn)品世界 收藏
          編者按:任意波形發(fā)生器軟件系統(tǒng)以數(shù)字模擬和計(jì)算機(jī)技術(shù)為基礎(chǔ),可以產(chǎn)生多種常用波形、數(shù)字/模擬調(diào)制波形、復(fù)雜任意波形,具有功能選件豐富、可擴(kuò)展性強(qiáng)、波形編輯靈活、應(yīng)用范圍廣等特點(diǎn)。本文介紹一種任意波形發(fā)生器系統(tǒng)軟件設(shè)計(jì)方案,實(shí)現(xiàn)用戶(hù)界面和邏輯單元分離,波形計(jì)算單元模塊化,信號(hào)生成插件靈活組裝。

          *本論文受到國(guó)家重點(diǎn)研發(fā)計(jì)劃項(xiàng)目(項(xiàng)目編號(hào):2017YFF0106600)以及裝備預(yù)研領(lǐng)域基金重點(diǎn)項(xiàng)目(項(xiàng)目編號(hào):61400030201)的資助。

          本文引用地址:http://www.ex-cimer.com/article/202204/433253.htm

          作者簡(jiǎn)介:滕友偉(1987—),男,碩士,工程師,研究方向:信號(hào)處理。

          0   引言

          電子信息技術(shù)的高速發(fā)展帶來(lái)了被測(cè)試對(duì)象種類(lèi)的不斷豐富和測(cè)試需求的不斷提高。具體表現(xiàn)在:海、陸、空、天多層次;部署的高密度、多頻譜、大帶寬;多種參數(shù)組合變化、多種工作體制;系統(tǒng)集成化與專(zhuān)用芯片協(xié)同發(fā)展;空間電磁環(huán)境日益復(fù)雜;以及對(duì)抗手段的不斷加強(qiáng)。[1-2]不僅可以產(chǎn)生常規(guī)激勵(lì)信號(hào),還可以通過(guò)擴(kuò)展功能插件實(shí)現(xiàn)外部計(jì)算單元和硬件平臺(tái)的無(wú)縫對(duì)接,真正實(shí)現(xiàn)從信號(hào)產(chǎn)生、數(shù)據(jù)處理到信號(hào)輸出的全過(guò)程。

          其中,波形計(jì)算單元即多種信號(hào)模擬插件,實(shí)現(xiàn)多種信號(hào)產(chǎn)生功能。波形文件具有統(tǒng)一的文件結(jié)構(gòu),實(shí)現(xiàn)波形數(shù)據(jù)的存儲(chǔ)和讀取。

          image.png

          1   軟件系統(tǒng)組成

          軟件結(jié)構(gòu)如圖2所示,主要包括應(yīng)用層、功能模塊層、驅(qū)動(dòng)層和板級(jí)電路控制層。其中應(yīng)用層為本軟件提供的用戶(hù)操作界面;功能模塊層為依據(jù)任意波形發(fā)生器功能劃分和硬件模塊,抽象出的采用模塊化設(shè)計(jì)的類(lèi)封裝;驅(qū)動(dòng)層是承上啟下的一層,實(shí)現(xiàn)PCIE、ISA等多種總線驅(qū)動(dòng)控制和數(shù)據(jù)傳輸;板級(jí)控制層為各功能板卡的控制接口,接受來(lái)自驅(qū)動(dòng)層的控制命令、波形數(shù)據(jù),并反饋各電路的工作狀態(tài)。

          image.png

          采用上述4層軟件結(jié)構(gòu)設(shè)計(jì),不僅在物理結(jié)構(gòu)將任意波形發(fā)生器邏輯做了清楚劃分,也為各功能模塊提供了自我保護(hù)和異常處理的有效途徑。

          2   開(kāi)發(fā)語(yǔ)言及工具

          應(yīng)用層采用Visual Studio 2013平臺(tái)中基于語(yǔ)言的WPF用戶(hù)界面框架設(shè)計(jì)[3]。WPF作為微軟推出的新一代用戶(hù)界面框架,提供了統(tǒng)一的編程模型、語(yǔ)言和框架,真正做到了分離界面設(shè)計(jì)和邏輯設(shè)計(jì),便于協(xié)同開(kāi)發(fā)。功能模塊層中的數(shù)據(jù)產(chǎn)生、任意波形生成及文件管理采用 R2014a開(kāi)發(fā)平臺(tái),軟件開(kāi)發(fā)平臺(tái)以其豐富的函數(shù)庫(kù)、矩陣計(jì)算、數(shù)值分析,為信號(hào)、數(shù)據(jù)產(chǎn)生開(kāi)發(fā)提供極大便利[4]。用戶(hù)層和功能模塊層采用XAML文件作為接口,這樣既實(shí)現(xiàn)分層隔離,也為方便錯(cuò)誤的查找和定位。

          XAML接口文件提供了1 個(gè)信號(hào)產(chǎn)生所需的模塊傳入?yún)?shù),如圖3所示的是一款噪聲信號(hào)接口文件,其中waveflag表示信號(hào)類(lèi)型,sampleRate表示該信號(hào)的采樣速率等等。利用MLAPP.dll程序集實(shí)現(xiàn),軟件啟動(dòng)時(shí)執(zhí)行Matlab引擎初始化并封裝為類(lèi),并提供執(zhí)行接口。

          image.png

          引擎初始化方法如下:

          private MLApp.MLApp _matlab;

          private void Init()

          {

          Type ma t l abAppType = S y s t em.Type.

          GetTypeFromProgID(“Matlab.Application”);

          _ m a t l a b = S y s t e m . A c t i v a t o r .

          CreateInstance(matlabAppType) as MLApp.MLApp;

          Debug.Assert(_matlab != null);

          _matlab.Visible = 0;

          }

          接口設(shè)計(jì)如下:

          public void Execute(string matlabFolder, string

          command)

          {

          matlabFolder = “ cd( ‘ ” + matlabFolder

          + “’)”;

          _matlab.Execute(matlabFolder);

          Thread.Sleep(200);

          _matlab.Execute(“clear all”);

          _matlab.Execute(“close all”);

          _matlab.Execute(“clc”);

          Thread.Sleep(1000);

          _matlab.Execute(command);

          }

          驅(qū)動(dòng)層采用Visual Studio 6.0和WinDriver10.0聯(lián)合開(kāi)發(fā)設(shè)計(jì)[5-6],其中WinDriver為美國(guó)風(fēng)河公司提供的專(zhuān)業(yè)驅(qū)動(dòng)開(kāi)發(fā)工具,具有豐富的底層驅(qū)動(dòng)庫(kù)和設(shè)計(jì)樣例。Visual Studio 6.0開(kāi)發(fā)工具采用高效的C/C++語(yǔ)言程序設(shè)計(jì)基礎(chǔ)算法,并將驅(qū)動(dòng)層封裝為標(biāo)準(zhǔn)DLL庫(kù)以供調(diào)用。板級(jí)控制層設(shè)計(jì)采用C/C++程序設(shè)計(jì)語(yǔ)言,實(shí)現(xiàn)對(duì)實(shí)際電路及板卡的控制,響應(yīng)驅(qū)動(dòng)層下發(fā)的控制命令,將存儲(chǔ)功能層產(chǎn)生的波形數(shù)據(jù)存入DDR高速存儲(chǔ)陣列等。

          3   信號(hào)生成流程

          信號(hào)生成流程如圖4所示,第1步:用戶(hù)在操作軟件界面配置信號(hào)參數(shù);第2步:MATLAB讀取接口文件并轉(zhuǎn)換為相應(yīng)指令執(zhí)行,生成波形數(shù)據(jù);第3步:軟件將生成的波形數(shù)據(jù)以文件的形式存儲(chǔ)到硬盤(pán);第4步:顯示控件讀取波形文件并顯示數(shù)據(jù);第5步:輸出開(kāi)關(guān)打開(kāi),儀器輸出信號(hào)。

          image.png

          圖5所示的是任意波形發(fā)生器生成數(shù)字調(diào)制ASK型信號(hào)并輸出測(cè)試的實(shí)際場(chǎng)景。對(duì)比顯示控件波形和示波器實(shí)測(cè)結(jié)果即可驗(yàn)證正確性。

          4   結(jié)語(yǔ)

          目前任意波形發(fā)生器的發(fā)展方向有:①硬件設(shè)計(jì)平臺(tái)化,其主要性能依托于高速DAC芯片性能和寬帶放大芯片發(fā)展;②軟件設(shè)計(jì)采用模塊化插件設(shè)計(jì),要求兼容多種開(kāi)發(fā)語(yǔ)言和工具,方便升級(jí)、擴(kuò)展和用戶(hù)二次開(kāi)發(fā)。因此多采用多層次軟件設(shè)計(jì),并減少互關(guān)聯(lián)。

          image.png

          圖5 ASK調(diào)制信號(hào)產(chǎn)生及輸出

          參考文獻(xiàn):

          [1] 張學(xué)峰,胡長(zhǎng)江.功能各異的各種任意波形發(fā)生器[J].國(guó)外電子測(cè)量技術(shù),2000(4):17-18.

          [2] 劉豪.基于DDS的任意波形發(fā)生器的設(shè)計(jì)與實(shí)現(xiàn)[D].廣州:華南師范大學(xué),2010.

          [3] 王鵬,崔靜.新一代界面技術(shù)WPF的架構(gòu)及應(yīng)用[J].成都紡織高等專(zhuān)科學(xué)校學(xué)報(bào),2011(1):18-20.

          [4] 李志明.VC++與Matlab的[J].遙測(cè)遙控,1999(11):71-74.

          [5] WinDriver PCI/ISA/CardBus V9.01 User’s Manual[Z]. Jungo Ltd.,2008.

          [6] 武安河.Windows 2000/XP WDM設(shè)備驅(qū)動(dòng)程序開(kāi)發(fā)[M].北京:電子工業(yè)出版社,2003.

          (本文來(lái)源于《電子產(chǎn)品世界》雜志2020年9月期)



          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();