国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

MATLAB與DSP使用RTDX的實(shí)時(shí)數(shù)據(jù)交換*

2015-07-02 08:57:26覃遠(yuǎn)年孫麗真田柯
關(guān)鍵詞:指針應(yīng)用程序指令

覃遠(yuǎn)年,孫麗真,田柯

(桂林電子科技大學(xué) 通信實(shí)驗(yàn)中心,桂林541000)

引 言

在傳統(tǒng)的DSP(Digital Signal Processor)應(yīng)用程序開(kāi)發(fā)過(guò)程中,涉及的算法一般先用 MATLAB語(yǔ)言進(jìn)行仿真,仿真結(jié)果滿意后,再進(jìn)入產(chǎn)品的實(shí)現(xiàn)階段。仿真實(shí)現(xiàn)后的算法用C/C++或匯編語(yǔ)言實(shí)現(xiàn),首先在硬件DSP目標(biāo)板上調(diào)試,將中間結(jié)果通過(guò)DSP開(kāi)發(fā)工具保存到PC機(jī)的硬盤上,然后調(diào)用到 MATLAB工作空間,與MATLAB仿真算法的中間結(jié)果進(jìn)行比較,以發(fā)現(xiàn)DSP程序中由于設(shè)計(jì)或精度導(dǎo)致的結(jié)果偏差[1]。如此反復(fù)進(jìn)行,應(yīng)用程序開(kāi)發(fā)十分不便。

鑒于DSP應(yīng)用開(kāi)發(fā)的傳統(tǒng)設(shè)計(jì)方法十分不便,Math-Works公司和TI公司聯(lián)合開(kāi)發(fā)了MATLAB Link for CCS Development Tools(簡(jiǎn)稱 CCSLink)。CCSLink將MATLAB、CCS(TI DSP集成開(kāi)發(fā)環(huán)境)和目標(biāo)DSP三者連接起來(lái),開(kāi)發(fā)人員可以在MATLAB環(huán)境中像操作MATLAB變量一樣操作TI公司DSP的存儲(chǔ)器和寄存器,實(shí)現(xiàn)對(duì)CCS的控制,極大地方便了TI DSP應(yīng)用程序的開(kāi)發(fā)。

本文所做的研究是以MATLAB2010b、CCS3.3以及基于TMS320VC5509A的開(kāi)發(fā)板進(jìn)行的。目前大多數(shù)書(shū)籍就CCSLink的描述主要是基于 MATLAB6.5的,而后續(xù)的MATLAB版本對(duì)CCSLink做了一定的修改和完善。RTDX插件作為CCSLink的重要組成部分之一,有其獨(dú)特的優(yōu)勢(shì)。在接下來(lái)的內(nèi)容中將對(duì)RTDX做詳細(xì)介紹,旨在向DSP研發(fā)人員提供一種更快捷的RTDX使用方式。

1 CCSLink的構(gòu)成

CCSLink由3部分組成[1]:

①與CCS IDE的連接對(duì)象。利用此對(duì)象可以創(chuàng)建CCS與MATLAB的連接,執(zhí)行相應(yīng)的MATLAB命令就可以運(yùn)行CCS中的應(yīng)用程序,與目標(biāo)DSP的存儲(chǔ)器和寄存器進(jìn)行雙向數(shù)據(jù)交換。其優(yōu)點(diǎn)在于:

(a)用戶可以利用MATLAB強(qiáng)大的數(shù)據(jù)分析和可視化功能,節(jié)省設(shè)計(jì)和調(diào)試程序的時(shí)間。

(b)可以編寫用于調(diào)試數(shù)字信號(hào)處理程序的MATLAB語(yǔ)言批處理腳本,實(shí)現(xiàn)調(diào)試和分析的自動(dòng)化。

