【正文】
specific code, enable interrupts:=0。i{Reg06=0x00。} } void Gpio_select(void){Uint16 var1。EALLOW。// GPIO PORTs as output// GPIO DIR select GPIOs as output=var2。=var3。void delay_loop()。// Enable PWM pins = 0x00FF。// Step all the Device Peripherals: // This function is found in // InitPeripherals()。}} } void delay_loop(){shorti,j。// Timer1 pare = 0x0000。// Polarity of GP Timer 2 Compare = Active high = 2。// Step PIE vector table:// The PIE vector table is initialized with pointers to shell Interrupt// Service Routines(ISR).The shell routines are found in .// Insert user specific ISR code in the appropriate shell ISR routine in// the file.// Disable and clear all CPU interrupts:DINT。ErrorCount = 0。// Move to the next character and repeat the testSendChar++。scia_loopback_init()。 =1。// Relinquish SCI from Reset{=0xE040。但是一般無法構(gòu)造DSP中的外設(shè),所以軟件仿真通常用于調(diào)試純軟件算法和進(jìn)行效率分析等。如果不重新加載,那么修改執(zhí)行程序后,其結(jié)果將不會改變。(1)實(shí)現(xiàn)基本功能且不出現(xiàn)任何錯(cuò)誤(2)基于原理實(shí)現(xiàn)多功能的擴(kuò)展四.組內(nèi)分工劉杰程序代碼的編寫與調(diào)試劉燦建立工程以及目標(biāo)系統(tǒng)的配置五.實(shí)驗(yàn)內(nèi)容及流程這次實(shí)驗(yàn)內(nèi)容是顯示hello world和控制LED燈的閃爍。在工程中運(yùn)行“NewTarget Configuration File”新建配置文件。//初始化LED和DIPDSK6416。(1)添加源代碼(2)配置CSL庫將C6000的CSL庫,存在本地PC機(jī)硬盤上,我們hello world工程的代碼路徑為C:ticsl。三.實(shí)驗(yàn)任務(wù)及要求(1)在控制臺中顯示Hello World運(yùn)行程序后,在控制臺顯示Hello World(2)控制LED燈閃爍FTP給出一個(gè)LED的程序模板,可以控制LED 0的閃爍。,顯示圖形出現(xiàn)問題,不能顯示,后來在Graph Title 把Input的大寫改為input,在對volume進(jìn)行編譯執(zhí)行后,就可以看到顯示的正弦波圖形了。設(shè)置好的配置中只能有一項(xiàng)。}// Initalize the SCI FIFO void scia_fifo_init() =1。// 1 stop bit, No loopback// No parity,8 char bits,// async mode, idleline protocol =0x0003。// Disable loop back =0x0023。while(!=1){ } // wait for XRDY =1 for empty state// Check received characterReceivedChar = 。// Step all the Device Peripherals to a known state:// This function is found in // InitPeripherals()。// Disable deadband = 0xA600。// Setup T1PWM and T2PWM// Drive T1/T2 PWM by pare logic = 1。} } void init_eva(){ // EVA Configure T1PWM, T2PWM, PWM1PWM6 // Initalize the timers// Initalize EVA Timer1 = 0xFFFF。 = i。IFR = 0x0000。s default state.// InitGpio()。附:實(shí)驗(yàn)程序:include “include/”// DSP281x Headerfile Include File include “include/”// DSP281x Examples Include File // Prototype statements for functions found within this init_eva(void)。=var3。=var1。var2= 0xFFFF。j 10。}}for(j=0。// Step all the Device Peripherals: // This function is found in // InitPeripherals()。// Step GPIO:// This example function is found in the file and // illustrates how to set the GPIO to it39。本次實(shí)驗(yàn)的主要目的是通過2812對步進(jìn)機(jī)的的控制,開始對于程序的設(shè)計(jì)沒有頭緒,通過查閱步進(jìn)機(jī)控制的原理,結(jié)合有關(guān)資料才正式設(shè)計(jì)出程序,基本掌握了2812對步進(jìn)機(jī)的控制,也更加熟悉了對DSP程序的設(shè)計(jì),受益匪淺。步進(jìn)電機(jī)的控制問題可以總結(jié)為兩點(diǎn): ;。=var2。=var1。Uint16 var3。} }void delay_loop(){shorti,j。Reg00=0x00。IFR = 0x0000。// Specific clock setting for this example:EALLOW。數(shù)據(jù)由2812模塊的低八位輸入,鎖存器的控制信號由2812模塊輸出,但經(jīng)由CPLD模塊譯碼后再控制鎖存器。=var3。=var1。var1= 0x0000。for(i = 0。}for(i=0。i{Reg01=0x00。Reg01=0x00。// Step all interrupts and initialize PIE vector table: // Disable CPU interruptsDINT。// Global variable for this example short codetab[17]= {0x4020,0x6cc0,0x5800,0x4840,0x6440,0xC040,0xC000,0x4cc0, 0x4000,0x4040,0x4400,0xE000,0xD080,0xE800,0xD000,0xD400,0xffff}。數(shù)碼管為共陰極型的。/* 0000 0000 0000 */Y0=?;菊莆樟薈CS實(shí)驗(yàn)環(huán)境的使用,并能夠使用C語言進(jìn)行簡單的DSP程序設(shè)計(jì)。同樣打開圖形顯示窗口,并將“Start Address”改為buf;“Acquisition Buffer Size”改為“Display Data Size”改為128,“DSP DataType”為“32bit floating point”11)選擇 Debug→Animate,運(yùn)行程序,觀察輸出波形。選擇Linker 窗口,在“Output Filename”欄中寫入輸出OUT 文件的名字,你還可以設(shè)置生成的MAP 文件名。圖41 給出了C5402 的IMR 寄存器的各個(gè)比特位的定義。 實(shí)驗(yàn)要求本實(shí)驗(yàn)利用定時(shí)器產(chǎn)生一個(gè) 2kHz 的正弦信號。,請檢查源程序是否有誤,必要時(shí)可以在源程序中多插入斷點(diǎn)語句。這是用浮點(diǎn)數(shù)格式表示的數(shù)1(=1312)。,此時(shí)就可以看見程序初始化后的情況: 以浮點(diǎn)數(shù)的格式放在內(nèi)存區(qū)0x08a0x08b 中,其值為4140h 和0000h。步驟如下: setup CCS C5000,在其中設(shè)置目前需要的CCS 的工作狀態(tài)為C54xxsimulator,保存這一設(shè)置并退出。2)學(xué)習(xí)并掌握應(yīng)用 TMS320C54X 來進(jìn)行浮點(diǎn)數(shù)的各種算術(shù)運(yùn)算的算法實(shí)現(xiàn)。6)實(shí)現(xiàn) 16 位定點(diǎn)整數(shù)除法在 C54X 中沒有提供專門的除法指令,一般有兩種方法來完成除法。3)實(shí)現(xiàn) 16 位定點(diǎn)減法C54X 中提供了多條用于減法的指令,如SUB,SUBB,SUBC 和SUBS。實(shí)驗(yàn)二 基本算數(shù)運(yùn)算 實(shí)驗(yàn)?zāi)康暮鸵蠹?、減、乘、除是數(shù)字信號處理中最基本的算術(shù)運(yùn)算。用右鍵單擊圖形顯示窗口,并選擇“Proporties”項(xiàng)以便修改顯示屬性。本實(shí)驗(yàn)的初始化程序讀取中斷向量表的啟始地址,然后設(shè)置的高DSP 能正確響應(yīng)中斷,代碼如下:ld 0,dp ;設(shè)置DP 頁指針 ssbx intm ;關(guān)閉所有中斷l(xiāng)d vector, a ;讀出中斷向(地址vector 在中斷向量表程序中定義)and 0FF80h, a ;保留高9 位(IPTR)andm 007Fh, pmst ;保留PMST 的低7 位 or pmst, a ;stlm a, pmst ;設(shè)置PMST(其中包括IPTR) 實(shí)驗(yàn)內(nèi)容C54X 匯編語言或C 語言實(shí)現(xiàn)數(shù)字振蕩器,并通過CCS 提供的圖形顯示窗口觀察出信號波形以及頻譜。設(shè)初始條件為0,求出上式的反Z 變換得:y[k]=Ay[k1]+By[k2]+Cx[k1] 2 C54X 的定時(shí)器操作C54X 的片內(nèi)定時(shí)器利用CLKOUT 時(shí)鐘計(jì)數(shù),用戶使用三個(gè)寄存器(TIM,PRD,TCR)來控制定時(shí)器,參見表41。通常的方法是將某個(gè)頻率的正弦/余弦值預(yù)先計(jì)算出來后制成一個(gè)表,DSP 工作時(shí)僅作查表運(yùn)算即可。乘法運(yùn)算的程序到此結(jié)束?!斑\(yùn)行程序”按鈕,程序停下來時(shí)就可以觀察到在存儲器窗口中表示結(jié)果的變量rlthm、rltlm、rltsign 和rltexp 的值在內(nèi)存區(qū)0x0800x083 中,其值分別為0040h、0000h、0180h 和0083h。:在這條指令處雙擊將其點(diǎn)為紅色即可。例如,如果一個(gè) 32bit 的數(shù)把小數(shù)點(diǎn)放在最高有效位(也就是符號位)之后,那么就只有分?jǐn)?shù)(絕對值小于1)才能被顯示。實(shí)現(xiàn) 16 位定點(diǎn)小數(shù)除法在 C54X 中實(shí)現(xiàn)16 位的小數(shù)除法與前面的整數(shù)除法基本一致,也是使用循環(huán)的SUBC 指令來完成。實(shí)現(xiàn) 16 位定點(diǎn)小數(shù)乘法在 C54X 中,小數(shù)的乘法與整數(shù)乘法基本一致,只是由于兩個(gè)有符號的小數(shù)相乘,其結(jié)果的小數(shù)點(diǎn)的位置在次高的后面,所以必須左移一位,才能得到正確的結(jié)果。一個(gè)16 位的二進(jìn)制數(shù)既可以表示一個(gè)整數(shù),也可以表示一個(gè)小數(shù)。第一篇:DSP實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)0 實(shí)驗(yàn)設(shè)備安裝才CCS調(diào)試環(huán)境 實(shí)驗(yàn)?zāi)康模喊凑諏?shí)驗(yàn)講義操作步驟,打開CCS軟件,熟悉軟件工作環(huán)境,了解整個(gè)工作環(huán)境內(nèi)容,有助于提高以后實(shí)驗(yàn)的操作性和正確性。 實(shí)驗(yàn)原理 定點(diǎn) DSP 中的數(shù)據(jù)表示方法C54X 是16 位的定點(diǎn)DSP。乘數(shù)在C54X 的乘法指令很靈活,可以是T 寄存器、立即數(shù)、存貯單元和A 或B 寄存器的高16 位。另一種方法是使用SUBC 指令,重復(fù)16 次減法完成除法運(yùn)算。二.實(shí)驗(yàn)原理 1 浮點(diǎn)數(shù)的表示方法在定點(diǎn)運(yùn)算中,小數(shù)點(diǎn)是在一個(gè)特定的固定位置?!癡iew”“CPU Registers”“CPU Register”,可以看見在CCS 界面下部份會出現(xiàn)CPU 中的相關(guān)寄存器;選擇“View”“Memory…”,在彈出的“Memory Window Options”窗口中選擇要觀察的區(qū)域?yàn)閿?shù)據(jù)區(qū),地址開始為0x80h,然后就可以看見出現(xiàn)一個(gè)Data Memory 窗口,其中顯示了從0x80h 區(qū)。同樣加數(shù)被格式轉(zhuǎn)換后的變量op2se、op2hm 和op2lm的值在內(nèi)存區(qū)0x0870x089 中,分別為0082h、00c0h 和0000h。這是用浮點(diǎn)數(shù)格式表示的數(shù)144(=12*12)。實(shí)驗(yàn)四用定時(shí)器實(shí)現(xiàn)數(shù)字振蕩器實(shí)驗(yàn)四 用定時(shí)器實(shí)現(xiàn)數(shù)字振蕩器 實(shí)驗(yàn)?zāi)康脑跀?shù)字信號處理中,會經(jīng)常使用到正弦/余弦信號。 實(shí)驗(yàn)原理 數(shù)字振蕩器原理sinkωT,其z 變換為H(z=其中,A=2cosωT, B=1, C=sinωT。當(dāng)然要 CPU 響應(yīng)中斷,INTM 還應(yīng)該為 0(允許所有的中斷)。在匯編源程序的中斷服務(wù)程序(_tint)中的“nop”語句處設(shè)置斷點(diǎn)。讓我對DSP課程產(chǎn)生了濃厚的學(xué)習(xí)興趣,課程學(xué)習(xí)和實(shí)驗(yàn)操作結(jié)合為一體的學(xué)習(xí)體系,使我更好的領(lǐng)悟到DSP課程的實(shí)用性和趣味性。其中ADDS 用于無符號數(shù)的加法運(yùn)算,ADDC 用于帶進(jìn)位的加法運(yùn)算(如32 位擴(kuò)展精度加 法),而ADDM 專用于立即數(shù)的加法。兩個(gè)小數(shù)(16 位)相乘后結(jié)果為32 位,如果精度允許的話,可以只存高16 位,將低16 位丟棄,這樣仍可 得到16 位的結(jié)果。1)編寫實(shí)驗(yàn)程序代碼2)用 ccs simulator 調(diào)試運(yùn)行并觀察結(jié) 實(shí)驗(yàn)結(jié)果加法結(jié)果乘法結(jié)果減法結(jié)果 思考題(、)實(shí)驗(yàn)三 C54X的浮點(diǎn)數(shù)的算術(shù)運(yùn)一、實(shí)驗(yàn)?zāi)康?)練習(xí)TMS320C54X 匯編程序的編寫與調(diào)試方法,重點(diǎn)練習(xí)C54X 程序流程控制的方法。因?yàn)槊總€(gè)文件都對下一個(gè)文件作了引用)。如果編寫程序時(shí)在計(jì)算完畢后遇到一個(gè)斷點(diǎn),那么程