亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        虛擬儀器和混合編程用于快速構(gòu)建信號處理平臺

        2010-04-12 00:00:00黃永華,唐志良,高
        現(xiàn)代電子技術(shù) 2010年9期

        摘 要:將主要用于測控領(lǐng)域的虛擬儀器擴展作為一種通用信號處理平臺。以NI的LabVIEW為框架,以NI的數(shù)據(jù)采集卡為主要硬件設計了一個完整的信號處理平臺,在該平臺上可以快速構(gòu)建多種多樣的信號處理系統(tǒng),實現(xiàn)數(shù)據(jù)的現(xiàn)場采集與處理。此外,針對LabVIEW的一些不足,平臺提供了多種編程語言的接口,使用者可以根據(jù)需要,選用Matlab,C語言等填寫核心算法,從而發(fā)揮各種編程語言的優(yōu)點,增強平臺的通用性且豐富了系統(tǒng)的功能。最后,運用該平臺搭建了2FSK信號解調(diào)系統(tǒng),驗證了該平臺的通用性和有效性。

        關(guān)鍵詞:虛擬儀器; 數(shù)據(jù)采集; 信號處理; 混合編程

        中圖分類號:TP313 文獻標識碼:A

        文章編號:1004-373X(2010)09-0187-04

        Quick Construction of Signal Processing Platform with

        Virtual Instruments and Hybrid Programming

        HUANG Yong-hua1, TANG Zhi-liang1,2, GAO Yong1

        (1.College of Electronics and Information Engineering, Sichuan University, Chengdu 610065, China;

        2.Chongqing Communication Institute, Chongqing 400035, China)

        Abstract: The virtual instrument which is widely used in industrial measurement and control is applied as a common signal processing platform. A perfect signal processing platform which takes LabVIEW as the framework, and a data acquisition card as the main hardware is designed. Various kinds of field signal processing systems can be quickly built on this platform to realize the real-time data acquisition and processing. Considering the deficiency of LabVIEW, various kinds of program languages such as Matlab or C are supported by this platform. The hybrid programming can take advantage of each program language, which enhances the compatibility and the functions of this platform. A 2FSK demodulation system was successfully built to demonstrate the compatibility and effectiveness of this platform.

        Keywords: virtual instrument; data acquisition; signal processing; hybrid programming

        0 引 言

        虛擬儀器技術(shù)以通用計算機為基礎(chǔ),外加少量硬件設備,就可完成信號的分析測量工作。與普通儀器相比,虛擬儀器具有低成本,多功能等優(yōu)點。近幾年虛擬儀器發(fā)展迅速,目前全球已有很多家虛擬儀器供應商,本文選用NI(美國國家儀器)公司的虛擬儀器產(chǎn)品。

        在虛擬儀器構(gòu)建的測量分析系統(tǒng)中,主要硬件設備是數(shù)據(jù)采集卡。NI公司的數(shù)據(jù)采集卡種類豐富,簡單易用,能滿足各種應用場合,選用現(xiàn)成的數(shù)據(jù)采集卡可以省去很多硬件開發(fā)工作。NI公司開發(fā)的圖形化編程軟件LabVIEW將硬件驅(qū)動和一些簡單的信號處理函數(shù)編寫成一系列獨立的VI(Visual Instrument)模塊,既能實現(xiàn)與硬件的無縫連接,又能進行簡單的信號運算分析。同嵌入式系統(tǒng)開發(fā)相比,LabVIEW環(huán)境下的系統(tǒng)開發(fā)不必考慮如寄存器配置、存儲空間分配等復雜問題,開發(fā)工作變得如同軟件仿真一樣簡單。

        MathWorks公司的Matlab是一種公式化編程語言,有十分豐富的庫函數(shù)和工具箱、信號處理功能強大、但與硬件結(jié)合不夠緊密;C語言使用廣泛,語法嚴謹、程序結(jié)構(gòu)清晰、可移植性好、執(zhí)行效率較高;LabVIEW的圖形化編程語言(G語言)作為一種較新的編程語言,目前還未被廣泛使用。為了使各種編程語言能優(yōu)勢互補,本文采用編程接口技術(shù)實現(xiàn)LabVIEW環(huán)境下多語言混合編程,以充分發(fā)揮各種編程語言的長處。

        1 平臺結(jié)構(gòu)

        圖1列出了平臺結(jié)構(gòu)框圖,數(shù)據(jù)采集端由傳感器和采集卡組成。傳感器輸出的模擬信號進入數(shù)據(jù)采集卡。在某些應用場合,傳感器和數(shù)據(jù)采集卡之間需要加上信號調(diào)理設備,以實現(xiàn)多路復用、信號幅度調(diào)整、濾波等功能。

        在“LabVIEW編程環(huán)境”下完成兩項任務,首先是配置數(shù)據(jù)采集卡并接收數(shù)據(jù),配置參數(shù)包括輸入接線端配置、物理通道選擇、采樣時鐘設置、緩沖區(qū)設置、每通道采樣數(shù)設置等;其次是對數(shù)據(jù)流進行實時分配并處理。為了實現(xiàn)處理的連貫性,采用NI定義的“生產(chǎn)者/消費者設計模式”[1],該結(jié)構(gòu)通過響應事件實現(xiàn)代碼的異步執(zhí)行,同時不影響用戶界面的響應速度?!吧a(chǎn)者/消費者設計模式”是將數(shù)據(jù)采集和數(shù)據(jù)處理分別放在兩個循環(huán)里單獨執(zhí)行,數(shù)據(jù)采集循環(huán)每一次采集的若干個樣點定義為一個采樣幀,數(shù)據(jù)處理循環(huán)每執(zhí)行一次,完成一個采樣幀的分析。采集的數(shù)據(jù)用隊列緩存。隊列是一種數(shù)據(jù)存儲結(jié)構(gòu),遵循FIFO(First In First Out)存取機制,每個采樣幀作為隊列的一個元素由隊列尾部入列,數(shù)據(jù)處理循環(huán)不斷地從隊列頭部取走元素直至取完,取完后等待新采集的數(shù)據(jù)到來。因此,在“生產(chǎn)者/消費者設計模式”下,只要數(shù)據(jù)處理循環(huán)單次執(zhí)行時間小于數(shù)據(jù)采集循環(huán)單次執(zhí)行時間,就可以實現(xiàn)連續(xù)的實時分析。“函數(shù)模塊”包含供LabVIEW調(diào)用的核心算法,通過編程接口技術(shù)實現(xiàn)參數(shù)的傳遞。函數(shù)模塊的編寫較自由,兼容多種編程語言,某些現(xiàn)有的代碼幾乎不用修改就可以直接使用。運算結(jié)果可以通過LabVIEW前面板輸出,也可以由“函數(shù)模塊”直接輸出。在某些對程序前面板有特殊要求的場合,例如儀表面板等,這時采用LabVIEW前面板作為輸出界面更直觀。

        圖1 系統(tǒng)結(jié)構(gòu)框圖

        2 LabVIEW與其他編程語言的接口

        2.1 動態(tài)鏈接庫接口和CIN(Code Interface Node)

        動態(tài)鏈接庫(DLL)是Windows操作系統(tǒng)的基礎(chǔ),動態(tài)鏈接庫通常都不能直接運行,它們是一些獨立的文件,其中包含能被可執(zhí)行程序或其他DLL調(diào)用來完成某項工作的函數(shù)。只有在其他模塊調(diào)用動態(tài)鏈接庫中的函數(shù)時,它才發(fā)揮作用。LabVIEW支持動態(tài)鏈接庫技術(shù),支持動態(tài)加載和隱式鏈接,兼容標準調(diào)用約定和C調(diào)用約定。

        下面以隱式調(diào)用為例說明LabVIEW和Visual C++的接口建立過程:首先在Visual C++中創(chuàng)建一個WIN32動態(tài)鏈接庫或MFC類庫并將函數(shù)導出[2],然后選擇LabVIEW“互聯(lián)接口”菜單下的“調(diào)用庫函數(shù)節(jié)點”,指定動態(tài)鏈接庫(DLL)文件和引入庫文件的路徑名稱,選擇要調(diào)用的函數(shù)并配置參數(shù),參數(shù)與原函數(shù)形參類型要保持一致,如果是數(shù)組,則要求長度一致。此時在程序面板里可以看到“調(diào)用庫函數(shù)節(jié)點”模塊上的參數(shù)接線端,最后連接需要傳遞的參數(shù),則可建立隱式調(diào)用模塊。CIN節(jié)點[1]是專門用來調(diào)用C/C++代碼的功能節(jié)點,可以直接向VI中添加C/C++代碼,十分簡便。

        2.2 專用Matlab接口

        LabVIEW提供了兩種常用Matlab接口:第一種是MathScript節(jié)點[1],在LabVIEW程序框圖面板的編程菜單結(jié)構(gòu)子菜單下可以找到MathScript節(jié)點,在MathScript框內(nèi)直接填寫Matlab代碼便能生成腳本,由于腳本的執(zhí)行需要調(diào)用Matlab軟件腳本服務器,因此必須安裝具有許可證的Matlab 6.5或以上版本才能使用Matlab腳本節(jié)點。Matlab腳本節(jié)點僅適用于Windows操作系統(tǒng),目前MathScript還不支持所有的Matlab函數(shù),應用受到一定的限制。

        第二種Matlab接口是使用調(diào)用節(jié)點(ActiveX)技術(shù)引用MLApp.DIMLApp對象[3],從LabVIEW“互聯(lián)接口”面板選擇“調(diào)用節(jié)點”模塊,然后為該模塊配置ActiveX類,打開類列表,如果PC上安裝了具有許可證的Matlab 或MCR,則可以看到名為“Matlab Application”的類,對該類進行展開可以看到有幾個對象,選用MLApp.DIMLApp對象,方法列表中的Excute方法是執(zhí)行函數(shù)命令,Quit方法是結(jié)束函數(shù)命令。由于在Matlab工作區(qū)間中的數(shù)據(jù)是矩陣類型,而在多數(shù)編程語言中只有數(shù)組類型沒有矩陣類型,數(shù)組和矩陣看似十分相似,但傳參時數(shù)組并不能代替矩陣。Putfullmatrix方法和Getfullmatrix方法解決了兩者的轉(zhuǎn)換問題,Putfullmatrix將實參數(shù)組變換成矩陣傳入Matlab工作區(qū)間,Getfullmatrix將Matlab工作區(qū)間內(nèi)的矩陣轉(zhuǎn)換為變體(一種變量類型)傳出。

        圖2為引用示例,首先在Matlab下編寫函數(shù):function[b]=funtest(a),函數(shù)內(nèi)容任意,函數(shù)以m文件存在Matlab默認運行目錄下。然后在LabVIEW中編寫圖2所示程序。程序中三個數(shù)組為函數(shù)的實參;a,b為Matlab工作區(qū)間中的矩陣,是函數(shù)的形參。當程序執(zhí)行時,圖中“數(shù)組”和“數(shù)組2”分別轉(zhuǎn)換為矩陣的實部和虛部賦給a,“數(shù)組”和“數(shù)組2”的長度要一致。返回值是變體類型,經(jīng)過變體至數(shù)據(jù)轉(zhuǎn)換后賦給“數(shù)組3”。

        2.3 基于COM組件的接口技術(shù)

        基于COM組件的接口技術(shù)適合于所有支持COM技術(shù)的編程工具。既然LabVIEW可以調(diào)用節(jié)點,完全可以自己創(chuàng)建一個注冊類然后在LabVIEW中調(diào)用。調(diào)用一般遵循這樣一個過程:獲取類引用、執(zhí)行函數(shù)、結(jié)束函數(shù)、關(guān)閉類引用。循環(huán)運算時為了提高執(zhí)行效率,可以把獲取類引用和關(guān)閉類引用放到循環(huán)外部。Matlab環(huán)境下生成可用的COM組件步驟如下[4]:

        首先在Matlab中新建一個“Funtest.m”文件,編寫如下測試代碼:

        function[b]=Funtest(a)

        b=sin(a);

        啟動Comtool工具箱(Matlab 7.0版本提供了Comtool工具箱,新版本的comtool已并入deploytool工具箱),新建一個工程,自定義類名為“IFuntestclass”,通過“Project”菜單下的“Addfiles”將Matlab函數(shù)文件(funtest.m文件)加入工程,運行Build菜單下的Com Object,此時便生成了一個后綴為.dll動態(tài)鏈接庫文件,然后在Windows命令行使用regsvr32命令完成該類的注冊。LabVIEW引用程序如圖3所示。

        圖2 引用MLApp.DIMLApp對象示例

        圖3 COM組件引用示例

        函數(shù)模塊有三個輸入接線端一個輸出接線端,“nargout”為輸出參數(shù)個數(shù),參數(shù)b有左右兩個接線端,依次對應初始值和返回值。注冊類的函數(shù)在傳參的時候有一定的局限:不支持數(shù)組類型的返回值,例如圖3中的返回值b若是數(shù)組,則無法正確傳給顯示控件“輸出”。這種情況下如果要觀察數(shù)組b的值,只能使用Matlab繪圖函數(shù)將b繪制為曲線,或?qū)的內(nèi)容保存為數(shù)據(jù)文件。

        3 系統(tǒng)實現(xiàn)

        在該信號處理平臺上可以搭建多種實際系統(tǒng),此處以二進制頻移鍵控(2FSK)[5-6]信號解調(diào)為例進行演示。2FSK是常見的數(shù)字調(diào)制方式,2FSK信號有兩種載頻(fs和fm)分別對應0符號和1符號。常見的2FSK解調(diào)方法有三種:非相干解調(diào)、相干解調(diào)、PLL-FSK解調(diào)[7]。此處采用非相干方式解調(diào)。非相干解調(diào)分為帶通濾波、包絡檢波和抽樣判決三個步驟[8]。

        FSK信號由Agilent 3320A信號發(fā)生器產(chǎn)生,fs=10 kHz,fm=30 kHz,信息傳輸速率Rb=1 Kb/s,由于信號發(fā)生器直接提供電壓信號,故系統(tǒng)省去了圖1中的傳感器部分,在實際通信系統(tǒng)中,接收機前端的信號要經(jīng)過適當調(diào)理再進行解調(diào)。采集卡選用NI公司的NI9215,該采集卡輸入信號峰值電平為±10 V,最多可進行4個通道的同步數(shù)據(jù)采集,采樣率可達到100 KSPS,量化精度為16 b。同時可通過USB-9162轉(zhuǎn)接器實現(xiàn)與PC的USB端口互聯(lián)。

        數(shù)據(jù)采集卡采樣率設為96 kB/s,為了抑制共模干擾,信號發(fā)生器輸出端模擬信號通過差分方式連接到采集卡,同時,代碼中“輸入接線端設置”設為“差分方式”,通道數(shù)設為1。在本系統(tǒng)中,運算結(jié)果的延時約等于采樣幀的時長,因此,采樣幀越長實時性越差。增加采樣幀的長度,可以減少PC與采集卡的頻繁通信,提高了執(zhí)行效率。要對運算延時和執(zhí)行效率進行折衷,必須選擇合適的采樣幀長度,這里將采樣幀長設為4 800點,以采樣幀為單位逐幀進行解調(diào)。

        限于篇幅,此處僅以2.2節(jié)中介紹的第二種Matlab編程接口為例進行演示。主程序圖如圖4所示。

        圖4 主程序圖

        圖4中程序上半部分為數(shù)據(jù)采集,其中包括數(shù)據(jù)采集通道配置、創(chuàng)建隊列和數(shù)據(jù)采集循環(huán);下半部分為數(shù)據(jù)處理循環(huán),其中包含 “FskDemod.vi”子VI,即Matlab編寫的核心算法,子VI與Matlab函數(shù)模塊接口如2.2所述。帶通濾波器的設計是FSK解調(diào)算法的核心,在Matlab中使用“fdatool”工具箱設計兩個30階的FIR帶通濾波器,中心頻率分別為10 kHz和30 kHz,提取濾波器系數(shù),再調(diào)用“filter”函數(shù)進行濾波,實現(xiàn)過程十分簡單。除了FSK解調(diào),本平臺還適用于多種通信系統(tǒng)。虛擬儀器在通信領(lǐng)域正被越來越多的使用[9-10]。圖5,圖6為某工作時刻LabVIEW前面板的繪圖界面,圖5為2FSK信號波形,圖6為包絡檢波后的波形。為了便于展現(xiàn),圖5,圖6只畫出了一個采樣幀的前192點的波形。包絡檢波結(jié)果再經(jīng)過抽樣判決便得到二進制數(shù)據(jù)流。

        圖5 2FSK波形

        圖6 包絡檢波后波形

        4 結(jié) 語

        借助虛擬儀器穩(wěn)定的硬件模塊和靈活的軟件環(huán)境,為開發(fā)者設計了一個實用的信號處理平臺。該平臺上的系統(tǒng)開發(fā)硬件調(diào)試簡單,軟件編寫也十分自由。該平臺非常適合用來快速搭建現(xiàn)場實驗系統(tǒng)以及演示系統(tǒng),還可以擔任嵌入式系統(tǒng)開發(fā)前期的評估和輔助工作。例如在該平臺下用C語言編寫并調(diào)試通過的算法可以快速移植到DSP系統(tǒng)。開發(fā)者可以根據(jù)實際需要選擇更高端的數(shù)據(jù)采集卡,快速搭建各種信號處理系統(tǒng),具有較好的實用價值。

        參考文獻

        [1]National Instrument Corporation. LabVIEW help[EB/CD]. [S. l.]: National Instruments, 2009.

        [2]孫鑫,余安萍.Visual C++深入詳解[M].北京:電子工業(yè)出版社,2006.

        [3]裴鋒,楊萬生.LabVIEW與Matlab混合編程[J].電子技術(shù)應用,2004(3):4-6.

        [4]Mathworks Corporation. Matlab Builder for COM. Version 1.1[EB/CD]. [S.l.]: Mathworks Conporation, 2004.

        [5]GLOVER I A, GRANT PETER M. Ditital communication[M].2nd ed. 北京:機械工業(yè)出版社,2004.

        [6]COUCH Jr L W. Digital and analog communication systems[M]. 6th ed. 北京:科學出版社,2003.

        [7]TOMASI Wayne. Electronic communications systems, fundamentals through advanced[M]. 4th ed. 北京:電子工業(yè)出版社,2002.

        [8]SKLAR Bernard.數(shù)字通信基礎(chǔ)與應用[M].徐平平,宋鐵成,葉芝慧,譯.2版.北京:電子工業(yè)出版社,2007.

        [9]DAS P K, KOCH D B. On the use of visual programming languages for communication system simulation[J]. IEEE Proceedings,1991:158-162.

        [10]WANG Hua, ZOU Yi. Software instruments based on software radio concept[J]. International Conferences on

        Info-tech and Info-net2001, 2001, 29(2): 459-463.

        [11]趙麗維.基于LabVIEW 8.5的信號幅值特征值求取系統(tǒng)設計[J].現(xiàn)代電子技術(shù),2009,32(15):119-121.

        亚洲啊啊啊一区二区三区| 亚洲午夜精品a片久久www慈禧| 亚洲精品无码久久久久sm| 久久一日本道色综合久久大香| 淫秽在线中国国产视频| 国产三级精品视频2021| 亚洲午夜精品a片久久www慈禧| 国产亚洲精品看片在线观看| 91国产超碰在线观看| 宅男亚洲伊人久久大香线蕉| 两个人看的www免费视频中文| 久久香蕉免费国产天天看| 中文字幕五月久久婷热| 久久丝袜熟女av一区二区| 自愉自愉产区二十四区| 欧美成人免费高清视频| 一区二区三区在线蜜桃| 国产不卡在线视频观看| 亚洲av高清在线一区二区三区| 最新亚洲人成网站在线| 一个人看的在线播放视频| 亚洲综合色区一区二区三区| 精品无码久久久久成人漫画| 国产精品久久久久…| 四虎在线中文字幕一区| 国产成人精品无码片区在线观看| 成在人线av无码免观看麻豆| 欧美日韩综合在线视频免费看| 亚洲性感毛片在线视频| 国产无套粉嫩白浆在线| 九九热在线视频观看这里只有精品| 亚洲中文字幕无线乱码va| 视频在线观看国产自拍| 激情航班h版在线观看| 国产激情在观看| 亚洲成人av在线播放不卡 | 国产激情对白一区二区三区四| 少妇被搞高潮在线免费观看 | 美国又粗又长久久性黄大片| 国产特级毛片aaaaaa高潮流水| 国产高清乱理伦片|