999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

MATLAB與C混合編程技術在A/D性能測試中的應用

2015-01-01 03:18:54王益民
現代雷達 2015年6期

王益民

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

0 引言

MATLAB是一套高級的數學分析和計算軟件,具有科學計算與可視化功能、簡單易用的開放可擴展環境,以及多達30多個面向不同領域而擴展的工具箱支持,集計算機輔助設計、分析與仿真一體,功能強大和靈活,編程效率高,在需要快速驗證算法時,相比常見的通用編程平臺(如:Visual C++等)有很大優勢。但MATLAB也存在以下4點不足:

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

2)無規范完整的圖形用戶界面標準;

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

4)用戶界面單調。

上述不足限制了它不能作為通用的軟件開發平臺,這給工程計算與應用帶來很大的不便[1-3]。

而常見的通用編程平臺(如:Visual C++等),功能靈活,與硬件接口能力突出,但面對信號分析領域先進的理論和方法,如:時頻分析、小波變換、遺傳算法等,編程效率低。因此,實現MATLAB與Visual C++的混合編程,使其有機結合,優勢互補,具有很強的應用價值[4]。

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

在一種雷達接收機A/D性能測試設備的研制中,針對MATLAB與硬件設備的接口能力較差,不能直接訪問底層硬件設備的缺點,我們采用MATLAB外部接口混合編程技術,利用C語言編寫自定義的MEX函數,在MATLAB環境中實現了對計算機設備的讀寫驅動,可直接獲取A/D采集的數據,進而對數據分析處理,簡化了系統軟件的設計,提高了實時性能,充分利用MATLAB編程效率高、數學計算功能強大的特點。

1 A/D性能測試設備簡介

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

A/D性能測試設備用于對接收機的A/D采樣性能進行測試。它以VME總線作為硬件平臺,包含了單板計算機、數據傳輸記錄模塊,系統構成如圖1所示。

圖1 A/D性能測試設備的系統框圖

圖中,單板計算機是系統的控制核心,采用符合VME總線標準的計算機模塊,運行于Windows環境中。

數據傳輸記錄模塊用于實現與雷達接收機的點對點高速連接,將A/D送來的光纖數據串/并轉換變為并行數據,存入板上存儲器暫存,當存儲滿后,計算機讀取到系統內存,由A/D性能測試軟件進行分析處理。

2 基于MATLAB與C混合編程的硬件驅動程序設計

A/D性能測試軟件運行在Windows環境中,其總體框架如圖2所示。它通過數據讀寫驅動程序實現對VME總線的讀寫操作,將A/D送來的光纖數據讀入到內存,再由數據顯示與分析程序對數據進行顯示并計算分析得出A/D的性能指標。

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

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

在本文設計的系統中,我們結合MATLAB與C混合編程技術,采用C-MEX方式編程,實現在MATLAB環境下對計算機VME總線的讀寫驅動,直接完成A/D數據讀取的底層操作,在此基礎上,對數據進行分析和處理。其實質是在C框架下編寫硬件驅動程序,形成動態鏈接庫(DLL)函數,并保證該DLL函數符合MATLAB函數的接口要求,使之可被MATLAB直接調用。

下面著重介紹如何在MATLAB環境中,實現A/D數據讀取的VME總線驅動設計。

2.1 C-MEX方式簡介

所謂 MEX,是 MATLAB Executable的縮寫,即MATLAB的可執行程序。在 Windows環境中,它是擴展名為DLL的動態鏈接庫。MEX文件是MATLAB調用其他語言編寫的程序或算法的接口,它符合MATLAB的調用格式,可以在M程序中直接調用。

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

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

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

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

#include“mex.h”

2.2 硬件驅動程序的編程實現

按照MATLAB的混合編程框架,在本程序中,編寫MEX函數形式的驅動程序,分為兩個部分:

1)入口程序的編程實現

在入口程序中,用戶主要完成兩個方面的任務:一方面,從輸入的mxArray結構體中獲得計算所需的數據,然后再調用用戶的計算子程序加以使用;另一方面,用戶同樣可以將計算結果返回給用于輸出的mx-Array結構體,這樣MATLAB系統就能夠獲得用戶計算子程序的結果。

入口子程序的函數名必須是mexFunction,函數共有4個參數,其中參數nrhs為MEX函數輸入參數的個數,nlhs為MEX函數輸出參數的個數,prhs是一個長度為nrhs的MEX函數輸入參數變量指針數組,plhs是一個長度為nlhs的MEX函數輸出參數變量指針數組。

源程序如下:

利用混合編程的關鍵點是輸入輸出接口參數的設置,只有保證驅動程序中定義的數據類型與MATLAB中的數據類型相匹配,才能進行正確的數據傳輸。

2)計算子程序的編程實現