②與RTDX的連接對(duì)象。提供了MATLAB與目標(biāo)DSP之間的實(shí)時(shí)通信通道,利用此通道可以實(shí)時(shí)地與目標(biāo)DSP進(jìn)行數(shù)據(jù)交換而不用停止DSP上正在執(zhí)行的程序。Link for RTDX實(shí)現(xiàn)了對(duì)實(shí)時(shí)數(shù)據(jù)的自動(dòng)化高級(jí)分析和可視化,同時(shí)也實(shí)現(xiàn)了對(duì)復(fù)雜DSP程序的有效驗(yàn)證。

RTDX包括主機(jī)和目標(biāo)DSP兩部分,如圖1所示。在DSP上有一個(gè)小的RTDX庫(kù)(RTDX Target Library)[2],其使用一個(gè)基于掃描的仿真器,通過(guò)增強(qiáng)型JTAG接口在主機(jī)和DSP之間傳輸數(shù)據(jù)。DSP應(yīng)用程序則通過(guò)調(diào)用RTDX庫(kù)的API函數(shù)來(lái)完成主機(jī)和DSP之間的通信。主機(jī)方運(yùn)行CCS軟件,CCS軟件同樣帶有一個(gè)RTDX庫(kù)(RTDX Host Library),通過(guò)一個(gè)COM接口將實(shí)時(shí)數(shù)據(jù)在主機(jī)上顯示[3]。這樣,MATLAB中設(shè)計(jì)的參數(shù)可以通過(guò)RTDX輸入通道寫入DSP的存儲(chǔ)單元,而算法的最后結(jié)果也可以通過(guò)RTDX的輸出通道上傳到MATLAB中,通過(guò)編寫MATLAB程序來(lái)顯示、分析信號(hào)處理的結(jié)果。

圖1 RTDX原理框圖

③嵌入對(duì)象。在MATLAB環(huán)境中能夠創(chuàng)建一個(gè)代表嵌入在目標(biāo)C程序中的變量對(duì)象,利用嵌入式對(duì)象可以像處理MATLAB的變量那樣直接訪問(wèn)嵌入在目標(biāo)DSP的存儲(chǔ)器和寄存器中的變量。

上述3種連接對(duì)象的實(shí)現(xiàn)方式略有不同,與CCS IDE的連接對(duì)象和嵌入式對(duì)象在數(shù)據(jù)的傳遞時(shí)可以不在目標(biāo)DSP程序中添加額外的語(yǔ)句,而與RTDX的連接對(duì)象在進(jìn)行數(shù)據(jù)傳遞時(shí)則需要在目標(biāo)DSP程序中添加操縱RTDX通道的語(yǔ)句。

2 RTDX的工作原理

實(shí)現(xiàn)MATLAB和目標(biāo)DSP之間的實(shí)時(shí)數(shù)據(jù)交換,既需要在目標(biāo)DSP程序中添加特定的語(yǔ)句,又需要MATLAB使用特定的語(yǔ)句實(shí)現(xiàn)與目標(biāo)DSP的數(shù)據(jù)傳遞。

2.1 DSP對(duì)RTDX的配置使用

2.1.1 設(shè)置RTDX輸入輸出通道

首先向工程文件中添加頭文件“rtdx.h”、主程序文件“main.c”和其他使用到RTDX的文件。

基于工程是否有與主機(jī)通信的需要,在“main.c”中添加輸入或輸出通道。通道的聲明采用全局變量的形式,不得包括在任何函數(shù)之中。

默認(rèn)情況下,這些通道是不能在DSP中直接使用的,但可以在函數(shù)體內(nèi)使能這些RTDX通道。

如果要在同一工程的其他C文件中使用已經(jīng)聲明過(guò)的RTDX通道,必須再次聲明。

最后,單擊CCS軟件Tools->RTDX->ConfigurationControl,在彈出的窗口中選擇“Enable RTDX”,手動(dòng)使能RTDX接口。

2.1.2 使用RTDX讀寫數(shù)據(jù)

DSP中的RTDX目標(biāo)庫(kù)提供了一些C函數(shù)發(fā)送和接收數(shù)據(jù):

