<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于Matlab和VC混合編程的DSP數據采集系統

基于Matlab和VC混合編程的DSP數據采集系統

作者: 時(shí)間:2012-06-06 來(lái)源:網(wǎng)絡(luò ) 收藏

前言

本文引用地址:http://dyxdggzs.com/article/257457.htm

在開(kāi)發(fā)和處理系統的過(guò)程中.通常需要采用匯編語(yǔ)言開(kāi)發(fā)一些復雜的算法(如FFT分析、相關(guān)分析等),但是,實(shí)現這些算法的程序一般都很復雜,尤其需要圖形顯示時(shí),程序的編寫(xiě)就更復雜了。此外,這些程序還將占用的內存資源。Matlab提供了矩陣處理、數值計算、圖形顯示等強大功能,同時(shí)還帶有功能豐富的軟件工具箱.若能把Matlab的高效、便捷算法和圖形顯示工具應用于DSP和處理系統.即把采集到的數據上傳到Matlab平臺進(jìn)行相應的處理和圖形顯示.這樣.不僅減少了DSP的負荷和開(kāi)銷(xiāo).而且還可以加快系統的研發(fā)進(jìn)度。

1 系統設計

基于Matlab平臺的DSP和處理系統的主要功能是:在Matlab平臺上控制底層DSP目標板進(jìn)行數據的采集和處理,并把采集到的數據上傳到Matlab平臺上進(jìn)行相應的數值處理和圖形顯示然后再把處理后的數據回傳給底層DSP目標板,完成后續任務(wù)。

1.1硬件結構

DSP數據采集系統主要由PC計算機、TMS320C6202 DSP目標板、AD16模塊、MOT模塊、數字I/O口和Timer模塊組成,如圖1所示。

①DSP目標板選用ll(Innovative Integration)公司M6x系列的TMS320C6202開(kāi)發(fā)板。DSP目標板通過(guò)計算機主板上的PCI插槽裝在計算機內部,DSP程序通過(guò)JTAG進(jìn)行在線(xiàn)調試:DSP目標板提供了許多動(dòng)態(tài)連接庫函數.可直接完成對目標板的底層操作,如Target_Open()--打開(kāi)目標板驅動(dòng)、iicoffld()--下載程序列DSP中、Target_Close()--關(guān)閉目標板驅動(dòng)等;

②A(yíng)D16是Ⅱ公司的16通道16位的數據采集模塊.雙端差動(dòng)輸入,輸入范圍是-10V至+10V,可同時(shí)采集16路外部模擬信號,采樣頻率為5~195KHz;



圖1系統硬件結構

③MOT是一個(gè)集成有4個(gè)16位DA轉換器的信號產(chǎn)生模塊,DA輸出電壓范圍是-10V到+10V.可輸出4路測試需要的模擬信號.DA轉換頻率最高可達200KHz:

④數字I/O模塊是一個(gè)32位數字I/O連接端口。系統可以通過(guò)這個(gè)數字I/O接口與外界進(jìn)行數字通信:

⑤Timer模塊提供了三個(gè)外部定時(shí)器,其定時(shí)參考時(shí)鐘可以是DSP目標板上的時(shí)鐘,也可以是外部提供的時(shí)鐘。其定時(shí)輸出信號可滿(mǎn)足系統測試的定時(shí)要求。

1.2軟件設計

圖2是DSP數據采集和處理系統的軟件設計模塊圖。其中:Matlab平臺主要完成對目標板的操作和控制,處理DSP目標板上傳的數據.再回傳給DSP目標板,并進(jìn)行圖形顯示。



圖2系統的軟件模塊圖

visual C++平臺作為Matlab與底層DSP目標板的連接中介,主要完成對DSP目標板的具體操作。由于DSP目標板自帶了對板卡進(jìn)行操作的動(dòng)態(tài)連接庫函數,因此在Vishal C++平臺中就可利用這些函數,完成對目標板的一些控制和操作。例如:用戶(hù)界面(圖4)上的Open按鈕就是在Visual C++中利用Target_Open()函數完成目標板驅動(dòng)的打開(kāi)。

DSP數據采集和處理程序主要控制AD16采集外界模擬信號,并經(jīng)過(guò)相應處理之后.上傳到Matlab平臺,然后再從Matlab平臺接收處理后的數據.控制MOT模塊輸出系統所需的模擬信號。完成一個(gè)完整的數據采集—數據處理一系統控制的全過(guò)程。

2 系統實(shí)現的關(guān)鍵技術(shù)

Matlab作為高級應用程序語(yǔ)言.并不能直接控制和操作所有的底層板卡。Matlab仿真模塊里面帶有一些可以直接控制和操作的DSP板卡.但是這些板卡都是一些固定型號的DSP板卡,而對用戶(hù)自行設計和其它一些型號的DSP板卡并沒(méi)提供這種功能.因此要實(shí)現在Matlab平臺上控制一般的DSP板卡進(jìn)行數據的采集和處理還必須借助中介軟件.這個(gè)中介軟件就是Visual C++。這樣便可實(shí)現Matlab與DSP底層板卡的無(wú)縫連接。具體技術(shù)包括:DSP目標板和主機的數據交換,Matlab與Visual C++的接口。

2.1 DSP目標板和豐機的數據交換

TI公司提供DSP與PC主機之間的實(shí)時(shí)數據傳輸技術(shù)RTDX(Real Time Data Exchange)協(xié)議.并在主機中提供了工業(yè)標準的目標連接與嵌入應用程序接口OLE API(Application Program Interface).因而能方便地與符合OLE API標準的第三方軟件接口。實(shí)現與DSP的數據交換。完整的RTDX協(xié)議包含4個(gè)部分:主機應用程序、主機軟件庫、目標機軟件庫和目標機程序。圖3是實(shí)現計算機和DSP之間數據傳輸的關(guān)系圖。



