欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      dsp實驗報告心得體會

      時間:2019-05-12 14:28:45下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《dsp實驗報告心得體會》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《dsp實驗報告心得體會》。

      第一篇:dsp實驗報告心得體會

      TMS320F2812x DSP原理及應(yīng)用技術(shù)實驗心得體會

      1.設(shè)置環(huán)境時分為軟件設(shè)置和硬件設(shè)置,根據(jù)實驗的需要設(shè)置,這次實驗只是軟件仿真,可以不設(shè)置硬件,但是要為日后的實驗做準(zhǔn)備,還是要學(xué)習(xí)和熟悉硬件設(shè)置的過程。

      2.在設(shè)置硬件時,不是按實驗書上的型號選擇,而是應(yīng)該按照實驗設(shè)備上的型號去添加。

      3.不管是硬件還是軟件的設(shè)置,都應(yīng)該將之前設(shè)置好的刪去,重新添加。設(shè)置好的配置中只能有一項。

      4.CCS可以工作在純軟件仿真環(huán)境中,就是由軟件在PC機(jī)內(nèi)存中構(gòu)造一個虛擬的DSP環(huán)境,可以調(diào)試、運(yùn)行程序。但是一般無法構(gòu)造DSP中的外設(shè),所以軟件仿真通常用于調(diào)試純軟件算法和進(jìn)行效率分析等。5.這次實驗采用軟件仿真,不需要打開電源箱的電源。

      6.在軟件仿真工作時,無需連接板卡和仿真器等硬件。

      7.執(zhí)行write_buffer一行時。如果按F10執(zhí)行程序,則程序在mian主函數(shù)中運(yùn)行,如果按F11,則程序進(jìn)入write_buffe函數(shù)內(nèi)部的程序運(yùn)行。8.把str變量加到觀察窗口中,點擊變量左邊的“+”,觀察窗口可以展開結(jié)構(gòu)變量,就可以看到結(jié)構(gòu)體變量中的每個元素了。

      9.在實驗時,顯示圖形出現(xiàn)問題,不能顯示,后來在Graph Title 把Input的大寫改為input,在對volume進(jìn)行編譯執(zhí)行后,就可以看到顯示的正弦波圖形了。10.在修改了實驗2-1的程序后,要重新編譯、連接執(zhí)行程序,并且必須對.OUT文件進(jìn)行重新加載,因為此時.OUT文件已經(jīng)改變了。如果不重新加載,那么修改執(zhí)行程序后,其結(jié)果將不會改變。

      11.再觀察結(jié)果時,可將data和data1的窗口同時打開,這樣可以便于比較,觀察結(jié)果。

      12.通過這次實驗,對TMS320F2812x DSP軟件仿真及調(diào)試有了初步的了解與認(rèn)識,因為做實驗的時候都是按照實驗指導(dǎo)書按部就班的,與真正的理解和掌握還是有些距離的。但是這也為我們?nèi)蘸筮\(yùn)用這些知識打下了基礎(chǔ),我覺得實驗中遇到的問題,不要急于問老師或者同學(xué),先自己想辦法分析原因,想辦法解決,這樣對自身的提高更多吧。通過做實驗,把學(xué)習(xí)的知識利用起來,也對這門課程更加有興趣了。

      組員:葉孝璐 馮煥芬 鄭瑋儀 龐露露

      2012年4月10號

      第二篇:DSP實驗報告+心得體會

      學(xué)

      實 驗 報 告

      07電本(1)班

      學(xué)號

      2007050344 姓

      名 楊寶輝

      同組人

      獨(dú)立

      實驗日期

      2010-5-18

      室溫

      大氣壓

      成 績

      基礎(chǔ)實驗

      一、實驗?zāi)康亩?、實驗設(shè)備

      三、實驗原理 浮點數(shù)的表達(dá)和計算是進(jìn)行數(shù)字信號處理的基本知識;產(chǎn)生正弦信號是數(shù)字信號處理1.一臺裝有CCS軟件的計算機(jī); 2.DSP實驗箱的TMS320F2812主控板; 3.DSP硬件仿真器。1.掌握CCS實驗環(huán)境的使用;

      2.掌握用C語言編寫DSP程序的方法。

      中經(jīng)常用到的運(yùn)算;C語言是現(xiàn)代數(shù)字信號處理表達(dá)的基礎(chǔ)語言和通用語言。寫實現(xiàn)程序時需要注意兩點:(1)浮點數(shù)的范圍及存儲格式;(2)DSP的C語言與ANSI C語言的區(qū)別。

      四、實驗步驟

      1.打開CCS 并熟悉其界面;

      2.在CCS環(huán)境中打開本實驗的工程(Example_base.pjt),編譯并重建.out 輸出文件,然后通過仿真器把執(zhí)行代碼下載到DSP芯片中;

      3. 把X0 , Y0 和Z0添加到Watch窗口中作為觀察對象(選中變量名,單擊鼠標(biāo)右鍵,在彈出菜單中選擇“Add Watch Window”命令);

      4. 選擇view->graph->time/frequency…。設(shè)置對話框中的參數(shù): 其中“Start Address”設(shè)為“sin_value”,“Acquisition buffer size”和“Display Data size”都設(shè)為“100”,并且把“DSP Data Type”設(shè)為“32-bit floating point”,設(shè)置好后觀察信號序列的波形(sin函數(shù),如圖);

      5. 單擊運(yùn)行;

      6. 觀察三個變量從初始化到運(yùn)算結(jié)束整個過程中的變化;觀察正弦波形從初始化到運(yùn)算結(jié)束整個過程中的變化;

      7. 修改輸入序列的長度或初始值,重復(fù)上述過程。

      五、實驗心得體會

      通過本次實驗,加深了我對DSP的認(rèn)識,使我對DSP實驗的操作有了更進(jìn)一步的理解?;菊莆樟薈CS實驗環(huán)境的使用,并能夠使用C語言進(jìn)行簡單的DSP程序設(shè)計。從軟件的安裝到使用軟件進(jìn)行程序設(shè)計與仿真,鍛煉了自己的動手能力,也遇到了不少的坎坷,例如芯片的選擇,不能因為麻煩而省略該步驟,否則將會運(yùn)行出錯。

      附錄實驗程序: #include “math.h” #include “stdio.h” #define N 100 #define pi 3.14159

      float sin_value[100];float X0,Y0,Z0;

      void main(void){

      int i;

      for(i=0;i

      sin_value[i]=0;

      X0=0.5;

      /* 0.100 0000 0000 0000 */

      Y0=0.5;

      /* 0.100 0000 0000 0000 */

      Z0=X0*Y0;

      /* 00.01 0000 0000 0000 0000 0000 0000 0000 */

      for(i=0;i

      sin_value[i]=100*(sin(2*pi*i/N));}

      學(xué)

      實 驗 報 告

      07電本(1)班

      學(xué)號

      2007050344姓

      名 楊寶輝 同組人

      獨(dú)立

      實驗日期

      2010-5-20

      室溫

      大氣壓

      成 績

      數(shù)碼管控制實驗

      一、實驗?zāi)康?1.2.3.熟悉2812的指令系統(tǒng); 熟悉74HC573的使用方法。熟悉DSP的IO操作使用方法。

      二、實驗設(shè)備

      1.一臺裝有CCS2000軟件的計算機(jī);

      2.插上2812主控板的DSP實驗箱; 3.DSP硬件仿真器。

      三、實驗原理 此模塊由數(shù)碼管和四個鎖存器組成。數(shù)碼管為共陰極型的。數(shù)據(jù)由2812模塊的低八位輸入,鎖存器的控制信號由2812模塊輸出,但經(jīng)由CPLD模塊譯碼后再控制對應(yīng)的八個

      四、實驗步驟 1.把2812模塊小板插到大板上;

      2.在CCS2000環(huán)境中打開本實驗的工程編譯Example_7segled.prj,生成輸出文件,通過仿真器把執(zhí)行代碼下載到DSP芯片;

      3.運(yùn)行程序;數(shù)碼管會顯示1~8的數(shù)字。

      4.參考源代碼自行修改程序改變顯示樣式。

      五、實驗心得體會

      通過本次實驗中,基本掌握了2812的指令系統(tǒng)的特點,并能夠了解并熟悉74HC573的使用方法,進(jìn)一步加深了對DSP的認(rèn)識。同時,通過實驗操作DSP的IO操作使用方法,對于DSP的IO操作可以熟悉的運(yùn)用,學(xué)到更多的知識。

      程序見附錄:

      #include “include/DSP281x_Device.h”

      // DSP281x Headerfile Include File #include “include/DSP281x_Examples.h”

      // DSP281x Examples Include File // Prototype statements for functions found within this file.void delay_loop(void);void Gpio_select(void);// 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};main(){

      short i;

      // Step 1.Initialize System Control: // PLL, WatchDog, enable Peripheral Clocks // This example function is found in the DSP281x_SysCtrl.c file.InitSysCtrl();

      // Specific clock setting for this example:

      EALLOW;

      EDIS;// Step 2.Initalize GPIO:

      // This example function is found in the DSP281x_Gpio.c file and // illustrates how to set the GPIO to it's default state.// InitGpio();// Skipped for this example // For this example use the following configuration:

      Gpio_select();// Step 3.Clear all interrupts and initialize PIE vector table: // Disable CPU interrupts

      DINT;// 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 DSP281x_PieCtrl.c file.InitPieCtrl();// Disable CPU interrupts and clear all CPU interrupt flags:

      IER = 0x0000;

      IFR = 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 example.This is useful for debug purposes.// The shell ISR routines are found in DSP281x_DefaultIsr.c.// This function is found in DSP281x_PieVect.c.InitPieVectTable();// Step 4.Initialize all the Device Peripherals: // This function is found in DSP281x_InitPeripherals.c // InitPeripherals();// Not required for this example

      InitXintf();// For this example, init the Xintf // Step 5.User specific code, enable interrupts:

      GpioDataRegs.GPADAT.all=0;

      Reg01=0x00;

      GpioDataRegs.GPADAT.all=0;

      Reg02=0x00;

      GpioDataRegs.GPADAT.all=0;

      Reg03=0x00;

      GpioDataRegs.GPADAT.all=0;

      Reg04=0x00;

      while(1)

      {

      for(i=0;i<17;i++)

      {

      GpioDataRegs.GPADAT.all

      Reg01=0x00;

      delay_loop();

      }

      for(i=0;i<17;i++)

      {

      GpioDataRegs.GPADAT.all

      Reg02=0x00;

      delay_loop();

      }

      for(i=0;i<17;i++)

      {

      GpioDataRegs.GPADAT.all

      Reg03=0x00;

      delay_loop();

      }

      for(i=0;i<17;i++)

      {

      GpioDataRegs.GPADAT.all

      Reg04=0x00;

      delay_loop();

      }

      } }

      void delay_loop(){

      =~codetab[i];=~codetab[i];=~codetab[i];=~codetab[i];

      short

      i,j;

      for(i = 0;i < 32767;i++)

      {for(j = 0;j < 10;j++);} }

      void Gpio_select(void){

      Uint16 var1;

      Uint16 var2;

      Uint16 var3;

      var1= 0x0000;

      var2= 0xFFFF;

      var3= 0x0000;

      EALLOW;GpioMuxRegs.GPAMUX.all=var1;

      // sets GPIO Muxs as I/Os

      // sets GPIO DIR as outputs

      // sets the Input qualifier values

      GpioMuxRegs.GPBMUX.all=var1;

      GpioMuxRegs.GPDMUX.all=var1;

      GpioMuxRegs.GPFMUX.all=var1;

      GpioMuxRegs.GPEMUX.all=var1;

      GpioMuxRegs.GPGMUX.all=var1;

      GpioMuxRegs.GPADIR.all=var2;

      // GPIO PORTs as output

      // GPIO DIR select GPIOs as output

      GpioMuxRegs.GPBDIR.all=var2;

      GpioMuxRegs.GPDDIR.all=var2;

      GpioMuxRegs.GPEDIR.all=var2;

      GpioMuxRegs.GPFDIR.all=var2;

      GpioMuxRegs.GPGDIR.all=var2;

      GpioMuxRegs.GPAQUAL.all=var3;

      GpioMuxRegs.GPBQUAL.all=var3;

      GpioMuxRegs.GPDQUAL.all=var3;

      GpioMuxRegs.GPEQUAL.all=var3;

      EDIS;} // No more.// Set GPIO input qualifier values 龍

      學(xué)

      實 驗 報 告

      07電本(1)班

      學(xué)號

      2007050344 姓

      名 楊寶輝

      同組人

      獨(dú)立

      實驗日期

      2010-5-25

      室溫

      大氣壓

      成 績

      交通燈控制實驗

      一、實驗?zāi)康?/p>

      1.熟悉2812的指令系統(tǒng); 2.熟悉74HC573的使用方法。3.熟悉DSP的IO操作使用方法。

      二、實驗設(shè)備

      1.一臺裝有CCS2000軟件的計算機(jī);

      2.插上2812主控板的DSP實驗箱; 3.DSP硬件仿真器。

      三、實驗原理

      此模塊由發(fā)光二極管和一個鎖存器組成。

      數(shù)據(jù)由2812模塊的低八位輸入,鎖存器的控制信號由2812模塊輸出,但經(jīng)由CPLD模塊譯碼后再控制鎖存器。

      四、實驗步驟

      1.把2812模塊小板插到大板上;

      2.在CCS2000環(huán)境中打開本實驗的工程編譯Example_crossled.prj,生成輸出文件,通過仿真器把執(zhí)行代碼下載到DSP芯片; 3.運(yùn)行程序,發(fā)光二極管按交通燈方式點亮熄滅。

      4.參考源代碼,自行修改程序,實現(xiàn)不同的交通燈控制方式。

      五、實驗心得體會

      通過次實驗中,使我掌握了 2812的指令系統(tǒng)和74HC573的使用方法。同時,使我掌握了DSP的IO操作使用方法。

      實驗程序見附錄: 附錄:

      #include “include/DSP281x_Device.h”

      // DSP281x Headerfile Include File #include “include/DSP281x_Examples.h”

      // DSP281x Examples Include File // Prototype statements for functions found within this file.void delay_loop(void);void Gpio_select(void);// Global variable for this example main(){ // Step 1.Initialize System Control: // PLL, WatchDog, enable Peripheral Clocks // This example function is found in the DSP281x_SysCtrl.c file.InitSysCtrl();

      // Specific clock setting for this example:

      EALLOW;

      EDIS;// Step 2.Initalize GPIO:

      // This example function is found in the DSP281x_Gpio.c file and // illustrates how to set the GPIO to it's default state.// InitGpio();// Skipped for this example

      // For this example use the following configuration:

      Gpio_select();

      // Step 3.Clear all interrupts and initialize PIE vector table: // Disable CPU interrupts

      DINT;// 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 DSP281x_PieCtrl.c file.InitPieCtrl();// Disable CPU interrupts and clear all CPU interrupt flags:

      IER = 0x0000;

      IFR = 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 example.This is useful for debug purposes.// The shell ISR routines are found in DSP281x_DefaultIsr.c.// This function is found in DSP281x_PieVect.c.InitPieVectTable();// Step 4.Initialize all the Device Peripherals: // This function is found in DSP281x_InitPeripherals.c // InitPeripherals();// Not required for this example

      InitXintf();// For this example, init the Xintf // Step 5.User specific code, enable interrupts:

      while(1)

      {

      GpioDataRegs.GPADAT.all

      =0xdc80;

      Reg00=0x00;

      delay_loop();

      GpioDataRegs.GPADAT.all

      =0xec40;

      Reg00=0x00;

      delay_loop();

      GpioDataRegs.GPADAT.all

      =0xf0c0;

      Reg00=0x00;

      delay_loop();

      GpioDataRegs.GPADAT.all

      =0xec40;

      Reg00=0x00;

      delay_loop();

      } }

      void delay_loop(){

      short

      i,j;

      for(i = 0;i < 32767;i++)

      {for(j = 0;j < 50;j++);} } void Gpio_select(void){

      Uint16 var1;

      Uint16 var2;

      Uint16 var3;

      var1= 0x0000;

      var2= 0xFFFF;

      var3= 0x0000;

      EALLOW;GpioMuxRegs.GPAMUX.all=var1;

      // sets GPIO Muxs as I/Os // sets GPIO DIR as outputs // sets the Input qualifier values

      GpioMuxRegs.GPBMUX.all=var1;

      GpioMuxRegs.GPDMUX.all=var1;

      GpioMuxRegs.GPFMUX.all=var1;

      GpioMuxRegs.GPEMUX.all=var1;

      GpioMuxRegs.GPGMUX.all=var1;

      GpioMuxRegs.GPADIR.all=var2;// GPIO PORTs as output

      // GPIO DIR select GPIOs as output

      GpioMuxRegs.GPBDIR.all=var2;

      GpioMuxRegs.GPDDIR.all=var2;

      GpioMuxRegs.GPEDIR.all=var2;

      GpioMuxRegs.GPFDIR.all=var2;

      GpioMuxRegs.GPGDIR.all=var2;

      GpioMuxRegs.GPAQUAL.all=var3;

      GpioMuxRegs.GPBQUAL.all=var3;

      GpioMuxRegs.GPDQUAL.all=var3;

      GpioMuxRegs.GPEQUAL.all=var3;

      EDIS;

      }

      // Set GPIO input qualifier values //============================= // No more.//=============================

      學(xué)

      實 驗 報 告

      07電本(1)班

      學(xué)號

      2007050344 姓

      名 楊寶輝

      同組人

      獨(dú)立

      實驗日期

      2010-05-27

      室溫

      大氣壓

      成 績

      步進(jìn)電機(jī)控制實驗

      一、實驗?zāi)康?1.2.二、實驗設(shè)備

      1.一臺裝有CCS軟件的計算機(jī); 2.DSP實驗箱(插上電機(jī)模塊);

      3.DSP硬件仿真器; 4.示波器。

      三、實驗原理

      步進(jìn)電機(jī)工作原理,給步進(jìn)脈沖電機(jī)就轉(zhuǎn),不給脈沖電機(jī)就不轉(zhuǎn),步進(jìn)脈沖的頻率越高,步進(jìn)控制電機(jī)就轉(zhuǎn)的越快;改變各相的通電方式可以改變電機(jī)的運(yùn)行方式;改變通電順序可以控制步進(jìn)電機(jī)的運(yùn)行方式;改變通電順序可以控制步進(jìn)電機(jī)的正反轉(zhuǎn)。

      步進(jìn)電機(jī)的控制問題可以總結(jié)為兩點: 1.產(chǎn)生工作方式需要的時序脈沖;

      2.控制步進(jìn)電機(jī)的速度使它始終遵循加速-勻速-減速的規(guī)律工作。掌握2812通用IO口的使用方法; 掌握2812對步進(jìn)電機(jī)的控制。

      對于I/O口有二類寄存器:

      1.控制寄存器和數(shù)據(jù)方向寄存器,使用方法如下:首先確定引腳的功能,即IO控制器寄存器,為1表示引腳功能是原模塊的功能,否則為IO功能。

      2.如果引腳被配置為IO功能,就需要確定它的方向:輸入還是輸出。為1表示是輸出引腳,否則是輸入引腳。對于IO功能的輸入或輸出是通過讀寫相應(yīng)的數(shù)據(jù)方向寄存器來實現(xiàn)。輸入引腳對應(yīng)讀操作;輸出引腳對應(yīng)寫操作。

      四、實驗步驟

      1.連接好DSP開發(fā)系統(tǒng);

      2.本實驗工程文件(Example_stepmotor.pjt),編譯,下載程序到DSP; 運(yùn)行程序,用觀察步進(jìn)電機(jī)運(yùn)行方向和速度的變化;

      五、實驗心得體會

      通過本次實驗對于2812通用的IO口進(jìn)一步熟悉實驗,使我基本掌握了2812通用的IO口的使用方法,加深了對IO口的認(rèn)識。本次實驗的主要目的是通過2812對步進(jìn)機(jī)的的控制,開始對于程序的設(shè)計沒有頭緒,通過查閱步進(jìn)機(jī)控制的原理,結(jié)合有關(guān)資料才正式設(shè)計出程序,基本掌握了2812對步進(jìn)機(jī)的控制,也更加熟悉了對DSP程序的設(shè)計,受益匪淺。

      程序:

      #include “include/DSP281x_Device.h”

      // DSP281x Headerfile Include File #include “include/DSP281x_Examples.h”

      // DSP281x Examples Include File // Prototype statements for functions found within this file.void delay_loop(void);void Gpio_select(void);// Global variable for this example short codetab[17]= {0x0001,0x0002,0x0004,0x0008,0x0008,0x0004,0x0002,0x0001, 0x0001,0x0002,0x0004,0x0008,0x0001,0x0002,0x0004,0x0008,0x0000};main(){

      short i,j;// Step 1.Initialize System Control: // PLL, WatchDog, enable Peripheral Clocks // This example function is found in the DSP281x_SysCtrl.c file.InitSysCtrl();// Specific clock setting for this example:

      EALLOW;

      EDIS;// Step 2.Initalize GPIO:

      // This example function is found in the DSP281x_Gpio.c file and // illustrates how to set the GPIO to it's default state.// InitGpio();// Skipped for this example // For this example use the following configuration:

      Gpio_select();// Step 3.Clear all interrupts and initialize PIE vector table: // Disable CPU interrupts

      DINT;// 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 DSP281x_PieCtrl.c file.InitPieCtrl();// Disable CPU interrupts and clear all CPU interrupt flags:

      IER = 0x0000;

      IFR = 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 example.This is useful for debug purposes.// The shell ISR routines are found in DSP281x_DefaultIsr.c.// This function is found in DSP281x_PieVect.c.InitPieVectTable();// Step 4.Initialize all the Device Peripherals: // This function is found in DSP281x_InitPeripherals.c // InitPeripherals();// Not required for this example

      InitXintf();// For this example, init the Xintf // Step 5.User specific code, enable interrupts:

      GpioDataRegs.GPADAT.all=0;

      Reg06=0x00;

      while(1)

      {

      for(j=0;j<400;j++)

      {

      for(i=0;i<4;i++)

      {

      GpioDataRegs.GPADAT.all

      Reg06=0x00;

      delay_loop();

      }

      }

      for(j=0;j<400;j++)

      {

      for(i=4;i<8;i++)

      {

      GpioDataRegs.GPADAT.all

      Reg06=0x00;

      delay_loop();

      }

      }

      } } void delay_loop(){

      short

      i,j;

      for(i = 0;i < 1000;i++)

      {for(j = 0;j < 10;j++);} } void Gpio_select(void){

      Uint16 var1;

      Uint16 var2;

      =codetab[i];=codetab[i];

      Uint16 var3;

      var1= 0x0000;

      var2= 0xFFFF;

      var3= 0x0000;

      EALLOW;GpioMuxRegs.GPAMUX.all=var1;

      // sets GPIO Muxs as I/Os

      // sets GPIO DIR as outputs

      // sets the Input qualifier values

      GpioMuxRegs.GPBMUX.all=var1;

      GpioMuxRegs.GPDMUX.all=var1;

      GpioMuxRegs.GPFMUX.all=var1;

      GpioMuxRegs.GPEMUX.all=var1;

      GpioMuxRegs.GPGMUX.all=var1;GpioMuxRegs.GPADIR.all=var2;

      // GPIO PORTs as output

      // GPIO DIR select GPIOs as output

      GpioMuxRegs.GPBDIR.all=var2;

      GpioMuxRegs.GPDDIR.all=var2;

      GpioMuxRegs.GPEDIR.all=var2;

      GpioMuxRegs.GPFDIR.all=var2;

      GpioMuxRegs.GPGDIR.all=var2;

      GpioMuxRegs.GPAQUAL.all=var3;

      GpioMuxRegs.GPBQUAL.all=var3;

      GpioMuxRegs.GPDQUAL.all=var3;

      GpioMuxRegs.GPEQUAL.all=var3;

      EDIS;

      }

      // Set GPIO input qualifier values //============================= // No more.//=============================

      學(xué)

      實 驗 報 告

      07電本(1)班

      學(xué)號

      2007050344 姓

      名 楊寶輝

      同組人 獨(dú)立

      實驗日期

      2010-6-1

      室溫

      大氣壓

      成 績

      直流電機(jī)控制實驗

      一、實驗?zāi)康?1.2.二、實驗設(shè)備 1.一臺裝有CCS軟件的計算機(jī); 2.DSP實驗箱;

      要求學(xué)生掌握2812 PWM的使用方法; 掌握2812對直流電機(jī)的控制。

      3.DSP硬件仿真器; 4.示波器。

      三、實驗原理

      電機(jī)模塊的原理圖如下

      四、實驗步驟

      3.連接好DSP開發(fā)系統(tǒng);

      4.本實驗工程文件(Example_dcmotor.pjt),編譯,下載程序到DSP; 5.運(yùn)行程序,用觀察直流電機(jī)運(yùn)行方向和速度的變化;

      五、實驗心得體會

      通過本次實驗,認(rèn)識了PWM的使用方法,通過親身體驗,初步掌握了2812對PWM的控制使用方法,加深了對PWM的認(rèn)識。本次實驗的主要目的是通過2812對直流電機(jī)的控制,開始對于程序的設(shè)計沒有頭緒,通過查閱直流電機(jī)的原理,結(jié)合有關(guān)資料才正式設(shè)計出程序,基本掌握了2812對直流電機(jī)的控制,也更加熟悉了對DSP程序的設(shè)計,受益匪淺。

      附:實驗程序:

      #include “include/DSP281x_Device.h”

      // DSP281x Headerfile Include File #include “include/DSP281x_Examples.h”

      // DSP281x Examples Include File // Prototype statements for functions found within this file.void init_eva(void);void init_evb(void);void delay_loop();// Global variable for this example main()

      { unsigned short i;// Step 1.Initialize System Control: // PLL, WatchDog, enable Peripheral Clocks // This example function is found in the DSP281x_SysCtrl.c file.InitSysCtrl();// Specific clock setting for this example:

      EALLOW;

      EDIS;// Step 2.Initalize GPIO:

      // This example function is found in the DSP281x_Gpio.c file and // illustrates how to set the GPIO to it's default state.// InitGpio();// Skipped for this example // Initialize only GPAMUX and GPBMUX for this test

      EALLOW;

      // Enable PWM pins

      GpioMuxRegs.GPAMUX.all = 0x00FF;// EVA PWM 1-6 pins

      GpioMuxRegs.GPBMUX.all = 0x00FF;// EVB PWM 7-12 pins

      EDIS;// Step 3.Clear all interrupts and initialize PIE vector table: // Disable CPU interrupts

      DINT;// 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 DSP281x_PieCtrl.c file.InitPieCtrl();// Disable CPU interrupts and clear all CPU interrupt flags:

      IER = 0x0000;

      IFR = 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 example.This is useful for debug purposes.// The shell ISR routines are found in DSP281x_DefaultIsr.c.// This function is found in DSP281x_PieVect.c.InitPieVectTable();// Step 4.Initialize all the Device Peripherals: // This function is found in DSP281x_InitPeripherals.c // InitPeripherals();// Not required for this example

      InitXintf();// For this example, init the Xintf // Step 5.User specific code, enable interrupts:

      init_eva();

      //init_evb();

      while(1)

      {

      for(i=0;i<65535;i+=1000)

      {

      Reg06=0;

      EvbRegs.CMPR6 = i;

      delay_loop();

      }

      } } void delay_loop(){

      short

      i,j;

      for(i = 0;i < 1000;i++)

      {for(j = 0;j < 10;j++);} } void init_eva(){ // EVA Configure T1PWM, T2PWM, PWM1-PWM6 // Initalize the timers

      // Initalize EVA Timer1

      EvaRegs.T1PR = 0xFFFF;

      // Timer1 period

      EvaRegs.T1CMPR = 0x3C00;

      // Timer1 compare

      EvaRegs.T1CNT = 0x0000;

      // Timer1 counter

      // TMODE = continuous up/down

      // Timer enable

      // Timer compare enable

      EvaRegs.T1CON.all = 0x1042;

      // Initalize EVA Timer2

      EvaRegs.T2PR = 0x0FFF;

      // Timer2 period

      EvaRegs.T2CMPR = 0x03C0;

      // Timer2 compare

      EvaRegs.T2CNT = 0x0000;

      // Timer2 counter

      // TMODE = continuous up/down

      // Timer enable

      // Timer compare enable

      EvaRegs.T2CON.all = 0x1042;

      // Setup T1PWM and T2PWM

      // Drive T1/T2 PWM by compare logic

      EvaRegs.GPTCONA.bit.TCMPOE = 1;

      // Polarity of GP Timer 1 Compare = Active low

      EvaRegs.GPTCONA.bit.T1PIN = 1;

      // Polarity of GP Timer 2 Compare = Active high

      EvaRegs.GPTCONA.bit.T2PIN = 2;

      // Enable compare for PWM1-PWM6

      //EvaRegs.CMPR1 = 0x0C00;

      //EvaRegs.CMPR2 = 0x3C00;

      EvaRegs.CMPR3 = 0xFC00;

      // Compare action control.Action that takes place

      // on a cmpare event

      // output pin 1 CMPR1active low

      // output pin 3 CMPR2active low

      // output pin 5 CMPR3active low

      EvaRegs.ACTRA.all = 0x0666;

      EvaRegs.DBTCONA.all = 0x0000;// Disable deadband

      EvaRegs.COMCONA.all = 0xA600;}

      void init_evb(){ // EVB Configure T3PWM, T4PWM and PWM7-PWM12 // Step 1active high

      // output pin 2 CMPR4active high

      // output pin 4 CMPR5active high

      // output pin 6 CMPR6x000 0000 0011 0000

      EDIS;// Step 3.Initialize PIE vector table:

      // The PIE vector table is initialized with pointers to shell Interrupt

      // Service Routines(ISR).The shell routines are found in DSP281x_DefaultIsr.c.// Insert user specific ISR code in the appropriate shell ISR routine in

      // the DSP28_DefaultIsr.c file.// Disable and clear all CPU interrupts:

      DINT;IER = 0x0000;IFR = 0x0000;

      // Initialize Pie Control Registers To Default State:

      // This function is found in the DSP281x_PieCtrl.c file.// InitPieCtrl();PIE is not used for this example

      // Initialize the PIE Vector Table To a Known State:

      // This function is found in DSP281x_PieVect.c.// This function populates the PIE vector table with pointers

      // to the shell ISR functions found in DSP281x_DefaultIsr.c.InitPieVectTable();

      // Enable CPU and PIE interrupts

      // This example function is found in the DSP281x_PieCtrl.c file.EnableInterrupts();// Step 4.Initialize all the Device Peripherals to a known state:

      // This function is found in DSP281x_InitPeripherals.c

      // InitPeripherals();skip this for SCI tests

      // Step 5.User specific functions, Reassign vectors(optional), Enable Interrupts:

      LoopCount = 0;

      ErrorCount = 0;

      scia_fifo_init();

      // Initialize the SCI FIFO

      scia_loopback_init();// Initalize SCI for digital loop back

      // Note: Autobaud lock is not required for this example

      // Send a character starting with 0

      SendChar = 0;

      // Step 6.Send Characters forever starting with 0x00 and going through // 0xFF.After sending each, check the recieve buffer for the correct value for(;;)

      { scia_xmit(SendChar);

      while(SciaRegs.SCIFFRX.bit.RXFIFST!=1){ } // wait for XRDY =1 for empty state

      // Check received character

      ReceivedChar = SciaRegs.SCIRXBUF.all;

      if(ReceivedChar!= SendChar)error(1);

      // Move to the next character and repeat the test

      SendChar++;

      // Limit the character to 8-bits

      SendChar &= 0x00FF;

      LoopCount++;

      if(LoopCount==256)

      {

      LoopCount=0;

      SciaRegs.SCICCR.bit.LOOPBKENA =0;// Disable loop back

      SciaRegs.SCICTL1.all =0x0023;

      // Relinquish SCI from Reset while((ReceivedChar = SciaRegs.SCIRXBUF.all)!=0x0d);scia_loopback_init();// Initalize SCI for digital loop back

      }

      } }

      // Step 7.Insert all local Interrupt Service Routines(ISRs)and functions here: void error(int ErrorFlag){

      ErrorCount++;//

      asm(“

      ESTOP0”);// Uncomment to stop the test here //

      for(;;);} // Test 1,SCIA DLB, 8-bit word, baud rate 0x000F, default, 1 STOP bit, no parity void scia_loopback_init(){

      // Note: Clocks were turned on to the SCIA peripheral

      // in the InitSysCtrl()function

      SciaRegs.SCICCR.all =0x0007;

      // 1 stop bit, No loopback

      // No parity,8 char bits,// async mode, idle-line protocol SciaRegs.SCICTL1.all =0x0003;// enable TX, RX, internal SCICLK,// Disable RX ERR, SLEEP, TXWAKE

      SciaRegs.SCICTL2.all =0x0003;SciaRegs.SCICTL2.bit.TXINTENA =1;SciaRegs.SCICTL2.bit.RXBKINTENA =1;

      SciaRegs.SCIHBAUD

      =0x0001;

      SciaRegs.SCILBAUD

      =0x00e7;

      } // Transmit a character from the SCI' void scia_xmit(int a){

      SciaRegs.SCITXBUF=a;}

      // Initalize the SCI FIFO void scia_fifo_init()

      SciaRegs.SCICCR.bit.LOOPBKENA =1;// Enable loop back

      SciaRegs.SCICTL1.all =0x0023;

      // Relinquish SCI from Reset

      {

      SciaRegs.SCIFFTX.all=0xE040;

      SciaRegs.SCIFFRX.all=0x204f;

      SciaRegs.SCIFFCT.all=0x0;}

      //============================= // No more.//=============================

      第三篇:DSP實驗報告

      實驗0 實驗設(shè)備安裝才CCS調(diào)試環(huán)境 實驗?zāi)康模?/p>

      按照實驗講義操作步驟,打開CCS軟件,熟悉軟件工作環(huán)境,了解整個工作環(huán)境內(nèi)容,有助于提高以后實驗的操作性和正確性。實驗步驟:

      以演示實驗一為例:

      1. 使用配送的并口電纜線連接好計算機(jī)并口與實驗箱并口,打開實驗箱電源;

      2.啟動CCS,點擊主菜單“Project->Open”在目錄“C5000QuickStartsinewave”下打開工程文件sinewave.pjt,然后點擊主菜單“Project->Build”編譯,然后點擊主菜單“File->Load Program”裝載debug目錄下的程序sinewave.out;

      3. 打開源文件exer3.asm,在注釋行“set breakpoint in CCS!!”語句的NOP處單擊右鍵彈出菜單,選擇“Toggle breakpoint”加入紅色的斷點,如下圖所示;

      4. 點擊主菜單“View->Graph->Time/Frequency…”,屏幕會出現(xiàn)圖形窗口設(shè)置對話框

      5. 雙擊Start Address,將其改為y0;雙擊Acquisition Buffer Size,將其改為1;DSP Data Type設(shè)置成16-bit signed integer,如下圖所示;

      6. 點擊主菜單“Windows->Tile Horizontally”,排列好窗口,便于觀察

      7. 點擊主菜單“Debug->Animate”或按F12鍵動畫運(yùn)行程序,即可觀察到實驗結(jié)果:

      心得體會:

      通過對演示實驗的練習(xí),讓自己更進(jìn)一步對CCS軟件的運(yùn)行環(huán)境、編譯過程、裝載過程、屬性設(shè)置、動畫演示、實驗結(jié)果的觀察有一個醒目的了解和熟悉的操作方法。熟悉了DSP實驗箱基本模塊。讓我對DSP課程產(chǎn)生了濃厚的學(xué)習(xí)興趣,課程學(xué)習(xí)和實驗操作結(jié)合為一體的學(xué)習(xí)體系,使我更好的領(lǐng)悟到DSP課程的實用性和趣味性。實驗二 基本算數(shù)運(yùn)算

      2.1 實驗?zāi)康暮鸵?/p>

      加、減、乘、除是數(shù)字信號處理中最基本的算術(shù)運(yùn)算。DSP 中提供了大量的指令來

      實現(xiàn)這些功能。本實驗學(xué)習(xí)使用定點DSP 實現(xiàn)16 位定點加、減、乘、除運(yùn)算的基本方法

      和編程技巧。本實驗的演示文件為exer1.out。

      2.2 實驗原理 定點 DSP 中的數(shù)據(jù)表示方法

      C54X 是16 位的定點DSP。一個16 位的二進(jìn)制數(shù)既可以表示一個整數(shù),也可以表

      示一個小數(shù)。當(dāng)它表示一個整數(shù)時,其最低位(D0)表示20,D1 位表示21,次高位(D14)表示214。實現(xiàn) 16 位定點加法

      C54X 中提供了多條用于加法的指令,如ADD,ADDC,ADDM 和ADDS。其中

      ADDS 用于無符號數(shù)的加法運(yùn)算,ADDC 用于帶進(jìn)位的加法運(yùn)算(如32 位擴(kuò)展精度加

      法),而ADDM 專用于立即數(shù)的加法。實現(xiàn) 16 位定點減法

      C54X 中提供了多條用于減法的指令,如SUB,SUBB,SUBC 和SUBS。其中SUBS 用于無符號數(shù)的減法運(yùn)算,SUBB 用于帶進(jìn)位的減法運(yùn)算(如32 位擴(kuò)展精度的減法),而SUBC 為移位減,DSP 中的除法就是用該指令來實現(xiàn)的。實現(xiàn) 16 位定點整數(shù)乘法

      在C54X 中提供了大量的乘法運(yùn)算指令,其結(jié)果都是32 位,放在A 或B 寄存器

      中。乘數(shù)在C54X 的乘法指令很靈活,可以是T 寄存器、立即數(shù)、存貯單元和A 或B 寄存器的高16 位。實現(xiàn) 16 位定點小數(shù)乘法

      在 C54X 中,小數(shù)的乘法與整數(shù)乘法基本一致,只是由于兩個有符號的小數(shù)相乘,其結(jié)果的小數(shù)點的位置在次高的后面,所以必須左移一位,才能得到正確的結(jié)果。C54X 中提供了一個狀態(tài)位FRCT,將其設(shè)置為1 時,系統(tǒng)自動將乘積結(jié)果左移一位。但注意

      整數(shù)乘法時不能這樣處理,所以上面的實驗中一開始便將FRCT 清除。兩個小數(shù)(16 位)

      相乘后結(jié)果為32 位,如果精度允許的話,可以只存高16 位,將低16 位丟棄,這樣仍可

      得到16 位的結(jié)果。6 實現(xiàn) 16 位定點整數(shù)除法

      在 C54X 中沒有提供專門的除法指令,一般有兩種方法來完成除法。一種是用乘法

      來代替,除以某個數(shù)相當(dāng)于乘以其倒數(shù),所以先求出其倒數(shù),然后相乘。這種方法對于

      除以常數(shù)特別適用。另一種方法是使用SUBC 指令,重復(fù)16 次減法完成除法運(yùn)算。實現(xiàn) 16 位定點小數(shù)除法

      在 C54X 中實現(xiàn)16 位的小數(shù)除法與前面的整數(shù)除法基本一致,也是使用循環(huán)的

      SUBC 指令來完成。但有兩點需要注意:第一,小數(shù)除法的結(jié)果一定是小數(shù)(小于1),所以被除數(shù)一定小于除數(shù)。

      2.3 實驗內(nèi)容

      本實驗需要使用C54X 匯編語言實現(xiàn)加、減、乘、除的基本運(yùn)算,并通過DES 的存 貯器顯示窗口觀察結(jié)果。1 編寫實驗程序代碼 用 ccs simulator 調(diào)試運(yùn)行并觀察結(jié)

      2.4 實驗結(jié)果

      1、加法結(jié)果

      2、乘法結(jié)果

      3、減法結(jié)果

      4、除

      2.5 思考題(0.5、0.25)

      實驗三 C54X的浮點數(shù)的算術(shù)運(yùn)

      一、實驗?zāi)康?練習(xí)TMS320C54X 匯編程序的編寫與調(diào)試方法,重點練習(xí)C54X 程序流程控制的方法。學(xué)習(xí)并掌握應(yīng)用 TMS320C54X 來進(jìn)行浮點數(shù)的各種算術(shù)運(yùn)算的算法實現(xiàn)。練習(xí)并掌握 TMS320C54X 的匯編語言的匯編指令系統(tǒng)的使用方法,重點練習(xí)具有C54X 特點的一些在功能上有所擴(kuò)展的特殊指令,并了解這些指令在進(jìn)行算術(shù)運(yùn)算或各種控制時所帶來的方便。練習(xí)并掌握用 CCS 調(diào)試程序的一些基本操作。二.實驗原理 1 浮點數(shù)的表示方法

      在定點運(yùn)算中,小數(shù)點是在一個特定的固定位置。例如,如果一個 32-bit 的數(shù)把小數(shù)點放在最高有效位(也就是符號位)之后,那么就只有分?jǐn)?shù)(絕對值小于1)才能被顯示。在定點運(yùn)

      算系統(tǒng)中,雖然在硬件上實現(xiàn)簡單,但是表示的操作數(shù)的動態(tài)范圍要受到限制。3 浮點數(shù)運(yùn)算的步驟

      程序代碼分成四個 ASM 文件輸入,通過編譯生成.obj 文件,連接生成.out 文件后就可以在DES320PP-U 實驗系統(tǒng)上調(diào)試運(yùn)行(先要創(chuàng)建一個工程文件,然后加入四個工程文件,并且一起編譯,連接。因為每個文件都對下一個文件作了引用)。步驟如下:

      a.首先啟動 setup CCS C5000,在其中設(shè)置目前需要的CCS 的工作狀態(tài)為C54xxsimulator,保存這一設(shè)置并退出。然后再啟動CCS 實驗系統(tǒng)軟件CCS C5000。

      b.在下拉菜單中選擇“File”->“Load Program”以裝入所要調(diào)試的程序fc.out,這時,在反匯編窗口中能看到程序的源代碼。

      c.在下拉菜單中選擇“View”->“CPU Registers”->“CPU Register”,可以看見在CCS 界面下部份會出現(xiàn)CPU 中的相關(guān)寄存器;選擇“View”->“Memory…”,在彈出的“Memory Window Options”窗口中選擇要觀察的區(qū)域為數(shù)據(jù)區(qū),地址開始為0x80h,然后就可以看見出現(xiàn)一個Data Memory 窗口,其中顯示了從0x80h 開始的.bss 區(qū)。

      d.在反匯編窗口中需要觀察的地方設(shè)置斷點:在這條指令處雙擊將其點為紅色即可。比如在加法程序中有指令nop 的位置都可以加一個斷點。

      e.在下拉菜單中選擇“調(diào)試”——“連續(xù)運(yùn)行”(或直接點擊“運(yùn)行程序”按鈕)運(yùn)行浮點數(shù)程序。如果編寫程序時在計算完畢后遇到一個斷點,那么程序到此會自動停止。

      f.當(dāng)示范程序在第一個斷點處停下來時,此時就可以看見程序初始化后的情況:被加數(shù)12.0 以浮點數(shù)的格式放在內(nèi)存區(qū)0x08a-0x08b 中,其值為4140h 和0000h。加數(shù)12.0 放在內(nèi)存區(qū)0x08c-0x08d 中,其值也為4140h 和0000h。

      g.再點擊“運(yùn)行程序”按鈕,之后程序會在下一個斷點處停下來,這時可以看見被加數(shù)被格式轉(zhuǎn)換后的變量op1hm、op1lm 和op1se 的值在內(nèi)存區(qū)0x084-0x086 中,分別為00c0h、0000h 和0082h。同樣加數(shù)被格式轉(zhuǎn)換后的變量op2se、op2hm 和op2lm的值在內(nèi)存區(qū)0x087-0x089 中,分別為0082h、00c0h 和0000h。

      h.再點擊“運(yùn)行程序”按鈕,程序停下來時就可以觀察到在存儲器窗口中表示結(jié)果的變量rlthm、rltlm、rltsign 和rltexp 的值在內(nèi)存區(qū)0x080-0x083 中,其值分別為0040h、0000h、0180h 和0083h。

      i.這時可以看到 A 寄存器中的值為AH=41c0h,AL=0000h 這就是最后的以浮點數(shù)的格式表示的結(jié)果值24(=12+12)。加法運(yùn)算到此結(jié)束。

      j.繼續(xù)點擊“運(yùn)行程序”按鈕,當(dāng)程序再次停下來時就可以看見在A 寄存器中顯示的13.0 與12.0 進(jìn)行減法運(yùn)算的結(jié)果:AH=3f80h,AL=0000h。這是用浮點數(shù)格式表示的數(shù)1(=13-12)。減法運(yùn)算的程序到此結(jié)束。

      k.繼續(xù)點擊“運(yùn)行程序”按鈕,當(dāng)程序再次停下來時就可以看見在A 寄存器中顯示的12.0 與12.0 進(jìn)行乘法運(yùn)算的結(jié)果:AH=4310h,AL=0000h。這是用浮點數(shù)格式表示的數(shù)144(=12*12)。乘法運(yùn)算的程序到此結(jié)束。

      l.繼續(xù)點擊“運(yùn)行程序”按鈕,當(dāng)程序再次停下來時就可以看見在A 寄存器中顯示的12.0 與4.0 進(jìn)行除法運(yùn)算的結(jié)果:AH=4040h,AL=0000h。這是用浮點數(shù)格式表示的數(shù)3(=12/4)。至此加、減、乘、除四種運(yùn)算都運(yùn)行完畢。

      m.如果程序運(yùn)行不正確,請檢查源程序是否有誤,必要時可以在源程序中多插入斷點語句。程序在執(zhí)行到斷點語句時自動暫停,此時可以通過檢查各個寄存器中的值以及內(nèi)存單元中的值來判斷程序執(zhí)行是否正確。

      三.在 CCS 的C54xx simulator 上調(diào)試觀察實驗結(jié)果

      浮點加法斷點一:

      浮點加法斷點二:

      浮點加法斷點三:

      浮點減法

      浮點數(shù)乘法

      浮點數(shù)除法

      四 心得體會

      通過學(xué)習(xí)C54X的浮點數(shù)的算術(shù)運(yùn)算,以及實驗結(jié)果的觀察,使我了解了浮點數(shù)運(yùn)算的原理,學(xué)習(xí)并掌握用TMS320C54X來進(jìn)行浮點數(shù)的各種算術(shù)運(yùn)算的算法實現(xiàn)。實驗四用定時器實現(xiàn)數(shù)字振蕩器

      實驗四 用定時器實現(xiàn)數(shù)字振蕩器

      4.1 實驗?zāi)康?/p>

      在數(shù)字信號處理中,會經(jīng)常使用到正弦/余弦信號。通常的方法是將某個頻率的正弦/余弦值預(yù)先計算出來后制成一個表,DSP 工作時僅作查表運(yùn)算即可。在本實驗中將介紹另一種獲得正弦/余弦信號的方法,即利用數(shù)字振蕩器用疊代方法產(chǎn)生正弦信號。本實驗除了學(xué)習(xí)數(shù)字振蕩器的DSP 實現(xiàn)原理外,同時還學(xué)習(xí)C54X 定時器使用以及中斷服務(wù)程序編寫。另外,在本實驗中我們將使用匯編語言和C 語言分別完成源程序的編寫。

      4.2

      本實驗利用定時器產(chǎn)生一個 2kHz 的正弦信號。定時器被設(shè)置成每25uS 產(chǎn)生一次中斷(等效于采樣速率為40K)。利用該中斷,在中斷服務(wù)程序中用疊代算法計算出一個SIN值,并利用CCS 的圖形顯示功能查看波形。

      4.3 實驗原理 數(shù)字振蕩器原理

      sinkωT,其

      z 變換為

      H(z=

      其中,A=2cosωT, B=-1, C=sinωT。設(shè)初始條件為0,求出上式的反Z 變換得:

      y[k]=Ay[k-1]+By[k-2]+Cx[k-1] 2 C54X 的定時器操作

      C54X 的片內(nèi)定時器利用CLKOUT 時鐘計數(shù),用戶使用三個寄存器(TIM,PRD,TCR)來控制定時器,參見表4-1。在表4-2 中列出了定時器控制寄存器的各個比特位的具體定義。‘VC5402 的另一個定時器(定時器1)的控制寄存器分別為:0x30

      TIM1),0x31(PRD1),0x32(TCR1)。C54X 中斷的使用

      C54X 中用戶可以通過中斷屏蔽寄存器 IMR 來決定開放或關(guān)閉一個中斷請求。圖 4-1 給出了 C5402 的 IMR 寄存器的各個比特位的定義。

      圖 4-1 ‘C5402 的IMR 寄存器

      其中,表示HPI 接口中斷,INT3-INT0 為外部引腳產(chǎn)生的中斷,TXINT 和TRINT 為TDM 串口的發(fā)送和接收中斷,BXINT0 和BRINT0 BSP 串口的發(fā)送和接收中斷,14

      為定時器 0 中斷。在中斷屏蔽寄存器 IMR 中,1 表示允許 CPU 響應(yīng)對應(yīng)的中斷,0 表示禁止。當(dāng)然要 CPU 響應(yīng)中斷,INTM 還應(yīng)該為 0(允許所有的中斷)。

      本實驗的初始化程序讀取中斷向量表的啟始地址,然后設(shè)置的高

      DSP 能正確響應(yīng)中斷,代碼如下:

      ld #0,dp ;設(shè)置DP 頁指針 ssbx intm ;關(guān)閉所有中斷

      ld #vector, a ;讀出中斷向(地址vector 在中斷向量表程序中定義)

      and #0FF80h, a ;保留高9 位(IPTR)andm #007Fh, pmst ;保留PMST 的低7 位 or pmst, a ;

      stlm a, pmst ;設(shè)置PMST(其中包括IPTR)

      4.4 實驗內(nèi)容

      C54X 匯編語言或C 語言實現(xiàn)數(shù)字振蕩器,并通過CCS 提供的圖形顯示窗口觀察出信號波形以及頻譜。實驗分下面幾步完成: 根據(jù)確定數(shù)字振蕩器的頻率,確定系數(shù)。2 啟動 CCS,新建工程文件。

      選擇 Project 菜單中的Options 選項,或使用鼠標(biāo)右鍵單擊工程文件名(如sinewave.pjt)并選擇build options 項來修改或添加編譯、連接中使用的參數(shù)。選擇Linker Output Filename”欄中寫入輸出OUT 文件的名字,如sine.out,你還可以設(shè)置生成的MAP 文件名。4 完成編譯、連接,正確生成OUT 文件。5 選 View→Graph→

      5…打開圖形顯示設(shè)置窗口。在匯編源程序的中斷服務(wù)程序(_tint)中的“nop”語句處設(shè)置斷點。用右鍵單擊圖形顯示窗口,并選擇“Proporties”項以便修改顯示屬性。清除所有斷點,關(guān)閉除波形顯示窗口外的所有窗口,并關(guān)閉工程文件。完成編譯、連接,正確生成OUT 文件。

      10打開 C 源程序(timer.c)窗口,在中斷服務(wù)程序(函數(shù)tint()的“con_buf=0

      Start Address ”改為 buf ;“ Acquisition Buffer Size ”改為“ Display Data Size 128,“DSP DataType”為“32-bit floating point”

      11選擇 Debug→Animate,運(yùn)行程序,觀察輸出波形。

      第四篇:DSP實驗報告

      實驗0 實驗設(shè)備安裝才CCS調(diào)試環(huán)境

      實驗?zāi)康模?/p>

      按照實驗講義操作步驟,打開CCS軟件,熟悉軟件工作環(huán)境,了解整個工作環(huán)境內(nèi)容,有助于提高以后實驗的操作性和正確性。實驗步驟:

      以演示實驗一為例:

      1. 使用配送的并口電纜線連接好計算機(jī)并口與實驗箱并口,打開實驗箱電源; 2.啟動CCS,點擊主菜單“Project->Open”在目錄“C5000QuickStartsinewave”下打開工程文件sinewave.pjt,然后點擊主菜單“Project->Build”編譯,然后點擊主菜單“File->Load Program”裝載debug目錄下的程序sinewave.out;

      3. 打開源文件exer3.asm,在注釋行“set breakpoint in CCS!!”語句的NOP處單擊右鍵彈出菜單,選擇“Toggle breakpoint”加入紅色的斷點,如下圖所示; 4. 點擊主菜單“View->Graph->Time/Frequency?”,屏幕會出現(xiàn)圖形窗口設(shè)置對話框

      5. 雙擊Start Address,將其改為y0;雙擊Acquisition Buffer Size,將其改為1;DSP Data Type設(shè)置成16-bit signed integer,如下圖所示;

      6. 點擊主菜單“Windows->Tile Horizontally”,排列好窗口,便于觀察

      7. 點擊主菜單“Debug->Animate”或按F12鍵動畫運(yùn)行程序,即可觀察到實驗結(jié)果:

      心得體會:

      通過對演示實驗的練習(xí),讓自己更進(jìn)一步對CCS軟件的運(yùn)行環(huán)境、編譯過程、裝載過程、屬性設(shè)置、動畫演示、實驗結(jié)果的觀察有一個醒目的了解和熟悉的操作方法。熟悉了DSP實驗箱基本模塊。讓我對DSP課程產(chǎn)生了濃厚的學(xué)習(xí)興趣,課程學(xué)習(xí)和實驗操作結(jié)合為一體的學(xué)習(xí)體系,使我更好的領(lǐng)悟到DSP課程的實用性和趣味性。

      實驗二 基本算數(shù)運(yùn)算

      2.1 實驗?zāi)康暮鸵?/p>

      加、減、乘、除是數(shù)字信號處理中最基本的算術(shù)運(yùn)算。DSP 中提供了大量的指令來 實現(xiàn)這些功能。本實驗學(xué)習(xí)使用定點DSP 實現(xiàn)16 位定點加、減、乘、除運(yùn)算的基本方法 和編程技巧。本實驗的演示文件為exer1.out。

      2.2 實驗原理

      1)定點 DSP 中的數(shù)據(jù)表示方法

      C54X 是16 位的定點DSP。一個16 位的二進(jìn)制數(shù)既可以表示一個整數(shù),也可以表

      示一個小數(shù)。當(dāng)它表示一個整數(shù)時,其最低位(D0)表示20,D1 位表示21,次高位(D14)表示214。

      2)實現(xiàn) 16 位定點加法

      C54X 中提供了多條用于加法的指令,如ADD,ADDC,ADDM 和ADDS。其中

      ADDS 用于無符號數(shù)的加法運(yùn)算,ADDC 用于帶進(jìn)位的加法運(yùn)算(如32 位擴(kuò)展精度加 法),而ADDM 專用于立即數(shù)的加法。

      3)實現(xiàn) 16 位定點減法

      C54X 中提供了多條用于減法的指令,如SUB,SUBB,SUBC 和SUBS。其中SUBS 用于無符號數(shù)的減法運(yùn)算,SUBB 用于帶進(jìn)位的減法運(yùn)算(如32 位擴(kuò)展精度的減法),而SUBC 為移位減,DSP 中的除法就是用該指令來實現(xiàn)的。

      4)實現(xiàn) 16 位定點整數(shù)乘法

      在C54X 中提供了大量的乘法運(yùn)算指令,其結(jié)果都是32 位,放在A 或B 寄存器 中。乘數(shù)在C54X 的乘法指令很靈活,可以是T 寄存器、立即數(shù)、存貯單元和A 或B 寄存器的高16 位。

      5)實現(xiàn) 16 位定點小數(shù)乘法

      在 C54X 中,小數(shù)的乘法與整數(shù)乘法基本一致,只是由于兩個有符號的小數(shù)相乘,其結(jié)果的小數(shù)點的位置在次高的后面,所以必須左移一位,才能得到正確的結(jié)果。C54X 中提供了一個狀態(tài)位FRCT,將其設(shè)置為1 時,系統(tǒng)自動將乘積結(jié)果左移一位。但注意 整數(shù)乘法時不能這樣處理,所以上面的實驗中一開始便將FRCT 清除。兩個小數(shù)(16 位)相乘后結(jié)果為32 位,如果精度允許的話,可以只存高16 位,將低16 位丟棄,這樣仍可 得到16 位的結(jié)果。

      6)實現(xiàn) 16 位定點整數(shù)除法

      在 C54X 中沒有提供專門的除法指令,一般有兩種方法來完成除法。一種是用乘法 來代替,除以某個數(shù)相當(dāng)于乘以其倒數(shù),所以先求出其倒數(shù),然后相乘。這種方法對于 除以常數(shù)特別適用。另一種方法是使用SUBC 指令,重復(fù)16 次減法完成除法運(yùn)算。

      7)實現(xiàn) 16 位定點小數(shù)除法

      在 C54X 中實現(xiàn)16 位的小數(shù)除法與前面的整數(shù)除法基本一致,也是使用循環(huán)的

      SUBC 指令來完成。但有兩點需要注意:第一,小數(shù)除法的結(jié)果一定是小數(shù)(小于1),所以被除數(shù)一定小于除數(shù)。

      2.3 實驗內(nèi)容

      本實驗需要使用C54X 匯編語言實現(xiàn)加、減、乘、除的基本運(yùn)算,并通過DES 的存 貯器顯示窗口觀察結(jié)果。

      1)編寫實驗程序代碼

      2)用 ccs simulator 調(diào)試運(yùn)行并觀察結(jié)

      2.4 實驗結(jié)果

      1、加法結(jié)果

      2、乘法結(jié)果

      3、減法結(jié)果

      4、除2.5 思考題(0.5、0.25)實驗三 C54X的浮點數(shù)的算術(shù)運(yùn)

      一、實驗?zāi)康?/p>

      1)練習(xí)TMS320C54X 匯編程序的編寫與調(diào)試方法,重點練習(xí)C54X 程序流程控制的方法。2)學(xué)習(xí)并掌握應(yīng)用 TMS320C54X 來進(jìn)行浮點數(shù)的各種算術(shù)運(yùn)算的算法實現(xiàn)。

      3)練習(xí)并掌握 TMS320C54X 的匯編語言的匯編指令系統(tǒng)的使用方法,重點練習(xí)具有C54X 特點的一些在功能上有所擴(kuò)展的特殊指令,并了解這些指令在進(jìn)行算術(shù)運(yùn)算或各種控制時所帶來的方便。

      4)練習(xí)并掌握用 CCS 調(diào)試程序的一些基本操作。

      二.實驗原理

      1)浮點數(shù)的表示方法

      在定點運(yùn)算中,小數(shù)點是在一個特定的固定位置。例如,如果一個 32-bit 的數(shù)把小數(shù)點放在最高有效位(也就是符號位)之后,那么就只有分?jǐn)?shù)(絕對值小于1)才能被顯示。在定點運(yùn)算系統(tǒng)中,雖然在硬件上實現(xiàn)簡單,但是表示的操作數(shù)的動態(tài)范圍要受到限制。

      3)浮點數(shù)運(yùn)算的步驟

      程序代碼分成四個 ASM 文件輸入,通過編譯生成.obj 文件,連接生成.out 文件后就可以在DES320PP-U 實驗系統(tǒng)上調(diào)試運(yùn)行(先要創(chuàng)建一個工程文件,然后加入四個工程文件,并且一起編譯,連接。因為每個文件都對下一個文件作了引用)。步驟如下:

      a.首先啟動 setup CCS C5000,在其中設(shè)置目前需要的CCS 的工作狀態(tài)為C54xxsimulator,保存這一設(shè)置并退出。然后再啟動CCS 實驗系統(tǒng)軟件CCS C5000。

      b.在下拉菜單中選擇“File”->“Load Program”以裝入所要調(diào)試的程序fc.out,這時,在反匯編窗口中能看到程序的源代碼。

      c.在下拉菜單中選擇“View”->“CPU Registers”->“CPU Register”,可以看見在CCS 界面下部份會出現(xiàn)CPU 中的相關(guān)寄存器;選擇“View”->“Memory…”,在彈出的“Memory Window Options”窗口中選擇要觀察的區(qū)域為數(shù)據(jù)區(qū),地址開始為0x80h,然后就可以看見出現(xiàn)一個Data Memory 窗口,其中顯示了從0x80h 開始的.bss 區(qū)。

      d.在反匯編窗口中需要觀察的地方設(shè)置斷點:在這條指令處雙擊將其點為紅色即可。比如在加法程序中有指令nop 的位置都可以加一個斷點。

      e.在下拉菜單中選擇“調(diào)試”——“連續(xù)運(yùn)行”(或直接點擊“運(yùn)行程序”按鈕)運(yùn)行浮點數(shù)程序。如果編寫程序時在計算完畢后遇到一個斷點,那么程序到此會自動停止。

      f.當(dāng)示范程序在第一個斷點處停下來時,此時就可以看見程序初始化后的情況:被加數(shù)12.0 以浮點數(shù)的格式放在內(nèi)存區(qū)0x08a-0x08b 中,其值為4140h 和0000h。加數(shù)12.0 放在內(nèi)存區(qū)0x08c-0x08d 中,其值也為4140h 和0000h。g.再點擊“運(yùn)行程序”按鈕,之后程序會在下一個斷點處停下來,這時可以看見被加數(shù)被格式轉(zhuǎn)換后的變量op1hm、op1lm 和op1se 的值在內(nèi)存區(qū)0x084-0x086 中,分別為00c0h、0000h 和0082h。同樣加數(shù)被格式轉(zhuǎn)換后的變量op2se、op2hm 和op2lm的值在內(nèi)存區(qū)0x087-0x089 中,分別為0082h、00c0h 和0000h。

      h.再點擊“運(yùn)行程序”按鈕,程序停下來時就可以觀察到在存儲器窗口中表示結(jié)果的變量rlthm、rltlm、rltsign 和rltexp 的值在內(nèi)存區(qū)0x080-0x083 中,其值分別為0040h、0000h、0180h 和0083h。

      i.這時可以看到 A 寄存器中的值為AH=41c0h,AL=0000h 這就是最后的以浮點數(shù)的格式表示的結(jié)果值24(=12+12)。加法運(yùn)算到此結(jié)束。

      j.繼續(xù)點擊“運(yùn)行程序”按鈕,當(dāng)程序再次停下來時就可以看見在A 寄存器中顯示的13.0 與12.0 進(jìn)行減法運(yùn)算的結(jié)果:AH=3f80h,AL=0000h。這是用浮點數(shù)格式表示的數(shù)1(=13-12)。減法運(yùn)算的程序到此結(jié)束。

      k.繼續(xù)點擊“運(yùn)行程序”按鈕,當(dāng)程序再次停下來時就可以看見在A 寄存器中顯示的12.0 與12.0 進(jìn)行乘法運(yùn)算的結(jié)果:AH=4310h,AL=0000h。這是用浮點數(shù)格式表示的數(shù)144(=12*12)。乘法運(yùn)算的程序到此結(jié)束。

      l.繼續(xù)點擊“運(yùn)行程序”按鈕,當(dāng)程序再次停下來時就可以看見在A 寄存器中顯示的12.0 與4.0 進(jìn)行除法運(yùn)算的結(jié)果:AH=4040h,AL=0000h。這是用浮點數(shù)格式表示的數(shù)3(=12/4)。至此加、減、乘、除四種運(yùn)算都運(yùn)行完畢。

      m.如果程序運(yùn)行不正確,請檢查源程序是否有誤,必要時可以在源程序中多插入斷點語句。程序在執(zhí)行到斷點語句時自動暫停,此時可以通過檢查各個寄存器中的值以及內(nèi)存單元中的值來判斷程序執(zhí)行是否正確。

      三.在 CCS 的C54xx simulator 上調(diào)試觀察實驗結(jié)果

      浮點加法斷點一: 浮點加法斷點二:

      浮點加法斷點三: 浮點減法

      浮點數(shù)乘法 浮點數(shù)除法

      四 心得體會

      通過學(xué)習(xí)C54X的浮點數(shù)的算術(shù)運(yùn)算,以及實驗結(jié)果的觀察,使我了解了浮點數(shù)運(yùn)算的原理,學(xué)習(xí)并掌握用TMS320C54X來進(jìn)行浮點數(shù)的各種算術(shù)運(yùn)算的算法實現(xiàn)。實驗四用定時器實現(xiàn)數(shù)字振蕩器 實驗四 用定時器實現(xiàn)數(shù)字振蕩器

      4.1 實驗?zāi)康?/p>

      在數(shù)字信號處理中,會經(jīng)常使用到正弦/余弦信號。通常的方法是將某個頻率的正弦/余弦值預(yù)先計算出來后制成一個表,DSP 工作時僅作查表運(yùn)算即可。在本實驗中將介紹另一種獲得正弦/余弦信號的方法,即利用數(shù)字振蕩器用疊代方法產(chǎn)生正弦信號。本實驗除了學(xué)習(xí)數(shù)字振蕩器的DSP 實現(xiàn)原理外,同時還學(xué)習(xí)C54X 定時器使用以及中斷服務(wù)程序編寫。另外,在本實驗中我們將使用匯編語言和C 語言分別完成源程序的編寫。

      4.2 實驗要求

      本實驗利用定時器產(chǎn)生一個 2kHz 的正弦信號。定時器被設(shè)置成每25uS 產(chǎn)生一次中斷(等效于采樣速率為40K)。利用該中斷,在中斷服務(wù)程序中用疊代算法計算出一個SIN值,并利用CCS 的圖形顯示功能查看波形。

      4.3 實驗原理

      1)數(shù)字振蕩器原理

      設(shè)一個傳遞函數(shù)為正弦序列 sinkωT,其z 變換為 H(z)=

      其中,A=2cosωT, B=-1, C=sinωT。設(shè)初始條件為0,求出上式的反Z 變換得:

      y[k]=Ay[k-1]+By[k-2]+Cx[k-1] 2)C54X 的定時器操作

      C54X 的片內(nèi)定時器利用CLKOUT 時鐘計數(shù),用戶使用三個寄存器(TIM,PRD,TCR)來控制定時器,參見表4-1。在表4-2 中列出了定時器控制寄存器的各個比特位的具體定義?!甐C5402 的另一個定時器(定時器1)的控制寄存器分別為:0x30(TIM1),0x31(PRD1),0x32(TCR1)。

      3)C54X 中斷的使用

      在 C54X 中用戶可以通過中斷屏蔽寄存器IMR 來決定開放或關(guān)閉一個中斷請求。圖4-1 給出了C5402 的IMR 寄存器的各個比特位的定義。

      圖 4-1 ‘C5402 的IMR 寄存器

      其中,HPINT 表示HPI 接口中斷,INT3-INT0 為外部引腳產(chǎn)生的中斷,TXINT 和TRINT 為TDM 串口的發(fā)送和接收中斷,BXINT0 和BRINT0 為BSP 串口的發(fā)送和接收中斷,TINT0 為定時器0 中斷。在中斷屏蔽寄存器IMR 中,1 表示允許CPU 響應(yīng)對應(yīng)的中斷,0 表示禁止。當(dāng)然要CPU 響應(yīng)中斷,ST1 寄存器中的INTM 還應(yīng)該為0(允許所有的中斷)。

      本實驗的初始化程序讀取中斷向量表的啟始地址,然后設(shè)置PMST 的高9 位,以便DSP 能正確響應(yīng)中斷,代碼如下:

      ld #0,dp ;設(shè)置DP 頁指針 ssbx intm ;關(guān)閉所有中斷 ld #vector, a ;讀出中斷向(地址vector 在中斷向量表程序中定義)and #0FF80h, a ;保留高9 位(IPTR)andm #007Fh, pmst ;保留PMST 的低7 位 or pmst, a ;

      stlm a, pmst ;設(shè)置PMST(其中包括IPTR)

      4.4 實驗內(nèi)容

      本實驗需要使用 C54X 匯編語言或C 語言實現(xiàn)數(shù)字振蕩器,并通過CCS 提供的圖形顯示窗口觀察出信號波形以及頻譜。實驗分下面幾步完成:

      1)根據(jù)確定數(shù)字振蕩器的頻率,確定系數(shù)。2)啟動 CCS,新建工程文件。

      3)選擇 Project 菜單中的Options 選項,或使用鼠標(biāo)右鍵單擊工程文件名(如sinewave.pjt)并選擇build options 項來修改或添加編譯、連接中使用的參數(shù)。選擇Linker 窗口,在“Output Filename”欄中寫入輸出OUT 文件的名字,如sine.out,你還可以設(shè)置生成的MAP 文件名。

      4)完成編譯、連接,正確生成OUT 文件。

      5)選 View→Graph→Time/Frequency?打開圖形顯示設(shè)置窗口。6)在匯編源程序的中斷服務(wù)程序(_tint)中的“nop”語句處設(shè)置斷點。7)用右鍵單擊圖形顯示窗口,并選擇“Proporties”項以便修改顯示屬性。8)清除所有斷點,關(guān)閉除波形顯示窗口外的所有窗口,并關(guān)閉工程文件。9)完成編譯、連接,正確生成OUT 文件。

      10)打開 C 源程序(timer.c)窗口,在中斷服務(wù)程序(函數(shù)tint())的“con_buf=0;”語句處增加一個斷點。同樣打開圖形顯示窗口,并將“Start Address”改為buf;“Acquisition Buffer Size”改為“Display Data Size”改為128,“DSP DataType”為“32-bit floating point”

      11)選擇 Debug→Animate,運(yùn)行程序,觀察輸出波形。

      第五篇:DSP第一次實驗報告

      信息與通信工程學(xué)院

      信號與信息處理綜合實驗(DSP部分)

      實驗報告

      級: 2012211127

      名: 劉燦

      學(xué)

      號: 2012210732 期: 2015.4.10 一.實驗題目

      Hello World和LED 二.實驗?zāi)康?/p>

      熟悉平DSK6416開發(fā)臺,掌握CCS軟件的基本操作流程,達(dá)到熟練操作軟、硬件系統(tǒng)開發(fā)、調(diào)試的目的。

      三.實驗任務(wù)及要求

      1.任務(wù)

      (1)在控制臺中顯示Hello World

      運(yùn)行程序后,在控制臺顯示Hello World(2)控制LED燈閃爍

      FTP給出一個LED的程序模板,可以控制LED 0的閃爍?;谠撃0?,需要完成:

      (a)修改閃爍的頻率;

      (b)通過寫8bit數(shù)值到CPLD寄存器來控制LED,使得4個LED以200ms的頻率同時打開和關(guān)閉。

      2.要求

      (1)實現(xiàn)基本功能且不出現(xiàn)任何錯誤

      (2)基于原理實現(xiàn)多功能的擴(kuò)展

      四.組內(nèi)分工

      劉杰

      程序代碼的編寫與調(diào)試

      劉燦

      建立工程以及目標(biāo)系統(tǒng)的配置

      五.實驗內(nèi)容及流程

      1.實驗內(nèi)容

      這次實驗內(nèi)容是顯示hello world和控制LED燈的閃爍。由于是dsp的第一次實驗,內(nèi)容比較簡單,主要還是在于熟悉ccs這個軟件在進(jìn)行dsp開發(fā)時的具體建立工程、配置文件、導(dǎo)入實驗板和程序燒寫調(diào)試的過程和步驟。

      2.實驗流程介紹

      1.新建工程

      (1)打開ccs后點擊菜單中的“File->New->Project”,選擇“CCS project”,然后進(jìn)入下一個頁面進(jìn)行工程的命名。

      (2)命名完成之后是選擇工程的硬件平臺,我們實驗室所使用的實驗板是DSK6416,它的芯片為C6000系列的TMS320C6416,所以在“Project Type”下拉框中選擇“C6000”,其余選項默認(rèn)即可。

      (3)接下來是設(shè)置工程屬性,在“Device Variant”下拉欄中選擇“Generic devices-> Generic C64xx Device”,“Device Endianness”選擇little,其余保持默認(rèn)值。

      (4)然后工程模板選擇“hello world”,就完成了工程的新建。

      2.代碼編譯和鏈接

      (1)添加源代碼(2)配置CSL庫

      將C6000的CSL庫,存在本地PC機(jī)硬盤上,我們hello world工程的代碼路徑為C:ticsl。在pll_led工程圖標(biāo)上單擊右鍵,選擇“Show Build Settings…”來設(shè)置編譯屬性,設(shè)置include options,單擊新建,在對話框中輸入“C:ticslinclude”

      (3)定義芯片型號:

      在“predefine symbols”選項中輸入芯片型號CHIP_6416(4)指定鏈接庫:

      在工程屬性的“C6000 Linker”的“File Search Path”選項中需要添加DSK6416和CSL6416這兩個庫,其路徑分別為“c:tidsk6414libdsk6414bsl.lib”和“c:ticsllib_2xcsl6414.lib”

      (5)添加cmd文件:

      在工程路徑下新建一個文本文件,將其后綴修改成.cmd,名稱可隨便修改,并且在文本文件中寫入下列內(nèi)容:-stack 0x400-heap 0x400 保存并編譯工程,生成“.out”文件。

      3.軟件調(diào)試

      在工程中運(yùn)行“New->Target Configuration File”新建配置文件,命名為DSK6416_led.ccxml來完成CCS軟件和板卡的連接。命名完后在配置文件Basic中Connection選擇Spectrum digital DSK-EVM-eZdsp onboard USB Emulator,Device選擇DSK6416,保存。然后進(jìn)行調(diào)試,設(shè)置斷點。最后將程序燒錄到實驗板中,檢查實驗結(jié)果。

      六.源代碼及注釋

      #include #include “dsk6416.h” #include “dsk6416_led.h” #include “dsk6416_dip.h” void main(void){

      printf(“Hello World!n”);

      //控制臺顯示“hello world”

      DSK6416_init();

      //初始化LED和DIP

      DSK6416_LED_init();

      DSK6416_DIP_init();

      while(1){

      if(DSK6416_DIP_get(3)== 0)

      //開關(guān)3控制LED燈以200ms閃爍

      {

      DSK6416_LED_toggle(3);

      DSK6416_waitusec(200000);

      }

      else if(DSK6416_DIP_get(2)== 0)

      //開關(guān)2控制LED燈以100ms閃爍

      {

      DSK6416_LED_toggle(3);

      DSK6416_waitusec(100000);

      }

      else if(DSK6416_DIP_get(1)== 0)

      //開關(guān)1控制4個燈以200ms同時亮滅

      {

      DSK6416_rset(DSK6416_USER_REG, 0x0f);

      DSK6416_waitusec(200000);

      DSK6416_rset(DSK6416_USER_REG, 0x00);

      DSK6416_waitusec(200000);

      }

      else if(DSK6416_DIP_get(0)== 0)//開關(guān)0控制4個燈循環(huán)亮滅,間隔200ms

      {

      for(int i=0;i<4;i++){

      DSK6416_LED_toggle(i);

      DSK6416_waitusec(200000);}

      }

      } }

      七.實驗結(jié)果

      1.按照實驗步驟進(jìn)行操作后,實驗控制臺正常顯示顯示“Hello World”,如下圖:

      2.實驗板上DIP 0~3開關(guān)控制的LED燈閃爍效果也符合程序預(yù)期的效果。

      八.遇到的問題

      由于第一次實驗的內(nèi)容較為簡單,我們在編程方面沒有遇到什么困難,工程的建立和系統(tǒng)的配置也能照著實驗指導(dǎo)書按部就班的完成。但是在連接實驗板時我們遇到了連接不上的問題。機(jī)房的電腦連接實驗板后安裝不了驅(qū)動,我們自己帶的筆記本電腦也有沒有反應(yīng)的現(xiàn)象。后來我們換了同學(xué)的電腦才成功的連接上。

      九.心得體會

      第一次的實驗總的來說比較容易,主要是對ccs這個軟件的操作和建立工程的過程的熟悉。通過這次實驗我對于這學(xué)期dsp實驗的流程和步驟有了大體的了解,也熟悉了ccs的編程和調(diào)試,也為下次的實驗打好了基礎(chǔ)。

      下載dsp實驗報告心得體會word格式文檔
      下載dsp實驗報告心得體會.doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        dsp課程設(shè)計實驗報告總結(jié)

        DSP課程設(shè)計總結(jié) (2013-2014學(xué)年第2學(xué)期) 題目 :專業(yè)班級 :電子1103 學(xué)生姓名 : 萬蒙學(xué)號 : 11052304 指導(dǎo)教師 :設(shè)計成績 :2014 年 6 月 1 目 錄 一 設(shè)計目的--------3 二 系統(tǒng)分......

        關(guān)于dsp心得體會

        關(guān)于dsp心得體會 篇一:dsp實驗報告心得體會 TMS320F2812x DSP原理及應(yīng)用技術(shù)實驗心得體會 1. 設(shè)置環(huán)境時分為軟件設(shè)置和硬件設(shè)置,根據(jù)實驗的需要設(shè)置,這次實驗只是軟件仿真,可以......

        DSP實驗心得體會

        篇一:dsp實驗報告心得體會 tms320f2812x dsp原理及應(yīng)用技術(shù)實驗心得體會 1. 設(shè)置環(huán)境時分為軟件設(shè)置和硬件設(shè)置,根據(jù)實驗的需要設(shè)置,這次實驗只是 軟件仿真,可以不設(shè)置硬件,......

        萬能實驗報告心得體會

        萬能實驗報告心得體會5篇萬能實驗報告心得會(一):本次實訓(xùn),是對我本事的進(jìn)一步鍛煉,也是一種考驗。從中獲得的諸多收獲,也是很可貴的,是十分有意義的。經(jīng)過這次實訓(xùn),我收獲了很多,一......

        實驗報告及心得體會

        實驗報告及心得體會 實驗名稱:七人表決器 實驗?zāi)康模和ㄟ^Max+plus2軟件實現(xiàn)七人表決功能,熟練掌握用Max+plus2實現(xiàn)七人表決器的操作步驟 實驗步驟: 1.打開Max+plus2軟件 2.打開f......

        基于DSP開關(guān)電源

        基于DSP的開關(guān)電源 摘要 本文以TMs320LF2407A為控制核心,介紹了一種基于DSP的大功率開關(guān)電源的設(shè)計方案。該電源采用半橋式逆變電路拓?fù)浣Y(jié)構(gòu),應(yīng)用脈寬調(diào)制和軟件PID調(diào)節(jié)技術(shù)實......

        dsp作業(yè)

        .c圖 實驗二 #define UINT unsigned int UINT i,*p,*n; void main(void) { p=(UINT *)0x0300; for(i=0;i PROG PAGE 0 .cinit > PROG PAGE 0 //.switch > PROG PAGE......

        DSP課程設(shè)計

        TMS320C54x與PC通信系統(tǒng)的設(shè)計(單號) 一、設(shè)計目的 本次課程設(shè)計的目的是為了進(jìn)一步提高學(xué)生的自我開發(fā)能力,培養(yǎng)學(xué)生的查閱資料,獨(dú)立分析問題、解決問題以及實際動手的能力。也......