




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、DSP芯片原理及應(yīng)用課程實(shí)驗(yàn)指導(dǎo)書 路錦正 編著西南科技大學(xué)信息工程學(xué)院實(shí)驗(yàn)中心二七年二月目 錄序 言 .03實(shí)驗(yàn)一 CCS軟件應(yīng)用實(shí)驗(yàn)04實(shí)驗(yàn)二 C語(yǔ)言與匯編混合編程編程14實(shí)驗(yàn)三 DSP定時(shí)器的應(yīng)用22實(shí)驗(yàn)四 A/D轉(zhuǎn)換實(shí)驗(yàn)25實(shí)驗(yàn)五 音頻信號(hào)發(fā)生29實(shí)驗(yàn)六 語(yǔ)音信號(hào)FIR濾波32附錄1 設(shè)備安裝指南36序 言該課程是電子和通信專業(yè)的專業(yè)選修課,是一門技術(shù)性很強(qiáng)的實(shí)驗(yàn)課程。通過(guò)本實(shí)驗(yàn)課程加強(qiáng)對(duì)理論課程的認(rèn)識(shí)和掌握,學(xué)會(huì)使用集成開發(fā)環(huán)境CCS,使用DSP實(shí)驗(yàn)箱調(diào)試和編寫功能程序,理解DSP的工程開發(fā)的過(guò)程和技術(shù)細(xì)節(jié),學(xué)會(huì)分析問(wèn)題和解決問(wèn)題的能力。主要內(nèi)容包括:CCS軟件應(yīng)用實(shí)驗(yàn),C語(yǔ)言和匯編
2、混合編程,A/D轉(zhuǎn)換實(shí)驗(yàn),定時(shí)器的應(yīng)用,音頻信號(hào)的發(fā)生和FIR算法實(shí)驗(yàn)等。通過(guò)該實(shí)驗(yàn)課程,學(xué)生掌握基本的DSP系統(tǒng)開發(fā)和算法優(yōu)化的基本技術(shù)和過(guò)程,為將來(lái)的實(shí)際工程開發(fā)奠定堅(jiān)實(shí)的基礎(chǔ)本實(shí)驗(yàn)的總學(xué)時(shí)數(shù)為16學(xué)時(shí),其中前兩個(gè)實(shí)驗(yàn)每個(gè)2學(xué)時(shí),后四個(gè)實(shí)驗(yàn)每個(gè)3個(gè)學(xué)時(shí)。也可根據(jù)具體的情況和要求做調(diào)整。實(shí)驗(yàn)中心主任張笑微教授在指導(dǎo)書編寫過(guò)程中提出了許多寶貴的意見和建議,在此表示感謝!由于時(shí)間緊任務(wù)重,作者水平有限,錯(cuò)誤在所難免。敬請(qǐng)讀者批評(píng)指正!編著者實(shí)驗(yàn)一 CCS軟件應(yīng)用實(shí)驗(yàn)(2學(xué)時(shí))一、實(shí)驗(yàn)?zāi)康?、掌握CCS軟件的基本功能和作用2、掌握CCS軟件的安裝、配置過(guò)程3、了解DSP開發(fā)系統(tǒng)與PC機(jī)的連接方法和
3、步驟4、熟悉CCS開發(fā)環(huán)境和基本操作,了解TMS320C55xx 軟件開發(fā)過(guò)程。 學(xué)習(xí)創(chuàng)建工程和管理工程的方法。 了解基本的編譯和調(diào)試功能。 學(xué)習(xí)使用觀察窗口。 了解圖形功能的使用。5、軟件仿真的作用、步驟和基本原理二、預(yù)習(xí)要求1、CCS的基本作用和功能有個(gè)預(yù)先的概念認(rèn)識(shí)和了解。CCS,即Code Composer Studio代碼生成室。它是TI公司為開發(fā)DSP產(chǎn)品的集成環(huán)境開發(fā)工具軟件,它是集編輯、編譯、鏈接和調(diào)試及圖形、圖像顯示等等多功能于一體的開發(fā)工具軟件。開發(fā)環(huán)境可分為:軟件仿真和硬件仿真。不同的開發(fā)環(huán)境有不同的功能。軟件仿真即只有CCS軟件,仿真算法執(zhí)行的結(jié)果,仿真、模擬程序在DS
4、P芯片上運(yùn)行。硬件仿真即在評(píng)估板(EVM,Evaluation Module)或初學(xué)者開發(fā)套件(DSK,Developer Starter Kit)硬件平臺(tái)上,把程序灌入(Load Programs)DSP芯片運(yùn)行。2、標(biāo)準(zhǔn)C語(yǔ)言的編程規(guī)范和約定。CCS支持標(biāo)準(zhǔn)C語(yǔ)言的編程,各種標(biāo)準(zhǔn)庫(kù)都可以使用。只要在應(yīng)用的地方把頭文件*.h包含即可。另外DSP的C語(yǔ)言還有自己的特殊約定,例如代碼段的放置,各種關(guān)鍵字的使用等。詳見對(duì)應(yīng)的文檔或者教材。3、ICETEK-VC5509-A-USB-EDUICETEK為北京瑞泰的標(biāo)識(shí),VC5509-A表示DSP芯片為TMS320VC5509APAGE。4、CPU核結(jié)
5、構(gòu)。圖 1 TMS320C55XDSP結(jié)構(gòu)框圖三、實(shí)驗(yàn)原理與參考電路1、調(diào)試工具開發(fā)TMS320C55XX 應(yīng)用系統(tǒng)一般需要以下幾個(gè)調(diào)試工具來(lái)完成:(1)軟件集成開發(fā)環(huán)境CCS(Code Composer Studio 2.21):完成系統(tǒng)的軟件開發(fā),進(jìn)行軟件和硬件仿真調(diào)試。它也是硬件調(diào)試的輔助手段。(2)開發(fā)系統(tǒng)、仿真器(ICETEK 5100-USB 或ICETEK 5100-PP):實(shí)現(xiàn)硬件仿真調(diào)試時(shí)與硬件系統(tǒng)的通信,控制和讀取硬件系統(tǒng)的狀態(tài)和數(shù)據(jù)。(3)評(píng)估模塊即評(píng)估板TEK VC5509-A 或ICETEK VC5509-C 等):提供軟件運(yùn)行和調(diào)試的平臺(tái)和用戶目標(biāo)系統(tǒng)開發(fā)的參照。2
6、、CCS的作用CCS主要完成系統(tǒng)的軟件開發(fā)和調(diào)試。它提供一整套的程序編制、維護(hù)、編譯、調(diào)試環(huán)境,能將匯編語(yǔ)言和C 語(yǔ)言程序編譯連接生成COFF (公共目標(biāo)文件)格式的可執(zhí)行文件,并能將程序下載到目標(biāo)DSP 上運(yùn)行調(diào)試。3、CCS工程文件用戶系統(tǒng)的軟件部分可以由CCS 建立的工程文件進(jìn)行管理,工程一般包含以下幾種文件:(1)源程序文件:C 語(yǔ)言或匯編語(yǔ)言文件(*.C 或*.ASM)(2)頭文件(*.H):各種結(jié)構(gòu)體和變量的定義,宏的定義,函數(shù)的聲明等。(3)命令文件(*.CMD):內(nèi)存的使用情況,各個(gè)段的放置、地址和大小等情況。(4)庫(kù)文件(*.LIB,*.OBJ): TI或用戶自己定義的庫(kù)文件
7、,TI提供許多特定DSP(rts55x.lib、55xdsp.lib)的庫(kù)文件。用戶自己編寫的算法庫(kù)文件。CCS既可以生成可執(zhí)行工程文件,也可以生成庫(kù)文件。(5)內(nèi)存映射文件(*.map):CCS編譯連接后,生成的內(nèi)存映射文件,開發(fā)人員可以根據(jù)此文件掌握內(nèi)存的使用狀況。(6)可執(zhí)行文件(*.out): 可以在DSP上運(yùn)行的可執(zhí)行文件。在調(diào)試的時(shí)候,用CCS的Load program功能把此文件灌入到DSP芯片中。四、實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)主要是軟件仿真,即完全用CCS軟件運(yùn)行用戶程序。軟件仿真是在實(shí)驗(yàn)條件有限的環(huán)境下,如沒有EVM或DSK、目標(biāo)板等硬件設(shè)備。軟件仿真通常用于調(diào)試純軟件的算法和進(jìn)行效率分
8、析等。由CCS軟件在PC 機(jī)內(nèi)存中構(gòu)造一個(gè)虛擬的DSP 環(huán)境,可以調(diào)試、運(yùn)行程序。在某種程度上,軟件仿真是可信的。但是在有些情況下,如使用了外設(shè)DMA或算法非常復(fù)雜等,則軟仿的結(jié)果就不可信了,甚至結(jié)果錯(cuò)誤。因?yàn)橐话丬浖o(wú)法構(gòu)造DSP中的外設(shè)在使用軟件仿真方式工作時(shí),無(wú)需連接板卡和仿真器等硬件。1、配置CCS工作環(huán)境:(1)雙擊桌面上的,進(jìn)入CCS設(shè)置窗口,“Import Configuration”。(2)在出現(xiàn)的窗口中按標(biāo)號(hào)順序進(jìn)行如下設(shè)置:圖2 CCS 初始化配置窗口接著在下面出現(xiàn)的窗口中選擇“否(N)”。此時(shí)CCS 已經(jīng)被設(shè)置成Simulator 方式(軟件仿真TMS320VC5509A
9、 器件的方式),如果一直使用這一方式就不需要重新進(jìn)行以上設(shè)置操作了。(3)啟動(dòng)CCS:?jiǎn)?dòng)軟仿Simulator方式,雙擊桌面上的圖標(biāo):。2、啟動(dòng)CCS后的窗口。為方便介紹各個(gè)CCS各個(gè)功能,這里截取了一個(gè)實(shí)用工程的開發(fā)界面,若按照以上步驟操作的話,界面要簡(jiǎn)單的多。圖3為CCS工作環(huán)境,圖4為一個(gè)典型開發(fā)工程的開發(fā)界面。圖 3 CCS工作環(huán)境圖4 典型實(shí)用開發(fā)工程CCS界面3、創(chuàng)建工程 創(chuàng)建新的工程文件:選擇菜單“Project”的“New”項(xiàng)。圖 5 建立新工程操作彈出下圖,按編號(hào)順序操作建立volume.pjt 工程文件:?jiǎn)螕敉瓿稍O(shè)置單擊此按鈕,選擇工程所在目錄為C:tiICETEK-VC
10、5509-EDULabLab0101-UseCCS輸入新建工程名volume圖6 創(chuàng)建新工程步驟展開主窗口左側(cè)工程管理窗口中“Projects”下新建立的“volume.pjt”,其中各項(xiàng)均為空。 在工程文件中添加程序文件:選擇菜單“Project”的“Add Files to Project”項(xiàng);在“Add Files to Project”對(duì)話框中選擇文件目錄為C:TiICETEK-VC5509-EDULabLab0101-UseCCS,改變文件類型為“C SourceFiles(*.c;*.ccc)”,選擇顯示出來(lái)的文件“volum.c”;重復(fù)上述各步驟,添加volume.cmd 文件到
11、volume 工程中;添加C:tiC5500cgtoolslibrts55.lib 文件到工程中。 編譯鏈接工程:選擇菜單“Project”的“Rebuild All”項(xiàng),或單擊工具條中的按鈕;注意編譯過(guò)程中CCS 主窗口下部的“Build”提示窗中顯示編譯信息,最后將給出錯(cuò)誤和警告的統(tǒng)計(jì)數(shù)。4、編輯修改工程中的文件: 查看工程文件:展開CCS 主窗口左側(cè)工程管理窗中的工程各分支,可以看到“volume.pjt”工程中包含“volume.h”、“rts55.lib”、“volume.c”和“volume.cmd”文件,其中第一個(gè)“volume.h”為程序在編譯時(shí)根據(jù)程序中的“include”語(yǔ)
12、句自動(dòng)加入的。 查看源文件:Ø 雙擊工程管理窗中的“volume.c”文件,可以查看程序內(nèi)容??梢钥吹?,用標(biāo)準(zhǔn)C語(yǔ)言編制的程序,大致分成幾個(gè)功能塊:-頭文件。描述標(biāo)準(zhǔn)庫(kù)程序的調(diào)用規(guī)則和用戶自定義數(shù)據(jù)、函數(shù)頭、數(shù)據(jù)類型等。具體包含哪一個(gè)頭文件,需要根據(jù)程序中使用了哪些函數(shù)或數(shù)據(jù)而定。比如:如果程序中使用了printf 函數(shù),它是個(gè)標(biāo)準(zhǔn)C 提供的輸入/輸出庫(kù)函數(shù),選中“printf”關(guān)鍵字,按Shift+F1會(huì)啟動(dòng)關(guān)于此關(guān)鍵字的幫助,在幫助信息中可發(fā)現(xiàn)其頭函數(shù)為stdio.h,那么在此部分程序中需要增加一條語(yǔ)句:#include “stdio.h”。-工作變量定義。定義全局變量。-子程序
13、調(diào)用規(guī)則。這部分描述用戶編制的子程序的調(diào)用規(guī)則。也可以寫到用戶自己編制的.h 文件中去。-主程序。即main()函數(shù)。它可分為兩部分:變量定義和初始化部分、主循環(huán)部分。主循環(huán)部分完成程序的主要功能。-用戶自定義函數(shù)。這個(gè)程序是一個(gè)音頻信號(hào)采集、處理輸出的程序。程序的主循環(huán)中調(diào)用自定義的函數(shù)read_signals 來(lái)獲得音頻數(shù)據(jù)并存入輸入緩存inp_buffer 數(shù)組;再調(diào)用自定義函數(shù)write_buffer來(lái)處理音頻數(shù)據(jù)并存入輸出緩存;output_signals 將輸出緩沖區(qū)的數(shù)據(jù)送輸出設(shè)備;最后調(diào)用標(biāo)準(zhǔn)C 的顯示信息的函數(shù)printf 顯示進(jìn)度提示信息。整個(gè)系統(tǒng)可以完成將輸入的音頻數(shù)據(jù)擴(kuò)
14、大volume 倍后再輸出的功能。read_signals() 子程序中首先應(yīng)有從外接AD 設(shè)備獲得音頻數(shù)據(jù)的程序設(shè)計(jì),但此例中由于未采用實(shí)際AD 設(shè)備,就未寫相應(yīng)控制程序。此例打算用讀文件的方式獲得數(shù)據(jù),模擬代替實(shí)際的AD 輸入信號(hào)數(shù)據(jù)。write_buffer() 子程序中首先將輸入緩沖區(qū)的數(shù)據(jù)進(jìn)行放大處理,即乘以系數(shù)volume,然后放入輸出緩沖區(qū)。output_signals() 函數(shù)完成將處理后的設(shè)備輸出的功能,由于此例未具體操作硬件輸出設(shè)備,所以函數(shù)中未寫具體操作語(yǔ)句。Ø 雙擊工程管理窗中的“volume.h”文件,打開此文件顯示,可以看到其中有主程序中要用到的一些宏定義
15、如“BUF_SIZE”等。Ø volume.cmd 文件定義程序所放置的位置,此例中描述了ICETEK-VC5509-A 評(píng)估板的存儲(chǔ)器資源,指定了程序和數(shù)據(jù)在內(nèi)存中的位置。比如:它首先將ICETEK-VC5509-A 評(píng)估板的可用存儲(chǔ)器分為五個(gè)部分,每個(gè)區(qū)給定起始地址和長(zhǎng)度(區(qū)域地址空間不允許重疊);然后指定經(jīng)編譯器編譯后產(chǎn)生的各模塊放到哪個(gè)區(qū)。這些區(qū)域需要根據(jù)評(píng)估板硬件的具體情況來(lái)確定。 編輯修改源文件及編譯程序:打開“volume.c”,找到“main()”主函數(shù),將語(yǔ)句“input=inp_buffer;”最后的分號(hào)去掉,這樣程序中就出現(xiàn)了一個(gè)語(yǔ)法錯(cuò)誤;重新編譯連接工程,可以
16、發(fā)現(xiàn)編譯信息窗口出現(xiàn)發(fā)現(xiàn)錯(cuò)誤的提示;雙擊紅色錯(cuò)誤提示,CCS 自動(dòng)轉(zhuǎn)到程序中出錯(cuò)的地方;將語(yǔ)句修改正確(將語(yǔ)句末尾的分號(hào)加上);重新編譯;注意,重新編譯時(shí)修改過(guò)的文件被CCS 自動(dòng)保存。 修改工程文件的設(shè)置:圖 7 Build Options對(duì)話框通過(guò)以上設(shè)置操作,重新編譯后,程序中的用戶堆棧的尺寸被設(shè)置成1024 個(gè)字。5、基本調(diào)試功能: 下載程序: 執(zhí)行File Load Program , 在隨后打開的對(duì)話框中選擇剛剛建立的C:TiICETEK-VC5509-EDULabLab0101-UseCCSDebugvolume.out 文件。 設(shè)置軟件調(diào)試斷點(diǎn):在項(xiàng)目瀏覽窗口中,雙擊volum
17、e.c 激活這個(gè)文件,移動(dòng)光標(biāo)到main()行上,單擊鼠標(biāo)右鍵選擇Toggle Breakpoint 或按F9 設(shè)置斷點(diǎn)(另外,雙擊此行左邊的灰色控制條也可以設(shè)置或刪除斷點(diǎn)標(biāo)記)。 利用斷點(diǎn)調(diào)試程序:選擇Debug Run 或按F5 運(yùn)行程序,程序會(huì)自動(dòng)停在main()函數(shù)上。按F10 執(zhí)行到write_buffer()函數(shù)。再按F8,程序?qū)⑥D(zhuǎn)到write_buffer 函數(shù)中運(yùn)行。此時(shí),為了返回主函數(shù),按shift-F7 完成write_buffer 函數(shù)的執(zhí)行。再次執(zhí)行到write_buffer 一行,按F10 執(zhí)行程序,對(duì)比與F8 執(zhí)行的不同。提示:在執(zhí)行C 語(yǔ)言的程序時(shí),為了快速的運(yùn)行
18、到主函數(shù)調(diào)試自己的代碼,可以使用Debug Go main 命令,上述實(shí)驗(yàn)中的使用的是較為繁瑣的一種方法。6、使用觀察窗口: 執(zhí)行View Watch Window 打開觀察窗口。 在volume.c 中,用鼠標(biāo)雙擊一個(gè)變量(比如num),再單擊鼠標(biāo)右鍵,選擇“Quick Watch”,CCS 將打開Quick Watch 窗口并顯示選中的變量。 在volume.c 中,選中變量num,單擊鼠標(biāo)右鍵,選擇“Add to Watch Window”,CCS 將把變量添加到觀察窗口并顯示選中的變量值。 在觀察窗口中雙擊變量,則可以在這個(gè)窗口中改變變量的值。 把str 變量加到觀察窗口中,點(diǎn)擊變量左
19、邊的”+”,觀察窗口可以展開結(jié)構(gòu)變量,并且顯示結(jié)構(gòu)變量的每個(gè)元素的值。 把str 變量加到觀察窗口中;執(zhí)行程序進(jìn)入write_buffer 函數(shù),此時(shí)num 變量超出了作用范圍,可以利用Call Stack 窗口察看在其他函數(shù)中的變量:選擇菜單View Call Stack 打開堆棧窗口。雙擊堆棧窗口的main()選項(xiàng),此時(shí)可以察看num 變量的值。7、文件輸入/輸出:下面介紹如何從PC 機(jī)上加載數(shù)據(jù)到DSP 上。用于利用已知的數(shù)據(jù)流測(cè)試算法。在完成下面的操作以前,先介紹Code Composer Studio 的Probe(探針)斷點(diǎn),這種斷點(diǎn)允許用戶在指定位置提取/注入數(shù)據(jù)。Probe 斷
20、點(diǎn)可以設(shè)置在程序的任何位置,當(dāng)程序運(yùn)行到Probe斷點(diǎn)時(shí),與Probe 斷點(diǎn)相關(guān)的事件將會(huì)被觸發(fā),當(dāng)事件結(jié)束后,程序會(huì)繼續(xù)執(zhí)行。在這一節(jié)里,Probe 斷點(diǎn)觸發(fā)的事件是:將PC 機(jī)存儲(chǔ)的數(shù)據(jù)文件中的一段數(shù)據(jù)加載到DSP 的緩沖區(qū)中。 在真實(shí)的系統(tǒng)中,read_signals 函數(shù)用于讀取A/D 模塊的數(shù)據(jù)并放到DSP 緩沖區(qū)中。在這里,代替A/D 模塊完成這個(gè)工作的是Probe 斷點(diǎn)。當(dāng)執(zhí)行到函數(shù)read_signals 時(shí),Probe斷點(diǎn)完成這個(gè)工作。在程序行read_signals(input);上單擊鼠標(biāo)右鍵,選擇“Toggle breakpoint”,設(shè)置軟件斷點(diǎn)。再在同一行上單擊鼠標(biāo)
21、右鍵,選擇“Toggle Probe Point”,設(shè)置Probe 斷點(diǎn)。 執(zhí)行以下操作:圖 8 設(shè)置探點(diǎn)此時(shí),已經(jīng)配置好了Probe 斷點(diǎn)和與之關(guān)聯(lián)的事件。進(jìn)一步的結(jié)果在下面實(shí)驗(yàn)中顯示。8、圖形功能簡(jiǎn)介:下面我們使用CCS 的圖形功能檢驗(yàn)上一節(jié)的結(jié)果。首先進(jìn)行下面設(shè)置操作:-在彈出的圖形窗口中單擊鼠標(biāo)右鍵,選擇“Clear Display”。-按F12 運(yùn)行程序。觀察Input 窗口的內(nèi)容。9、選擇菜單Fileworkspacesave workspacs As,輸入文件名SY.wks 。10、退出CCS。五、實(shí)驗(yàn)報(bào)告要求1、實(shí)驗(yàn)報(bào)告中不能和實(shí)驗(yàn)內(nèi)容中的文字雷同,用自己的話描述;2、總結(jié)CC
22、S軟件應(yīng)用的體會(huì);3、畫圖說(shuō)明Input 和Output的圖形為什么看到的不同,和斷點(diǎn)有關(guān)嗎?4、畫出CCS的結(jié)果波形。六、思考題1、報(bào)告中闡述軟件仿真和硬件仿真的區(qū)別、工作過(guò)程等;2、闡述配置和啟動(dòng)CCS的幾個(gè)重要過(guò)程;3、闡述探點(diǎn)的使用過(guò)程;4、看到的波形是連續(xù)的,則程序中的數(shù)據(jù)是模擬信號(hào)嗎?七、注意事項(xiàng)1、自己建立的工程和文件不要放置在C或D盤的目錄下;2、運(yùn)行CCS前,必須先配置SetupCCS;3、在觀察波形的時(shí)候,注意變量地址的引用:&;4、加探點(diǎn)的時(shí)候須小心,確保探點(diǎn)設(shè)置成功。八、實(shí)驗(yàn)元器件、儀器、儀表1、電腦2、參考資料(1)/folders/print/tms320v
23、c5509a.html(2)DSP教學(xué)實(shí)驗(yàn)箱使用說(shuō)明書“”,北京瑞泰創(chuàng)新實(shí)驗(yàn)二 C語(yǔ)言與匯編語(yǔ)言混合編程(2學(xué)時(shí))一、實(shí)驗(yàn)?zāi)康?、學(xué)習(xí)用匯編語(yǔ)言編制程序;了解匯編語(yǔ)言程序與C 語(yǔ)言程序的區(qū)別和在設(shè)置上的不同。2、了解TMS320C55x 匯編語(yǔ)言程序結(jié)果和一些簡(jiǎn)單的匯編語(yǔ)句用法。3、學(xué)習(xí)在CCS 環(huán)境中調(diào)試匯編代碼。4、在了解純C 語(yǔ)言程序工程和匯編語(yǔ)言程序工程結(jié)構(gòu)的基礎(chǔ)上,學(xué)習(xí)在C工程中加入?yún)R編編程的混合編程方法。5、了解混合編程的注意事項(xiàng)。6、理解混合編程的必要性和在什么情況下要采用混合編程。二、預(yù)習(xí)要求1、TMS320C55X匯編編程基礎(chǔ)掌握TMS320C55X的匯編指令體系、尋址方式、
24、CPU的寄存器定義和作用;對(duì)C55X CPU 核結(jié)合有相當(dāng)?shù)睦斫夂驼莆铡?、C語(yǔ)言編程基礎(chǔ)基于DSP的C語(yǔ)言編程的基本要求,工程的創(chuàng)建過(guò)程、注意事項(xiàng);C語(yǔ)言的優(yōu)化技術(shù)、步驟;C語(yǔ)言的編程規(guī)范在DSP環(huán)境的特殊要求等。3、C和匯編混合編程基礎(chǔ)混和編程的基本約定;鑒于匯編和C語(yǔ)言的各自的優(yōu)缺點(diǎn),充分利用其優(yōu)勢(shì),進(jìn)行混合編程。對(duì)核心代碼,或糟糕的模塊用匯編改寫。4、混合編程注意事項(xiàng)三、實(shí)驗(yàn)原理與參考電路1、匯編語(yǔ)言程序:匯編語(yǔ)言程序除了程序中必須使用匯編語(yǔ)句之外,其編譯選項(xiàng)的設(shè)置與C 語(yǔ)言編制的程序也稍有不同。其區(qū)別為:(1)匯編語(yǔ)言程序在執(zhí)行時(shí)直接從用戶指定入口開始,常見的入口標(biāo)號(hào)為“start”
25、,而C語(yǔ)言程序在執(zhí)行時(shí),先要調(diào)用C 標(biāo)準(zhǔn)庫(kù)中的初始化程序(入口標(biāo)號(hào)為“_c_init00”),完成設(shè)置之后,才轉(zhuǎn)入用戶的主程序main()運(yùn)行。(2)由于CCS的代碼鏈接器默認(rèn)支持C 語(yǔ)言,在編制匯編語(yǔ)言程序時(shí),需要設(shè)置鏈接參數(shù),選擇非自動(dòng)初始化,注明匯編程序的入口地址。2、使用C語(yǔ)言開發(fā)應(yīng)用程序的優(yōu)缺點(diǎn):(1)優(yōu)點(diǎn):Ø 易于開發(fā)和維護(hù)。由于用C 語(yǔ)言書寫接近自然語(yǔ)言,其可讀性強(qiáng)、利于理解,在編制、修改、實(shí)現(xiàn)算法方面比用匯編語(yǔ)言開發(fā)容易。Ø 可移植性強(qiáng)。Ø 不容易發(fā)生流水線沖突。編譯器能提供完善的解決流水線沖突的結(jié)果。Ø 有大量現(xiàn)存的算法可利用。
26、6; 適用于人機(jī)界面的開發(fā)。(2)缺點(diǎn):Ø 代碼量大。Ø 程序效率較低。Ø 優(yōu)化代碼存在一定困難。綜上所述,我們一般用C 語(yǔ)言設(shè)計(jì)應(yīng)用程序的總體框架、解決人機(jī)接口和對(duì)速度效率要求不太高的復(fù)雜算法。3、使用匯編語(yǔ)言開發(fā)應(yīng)用程序的優(yōu)缺點(diǎn):(1)優(yōu)點(diǎn):Ø 更能發(fā)揮系統(tǒng)特點(diǎn)。由于匯編語(yǔ)言掌控系統(tǒng)硬件的能力強(qiáng)于C 語(yǔ)言,設(shè)計(jì)出來(lái)的程序更加貼近硬件特性,往往能將硬件效能發(fā)揮到極致。Ø 代碼精練,效率高。用匯編語(yǔ)言設(shè)計(jì)的程序,代碼短、不容易產(chǎn)生冗余。Ø 代碼量小。(2)缺點(diǎn):Ø 可讀性差。不利于復(fù)雜算法的開發(fā)和實(shí)現(xiàn)。Ø 可移植性
27、差。Ø 容易產(chǎn)生流水線沖突。由于排除沖突需要靠人來(lái)輔助完成,這要求編程人員有較為豐富的開發(fā)經(jīng)驗(yàn)和對(duì)硬件工作機(jī)制的深刻理解。4、如何混合編程:(1)混合工程:在工程中可以同時(shí)包含C 語(yǔ)言程序和匯編語(yǔ)言程序,無(wú)需更改編譯選項(xiàng)。一般地,我們使用C 程序?yàn)橹?,加入?yún)R編語(yǔ)言程序模塊。(2)使用模塊技術(shù):在應(yīng)用程序中劃分出比較清晰的模塊,不同模塊可采用不同語(yǔ)言設(shè)計(jì)。強(qiáng)調(diào)效率和速度的模塊采用匯編設(shè)計(jì)。盡量少用匯編語(yǔ)言設(shè)計(jì)程序。(3)如何找出需要用匯編程序設(shè)計(jì)的模塊:Ø 用C 語(yǔ)言完成設(shè)計(jì)后,運(yùn)用CCS 的軟件仿真功能,充分測(cè)試程序,找到程序運(yùn)行中的瓶頸(速度方面的和空間方面的)。
28、6; 再使用分塊仿真技術(shù)盡可能縮小模塊。Ø 找到的模塊單獨(dú)寫成子程序,存入獨(dú)立的文件中。Ø 由于CCS 編譯器能產(chǎn)生C 語(yǔ)言程序到匯編程序的中間文件,觀察需要優(yōu)化的模塊的匯編結(jié)果,進(jìn)行人工優(yōu)化。Ø 最后運(yùn)用人工優(yōu)化后形成的匯編程序模塊,代替原來(lái)需要優(yōu)化的C 語(yǔ)言模塊,進(jìn)行編譯。Ø 程序中可使用內(nèi)嵌匯編。比如:asm(“ MOV T1, *SP(#1)”); 編譯器可直接使用內(nèi)嵌的匯編語(yǔ)句生成最終代碼。但需要語(yǔ)句中雙引號(hào)中為合法的匯編語(yǔ)句,比如要以空格開頭等等。5、何時(shí)使用混合編程技術(shù):(1)當(dāng)程序中需要操作與硬件密切相關(guān)的設(shè)備,而用C 語(yǔ)言較難實(shí)現(xiàn)時(shí)。比
29、如:在中斷程序設(shè)計(jì)時(shí)需要設(shè)置中斷向量表,向量表中空間有時(shí)用C 語(yǔ)言語(yǔ)句有困難,且向量表要在內(nèi)存中精確定位,這時(shí)可將設(shè)置中斷向量表的部分用匯編語(yǔ)言代替。(2)當(dāng)需要繞開C 編譯器的規(guī)定,進(jìn)行特殊操作時(shí)。比如:C 語(yǔ)言規(guī)定,程序不能訪問(wèn)程序代碼區(qū),而系統(tǒng)功能需要進(jìn)行類似訪問(wèn)時(shí)可采用限制較小的匯編語(yǔ)言程序設(shè)計(jì)。(3)當(dāng)需要提高模塊的效率(包括空間上和時(shí)間上兩方面的),而C 語(yǔ)言程序無(wú)法達(dá)到要求時(shí)。6、使用混合編程時(shí)的注意事項(xiàng):(1)在匯編程序中使用其他C 語(yǔ)言模塊中定義的變量或函數(shù)名稱時(shí),需要在引用的名稱前加一下劃線。如:C 中定義的變量為x,在匯編中引用時(shí)要用_x。(2)匯編語(yǔ)言寫的子程序需要符合
30、C 語(yǔ)言的調(diào)用規(guī)則,尤其是在默認(rèn)的輔助寄存器使用上和棧的使用上要求兼容。(3)在匯編語(yǔ)言模塊中,需要編程者自己消除流水線沖突。(4)在使用內(nèi)嵌匯編技術(shù)時(shí),需要考慮以下內(nèi)容:Ø 要非常小心地處理,以免破壞C語(yǔ)言操作環(huán)境。編譯器在遇到內(nèi)嵌匯編語(yǔ)句時(shí),不會(huì)對(duì)其中的匯編語(yǔ)句進(jìn)行分析處理。Ø 避免從內(nèi)嵌匯編語(yǔ)句跳轉(zhuǎn)到C語(yǔ)言模塊中,那將極容易造成寄存器使用上的混亂,從而產(chǎn)生難以預(yù)料的結(jié)果。Ø 不要在內(nèi)嵌匯編語(yǔ)句中改變C語(yǔ)言模塊中變量的值,但可以安全地讀取它們的值。Ø 在匯編程序中不要使用內(nèi)嵌匯編。7、實(shí)驗(yàn)程序解釋:實(shí)驗(yàn)程序提供了一個(gè)使用C與匯編程序混合編程的實(shí)例,是
31、一個(gè)用匯編語(yǔ)言模塊優(yōu)化自己編制的應(yīng)用程序的實(shí)例。首先用戶拿到的是一個(gè)純用C語(yǔ)言開發(fā)的工程,再根據(jù)假設(shè),需要將其中一個(gè)模塊改造成用匯編語(yǔ)言模塊優(yōu)化的模塊。通過(guò)實(shí)驗(yàn)過(guò)程,用戶可充分了解混合編程可以采取的步驟和方法。四、實(shí)驗(yàn)內(nèi)容1、匯編(ASM)編程(1)程序設(shè)計(jì)任務(wù):(2)步驟:A: 設(shè)置軟件仿真環(huán)境,同實(shí)驗(yàn)一。啟動(dòng)CCS軟件。進(jìn)行以下設(shè)置:建立TASM.pjt。B: 設(shè)置工程文件:C:建立匯編源程序文件: 輸入源程序.mmregs.model call=c55_std.model mem=large.global x.bss x,1,0,0.sym x,x, 4, 2, 16.global y.
32、bss y,1,0,0.sym y,y, 4, 2, 16.global z.bss z,1,0,0.sym z,z, 4, 2, 16.sect “.text”.align 4.globalstart.symstart,start,36,2,0Start:MOV #2,*(#Y)MOV #1,*(#X)L1:MOV *(#Y),AR1ADD *(#X),AR1,AR1MOV AR1,*(#Z)B L1注意:在輸入?yún)R編語(yǔ)言源程序時(shí),除了標(biāo)號(hào)以外的程序行必須以一個(gè)空格或Tab制表字符開始。-保存源程序?yàn)門ASM.asm。連接命令文件:如同第步操作,建立空的源程序窗口。-輸入連接命令文件內(nèi)容:ME
33、MORYDARAM: o=0x100, l=0x7f00DARAM2: o=0x8000, l=0x8000SECTIONS.text: > DARAM.bss: > DARAM.stack > DARAM注意:第3、4 行中等號(hào)前邊字母是小寫的“L”。D:調(diào)試匯編程序 選擇菜單Project->Rebuild All。 執(zhí)行File Load Program, 在隨后打開的對(duì)話框中選擇剛剛建立的c:timyprojectsTASM.out文件。完成后,系統(tǒng)自動(dòng)打開TASM.asm源程序窗口,并在其中指示程序的入口地址為標(biāo)號(hào)“start”后的語(yǔ)句。 打開觀察窗口: 選擇
34、菜單View->Disassembly。注意程序運(yùn)行指針停留的位置。 開啟CPU 寄存器觀察窗口:?jiǎn)螕舨藛蜼iew->Registers->CPU Registers。請(qǐng)看PC 指針取值與當(dāng)前程序運(yùn)行地址對(duì)應(yīng)。 將變量x、y、z 分別加入觀察窗口:在源程序中雙擊變量名,再單擊鼠標(biāo)右鍵,選擇“Add to Watch Window”。這時(shí),這3 個(gè)變量還未作初始化。 開啟內(nèi)存觀察窗口:選擇“View”菜單中“Memory”項(xiàng),在“Memroy Window Options”窗口中的“Address”項(xiàng)中輸入&x,單擊“OK”完成設(shè)置;“Memory”窗口中x 的當(dāng)前取值
35、顯示在第1 個(gè)地址之后。而且y 和z 的存儲(chǔ)單元跟在其后。 觀察程序運(yùn)行結(jié)果: 單步運(yùn)行2 次,在觀察窗中觀察到變量x、y 被賦值。變化的值被顯示成紅色。同時(shí)在“Memory”窗口中也能觀察到x 和y 值的改變。 單步運(yùn)行,觀察CPU 寄存器窗口中“XAR1”寄存器存儲(chǔ)值的變化。程序利用XAR1 進(jìn)行運(yùn)算。 再單步運(yùn)行,可觀察到z 的值被計(jì)算出來(lái)。雙擊“Memory”窗口中變量x、y 相應(yīng)的存儲(chǔ)單元,將其修改成其他取值,單步運(yùn)行后觀察結(jié)果。 對(duì)照觀察map 文件和cmd 文件的內(nèi)容: 選擇菜單File->Open,將找到C:TiICETEK-VC5509-EDULabLab0103-AS
36、MDebug 目錄,將文件類型改為“Memory Map Files”,選擇TASM.map 文件、打開。 打開TASM.cmd 文件。 程序的入口地址:map 文件中“ENTRY POINT SYMBOL”中說(shuō)明了程序入口地址(start)。 內(nèi)存使用情況:-map 文件中“MEMORY CONFIGURATION”標(biāo)明了程序占用DARAM 的使用情況,共占用25H 個(gè)存儲(chǔ)單元。比較一下,這比用C 編制的程序占用的要小得多。-觀察map 文件中的“SECTION ALLOCATION MAP”段,可以看出TASM.obj 的入口地址為100H,這也是程序的入口地址。-用戶定義的變量從120H
37、 開始,共占用了3 個(gè)單元(Word)。2、C和ASM混和編程(1)啟動(dòng)CCS,配置為軟仿工作環(huán)境。(2)打開工程、瀏覽程序內(nèi)容、編譯生成和下載可執(zhí)行代碼: 打開工程:選擇菜單Project->Open,選擇打開工程文件C: TiICETEK-VC5509-EDULabLab0104-CASMCASM.pjt 展開工程管理窗口中CASM工程,雙擊Source下的CProgram.c 項(xiàng),打開CProgram.c 源程序窗口??梢钥吹?,程序完成了一個(gè)簡(jiǎn)單的運(yùn)算,它先開設(shè)了三個(gè)全局變量x、y、z,然后分別給x 和y 賦初值,再在循環(huán)中計(jì)算x+y,結(jié)果賦值給z。 編譯并下載程序:此設(shè)置的功能是
38、每次編譯完成后將程序自動(dòng)下載到DSP 上。選擇菜單Project->Build All,編譯、連接和下載程序。運(yùn)行程序,觀察結(jié)果:在程序中有“在此加軟件斷點(diǎn)”注釋的語(yǔ)句上加軟件斷點(diǎn);將變量z 加入變量觀察窗口;運(yùn)行程序到斷點(diǎn),觀察變量z 的結(jié)果值。(3)修改程序: 修改算法部分為單獨(dú)的子程序:我們假設(shè)在循環(huán)中進(jìn)行的運(yùn)算是需要用匯編語(yǔ)言程序模塊優(yōu)化的部分。首先將“z=x+y;”語(yǔ)句修改成“z=add(x,y);”,在程序頭上,變量定義之前加上一行“int add(int a,int b);”,在程序末尾,添加如下子程序。int add(int a,int b)return(a+b);如此,
39、將算法搬移到一個(gè)C 語(yǔ)言的子程序模塊中實(shí)現(xiàn)。修改完成后,可以編譯、下載、運(yùn)行到斷點(diǎn),觀察運(yùn)行結(jié)果,判斷子程序是否能完全與原程序一樣完成算法。 將子程序移入add.c:打開一個(gè)新的空的源文件窗口,將main 函數(shù)后的子程序復(fù)制到窗口中;注釋main 函數(shù)后面的子程序(在子程序前一行加“/*”,在子程序結(jié)尾行后加“*/”);將新窗口中的內(nèi)容保存為文件add.c。 將add.c 加入工程,編譯、下載、運(yùn)行,檢查結(jié)果,保證運(yùn)算無(wú)誤。 選擇菜單Project->Build Options,進(jìn)行如下設(shè)置: 重新編譯工程;打開C:TiICETEK-VC5509-EDULabLab0104-CASMad
40、d.asm;在其中的“.line 2”行、“.line 3”行、“.line 4”行頭上分別加分號(hào),即注釋這3 個(gè)語(yǔ)句。 將工程中的add.c 換成add.asm:在工程管理窗口中用鼠標(biāo)右鍵單擊add.c,選擇“Remove from Project”;用鼠標(biāo)右鍵單擊CASM.pjt,選擇“Add Files to Project”,選擇C: TiICETEK-VC5509-EDULabLab0104-CASMadd.asm。 重新編譯、下載、運(yùn)行程序并觀察結(jié)果。由于add.asm 是CCS 編譯器從add.c 編譯得來(lái)的,下面要做的就是手工調(diào)整add.asm 中的匯編代碼,從而實(shí)現(xiàn)優(yōu)化處理。
41、(3)退出CCS。五、實(shí)驗(yàn)報(bào)告要求1、報(bào)告的內(nèi)容不能和上述內(nèi)容雷同,只能用自己的話來(lái)闡述;2、報(bào)告中要有調(diào)試的數(shù)據(jù)結(jié)果,并分析;3、總結(jié)中寫出深入的體會(huì)。六、思考題1、匯編的優(yōu)缺點(diǎn);2、C語(yǔ)言的優(yōu)化過(guò)程;3、混合編程的注意事項(xiàng);4、DSP算法優(yōu)化的一般過(guò)程。七、注意事項(xiàng)1、注意CMD文件的使用。2、菜單Projects/Build Options下豐富、功能強(qiáng)大的復(fù)雜設(shè)置。3、混合編程的接口考慮。八、實(shí)驗(yàn)元器件、儀器、儀表1、電腦;2、參考資料:TMS320C實(shí)驗(yàn)三 DSP定時(shí)器的應(yīng)用(3學(xué)時(shí))一、實(shí)驗(yàn)?zāi)康?、通過(guò)實(shí)驗(yàn)掌握和熟悉VC5509A 的定時(shí)器的工作原理;2、掌握VC5509A 定時(shí)器
42、的控制方法、寄存器的配置;3、掌握VC5509A 的中斷結(jié)構(gòu)和對(duì)中斷的處理流程;4、學(xué)會(huì)C 語(yǔ)言中斷程序設(shè)計(jì),以及運(yùn)用中斷程序控制程序流程;5、掌握實(shí)驗(yàn)箱的工作配置過(guò)程、仿真器的連接和配置等。二、預(yù)習(xí)要求1、TMS320VC5509DSP的定時(shí)器的基本原理和各個(gè)寄存器的意義以及相關(guān)操作等。2、硬件仿真的過(guò)程、設(shè)備配置和初始化等。3、實(shí)驗(yàn)箱的功能、實(shí)驗(yàn)用模塊的工作原理等。三、實(shí)驗(yàn)原理或參考電路1、通用定時(shí)器介紹及其控制方法(詳見spru595b.pdf):TMS320VC5509A 內(nèi)部有兩個(gè)20 位通用定時(shí)器(GP),每個(gè)通用定時(shí)器包括:(1)一個(gè)16 位的減計(jì)數(shù)的計(jì)數(shù)器TIM;(2)一個(gè)16
43、 位的定時(shí)器周期寄存器PRD;(3)一個(gè)16 位的定時(shí)器控制寄存器TCR;(4)一個(gè)16 位的定時(shí)器預(yù)定標(biāo)寄存器PSCR;PSCR 寄存器說(shuō)明:PSC: 4 位的預(yù)定標(biāo)值,與TIM 共同組成20 位的定時(shí)計(jì)數(shù)器.TDDR: 預(yù)定標(biāo)周期寄存器(在需要時(shí)重裝入PSC 的值)TCR 寄存器說(shuō)明(詳見spru595b.pdf)2、中斷響應(yīng)過(guò)程(詳見spru595b.pdf):外設(shè)事件要引起CPU 中斷,必須保證:IER 中相應(yīng)使能位被使能,IFR 相應(yīng)中斷也被使能。在軟件中,當(dāng)設(shè)置好相應(yīng)中斷標(biāo)志后,開中斷,進(jìn)入等待中斷發(fā)生的狀態(tài);外設(shè)(如定時(shí)器)中斷發(fā)生時(shí),首先跳轉(zhuǎn)到相應(yīng)中斷高級(jí)的服務(wù)程序中(如:定時(shí)
44、器1 會(huì)引起TINT中斷),程序在進(jìn)行服務(wù)操作之后,應(yīng)將本外設(shè)的中斷標(biāo)志位清除以便能繼續(xù)中斷,然后返回。3、中斷程序設(shè)計(jì):(1)程序中應(yīng)包含中斷向量表,VC5509A 默認(rèn)向量表從程序區(qū)0 地址開始存放,根據(jù)IPVD和IPVH 的值確定向量表的實(shí)際地址。(2)注意觀察程序中INTR_init()函數(shù)的定義部分,其中IPVD 和IPVH 的值都為0x0d0;同時(shí)觀察配置文件ICETEK-VC5509-A.cmd 中的VECT 段描述中o=0x0d000。(3)向量表中每項(xiàng)為8 個(gè)字,存放一個(gè)跳轉(zhuǎn)指令,跳轉(zhuǎn)指令中的地址為相應(yīng)服務(wù)程序入口地址。第一個(gè)向量表的首項(xiàng)為復(fù)位向量,即CPU 復(fù)位操作完成后自
45、動(dòng)進(jìn)入執(zhí)行的程序入口。(4)服務(wù)程序在服務(wù)操作完成后,清除相應(yīng)中斷標(biāo)志,返回,完成一次中斷服務(wù)。4、實(shí)驗(yàn)程序流程圖:(1)注意觀察程序中INTR_init()函數(shù)的定義部分,其中IPVD 和IPVH 的值都為0x0d0;同時(shí)觀察配置文件ICETEK-VC5509-A.cmd 中的VECT 段描述中o=0x0d000。(2)向量表中每項(xiàng)為8 個(gè)字,存放一個(gè)跳轉(zhuǎn)指令,跳轉(zhuǎn)指令中的地址為相應(yīng)服務(wù)程序入口地址。第一個(gè)向量表的首項(xiàng)為復(fù)位向量,即CPU 復(fù)位操作完成后自動(dòng)進(jìn)入執(zhí)行的程序入口。(3)服務(wù)程序在服務(wù)操作完成后,清除相應(yīng)中斷標(biāo)志,返回,完成一次中斷服務(wù)。5、實(shí)驗(yàn)程序分析:本實(shí)驗(yàn)設(shè)計(jì)的程序是:控制
46、指示燈閃爍的延時(shí)控制,若用循環(huán)計(jì)算方法得到的,延時(shí)不精確也不均勻,而采用中斷方式可以實(shí)現(xiàn)指示燈的定時(shí)閃爍,時(shí)間更加準(zhǔn)確。實(shí)驗(yàn)程序的工程中包含了兩種源代碼,主程序采用C語(yǔ)言編制利于控制,中斷向量表在vector.asm 匯編語(yǔ)言文件中,利于直觀地控制存儲(chǔ)區(qū)分配。在工程中只需將它們添加進(jìn)來(lái)即可,編譯系統(tǒng)會(huì)自動(dòng)識(shí)別分別處理完成整合工作。實(shí)驗(yàn)程序的C 語(yǔ)言主程序中包含了內(nèi)嵌匯編語(yǔ)句,提供一種在需要更直接控制DSP狀態(tài)時(shí)的方法,同樣的方法也能提高C 語(yǔ)言部分程序的計(jì)算效率。四、實(shí)驗(yàn)內(nèi)容1、連接設(shè)備詳見附錄1的“設(shè)備安裝指南”。2、配置CCS為硬仿工作環(huán)境詳見附錄1的“設(shè)備安裝指南”。3、啟動(dòng)CCS軟件詳
47、見附錄1的“設(shè)備安裝指南”。選擇菜單DebugReset CPU。4、打開工程文件:打開菜單“Project”的“Open”項(xiàng);選擇C:TiICETEK-VC5509-EDULabLab0303-Timer 目錄中的“Timer.pjt”。在項(xiàng)目瀏覽器中,雙擊main.c,激活main.c 文件,瀏覽該文件的內(nèi)容,理解各語(yǔ)句作用。打開ICETEK-VC5509-A.cmd,對(duì)照vector.asm 源程序?qū)W習(xí)中斷向量表的寫法。5、理解程序意義,掌握定時(shí)器的配置方式和過(guò)程;掌握中斷的使用過(guò)程:配置、服務(wù)程序的撰寫等;并能夠修改程序:靈活地控制等的閃爍方式:(1)修改程序,控制等閃爍頻率。即修改定
48、時(shí)器的周期,或其他方法;(2)控制第一個(gè)點(diǎn)亮,第二個(gè)點(diǎn)亮,第三個(gè)點(diǎn)亮,第四個(gè)點(diǎn)亮;(3)控制兩個(gè)、三個(gè)點(diǎn)亮;(4)控制交替點(diǎn)亮;(5)理解PLL的控制過(guò)程,確認(rèn)CPU當(dāng)前的工作頻率;(6)理解命令連接文件*.CMD,清楚存儲(chǔ)器的使用情況;(7)SDRAM的初始化過(guò)程;EMIF的配置等;(8)一個(gè)簡(jiǎn)單的DSP系統(tǒng)軟件的必須具有的模塊:時(shí)鐘電路、復(fù)位電路、DPLL、中斷、定時(shí)器、存儲(chǔ)器等。各自的配置使用等。6、編譯、下載程序。7、運(yùn)行程序,觀察結(jié)果。為安全穩(wěn)定起見,強(qiáng)烈建議在每次修改程序后,需要復(fù)位DSP的CPU,然后再下載程序運(yùn)行。8、改變TIMER_init()函數(shù)里*prd0 = 0x0ff
49、ff 為“=0x0fff ”;重復(fù)步驟5,6 觀察實(shí)驗(yàn)現(xiàn)象,并分析原因。9、退出CCS。五、實(shí)驗(yàn)報(bào)告要求1、給出定時(shí)器的配置過(guò)程;2、詳細(xì)記錄和分析實(shí)驗(yàn)過(guò)程;3、實(shí)驗(yàn)結(jié)果要有數(shù)據(jù),并分析原因;4、總結(jié)實(shí)驗(yàn)體會(huì)。六、思考題1、定時(shí)器產(chǎn)生中斷的過(guò)程;2、VC5509A的中斷向量表;3、CPU工作主頻怎樣設(shè)置;4、EMIF的初始化;七、注意事項(xiàng)1、清楚實(shí)驗(yàn)箱的功能模塊;2、清楚程序控制第一個(gè)LED的控制方式,以便快捷的修改其他控制閃爍方式;3、當(dāng)程序出錯(cuò)或仿真器失去連接時(shí),關(guān)閉電源復(fù)位后,再啟動(dòng)CCS;4、運(yùn)行新的程序前,強(qiáng)烈建議復(fù)位CPU后,再下載新的程序。八、實(shí)驗(yàn)元器件、儀表電腦、DSP實(shí)驗(yàn)箱、
50、連接線等;實(shí)驗(yàn)四 A/D轉(zhuǎn)換實(shí)驗(yàn)(3學(xué)時(shí))一、實(shí)驗(yàn)?zāi)康?通過(guò)實(shí)驗(yàn)熟悉和掌握VC5509A的定時(shí)器的工作過(guò)程2、掌握VC5509A定時(shí)器的控制方法、寄存器的配置;3、掌握VC5509A片內(nèi)ADC的控制方法。4、會(huì)計(jì)算ADC的各個(gè)參數(shù)并在程序中體現(xiàn)其配置。二、預(yù)習(xí)要求1、TMS320VC5509DSP片上ADC的基本原理和各個(gè)寄存器的意義以及相關(guān)操作等。2、硬件仿真的過(guò)程、設(shè)備配置和初始化等。3、片上ADC的應(yīng)用場(chǎng)合,特點(diǎn)。4、實(shí)驗(yàn)箱的功能模塊分配,及其工作機(jī)制和原理、過(guò)程。三、實(shí)驗(yàn)原理或參考電路1、TMS320VC5509A 模數(shù)轉(zhuǎn)換模塊特性:(1)帶內(nèi)置采樣和保持的10 位模數(shù)轉(zhuǎn)換模塊ADC,
51、最小轉(zhuǎn)換時(shí)間為500ns,最大采樣率為21.5kHz。(2)2 個(gè)模擬輸入通道(AIN0AIN1)(3)采樣和保持獲取時(shí)間窗口有單獨(dú)的預(yù)定標(biāo)控制。2、模數(shù)轉(zhuǎn)換工作過(guò)程:(1)模數(shù)轉(zhuǎn)換模塊接到啟動(dòng)轉(zhuǎn)換信號(hào)后,開始轉(zhuǎn)換第一個(gè)通道的數(shù)據(jù)。(2)經(jīng)過(guò)一個(gè)采樣時(shí)間的延遲后,將采樣結(jié)果放入轉(zhuǎn)換結(jié)果寄存器保存。(3)轉(zhuǎn)換結(jié)束,設(shè)置標(biāo)志。(4)等待下一個(gè)啟動(dòng)信號(hào)。3、模數(shù)轉(zhuǎn)換的程序控制:模數(shù)轉(zhuǎn)換相對(duì)于計(jì)算機(jī)來(lái)說(shuō)是一個(gè)較為緩慢的過(guò)程。一般采用中斷方式啟動(dòng)轉(zhuǎn)換或保存結(jié)果,這樣在CPU 忙于其他工作時(shí)可以少占用處理時(shí)間。設(shè)計(jì)轉(zhuǎn)換程序應(yīng)首先考慮處理過(guò)程如何與模數(shù)轉(zhuǎn)換的時(shí)間相匹配,根據(jù)實(shí)際需要選擇適當(dāng)?shù)挠|發(fā)轉(zhuǎn)換的手段,
52、也要能及時(shí)地保存結(jié)果。由于TMS320VC5509A DSP 芯片內(nèi)的A/D 轉(zhuǎn)換精度是10 位的,轉(zhuǎn)換結(jié)果的低10 位為所需數(shù)值,所以在保留時(shí)應(yīng)注意將結(jié)果的高6 位去除,取出低10 位有效數(shù)字。關(guān)于TMS320VC5509A DSP 芯片內(nèi)的A/D 轉(zhuǎn)換器的詳細(xì)結(jié)構(gòu)和控制方法,請(qǐng)參見文檔spru568.pdf。4、實(shí)驗(yàn)程序流程圖:四、實(shí)驗(yàn)內(nèi)容1、實(shí)驗(yàn)準(zhǔn)備: 連接實(shí)驗(yàn)設(shè)備,詳細(xì)附錄1的 “設(shè)備安裝指南 ”。 準(zhǔn)備信號(hào)源進(jìn)行AD 輸入。取出2 根實(shí)驗(yàn)箱附帶的信號(hào)線(如右圖,兩端均為單聲道語(yǔ)音插頭)。用1 根信號(hào)線連接實(shí)驗(yàn)箱底板上信號(hào)源I 模塊(下圖中單實(shí)線框中部分)的“波形輸出”插座(下圖中的3
53、 或4)和“A/D 輸入”模塊(下圖中虛線框中部分)的“ADCIN2”插座(下圖中的A),注意插頭要插牢、到底。這樣,信號(hào)源I 的輸出波形即可送到ICETEK-VC5509-A板的AD 輸入通道0。 用1 根信號(hào)線連接實(shí)驗(yàn)箱底板上信號(hào)源II 模塊(下圖中雙實(shí)線框中部分)的“波形輸出”插座(下圖中的c 或d)和“A/D 輸入”模塊的“ADCIN3”插座(下圖中的B),注意插頭要插牢、到底。這樣,信號(hào)源的輸出波形即可送到ICETEK-VC5509-A 板的AD 輸入通道1。 設(shè)置信號(hào)源I:-調(diào)整撥動(dòng)開關(guān)“頻率選擇”(下圖中的5)撥到“100Hz1KHz”檔(下圖中的10)。-將“頻率微調(diào)”(下圖中
54、的6)順時(shí)針調(diào)到頭(最大)。-調(diào)整撥動(dòng)開關(guān)“波形選擇”(下圖中的7)撥到“正弦波”檔(下圖中的11)。-將“幅值微調(diào)”(下圖中的8)順時(shí)針調(diào)到頭(最大)。 設(shè)置信號(hào)源:-調(diào)整撥動(dòng)開關(guān)“頻率選擇”(下圖中的e)撥到“10Hz100Hz”檔(下圖中的i)。-將“頻率微調(diào)”(下圖中的f)順時(shí)針調(diào)到頭(最大)。-調(diào)整撥動(dòng)開關(guān)“波形選擇”(下圖中的g)撥到“正弦波”檔(下圖中的k)。-將“幅值微調(diào)”(下圖中的h)順時(shí)針調(diào)到頭(最大)。 將兩個(gè)信號(hào)源的電源開關(guān)(上圖中的2 和b)撥到“開”的位置。2、設(shè)置Code Composer Studio 2.21 在硬件仿真(Emulator)方式下運(yùn)行:詳見附錄的“設(shè)備安裝指南”。3、啟動(dòng)Code Composer Studio 2.21: 詳見附錄的“設(shè)備安裝指南”。選擇菜單DebugReset CPU。4、打開工程文件:(1)工程目錄:C:TiICETEK-VC5509-EDULabLab0305-ADAD.pjt。(2)在項(xiàng)目瀏覽器中,雙擊main.c,打開main.c 文件,瀏覽該文件的內(nèi)容,理解各語(yǔ)句作用。5、編譯、下載程序。6、打開觀察窗口:-選擇菜單View->Graph->Time/Fre
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)級(jí)IP管理的未來(lái)趨勢(shì)-基于區(qū)塊技術(shù)的深度解析
- 醫(yī)療質(zhì)量管理與風(fēng)險(xiǎn)控制體系
- 醫(yī)療安全與團(tuán)隊(duì)建設(shè)的關(guān)系探討
- 乳頭縮小的臨床護(hù)理
- 學(xué)校2025年萬(wàn)圣節(jié)活動(dòng)總結(jié)模版
- 幼兒園骨干教師培訓(xùn)學(xué)習(xí)心得體會(huì)模版
- 以鏈為媒解鎖智能供金新時(shí)代的應(yīng)用實(shí)例分析
- 2025年演講模版-java實(shí)訓(xùn)報(bào)告心得體會(huì)模版
- 全程融資合同范例
- 七年級(jí)家委會(huì)發(fā)言稿模版
- 2024年煙臺(tái)海陽(yáng)市衛(wèi)生健康局所屬事業(yè)單位招聘工作人員真題
- 2025四川巴中市國(guó)有資本運(yùn)營(yíng)集團(tuán)有限公司招聘17人筆試參考題庫(kù)附帶答案詳解
- 餐飲行業(yè)合伙經(jīng)營(yíng)協(xié)議書
- 七年級(jí)期中考試后家長(zhǎng)會(huì)課件39820
- 保潔服務(wù)詳細(xì)方案(完整版)
- 孔明燈(Lantern)3.4使用指南課件
- 蘇教版五年級(jí)科學(xué)公開課斜坡的啟示優(yōu)秀教學(xué)設(shè)計(jì)和反思
- 最新氧氣安全標(biāo)簽
- 房地產(chǎn)估價(jià)報(bào)告評(píng)審標(biāo)準(zhǔn)和打分表(本次評(píng)審使用)
- 溫控制的PID算法的C語(yǔ)言程序
- 現(xiàn)代供電技術(shù)課程設(shè)計(jì)-35-6KV煤礦變電所
評(píng)論
0/150
提交評(píng)論