【正文】
點(diǎn)擊主菜單“ViewGraphTime/Frequency?”,屏幕會(huì)出現(xiàn)圖形窗口設(shè)置對(duì)話框5. 雙擊Start Address,將其改為y0;雙擊Acquisition Buffer Size,將其改為1;DSP Data Type設(shè)置成16bit signed integer,如下圖所示;6. 點(diǎn)擊主菜單“WindowsTile Horizontally”,排列好窗口,便于觀察7. 點(diǎn)擊主菜單“DebugAnimate”或按F12鍵動(dòng)畫(huà)運(yùn)行程序,即可觀察到實(shí)驗(yàn)結(jié)果:心得體會(huì):通過(guò)對(duì)演示實(shí)驗(yàn)的練習(xí),讓自己更進(jìn)一步對(duì)CCS軟件的運(yùn)行環(huán)境、編譯過(guò)程、裝載過(guò)程、屬性設(shè)置、動(dòng)畫(huà)演示、實(shí)驗(yàn)結(jié)果的觀察有一個(gè)醒目的了解和熟悉的操作方法。讓我對(duì)DSP課程產(chǎn)生了濃厚的學(xué)習(xí)興趣,課程學(xué)習(xí)和實(shí)驗(yàn)操作結(jié)合為一體的學(xué)習(xí)體系,使我更好的領(lǐng)悟到DSP課程的實(shí)用性和趣味性。DSP 中提供了大量的指令來(lái) 實(shí)現(xiàn)這些功能。 實(shí)驗(yàn)原理1)定點(diǎn) DSP 中的數(shù)據(jù)表示方法C54X 是16 位的定點(diǎn)DSP。當(dāng)它表示一個(gè)整數(shù)時(shí),其最低位(D0)表示20,D1 位表示21,次高位(D14)表示214。其中ADDS 用于無(wú)符號(hào)數(shù)的加法運(yùn)算,ADDC 用于帶進(jìn)位的加法運(yùn)算(如32 位擴(kuò)展精度加 法),而ADDM 專(zhuān)用于立即數(shù)的加法。其中SUBS 用于無(wú)符號(hào)數(shù)的減法運(yùn)算,SUBB 用于帶進(jìn)位的減法運(yùn)算(如32 位擴(kuò)展精度的減法),而SUBC 為移位減,DSP 中的除法就是用該指令來(lái)實(shí)現(xiàn)的。乘數(shù)在C54X 的乘法指令很靈活,可以是T 寄存器、立即數(shù)、存貯單元和A 或B 寄存器的高16 位。C54X 中提供了一個(gè)狀態(tài)位FRCT,將其設(shè)置為1 時(shí),系統(tǒng)自動(dòng)將乘積結(jié)果左移一位。兩個(gè)小數(shù)(16 位)相乘后結(jié)果為32 位,如果精度允許的話,可以只存高16 位,將低16 位丟棄,這樣仍可 得到16 位的結(jié)果。一種是用乘法 來(lái)代替,除以某個(gè)數(shù)相當(dāng)于乘以其倒數(shù),所以先求出其倒數(shù),然后相乘。另一種方法是使用SUBC 指令,重復(fù)16 次減法完成除法運(yùn)算。但有兩點(diǎn)需要注意:第一,小數(shù)除法的結(jié)果一定是小數(shù)(小于1),所以被除數(shù)一定小于除數(shù)。1)編寫(xiě)實(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 匯編程序的編寫(xiě)與調(diào)試方法,重點(diǎn)練習(xí)C54X 程序流程控制的方法。3)練習(xí)并掌握 TMS320C54X 的匯編語(yǔ)言的匯編指令系統(tǒng)的使用方法,重點(diǎn)練習(xí)具有C54X 特點(diǎn)的一些在功能上有所擴(kuò)展的特殊指令,并了解這些指令在進(jìn)行算術(shù)運(yùn)算或各種控制時(shí)所帶來(lái)的方便。二.實(shí)驗(yàn)原理1)浮點(diǎn)數(shù)的表示方法在定點(diǎn)運(yùn)算中,小數(shù)點(diǎn)是在一個(gè)特定的固定位置。在定點(diǎn)運(yùn)算系統(tǒng)中,雖然在硬件上實(shí)現(xiàn)簡(jiǎn)單,但是表示的操作數(shù)的動(dòng)態(tài)范圍要受到限制。因?yàn)槊總€(gè)文件都對(duì)下一個(gè)文件作了引用)。然后再啟動(dòng)CCS 實(shí)驗(yàn)系統(tǒng)軟件CCS C5000。“View”“CPU Registers”“CPU Register”,可以看見(jiàn)在CCS 界面下部份會(huì)出現(xiàn)CPU 中的相關(guān)寄存器;選擇“View”“Memory…”,在彈出的“Memory Window Options”窗口中選擇要觀察的區(qū)域?yàn)閿?shù)據(jù)區(qū),地址開(kāi)始為0x80h,然后就可以看見(jiàn)出現(xiàn)一個(gè)Data Memory 窗口,其中顯示了從0x80h 區(qū)。比如在加法程序中有指令nop 的位置都可以加一個(gè)斷點(diǎn)。如果編寫(xiě)程序時(shí)在計(jì)算完畢后遇到一個(gè)斷點(diǎn),那么程序到此會(huì)自動(dòng)停止。 放在內(nèi)存區(qū)0x08c0x08d 中,其值也為4140h 和0000h。同樣加數(shù)被格式轉(zhuǎn)換后的變量op2se、op2hm 和op2lm的值在內(nèi)存區(qū)0x0870x089 中,分別為0082h、00c0h 和0000h。 A 寄存器中的值為AH=41c0h,AL=0000h 這就是最后的以浮點(diǎn)數(shù)的格式表示的結(jié)果值24(=12+12)?!斑\(yùn)行程序”按鈕,當(dāng)程序再次停下來(lái)時(shí)就可以看見(jiàn)在A 進(jìn)行減法運(yùn)算的結(jié)果:AH=3f80h,AL=0000h。減法運(yùn)算的程序到此結(jié)束。這是用浮點(diǎn)數(shù)格式表示的數(shù)144(=12*12)?!斑\(yùn)行程序”按鈕,當(dāng)程序再次停下來(lái)時(shí)就可以看見(jiàn)在A 進(jìn)行除法運(yùn)算的結(jié)果:AH=4040h,AL=0000h。至此加、減、乘、除四種運(yùn)算都運(yùn)行完畢。程序在執(zhí)行到斷點(diǎn)語(yǔ)句時(shí)自動(dòng)暫停,此時(shí)可以通過(guò)檢查各個(gè)寄存器中的值以及內(nèi)存單元中的值來(lái)判斷程序執(zhí)行是否正確。實(shí)驗(yàn)四用定時(shí)器實(shí)現(xiàn)數(shù)字振蕩器 實(shí)驗(yàn)四 用定時(shí)器實(shí)現(xiàn)數(shù)字振蕩器 實(shí)驗(yàn)?zāi)康脑跀?shù)字信號(hào)處理中,會(huì)經(jīng)常使用到正弦/余弦信號(hào)。在本實(shí)驗(yàn)中將介紹另一種獲得正弦/余弦信號(hào)的方法,即利用數(shù)字振蕩器用疊代方法產(chǎn)生正弦信號(hào)。另外,在本實(shí)驗(yàn)中我們將使用匯編語(yǔ)言和C 語(yǔ)言分別完成源程序的編寫(xiě)。定時(shí)器被設(shè)置成每25uS 產(chǎn)生一次中斷(等效于采樣速率為40K)。 實(shí)驗(yàn)原理1)數(shù)字振蕩器原理設(shè)一個(gè)傳遞函數(shù)為正弦序列 sinkωT,其z 變換為 H(z)=其中,A=2cosωT, B=1, C=sinωT。在表42 中列出了定時(shí)器控制寄存器的各個(gè)比特位的具體定義。3)C54X 中斷的使用在 C54X 中用戶(hù)可以通過(guò)中斷屏蔽寄存器IMR 來(lái)決定開(kāi)放或關(guān)閉一個(gè)中斷請(qǐng)求。圖 41 ‘C5402 的IMR 寄存器其中,HPINT 表示HPI 接口中斷,INT3INT0 為外部引腳產(chǎn)生的中斷,TXINT 和TRINT 為T(mén)DM 串口的發(fā)送和接收中斷,BXINT0 和BRINT0 為BSP 串口的發(fā)送和接收中斷,TINT0 為定時(shí)器0 中斷。當(dāng)然要CPU 響應(yīng)中斷,ST1 寄存器中的INTM 還應(yīng)該為0(允許所有的中斷)。實(shí)驗(yàn)分下面幾步完成:1)根據(jù)確定數(shù)字振蕩器的頻率,確定系數(shù)。3)選擇 Project 菜單中的Options 選項(xiàng),或使用鼠標(biāo)右鍵單擊工程文件名()并選擇build options 項(xiàng)來(lái)修改或添加編譯、連接中使用的參數(shù)。4)完成編譯、連接,正確生成OUT 文件。6)在匯編源程序的中斷服務(wù)程序(_tint)中的“nop”語(yǔ)句處設(shè)置斷點(diǎn)。8)清除所有斷點(diǎn),關(guān)閉除波形顯示窗口外的所有窗口,并關(guān)閉工程文件。10)打開(kāi) C 源程序()窗口,在中斷服務(wù)程序(函數(shù)tint())的“con_buf=0;”語(yǔ)句處增加一個(gè)斷點(diǎn)。第三篇:DSP實(shí)驗(yàn)報(bào)告+心得體會(huì)龍巖學(xué)院實(shí) 驗(yàn) 報(bào) 告班級(jí)07電本(1)班學(xué)號(hào)2007050344 姓名 楊寶輝同組人獨(dú)立實(shí)驗(yàn)日期2010518室溫大氣壓成 績(jī)基礎(chǔ)實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康亩?、?shí)驗(yàn)設(shè)備三、實(shí)驗(yàn)原理 浮點(diǎn)數(shù)的表達(dá)和計(jì)算是進(jìn)行數(shù)字信號(hào)處理的基本知識(shí);; ; 。中經(jīng)常用到的運(yùn)算;C語(yǔ)言是現(xiàn)代數(shù)字信號(hào)處理表達(dá)的基礎(chǔ)語(yǔ)言和通用語(yǔ)言。四、實(shí)驗(yàn)步驟 并熟悉其界面;(), 輸出文件,然后通過(guò)仿真器把執(zhí)行代碼下載到DSP芯片中;3. 把X0 , Y0 和Z0添加到Watch窗口中作為觀察對(duì)象(選中變量名,單擊鼠標(biāo)右鍵,在彈出菜單中選擇“Add Watch Window”命令);4. 選擇viewgraphtime/frequency…。五、實(shí)驗(yàn)心得體會(huì)通過(guò)本次實(shí)驗(yàn),加深了我對(duì)DSP的認(rèn)識(shí),使我對(duì)DSP實(shí)驗(yàn)的操作有了更進(jìn)一步的理解。從軟件的安裝到使用軟件進(jìn)行程序設(shè)計(jì)與仿真,鍛煉了自己的動(dòng)手能力,也遇到了不少的坎坷,例如芯片的選擇,不能因?yàn)槁闊┒÷栽摬襟E,否則將會(huì)運(yùn)行出錯(cuò)。float X0,Y0,Z0。for(i=0。X0=。/* 0000 0000 0000 */Z0=X0*Y0。isin_value[i]=100*(sin(2*pi*i/N))。熟悉DSP的IO操作使用方法。三、實(shí)驗(yàn)原理 此模塊由數(shù)碼管和四個(gè)鎖存器組成。數(shù)據(jù)由2812模塊的低八位輸入,鎖存器的控制信號(hào)由2812模塊輸出,但經(jīng)由CPLD模塊譯碼后再控制對(duì)應(yīng)的八個(gè)四、實(shí)驗(yàn)步驟 ;,生成輸出文件,通過(guò)仿真器把執(zhí)行代碼下載到DSP芯片;。同時(shí),通過(guò)實(shí)驗(yàn)操作DSP的IO操作使用方法,對(duì)于DSP的IO操作可以熟悉的運(yùn)用,學(xué)到更多的知識(shí)。void Gpio_select(void)。main(){short i。// Specific clock setting for this example:EALLOW。// Step GPIO:// This example function is found in the file and // illustrates how to set the GPIO to it39。// Skipped for this example // For this example use the following configuration:Gpio_select()。// Initialize the PIE control registers to their default state.// The default state is all PIE interrupts disabled and flags // are cleared.// This function is found in the ()。IFR = 0x0000。// Step all the Device Peripherals: // This function is found in // InitPeripherals()。// For this example, init the Xintf // Step specific code, enable interrupts:=0。=0。=0。=0。while(1){for(i=0。delay_loop()。i{Reg02=0x00。}for(i=0。delay_loop()。i{Reg04=0x00。}} }void delay_loop(){=~codetab[i]。=~codetab[i]。shorti,j。i 32767。j 10。} }void Gpio_select(void){Uint16 var1。Uint16 var3。var2= 0xFFFF。EALLOW。// sets GPIO Muxs as I/Os// sets GPIO DIR as outputs// sets the Input qualifier values=var1。=var1。=var1。// GPIO PORTs as output// GPIO DIR select GPIOs as output=var2。=var2。=var2。=var3。=var3。} // No more.// Set GPIO input qualifier values 龍巖學(xué)院實(shí) 驗(yàn) 報(bào) 告班級(jí)07電本(1)班學(xué)號(hào)2007050344 姓名 楊寶輝同組人獨(dú)立實(shí)驗(yàn)日期2010525室溫大氣壓成 績(jī)交通燈控制實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康模?。三、實(shí)驗(yàn)原理此模塊由發(fā)光二極管和一個(gè)鎖存器組成。四、實(shí)驗(yàn)步驟;,生成輸出文件,通過(guò)仿真器把執(zhí)行代碼下載到DSP芯片; ,發(fā)光二極管按交通燈方式點(diǎn)亮熄滅。五、實(shí)驗(yàn)心得體會(huì)通過(guò)次實(shí)驗(yàn)中,使我掌握了 2812的指令系統(tǒng)和74HC573的使用方法。實(shí)驗(yàn)程序見(jiàn)附錄: 附錄:include “include/”// DSP281x Headerfile Include File include “include/”// DSP281x Examples Include File // Prototype statements for functions found within this delay_loop(void)。// Global variable for this example main(){ // Step System Control: // PLL, WatchDog, enable Peripheral Clocks // This example function is found in the ()。EDIS。s default state.// InitGpio()。// Step all interrupts and initialize PIE vector table: // Disable CPU interruptsDINT。// Disable CPU interrupts and clear all CPU interrupt flags:IER = 0x0000。// Initialize the PIE vector table with pointers to the shell Interrupt // Service Routines(ISR).// This will populate the entire table, even if the interrupt // is not used in this is useful for debug purposes.// The shell ISR routines are found in .// This function is found in ()。// Not required for this exampleInitXintf()。Reg00=0x00。=0xec40。delay_loop()。Reg00=0x00。=0xec40。delay_loop()。for(i = 0。i++){for(j = 0。j++)。Uint16 var2。