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

        ?

        MATLAB與C混合編程技術(shù)在A/D性能測試中的應(yīng)用

        2015-01-01 03:18:54王益民
        現(xiàn)代雷達(dá) 2015年6期
        關(guān)鍵詞:驅(qū)動(dòng)程序子程序調(diào)用

        王益民

        (南京電子技術(shù)研究所, 南京210039)

        0 引言

        MATLAB是一套高級(jí)的數(shù)學(xué)分析和計(jì)算軟件,具有科學(xué)計(jì)算與可視化功能、簡單易用的開放可擴(kuò)展環(huán)境,以及多達(dá)30多個(gè)面向不同領(lǐng)域而擴(kuò)展的工具箱支持,集計(jì)算機(jī)輔助設(shè)計(jì)、分析與仿真一體,功能強(qiáng)大和靈活,編程效率高,在需要快速驗(yàn)證算法時(shí),相比常見的通用編程平臺(tái)(如:Visual C++等)有很大優(yōu)勢。但MATLAB也存在以下4點(diǎn)不足:

        1)程序執(zhí)行逐行解釋,在實(shí)時(shí)仿真中影響速度;

        2)無規(guī)范完整的圖形用戶界面標(biāo)準(zhǔn);

        3)不能直接訪問底層硬件;

        4)用戶界面單調(diào)。

        上述不足限制了它不能作為通用的軟件開發(fā)平臺(tái),這給工程計(jì)算與應(yīng)用帶來很大的不便[1-3]。

        而常見的通用編程平臺(tái)(如:Visual C++等),功能靈活,與硬件接口能力突出,但面對(duì)信號(hào)分析領(lǐng)域先進(jìn)的理論和方法,如:時(shí)頻分析、小波變換、遺傳算法等,編程效率低。因此,實(shí)現(xiàn)MATLAB與Visual C++的混合編程,使其有機(jī)結(jié)合,優(yōu)勢互補(bǔ),具有很強(qiáng)的應(yīng)用價(jià)值[4]。

        MATLAB本身提供了多種外部接口,如:使用MATLAB自帶的MATLAB Compiler、利用MATLAB引擎、利用Active控件、利用MAT文件、C-MEX等,通過這些外部接口,實(shí)現(xiàn)MATLAB與其他編程環(huán)境的混合編程,可以擴(kuò)充MATLAB的強(qiáng)大的數(shù)值計(jì)算和圖形顯示功能,而避開其缺點(diǎn)[1]。

        在一種雷達(dá)接收機(jī)A/D性能測試設(shè)備的研制中,針對(duì)MATLAB與硬件設(shè)備的接口能力較差,不能直接訪問底層硬件設(shè)備的缺點(diǎn),我們采用MATLAB外部接口混合編程技術(shù),利用C語言編寫自定義的MEX函數(shù),在MATLAB環(huán)境中實(shí)現(xiàn)了對(duì)計(jì)算機(jī)設(shè)備的讀寫驅(qū)動(dòng),可直接獲取A/D采集的數(shù)據(jù),進(jìn)而對(duì)數(shù)據(jù)分析處理,簡化了系統(tǒng)軟件的設(shè)計(jì),提高了實(shí)時(shí)性能,充分利用MATLAB編程效率高、數(shù)學(xué)計(jì)算功能強(qiáng)大的特點(diǎn)。

        1 A/D性能測試設(shè)備簡介

        在一種雷達(dá)接收機(jī)中,采用中頻數(shù)字化方案,對(duì)雷達(dá)四個(gè)窄帶通道和一個(gè)寬帶通道的中頻信號(hào)進(jìn)行采樣、數(shù)字下變頻與正交相檢,形成數(shù)字化的A/D數(shù)據(jù),并完成數(shù)據(jù)的串行化和光纖傳輸,送往信號(hào)處理機(jī)進(jìn)行后續(xù)處理,其信號(hào)數(shù)據(jù)率最大為320 MB/s,實(shí)時(shí)光纖傳輸速率為 2 Gb/s[5]。

        A/D性能測試設(shè)備用于對(duì)接收機(jī)的A/D采樣性能進(jìn)行測試。它以VME總線作為硬件平臺(tái),包含了單板計(jì)算機(jī)、數(shù)據(jù)傳輸記錄模塊,系統(tǒng)構(gòu)成如圖1所示。

        圖1 A/D性能測試設(shè)備的系統(tǒng)框圖

        圖中,單板計(jì)算機(jī)是系統(tǒng)的控制核心,采用符合VME總線標(biāo)準(zhǔn)的計(jì)算機(jī)模塊,運(yùn)行于Windows環(huán)境中。

        數(shù)據(jù)傳輸記錄模塊用于實(shí)現(xiàn)與雷達(dá)接收機(jī)的點(diǎn)對(duì)點(diǎn)高速連接,將A/D送來的光纖數(shù)據(jù)串/并轉(zhuǎn)換變?yōu)椴⑿袛?shù)據(jù),存入板上存儲(chǔ)器暫存,當(dāng)存儲(chǔ)滿后,計(jì)算機(jī)讀取到系統(tǒng)內(nèi)存,由A/D性能測試軟件進(jìn)行分析處理。

        2 基于MATLAB與C混合編程的硬件驅(qū)動(dòng)程序設(shè)計(jì)

        A/D性能測試軟件運(yùn)行在Windows環(huán)境中,其總體框架如圖2所示。它通過數(shù)據(jù)讀寫驅(qū)動(dòng)程序?qū)崿F(xiàn)對(duì)VME總線的讀寫操作,將A/D送來的光纖數(shù)據(jù)讀入到內(nèi)存,再由數(shù)據(jù)顯示與分析程序?qū)?shù)據(jù)進(jìn)行顯示并計(jì)算分析得出A/D的性能指標(biāo)。

        圖2 A/D性能測試軟件框圖

        由于MATLAB與硬件設(shè)備的接口能力較差,不支持訪問VME底層的硬件設(shè)備,常用的方法是通過VC++等通用軟件編寫數(shù)據(jù)讀寫程序,獲取外部數(shù)據(jù)后,再由MATLAB程序調(diào)用數(shù)據(jù)進(jìn)行分析處理,使處理的實(shí)時(shí)性能降低,也給開發(fā)帶來一定難度。

        在本文設(shè)計(jì)的系統(tǒng)中,我們結(jié)合MATLAB與C混合編程技術(shù),采用C-MEX方式編程,實(shí)現(xiàn)在MATLAB環(huán)境下對(duì)計(jì)算機(jī)VME總線的讀寫驅(qū)動(dòng),直接完成A/D數(shù)據(jù)讀取的底層操作,在此基礎(chǔ)上,對(duì)數(shù)據(jù)進(jìn)行分析和處理。其實(shí)質(zhì)是在C框架下編寫硬件驅(qū)動(dòng)程序,形成動(dòng)態(tài)鏈接庫(DLL)函數(shù),并保證該DLL函數(shù)符合MATLAB函數(shù)的接口要求,使之可被MATLAB直接調(diào)用。

        下面著重介紹如何在MATLAB環(huán)境中,實(shí)現(xiàn)A/D數(shù)據(jù)讀取的VME總線驅(qū)動(dòng)設(shè)計(jì)。

        2.1 C-MEX方式簡介

        所謂 MEX,是 MATLAB Executable的縮寫,即MATLAB的可執(zhí)行程序。在 Windows環(huán)境中,它是擴(kuò)展名為DLL的動(dòng)態(tài)鏈接庫。MEX文件是MATLAB調(diào)用其他語言編寫的程序或算法的接口,它符合MATLAB的調(diào)用格式,可以在M程序中直接調(diào)用。

        用戶可利用MATLAB的應(yīng)用程序編程接口,使用C語言、Fortran語言等編寫MEX函數(shù),編譯完成的MEX函數(shù)就可以像其他內(nèi)建的MATLAB函數(shù)一樣使用。MEX函數(shù)源代碼由兩部分組成:

        第一部分,稱為計(jì)算子程序(computational routine),它是要鏈接的外部子程序,用于完成用戶定義的一些特定功能,如:數(shù)值計(jì)算、數(shù)據(jù)的輸入、輸出、對(duì)硬件的訪問和開發(fā)等,用戶想要將一些已經(jīng)編寫的程序和算法移植到MATLAB環(huán)境中使用,就需要將算法和程序整理成函數(shù)形式封裝。

        第二部分,稱為入口子程序(gateway routine),相當(dāng)于C語言中的main函數(shù)。入口子程序的作用主要是在MATLAB系統(tǒng)與被調(diào)用的外部子程序之間建立通信聯(lián)系,也就是:定義被MATLAB調(diào)用的外部子程序的入口地址,定義MATLAB系統(tǒng)向子程序傳遞的參數(shù),還定義子程序向MATLAB系統(tǒng)返回的參數(shù),以及調(diào)用計(jì)算子程序等。

        MEX函數(shù)源代碼的兩部分既可以分開,也可以組合在一起,但文件頭必須包含語句:

        #include“mex.h”

        2.2 硬件驅(qū)動(dòng)程序的編程實(shí)現(xiàn)

        按照MATLAB的混合編程框架,在本程序中,編寫MEX函數(shù)形式的驅(qū)動(dòng)程序,分為兩個(gè)部分:

        1)入口程序的編程實(shí)現(xiàn)

        在入口程序中,用戶主要完成兩個(gè)方面的任務(wù):一方面,從輸入的mxArray結(jié)構(gòu)體中獲得計(jì)算所需的數(shù)據(jù),然后再調(diào)用用戶的計(jì)算子程序加以使用;另一方面,用戶同樣可以將計(jì)算結(jié)果返回給用于輸出的mx-Array結(jié)構(gòu)體,這樣MATLAB系統(tǒng)就能夠獲得用戶計(jì)算子程序的結(jié)果。

        入口子程序的函數(shù)名必須是mexFunction,函數(shù)共有4個(gè)參數(shù),其中參數(shù)nrhs為MEX函數(shù)輸入?yún)?shù)的個(gè)數(shù),nlhs為MEX函數(shù)輸出參數(shù)的個(gè)數(shù),prhs是一個(gè)長度為nrhs的MEX函數(shù)輸入?yún)?shù)變量指針數(shù)組,plhs是一個(gè)長度為nlhs的MEX函數(shù)輸出參數(shù)變量指針數(shù)組。

        源程序如下:

        利用混合編程的關(guān)鍵點(diǎn)是輸入輸出接口參數(shù)的設(shè)置,只有保證驅(qū)動(dòng)程序中定義的數(shù)據(jù)類型與MATLAB中的數(shù)據(jù)類型相匹配,才能進(jìn)行正確的數(shù)據(jù)傳輸。

        2)計(jì)算子程序的編程實(shí)現(xiàn)

        計(jì)算子程序,主要完成硬件設(shè)備的VME總線讀寫,將A/D數(shù)據(jù)從板上數(shù)據(jù)存儲(chǔ)區(qū)讀入CPU內(nèi)存區(qū)。它由入口子程序調(diào)用。其源代碼如下:

        /*向傳輸記錄板上的硬件基地址為JK_FIFOBASE,偏移量為0的硬件地址,發(fā)出寫總線命令,設(shè)置工作方式mode(寬帶方式或窄帶方式),并啟動(dòng)采集。

        2.2.1 驅(qū)動(dòng)程序的編譯

        上述兩段程序存于ad_sample.c中,在MATLAB的命令窗口中輸入:mex ad_sample.c,當(dāng)正確無誤,編譯通過,生成與C語言文件名相同的DLL文件,該文件與其他MATLAB內(nèi)嵌函數(shù)一樣,可由MATLAB調(diào)用ad_sample了。

        2.2.2 MEX函數(shù)的執(zhí)行流程

        當(dāng)MEX文件生成后,在MATLAB環(huán)境中調(diào)用形式為:

        ad_data=ad_sample(mode)

        則MATLAB編譯器使用下面的變量來調(diào)用mex-Function:

        nlhs=1 nrhs=1

        plhs=(pointer)->/unsigned*/

        prhs=(pointer)->mode

        在C語言的MEX文件中,參數(shù)nrhs為MEX函數(shù)輸入?yún)?shù)的個(gè)數(shù),nlhs為MEX函數(shù)輸出參數(shù)的個(gè)數(shù),借助這兩個(gè)參數(shù),MEX文件被調(diào)用。prhs是一個(gè)長度為nrhs的MEX函數(shù)輸入?yún)?shù)變量指針數(shù)組,plhs是一個(gè)長度為nlhs的MEX函數(shù)輸出參數(shù)變量指針數(shù)組,通過這兩個(gè)指針,可以在計(jì)算子程序中使用這些變量進(jìn)行計(jì)算。plhs指向空的數(shù)組是由于輸出ad_data在子程序執(zhí)行前尚未產(chǎn)生,入口程序的作用就是創(chuàng)建輸出數(shù)組并分配指針plhs[0]指向該數(shù)組。MATLAB調(diào)用MEX函數(shù)的運(yùn)行流程,如圖3所示。

        2.2.3 試驗(yàn)測試

        基于上述生成的讀寫驅(qū)動(dòng)程序,我們編寫了界面化MATLAB的A/D性能測試軟件,實(shí)現(xiàn)了數(shù)據(jù)讀取、數(shù)據(jù)顯示、數(shù)據(jù)分析等功能,配合測試系統(tǒng)完成了對(duì)以2 Gb/s速率光纖傳輸?shù)腁/D數(shù)據(jù)的采集與性能測試。圖4為測試軟件從光纖通道獲取的A/D數(shù)據(jù)波形,三組波形分別反映了接收機(jī)A/D輸出的正交分量、同相分量以及模值的數(shù)據(jù)。

        圖3 MEX文件的編譯運(yùn)行流程

        圖4 A/D性能測試軟件的波形顯示界面

        3 結(jié)束語

        本文結(jié)合一種A/D性能測試設(shè)備的研制,論述了采用MATLAB和C語言混合編程的MEX函數(shù)技術(shù),編寫對(duì)VME總線的硬件讀寫程序,解決了MATLAB不能支持硬件底層驅(qū)動(dòng)的問題,擴(kuò)展了MATLAB的功能。本文所提出的方法不僅適用于此類硬件與MATLAB軟件的接口,還可實(shí)現(xiàn)MATLAB進(jìn)行網(wǎng)絡(luò)通信,進(jìn)而用于MATLAB與其他應(yīng)用程序之間通信,有助于發(fā)揮不同軟件各自的優(yōu)勢,降低開發(fā)難度,達(dá)到簡化編程的目的,從而縮短軟件開發(fā)周期。

        [1] 楊高波,亓 波.精通 MATLAB 7.0混合編程[M].北京:電子工業(yè)出版社,2006.Yang Gaobo,Qi Bo.Mastering MATLAB 7.0 mixed programming[M].Beijing:Publishing House of Electronics Industry,2006.

        [2] 黃志軍,戴余良,曾 斌,等.MATLAB外部網(wǎng)絡(luò)接口的實(shí)現(xiàn)[J].計(jì)算機(jī)與數(shù)字工程,2004,32(3):70-72.Huang Zhijun,Dai Yuliang,Zeng Bing,et al.Implementation of MATLAB external network interface[J].Computer and Digital Engineering,2004,32(3):70-72.

        [3] 賴 娟.VC++與Matlab的混合編程[J].信息技術(shù),2006,30(6):123-126.Lai Juan.Hybrid programming between Matlab and VC++[J].Information Technology,2006,30(6):123-126.

        [4] 禹 倩,白 雪.雷達(dá)信號(hào)分析虛擬儀器的設(shè)計(jì)與實(shí)現(xiàn)[J]. 現(xiàn)代雷達(dá),2006,28(10):49-52.Yu Qian,Bai Xue.Design and implementation of radar signal analysis virtual instrument[J].Modern Radar,2006,28(10):49-52.

        [5] 王益民.高速串行傳輸技術(shù)在雷達(dá)接收機(jī)中的應(yīng)用[J].現(xiàn)代雷達(dá),2009,31(4):84-86.Wang Yimin.Application of high-speed serial transmission technology in radar receiver[J].Modern Radar,2009,31(4):84-86.

        猜你喜歡
        驅(qū)動(dòng)程序子程序調(diào)用
        核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
        LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
        基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
        淺談子程序在數(shù)控車編程中的應(yīng)用
        子程序在數(shù)控車加工槽中的應(yīng)用探索
        西門子840D系統(tǒng)JOG模式下PLC調(diào)用并執(zhí)行NC程序
        利用RFC技術(shù)實(shí)現(xiàn)SAP系統(tǒng)接口通信
        簡化編程與子程序嵌套的應(yīng)用
        科技傳播(2011年24期)2011-08-29 05:39:46
        驅(qū)動(dòng)程序更新與推薦
        驅(qū)動(dòng)程序更新與推薦
        蜜桃在线视频一区二区| 无遮高潮国产免费观看| 男人的天堂在线无码视频| 日本骚色老妇视频网站| 邻居美少妇张开腿让我爽了一夜| av综合网男人的天堂| 国产高潮刺激叫喊视频| 国产黄色精品高潮播放| 少妇高潮久久蜜柚av| 无码视频在线观看| 午夜家庭影院| 人妻少妇精品视频一区二区三区| 亚洲伊人av天堂有码在线| 日产学生妹在线观看| 国产精品毛片无遮挡高清| 日本中文字幕一区二区在线观看 | 免费人成毛片乱码| 在线免费观看亚洲天堂av| 国产强伦姧在线观看| 成人久久精品人妻一区二区三区| 中文字幕亚洲精品无码| 法国啄木乌av片在线播放| 亚洲av一区二区国产精品| 蜜桃av一区二区三区久久| 国产情侣一区二区| 欧美天欧美天堂aⅴ在线| 久久老子午夜精品无码| 麻豆精品在线视频观看| 3d动漫精品啪啪一区二区免费| 国产女人18毛片水真多| 人妻少妇久久精品一区二区| 蜜臀av一区二区三区免费观看 | 青青草免费手机视频在线观看| 水蜜桃精品一二三| 国产亚洲女在线线精品| 深夜日韩在线观看视频| 亚洲精品蜜夜内射| 国产呦精品系列在线播放| 丰满人妻一区二区三区免费| 四虎影在永久在线观看| 少妇白浆高潮无码免费区|