①RTDX_read NB()讀數(shù)據(jù)函數(shù)包括3個(gè)參數(shù):第1個(gè)是輸入通道的指針,第2個(gè)是存儲(chǔ)數(shù)據(jù)的數(shù)組指針,第3個(gè)是數(shù)據(jù)字長(zhǎng)。這是非連續(xù)讀,即如果沒(méi)有數(shù)據(jù)可讀將直接返回。

②RTDX_read()函數(shù)的3個(gè)參數(shù)和RTDX_readNB()一樣,不同的是RTDX_read()是連續(xù)讀,即它將不返回直到讀完數(shù)據(jù)。如果通道忙或未使能,它將返回RTDX_READ_ERROR。

③RTDX_write()寫數(shù)據(jù)函數(shù)也包括3個(gè)參數(shù):第1個(gè)是輸出通道的指針,第2個(gè)是要傳輸?shù)臄?shù)組指針,第3個(gè)是數(shù)據(jù)字長(zhǎng)。執(zhí)行后會(huì)返回一個(gè)整數(shù),非0代表成功。

④RTDX_sizeofInput()包含輸入通道指針的一個(gè)參數(shù),并返回從緩沖器中讀取的字長(zhǎng),一般在RTDX_read-NB()完成一次讀操作后使用它。

⑤RTDX_channelBusy()包含輸入通道指針的一個(gè)參數(shù),并返回一個(gè)整數(shù)指示通道狀態(tài),0表示通道不忙。它通常與RTDX_read NB()結(jié)合使用,用于檢查是否有其他讀數(shù)據(jù)請(qǐng)求。

2.2 MATLAB對(duì)RTDX的配置使用

2.2.1 發(fā)送數(shù)據(jù)[4]

在傳輸數(shù)據(jù)之前,MATLAB需要知道目標(biāo)DSP板的信息,完成MATLAB和CCS以及目標(biāo)DSP的連接,使用下面這條指令實(shí)現(xiàn):

h=actxserver(′RTDX′);

此指令要在DSP加載了可執(zhí)行文件并使能RTDX接口之后才能使用,使用這條指令還創(chuàng)建了與RTDX的連接對(duì)象,h為連接對(duì)象的句柄。

在MATLAB中打開(kāi)并使能RTDX輸入通道之前,必須在DSP目標(biāo)程序中已經(jīng)創(chuàng)建了該輸入通道,調(diào)用下面這條指令實(shí)現(xiàn):

invoke(h,′open′,′ichan′,′W′);

傳輸數(shù)據(jù)用下面這條指令實(shí)現(xiàn):

invoke(h,′Write′,int16(v));

數(shù)據(jù)通過(guò)最近打開(kāi)的輸入通道由MATLAB向DSP寫數(shù)據(jù),int16(v)表示對(duì)數(shù)據(jù)v做強(qiáng)制數(shù)據(jù)類型轉(zhuǎn)換,因?yàn)槭褂玫腡MS320VC5509A是16位定點(diǎn)DSP。

在完成數(shù)據(jù)傳輸或讀數(shù)據(jù)之前,應(yīng)該將此接口關(guān)閉,使用下面這條指令實(shí)現(xiàn):

invoke(h,′close′);

2.2.2 接收數(shù)據(jù)

在MATLAB接收數(shù)據(jù)部分并沒(méi)有采用發(fā)送數(shù)據(jù)使用的那種最新的RTDX實(shí)現(xiàn)方式,因?yàn)樾路椒ǖ膶?shí)現(xiàn)難度較大,這里介紹通用的實(shí)現(xiàn)方法,具體步驟如下[3]:

①cc=ticcs()實(shí)現(xiàn)MATLAB和CCS以及DSP三者的連接,并創(chuàng)建連接對(duì)象,對(duì)象句柄為cc。

②打開(kāi)并使能RTDX通道:

③讀取數(shù)據(jù):

3 應(yīng)用實(shí)例