圖3 RTDX數據傳輸關(guān)系

微軟公司(Microsoft)提供的Visual C++軟件開(kāi)發(fā)環(huán)境封裝了,TI公司的RTDX協(xié)議,配合DSP程序可方便、實(shí)時(shí)地與Pc主機進(jìn)行數據通信。因此通過(guò)visual c++軟件就有可能實(shí)現在MATLAB平臺上完成對DSP數據采集和處理的控制。實(shí)現PC主機與DSP目標板的數據交換。

PC主機和DSP目標板通過(guò)RTDX協(xié)議實(shí)現數據交換需要在PC主機程序和DSP程序中定義同名的一條RTDX通道,數據通過(guò)該通道在PC主機和DSP目標板之間傳輸。PC主機程序和目標板上的DSP程序需要嚴格的配合,PC主機的讀操作和DSP目標板的寫(xiě)操作通過(guò)定義一個(gè)“寫(xiě)RTDX”通道實(shí)現:而PC主機的寫(xiě)操作與DSP目標板的讀操作通過(guò)定義一個(gè)“讀RTDX”通道實(shí)現.必須一一對應,這樣才能實(shí)現主機與DSP目標板的數據交換。

2.2 Matlab與Visual C++的接口

Matlab作為一種工具軟件.通常是不能直接控制DSP目標板。但是Matlab軟件為了擴充自身軟件的功能,提供了一種與其它開(kāi)發(fā)工具或開(kāi)發(fā)語(yǔ)言進(jìn)行交互的應用程序接口 (API)。其中.MEX文件就是MATLAB軟件提供的一種與Visual c++溝通的接口文件。

在MEX文件中使用c語(yǔ)言編寫(xiě)以mexFunction (int nlhs,mxArray *nlhs[ ],int nrhs,const mxArray * plhs[ ])函數為主函數的動(dòng)態(tài)連接庫程序(*.dll).然后只需在Matlab命令提示符下鍵入此MEX文件名(*.dll)即可完成調用.這與Matlab的內建函數的調用方式完全相同。mexFunction函數中的參數說(shuō)明如下:

①int nlhs是左邊輸出參數的個(gè)數,即visual c++向Matlab傳遞的參數個(gè)數;

②mxArray *nlhs [ ]是左邊參數的數組。它是一個(gè)mxArray結構體類(lèi)型的指針數組.這個(gè)數組的元素按順序(nlhs[0].nlhs[1]?)指向所有的輸出參數:

③int nrhs是右邊輸入參數的個(gè)數,即Matlab向VisualC++傳遞的參數個(gè)數;

④const mxArray *plhs [ ]是右邊參數的數組,它是一個(gè)mxArray結構體類(lèi)型的指針數組,這個(gè)數組的元素按順序(plhs[0],plhs[1]??)指向所有的輸入參數。

在MEX文件中.利用DSP目標板提供的動(dòng)態(tài)連接庫函數,編寫(xiě)對目標板進(jìn)行操作的動(dòng)態(tài)連接庫程序.然后在Matlab平臺上調用這些動(dòng)態(tài)連接庫函數既町實(shí)現Matlab和底層DSP目標板的無(wú)縫連接。



圖4系統測試結果

具體過(guò)程是:在Matlab平臺上.以傳遞參數的形式調用動(dòng)態(tài)連接庫程序。把需要傳送給DSP目標板處理的數據,通過(guò)mexFunction函數的右邊參數數組先傳送給動(dòng)態(tài)連接庫程序。然后通過(guò)Visual C++程序和DSP程序共同定義的“寫(xiě)RTDX通道”把數據傳送給DSP目標板:需要上傳到Matlab平臺的數據,首先被DSP應用程序寫(xiě)入到“讀RTDX通道”中.然后在Visual C++中的動(dòng)態(tài)連接庫程序讀取該R31DX通道中的數據,再經(jīng)過(guò)MexFunction函數的左邊參數數組把數據上傳到Matlab平臺。這樣.就實(shí)現了在Matlab平臺上控制和操作DSP目標板,并與之進(jìn)行數據交換。

圖4是按照上述方法編寫(xiě)的軟件界面和對系統進(jìn)行測試所得到的結果。

3 結束語(yǔ)

基于Matlab平臺的DSP數據采集和處理系統,在Matlab強大的數據分析和繪圖功能的基礎上,結合了Visual c++易于實(shí)現操作和控制的性能。改善了Matlab在控制底層板卡方面的不足。該系統的研究不僅是把Matlab應用于DSP數據采集和處理系統的一次嘗試.也為一些半實(shí)物仿真系統提供了新的思路。Matlab/Simulink本身就是一種功能強大的系統仿真工具,因此,如果能在該系統的基礎上把Matlat/Simulink的仿真功能添加上來(lái)。則可實(shí)現硬件在環(huán)的半實(shí)物仿真。相信Matlab豐富的函數庫和眾多的專(zhuān)業(yè)工具箱.必會(huì )為今后系統的完善以及擴展提供充分的條件。

本文作者創(chuàng )新點(diǎn):通過(guò)在Matlab平臺上直接控制DSP數據采集系統.把Matlab的優(yōu)良算法應用于系統中。簡(jiǎn)化了系統的數據處理過(guò)程。提高了,系統數據處理速度,縮短了系統設計周期,具有廣泛的應用前景。

c++相關(guān)文章:c++教程




關(guān)鍵詞: matlab DSP 數據采集 VC

評論


相關(guān)推薦

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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>