計算子程序,主要完成硬件設備的VME總線讀寫,將A/D數據從板上數據存儲區讀入CPU內存區。它由入口子程序調用。其源代碼如下:

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

2.2.1 驅動程序的編譯

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

2.2.2 MEX函數的執行流程

當MEX文件生成后,在MATLAB環境中調用形式為:

ad_data=ad_sample(mode)

則MATLAB編譯器使用下面的變量來調用mex-Function:

nlhs=1 nrhs=1

plhs=(pointer)->/unsigned*/

prhs=(pointer)->mode

在C語言的MEX文件中,參數nrhs為MEX函數輸入參數的個數,nlhs為MEX函數輸出參數的個數,借助這兩個參數,MEX文件被調用。prhs是一個長度為nrhs的MEX函數輸入參數變量指針數組,plhs是一個長度為nlhs的MEX函數輸出參數變量指針數組,通過這兩個指針,可以在計算子程序中使用這些變量進行計算。plhs指向空的數組是由于輸出ad_data在子程序執行前尚未產生,入口程序的作用就是創建輸出數組并分配指針plhs[0]指向該數組。MATLAB調用MEX函數的運行流程,如圖3所示。

2.2.3 試驗測試

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

圖3 MEX文件的編譯運行流程

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

3 結束語

本文結合一種A/D性能測試設備的研制,論述了采用MATLAB和C語言混合編程的MEX函數技術,編寫對VME總線的硬件讀寫程序,解決了MATLAB不能支持硬件底層驅動的問題,擴展了MATLAB的功能。本文所提出的方法不僅適用于此類硬件與MATLAB軟件的接口,還可實現MATLAB進行網絡通信,進而用于MATLAB與其他應用程序之間通信,有助于發揮不同軟件各自的優勢,降低開發難度,達到簡化編程的目的,從而縮短軟件開發周期。

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

[2] 黃志軍,戴余良,曾 斌,等.MATLAB外部網絡接口的實現[J].計算機與數字工程,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].信息技術,2006,30(6):123-126.Lai Juan.Hybrid programming between Matlab and VC++[J].Information Technology,2006,30(6):123-126.

[4] 禹 倩,白 雪.雷達信號分析虛擬儀器的設計與實現[J]. 現代雷達,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] 王益民.高速串行傳輸技術在雷達接收機中的應用[J].現代雷達,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.

主站蜘蛛池模板: 日本91视频| 日韩小视频在线播放| 亚洲一道AV无码午夜福利| 国产欧美日韩另类| 天天综合网色| 欧美97色| 日本免费福利视频| 国内精自线i品一区202| 欧美成一级| 国产a网站| 日本国产在线| 免费国产小视频在线观看| 在线观看av永久| 一级毛片免费不卡在线| 热这里只有精品国产热门精品| 中文字幕在线观| 蜜桃视频一区| 综合色在线| 亚洲三级a| 国产午夜无码专区喷水| 国产精品成人久久| 精品视频一区二区观看| 婷婷综合色| 精品伊人久久大香线蕉网站| 成人国产免费| 成人在线天堂| 免费视频在线2021入口| 国产成人区在线观看视频| 国产精品视频第一专区| 久久久精品久久久久三级| 国产91精选在线观看| 日韩欧美中文亚洲高清在线| 在线一级毛片| 精品一区二区三区自慰喷水| 少妇精品久久久一区二区三区| 久久免费视频播放| 国产成人精品无码一区二| 国产免费a级片| 99尹人香蕉国产免费天天拍| 日本在线视频免费| 国产精品深爱在线| 中文纯内无码H| 人妻丰满熟妇啪啪| 九九九国产| 欧美色图久久| 亚洲啪啪网| 中文字幕免费播放| 亚洲床戏一区| 九色在线观看视频| 国产91九色在线播放| 福利片91| 永久免费精品视频| 欧美第一页在线| 亚洲人成网站18禁动漫无码| 四虎永久在线精品影院| 免费a级毛片视频| 日韩欧美国产综合| 亚洲视频免费在线看| 99精品热视频这里只有精品7 | 日本午夜视频在线观看| 久久国产亚洲偷自| 精品欧美一区二区三区在线| 中文无码日韩精品| 日韩精品一区二区三区大桥未久| 精品超清无码视频在线观看| 无码又爽又刺激的高潮视频| 99久久精品美女高潮喷水| 一区二区三区成人| 国产一区二区三区在线无码| 免费毛片全部不收费的| 免费看美女自慰的网站| 精品视频一区二区三区在线播| 国产久操视频| 国产成人精品第一区二区| 91口爆吞精国产对白第三集| aⅴ免费在线观看| 亚洲人成在线精品| 免费在线a视频| 男女性午夜福利网站| 漂亮人妻被中出中文字幕久久| 欧美丝袜高跟鞋一区二区| 高清乱码精品福利在线视频|