列舉一個(gè)簡(jiǎn)單的求和運(yùn)算來(lái)說(shuō)明RTDX的具體實(shí)現(xiàn)方法,旨在讓讀者掌握如何使用RTDX實(shí)現(xiàn)MATLAB和DSP之間的雙向數(shù)據(jù)傳遞。整個(gè)程序的實(shí)現(xiàn)思路是:首先MATLAB通過(guò)RTDX輸入通道向DSP中寫入10個(gè)數(shù)據(jù),然后DSP對(duì)這10個(gè)數(shù)據(jù)求和,最后將這個(gè)和值經(jīng)RTDX輸出通道傳遞給MATLAB。整個(gè)過(guò)程的實(shí)現(xiàn)流程如圖2所示。

3.1 DSP程序?qū)崿F(xiàn)

圖2 程序流程圖

3.2 MATLAB程序?qū)崿F(xiàn)

結(jié) 語(yǔ)

RTDX技術(shù)巧妙地實(shí)現(xiàn)了MATLAB和目標(biāo)DSP之間的數(shù)據(jù)交換,使開(kāi)發(fā)者能夠在算法仿真和實(shí)時(shí)處理之間進(jìn)行多次反復(fù),以確定最佳算法和參數(shù),極大地方便了DSP應(yīng)用程序的設(shè)計(jì),縮短了開(kāi)發(fā)周期。

[1]陳泰紅,任勝杰,魏宇.手把手教你學(xué)DSP—基于TMS320C55x[M].北京:北京航空航天大學(xué)出版社,2011.

[2]金衛(wèi).利用RTDX實(shí)現(xiàn)DSP與 Matlab的數(shù)據(jù)交換[C]//四川省電子學(xué)會(huì)電子測(cè)量與儀器專委會(huì)2005年學(xué)術(shù)年會(huì)(第十二屆),2005.

[3]李真芳,蘇濤,黃小宇.DSP程序開(kāi)發(fā)-MATLAB調(diào)試及直接目標(biāo)代碼生成[M].西安:西安電子科技大學(xué)出版社,2003.

[4]Thomas Shen.Using RTDX with a MATLAB GUI[EB/OL].[2015-03].http://cnx.org/content/m14388/latest.

[5]Texas Instruments Inc.TMS320 DSP/BIOS User’s Guide[EB/OL].[2015-03].http://wenku.baidu.com/link?url=DEaRFy VIAH4kZ7 Tolplf FhFhm Ak3gFa NSOH7 XPzf T-nCWY4 CBfCAKSoCu Y_yin RE4zuzhhbob K_929 TMCmF-p Ogp 4J3KT_s22o0dmy Vyki2CS.

猜你喜歡
指針應(yīng)用程序指令
聽(tīng)我指令:大催眠術(shù)
刪除Win10中自帶的應(yīng)用程序
偷指針的人
ARINC661顯控指令快速驗(yàn)證方法
LED照明產(chǎn)品歐盟ErP指令要求解讀
為什么表的指針都按照順時(shí)針?lè)较蜣D(zhuǎn)動(dòng)
基于改進(jìn)Hough變換和BP網(wǎng)絡(luò)的指針儀表識(shí)別
ARM Cortex—MO/MO+單片機(jī)的指針變量替換方法
坐標(biāo)系旋轉(zhuǎn)指令數(shù)控編程應(yīng)用
關(guān)閉應(yīng)用程序更新提醒
電腦迷(2012年15期)2012-04-29 17:09:47
贵州省| 彰化市| 铜陵市| 靖江市| 门源| 隆昌县| 张家川| 兴山县| 车险| 漳浦县| 恩施市| 吉隆县| 三都| 孙吴县| 溧水县| 新干县| 遂平县| 大冶市| 安远县| 崇仁县| 巴彦县| 鲜城| 洛隆县| 舞阳县| 万安县| 彰化市| 红安县| 扎鲁特旗| 荣昌县| 高邑县| 会昌县| 加查县| 五原县| 沁阳市| 布拖县| 囊谦县| 永定县| 枣阳市| 苏州市| 马边| 潞西市|