文档库 最新最全的文档下载
当前位置:文档库 › DSP学习笔记

DSP学习笔记

DSP学习笔记
DSP学习笔记

DSP学习笔记

引言:学习DSP的时间有两个多月了,收获很多新知识,我们要每天都有进步才行,以下内容没有特别的顺序,跟具自己的学习情况写的,如果有不对的地方希望指出来,如果有不懂得也可以问我,大家相互交流很重要,我的一个邮箱:baijc@https://www.wendangku.net/doc/1c12209314.html,欢迎联系!

建立新工程过程中:

问题1:

"GPIO_Study.c", line 61: fatal error: could not open source file "DSP280x_Device.h"

1 fatal error detected in the compilation of "GPIO_Study.c".

解决方法:

因为project →build options→compiler→preprocessor中,要包含的头文件的地址没有加进去,你可以找到头文件的地址,然后加进去。

问题2:

undefined first referenced

symbol in file

--------- ----------------

_c_int00 D:\DSP

study\test3\Debug\DSP280x_CodeStartBranch.obj

FS$$MPY D:\DSP

study\test3\Debug\DSP280x_CpuTimers.obj

FS$$TOL D:\DSP

study\test3\Debug\DSP280x_CpuTimers.obj

>> error: symbol referencing errors - './Debug/test3.out' not built

或者下面的问题:

undefined first referenced

symbol in file

--------- ----------------

_c_int00 D:\DSP

study\GPIO_Study\Debug\DSP280x_CodeStartBranch.obj

>> error: symbol referencing errors - './Debug/GPIO_Study.out' not built

解决办法都是下面:

这个问题是因为没有加在库文件,请在project →build options→linker→libraries 中加入rts2800.lib。

问题3:

>> warning: creating .stack section with default size of 400 (hex) words.

Use

-stack option to change the default size.

>> error: can't allocate .stack, size 00000400 (page 1) in RAMM1 (avail:

00000380)

>> error: errors in input - ./Debug/GPIO_Study.out not built

解决办法:

这个问题是关于堆栈存储大小的问题,他是说,创建堆栈段使用与设置400个字,并建议在“堆栈操作”中改变这个与设置。这时,需要进行如下修改就可通过:project→ build options→Linker→basic,在Stack Size(-stack):填入800或者其他小于1024的数值。

调试程序:

在编译完成之后,要来下载程序并进行功能调试。File→Load Program,在工程文件夹下面的Debug文件夹下,选中**.out文件,点击打开,便开始下载程序了。将**.out文件下载到目标板上2812的RAM中。

注意,这里是调试,所以将程序下载到RAM。等到最后您要固化程序的时候,就得下载到FLASH了,因为断电之后,RAM里面所有的数据都会消失。

(Run和Animate的区别,Run是如果遇到断点的话它就停下来了。而Animate 就算遇到断点时先停止DSP内核,刷新窗口,然后接着继续启动运行,常用来连续刷新变量窗口和生成graph图形等)——知识储备。

添加断点:

加上断点的方法很简单,只要在该行代码前双击就行。双击之后,这行代码前面会出现一个红色圆块。另外一种添加断点的方法,就是在刚才的编译工具栏上,点一下那个小手图形的按钮,前提是你要把光标移动到想要设置断点的哪一行上。

使用watch window:

Watch window的作用是来观察程序运行过程中的各个变量的值。调用watch window的方法是点击菜单栏的"View ","watch window",这时watch window就会显示在CCS下方的信息区域;

选中所要观察的变量,然后右键,在右键菜单中选择add to watch window。

调试代码观察:

我们在调试程序的时候经常想让程序从Main函数开使运行,点Debug→Go main。既能看到源文件中代码的执行情况,又能看到汇编指令的执行情况View→Mixed Source/Asm;

关于F2812中用C语言来实现中断的说明

1.首先在.cmd中定位系统中断表:

MEMORY

{

PAGE 0 : ......................................

PAGE 1 : ......................................

PIE_VECT : origin = 0x000D00, length = 0x000100 ......................................

}

SECTIONS

{ ...................................

PieVectTable : > PIE_VECT, PAGE = 1 .....................................

}

2.在C中制定该中断的结构体:

#pragma DATA_SECTION(PieVectTable,"PieVectTable");

struct PIE_VECT_TABLE PieVectTable;(在DSP28_GlobalVariableDefs.C中初始化)3.用一组常数(按照中断向量的顺序)初始化该名字为PIE_VECT_TABLE的表:typedef interrupt void(*PINT)(void);这里有些一问,一下应该为函数名??

// Define Vector Table:

struct PIE_VECT_TABLE {

// Reset is never fetched from this table.

// It will always be fetched from 0x3FFFC0 in either

// boot ROM or XINTF Zone 7 depending on the state of

// the XMP/MC input signal. On the F2810 it is always

// fetched from boot ROM.

PINT PIE1_RESERVED;

PINT PIE2_RESERVED;

PINT PIE3_RESERVED;

PINT PIE4_RESERVED;

PINT PIE5_RESERVED;

PINT PIE6_RESERVED;

PINT PIE7_RESERVED;

PINT PIE8_RESERVED;

PINT PIE9_RESERVED;

PINT PIE10_RESERVED;

PINT PIE11_RESERVED;

PINT PIE12_RESERVED;

PINT PIE13_RESERVED;

// Non-Peripheral Interrupts:

PINT XINT13; // XINT13

PINT TINT2; // CPU-Timer2

PINT DATALOG; // Datalogging interrupt

PINT RTOSINT; // RTOS interrupt

PINT EMUINT; // Emulation interrupt

PINT XNMI; // Non-maskable interrupt

PINT ILLEGAL; // Illegal operation TRAP

PINT USER0; // User Defined trap 0

PINT USER1; // User Defined trap 1

PINT USER2; // User Defined trap 2

PINT USER3; // User Defined trap 3

PINT USER4; // User Defined trap 4

PINT USER5; // User Defined trap 5

PINT USER6; // User Defined trap 6

PINT USER7; // User Defined trap 7

PINT USER8; // User Defined trap 8

PINT USER9; // User Defined trap 9

PINT USER10; // User Defined trap 10

PINT USER11; // User Defined trap 11

// Group 1 PIE Peripheral Vectors:

PINT PDPINTA; // EV-A

PINT PDPINTB; // EV-B

PINT rsvd1_3;

PINT XINT1;

PINT XINT2;

PINT ADCINT; // ADC

PINT TINT0; // Timer 0

PINT WAKEINT; // WD .............

.............

// Group 12 PIE Peripheral Vectors:

PINT rsvd12_1;

PINT rsvd12_2;

PINT rsvd12_3;

PINT rsvd12_4;

PINT rsvd12_5;

PINT rsvd12_6;

PINT rsvd12_7;

PINT rsvd12_8;

};

然后在使我们在.cmd文件中定义的表有以上属性:extern struct PIE_VECT_TABLE PieVectTable;(在.h文件中)4.初始化该表(在.c文件中)使之能够为主程序所使用:const struct PIE_VECT_TABLE PieVectTableInit = {

PIE_RESERVED, // Reserved space

PIE_RESERVED,

PIE_RESERVED,

PIE_RESERVED,

PIE_RESERVED,

PIE_RESERVED,

PIE_RESERVED,

PIE_RESERVED,

PIE_RESERVED,

PIE_RESERVED,

PIE_RESERVED,

PIE_RESERVED,

PIE_RESERVED,

// Non-Peripheral Interrupts

INT13_ISR, // XINT13 or CPU-Timer 1

INT14_ISR, // CPU-Timer2

DATALOG_ISR, // Datalogging interrupt

RTOSINT_ISR, // RTOS interrupt

EMUINT_ISR, // Emulation interrupt

NMI_ISR, // Non-maskable interrupt

ILLEGAL_ISR, // Illegal operation TRAP

USER0_ISR, // User Defined trap 0

USER1_ISR, // User Defined trap 1

USER2_ISR, // User Defined trap 2

USER3_ISR, // User Defined trap 3

USER4_ISR, // User Defined trap 4

USER5_ISR, // User Defined trap 5

USER6_ISR, // User Defined trap 6

USER7_ISR, // User Defined trap 7

USER8_ISR, // User Defined trap 8

USER9_ISR, // User Defined trap 9

USER10_ISR, // User Defined trap 10

USER11_ISR, // User Defined trap 11

// Group 1 PIE Vectors

PDPINTA_ISR, // EV-A

PDPINTB_ISR, // EV-B

rsvd_ISR,

XINT1_ISR,

XINT2_ISR,

ADCINT_ISR, // ADC

TINT0_ISR, // Timer 0

WAKEINT_ISR, // WD .............

.............

// Group 12 E Vectors

rsvd_ISR,

rsvd_ISR,

rsvd_ISR,

rsvd_ISR,

rsvd_ISR,

rsvd_ISR,

rsvd_ISR,

rsvd_ISR,

};

//---------------------------------------------------------------------------

// InitPieVectTable:

//---------------------------------------------------------------------------

// This function initializes the PIE vector table to a known state. // This function must be executed after boot time.

//

void InitPieVectTable(void)

{

int16 i;

Uint32 *Source = (void *) &PieVectTableInit;

Uint32 *Dest = (void *) &PieVectTable;

EALLOW;

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

*Dest++ = *Source++;

EDIS;

// Enable the PIE Vector Table

PieCtrl.PIECRTL.bit.ENPIE = 1;

}

5.中断服务程序:

让以上的数值指向你所要的服务程序,例如:

PieVectTable.TINT2 = &ISRTimer2;

那么,ISRTimer2也就成了中断服务程序,

×××切记:一定要在主程序的开始先声明该程序:interrupt void ISRTimer2(void);

.............

.............

然后按照您的需要编制该程序:

interrupt void ISRTimer2(void)

{

CpuTimer2.InterruptCount++;

}

编程中遇到的问题:

1、line 257: warning: last line of file ends without a newline;

解决方法:

点击出现的问题条,看光标定位在哪里,然后一点点删除,直到把编程的文字删除,最后把删除的写出来,回车就行了,因为回车的格式要在编辑状态哈哈!

28016的定时器笔记

学过2812的人会知道,2812的定时器和28016的定时器的寄存器很不一样。但是从功能上将差不多。

关于28016定时器的时钟的讨论;

定时器的时钟是由SYSCLKOUT经过TBCTL中的CLKDIV和HSPCLKDIV进行配置;

主要说明,我们应该记得SYSCLKOUT和HSPCLK之间还可以分频,但是在这里这个寄存器不影响。

关于28016定时器的时钟同步的讨论;

如果我们想使每个PWM模块具有同步时钟,我们可以通过软件强制各个模块之间同步,设定步骤如下:

EPwm1Regs.TBCTL.bit.SYNCOSEL = 0 // Pass through

EPwm2Regs.TBCTL.bit.SYNCOSEL = 0; // Pass through

EPwm3Regs.TBCTL.bit.SYNCOSEL = 0; // Pass through

EPwm1Regs.TBCTL.bit.SWFSYNC = 1;

EPwm2Regs.TBCTL.bit.SWFSYNC = 1;

EPwm3Regs.TBCTL.bit.SWFSYNC = 1;

以上程序是设定PWM1/2/3同步,我们由于我们只采用向上计数,所以不需要设定计数方

向位。

接下来如果我们想PWM1与PWM2输出相位不一样,保持某个相位差,我们可以通过寄存器设定;

EPwm1Regs.TBCTL.bit.PHSEN = TB_ENABLE;

EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE;

EPwm3Regs.TBCTL.bit.PHSEN = TB_ENABLE;

EPwm1Regs.TBPHS.half.TBPHS = 0;

EPwm2Regs.TBPHS.half.TBPHS = 250;

EPwm3Regs.TBPHS.half.TBPHS = 500;

首先使能,然后赋予值;

关于一些其他的配置如下:

EPwm3Regs.TBPRD = PWM3_TIMER_TBPRD;

EPwm3Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; // Count up

EPwm3Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // Enable INT on Zero event

EPwm3Regs.ETSEL.bit.INTEN = PWM3_INT_ENABLE; // Enable INT

EPwm3Regs.ETPS.bit.INTPRD = ET_1ST; // Generate INT on 3rd event

关于28016PWM配置的讨论

PWM1的A/B的独立配置;

除了counter-compare比较寄存器,CMPA,CMPB,主要还是配置控制寄存器CMPCTL,对于影子寄存器的配置,还有影子寄存器的装载模式。

这里主要讲关于PWM中action qualifier的配置;

模式1:

// Setup shadow register load on ZERO

EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;

EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;

EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;

EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;

// Set Compare values

EPwm1Regs.CMPA.half.CMPA = EPWM1_MIN_CMPA; // Set compare A value

EPwm1Regs.CMPB = 500; // Set Compare B value

// Set actions

EPwm1Regs.AQCTLA.bit.ZRO = AQ_CLEAR; // Set PWM1A on Zero

EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; // Clear PWM1A on event A, up coun EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET; // Set PWM1B on Zero

EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR; // Clear PWM1B on event B, up count // Interrupt where we will change the Compare Values

EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // Select INT on Zero event

EPwm1Regs.ETSEL.bit.INTEN = 1; // Enable INT

EPwm1Regs.ETPS.bit.INTPRD = ET_3RD; // Generate INT on 3rd event

其中红色的为PWM的输出方式配置,当PWM1.A在counter==0时,输出为0,在counter==CMPA时,且在向上计数,输出为1;而PWM1.B相反。

模式二:

// Set actions

EPwm2Regs.AQCTLA.bit.PRD = AQ_CLEAR; // Clear PWM2A on Period

EPwm2Regs.AQCTLA.bit.CAU = AQ_SET; // Set PWM2A on event A, up count EPwm2Regs.AQCTLB.bit.PRD = AQ_CLEAR; // Clear PWM2B on Period

EPwm2Regs.AQCTLB.bit.CBU = AQ_SET; // Set PWM2B on event B, up coun t 其中红色的为PWM的输出方式配置,当PWM1.A在counter==period时,输出为0,在counter==CMPA时,且在向上计数,输出为1;而PWM1.B相同;

模式三:

// Set Actions

EPwm3Regs.AQCTLA.bit.CAU = AQ_SET; // Set PWM3A on event B, up count EPwm3Regs.AQCTLA.bit.CBU = AQ_CLEAR; // Clear PWM3A on event B, up count

其中红色的为PWM的输出方式配置,当PWM1.A在counter==CMPA时,输出为1,在counter==CMPB时,且在向上计数,输出为0,也就是计数在CMPA与CMPB之间时输出为1;

模式四:

EPwm3Regs.AQCTLB.bit.ZRO = AQ_TOGGLE; // Toggle EPWM3B on Zero

此模式强制整个周期输出高或者输出地,与CMPA与CMPB无关,

关于28016PWM死区时间配置的讨论

主要与死区有关的是三个寄存器:

Dead-Band Generator Control Register (DBCTL);

Dead-Band Generator Rising Edge Delay Register (DBRED);

Dead-Band Generator Rising Edge Delay Register (DBRED) Field Descriptions;

首先清楚延时时间的计算

为:DBRED*TBCLK;

然后弄懂DBCTL就可以了。

注意理解下图:

弄懂3个控制位什么意思;

OUT_MODE,POLSEL,IN_MODE

注意第二位,这位通常用在输入为同一个通道时,也就是IN_MODE=0X00/0X03时。

简单看一些deadband的配置:

EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;

输出之前,输入上升沿下降沿都被延时;

EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HI;

没有取反过程;

EPwm1Regs.DBCTL.bit.IN_MODE = DBA_ALL;

输入全部为A,此为习惯性的配置;

EPwm1Regs.DBRED =1000;

EPwm1Regs.DBFED =500;

一周解决的为题:

我的sin()函数能够正常执行,cos()函数也能正常执行,但是当sin()计算完再计算cos(),仿真环境就会进入逻辑错误中断,请问怎么解决,是不是该重装CCS。

原因:之前一直把程序烧到RAM里,总是只能执行一个sin()和cos()函数,然后RAM的空间就不够了,由于也不会改RAM空间的大小,所以就把程序直接下到flash里面,结果就好了。

遇到CCS和仿真器连不上的问题;

Error connecting to the target:

Error 0x80000240/134

Fatal Error during: Initialization, OCS

Unknown Error

Sequence ID: 0

Error Code: 134

Error Class: 0x80000240

I/O Port = 240

解决办法:

我也试着解决这个问题,重装了一次,结果没有用。想着觉得是USB驱动的问题,然后就在设备管理器中,把USB的驱动删除了,有重新装了一遍,结果没问题了。原因应该是以前用的USB口安装的驱动,又被用于安装其他的驱动,结果以前的USB驱动不能用了。2011.1.19

我在用dsp中的cos()与sin()函数时,对他们的结果做验证,发现他们有的计算出来的结果,和我用计算器计算出来的结果不一样,还差不少。

解决办法:

首先坚信CCS的函数计算不会轻易的出错,然后我就去查程序的问题,查不好长时间觉得没问题,就继续看程序运行的结果,结果发现有些计算正确,有些不正确,就在想执行过程中难道有随机性,结果突然想到中断的问题,我是在中断中作了个旋转矢量,通过中断来使它旋转,而直接把中断中的值,拿来在每个sin,cos中用,所以才出问题的。

结果改动了一点就行了,将中断中的值,在用的地方,重新付给另一个变量,这样就能解决了。因为sin,cos执行需要时间较长,而普通的赋值却不是。

Flash API Error #65535:

The device is in limp mode, operation failed。以前一直没有问题,不知道怎么突然就这样了。解决办法:

烧写的插件(网上这么叫)没有装好的原因,我觉得就是仿真器第一次没连接好,拔掉再连接几次就行了。

2011.1.20

fatal error: file "D:\\DSP study\\ADC_Study\\Debug\\ADC_Study.obj" has a

Tag_Memory_Model attribute value of "2" that is different than one

previously seen ("1"); combining incompatible files

解决办法:

问题的出现可能是你lib下的库有所改变引起的,project->built options->linker->libraries->rts2800_ml.lib,因为之前一直用它,后来改成rts2800.lib就出现这个问题了,改回去就可以了。

data verification failed at address 0x8000

Please verify target memory and memory map

解决方法:

可能是gel的问题,重新载入几次,如果不行的话,就把仿真器重新接几次,问题就应该没有了,多数是硬件的问题。

针对CCS的图像显示,一个方式为对程序中的某些变量画图,另一种方式是对DSP采集的数据画图,两者在方法上有所不同。

首先声明画图很简单,只要把重要的记住就可以了,其他的尝试怎么用就OK了,不用刻意去学,浪费时间;

至于这张图中各个栏代表什么,你随便找个资料就给你

说得很清楚,但是没有一份资料教你怎么用的,这就是

网上资料的弊端。

你只要把右图画绿线的看懂就总够了,其他的试着改变参

数,看看结果你就明白了。

接下来给你看看我的配置:

Dual time 和single time的区别在于显示几个波形

Svpwm_Time1和Svpwm_Time0 是我程序内部的

两个变量,也就是SVPWM的t1,t0,记得前面加

&,不然结果不对,Acquisition Buffer Size设为1,

因为我想通过终端来调试,每次终端,然后刷新

一次数据,这样很方便,找点资料看,这里不详

细说明了,还有采样时间,根据你的要求来定。

波形如下:

是不是很matlab中一样哈!

另一种方式,不能采用中断了,因为中断时间太长,影响采样速度。

建议:在程序中建一个大的数组,然后运行一段时间,再将数组显示在CCS中,Acquisition Buffer Size 此时不能为1了,要和你的数组一样长,Display Data Size等于Acquisition Buffer Size就可以,显示出来就可以了。

如下图:这是我AD采样的波形,采集一个正弦波形,采用两个通道。

2011.01.24

error: symbol "_main" redefined: first defined in "D:\\DSP

study\\DSP_Perfect\\Dsp_Perfect_110121W\\Perfect\\Debug\\Perfect.obj";

redefined in "D:\\DSP

study\\DSP_Perfect\\Dsp_Perfect_110121W\\Perfect\\Debug\\SCI_485.obj"

解决办法:

这个问题是系统编译以后,在perfect.c和SCI_485.c中分别有main();结果编译会报错。2011.01.22

"D:\\DSP study\\DSP_Perfect\\Dsp_Perfect_110121W\\cmd\\F28016.cmd", line 125: error: run placement fails for object ".ebss", size 0x3ba (page 1). Available

ranges:

RAMM1 size: 0x380 unused: 0x380 max hole: 0x380

error: errors encountered during linking; "./Debug/Perfect.out" not built

解决办法:

双击错误提示,进入错误的地方,原因是我们申明的变量数,超过了RAMM1的声明的大小,所以找过RAMM1,然后把size扩大就可以了,RAMM1 : origin = 0x000480, length = 0x000400 /* on-chip RAM block M1 */,注意但是不能超过1024,也就是说最大是0x000400。同时也把project→ build options→Linker→basic,在Stack Size(-stack):填入800或者其他小于1024的数值。以免以后有出些不明的问题。

DSP课程设计总结报告

课程设计总结报告课程名称DSP控制器及其应用 设计题目万年历设计 业专电子信息工程 班级 姓名 学号

指导教师 报告成绩 信息工程学院 年六月十三日二〇一四 录目 言前 (3) 设计要求第一章4.....................................................................................基本要求1.14.....................................................................................

系统的组成和工作原理第二章5............................................................. 芯片的工作原理VC5509APGE2.1DSPTMS3205.............................. 液晶显示器的工作原理2.2LCD16026..............................................主电路图及程序流程图第三章.. (7) 主电路图3.17...................................................................................... 程序总流程图3.27.............................................................................. 程序分块流程图3.38..........................................................................软件程序设计第四章9.............................................................................

我的首个DSPTMSFLED灯闪烁项目实验总结

买视频资料、买书、买开发板(F28335)、各种版本开发环境安装,导入工程、创建工程、了解controlSUITE,终于创建了一个工程,且是按照自己的意愿将代码在开发板上跑起来,现总结如下: 实验目的: 将开发板上可控的两个LED灯LD3、LD4实现交替闪烁,并在RAM中仿真实验; 实验步骤: 1、创建工程、且包含main.c文件

按照上面的五步操作,然后点击【finish】。 遇到的问题:在第四步如果设置新的工作空间文件夹,在点击【finish】后,应实际的去工作空间文件夹下去看一下,是否确实创建好了。

建议:在点击完【finish】后,项目框架基本创建完成,然后关闭CCS,再次进去看看是否直接进入刚刚创建好的工程。如果不能最好分析一下原因,重建一次。我在这里反复了3次,也就是重建3次才成功。如果可以进入,进入后面的步骤。 2、复制controlSUITE下C:\ti\controlSUITE\device_support\f2833x下面的DSP2833x_common和 DSP2833x_headers两个文件夹到所创建的工程目录; 复制完成后最好仔细浏览一下每个目录下都有哪些文件。 3、在项目的属性设置对话框中设置include路径如下: 4、在main.c添加如下头文件: #include "DSP2833x_Device.h" // DSP2833x Headerfile Include File #include "DSP2833x_Examples.h" // DSP2833x Examples Include File 5、这是可以编译一下,肯定会出错,需要删除一些文件。如下 以上红圈内的文件全部删除 6、然后再编译一下,看看有什么问题就自己处理吧,呵呵。。。。。 7、现在已经有了基本的函数库、头文件,剩下就是实现LED灯的控制了。 代码如下: #include"DSP2833x_Device.h"// DSP2833x Headerfile Include File

DSP学习心得笔记

DSP学习心得笔记 ---------------- 白建成.baijc.icekoor 建立新工程过程中: 问题1: "GPIO_Study.c", line 61: fatal error: could not open source file "DSP280x_Device.h" 1 fatal error detected in the compilation of "GPIO_Study.c". 解决方法: 因为project →build options→compiler→preprocessor中,要包含的头文件的地址没有加进去,你可以找到头文件的地址,然后加进去。 问题2: undefined first referenced symbol in file --------- ---------------- _c_int00 D:\DSP study\test3\Debug\DSP280x_CodeStartBranch.obj FS$$MPY D:\DSP study\test3\Debug\DSP280x_CpuTimers.obj FS$$TOL D:\DSP study\test3\Debug\DSP280x_CpuTimers.obj >> error: symbol referencing errors - './Debug/test3.out' not built 或者下面的问题: undefined first referenced symbol in file --------- ---------------- _c_int00 D:\DSP study\GPIO_Study\Debug\DSP280x_CodeStartBranch.obj >> error: symbol referencing errors - './Debug/GPIO_Study.out' not built 解决办法都是下面: 这个问题是因为没有加在库文件,请在project →build options→linker→libraries 中加入rts2800.lib。 问题3: >> warning: creating .stack section with default size of 400 (hex) words. Use -stack option to change the default size. >> error: can't allocate .stack, size 00000400 (page 1) in RAMM1 (avail: 00000380) >> error: errors in input - ./Debug/GPIO_Study.out not built 解决办法:

dsp课程设计实验报告

DSP 课程设计实验 一、语音信号的频谱分析: 要求首先画出语音信号的时域波形,然后对语音信号进行频谱分析。在MATLAB 中,可以利用函数fft 对信号进行快速傅立叶变换,得到信号的频谱特性,从而加深对频谱特性的理解。 其程序为: >> [y,fs,bits]=wavread('I:\',[1024 5120]); >> sound(y,fs,bits); >> Y=fft(y,4096); >> subplot(221);plot(y);title('原始信号波形'); | >> subplot(212);plot(abs(Y));title('原始信号频谱'); 程序运行结果为: 二、设计数字滤波器和画出频率响应: 根据语音信号的特点给出有关滤波器的性能指标: 低通滤波器性能指标,p f =1000Hz ,c f =1200Hz ,s A =100dB ,p A =1dB ; 高通滤波器性能指标,c f =4800Hz ,p f =5000Hz ,s A =100dB ,p A =1dB ; 带通滤波器性能指标,1p f =1200Hz ,2p f =3000Hz ,1c f =1000Hz ,2c f =3200Hz ,s A =100dB , p A =1dB ;

】 要求学生首先用窗函数法设计上面要求的三种滤波器,在MATLAB中,可以利用函数firl 设计FIR滤波器;然后再用双线性变换法设计上面要求的三种滤波器,在MATLAB中,可以利用函数butte、cheby1和ellip设计IIR滤波器;最后,利用MATLAB中的函数freqz画出各种滤波器的频率响应,这里以低通滤波器为例来说明设计过程。 低通: 用窗函数法设计的低通滤波器的程序如下: >> fp=1000;fc=1200;As=100;Ap=1;fs=22050; >> wc=2*fc/fs;wp=2*fp/fs; >> N=ceil(/*(wc-wp)/2))+1; >> beta=*; >> Win=Kaiser(N+1,beta); 、 >>b=firl(N,wc,Win); >>freqz(b,1,512,fs); 程序运行结果: 这里选用凯泽窗设计,滤波器的幅度和相位响应满足设计指标,但滤波器长度(N=708)太长,实现起来很困难,主要原因是滤波器指标太苛刻,因此,一般不用窗函数法设计这种类型的滤波器。 用双线性变换法设计的低通滤波器的程序如下: >> fp=1000;fc=1200;As=100;Ap=1;fs=22050; >> wc=2*fc/fs;wp=2*fp/fs; 》 >> [n,wn]=ellipord(wp,wc,Ap,As); >> [b,a]=ellip(n,Ap,As,wn); >> freqz(b,a,512,fs); ^

DSP技术及应用实习报告

目录 1绪论 (2) 1.1实习题目 (2) 1.2课题研究的目的 (2) 1.3 DSP简介 (2) 2开发运行环境CCS (3) 3实验原理 (4) 4软件设计 (8) 4.1程序流程图 (8) 4.2源程序 (8) 4.3设计步骤 (8) 5实习心得 (19) 6参考文献 (19) 附录 (20)

1. 绪论 1.1实习题目 傅立叶变换是一种将信号从时域变换到频域的变换形式,是声学,语音,电信和信号处理等领域中一种重要的分析工具。快速傅立叶变换(FFT)是快速计算DFT的一种高效方法,FFT的出现使DFT的运算大大简化,运算时间缩短一至两个数量级之多,DSP芯片的出现使FFT的实现变得更加方便。 1.2课题研究的目的 随着电子技术和集成电路技术的飞速发展,数字信号处理已经广泛地应用于通信、信号处理、生物医学以及自动控制等领域中。离散傅立叶变换(DFT)及其快速算法FFT作为数字信号处理的基本变换,有着广泛的应用。特别是近年来,基于FFT的ODFM技术的兴起,进一步推动了对高速FFT处理器的研究。FFT算法从出现到现在已有四十多年代历史,算法理论已经趋于成熟,但是其具体实现方法却值得研究。面向高速、大容量数据流的FFT实时处理,可以通过数据并行处理或者采用多级流水线结构来实现。特别是流水线结构使得FFT处理器在进行不同点数的FFT计算时可以通过对模板级数的控制很容易的实现。分析和比较了各种FFT算法后,选择基2和基4混合频域抽取算法作为FFT处理器的而实现算法,一种高速、处理点数可变的流水线结构FFT处理器的实现方法。 1.3 DSP简介 数字信号处理(Digital Signal Processing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。DSP有两种含义:Digital Signal Processing(数字信号处理)、Digital Signal Processor (数字信号处理器)。我们常说的DSP指的是数字信号处理器。数字信号处理器是一种适合完成数字信号处理运算的处理器。20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。在过去的二十多年时间里,数字信号处理已经在通信等领域得到极为广泛的应用。 数字信号处理是利用计算机或专用处理设备,以数字形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理,以得到符合人们需要的信号形式。 数字信号处理是以众多学科为理论基础的,它所涉及的范围及其广泛。例如,在数学领域,微积分、概率统计、随机过程、数值分析等都是数字信号处理的基本工具,与网络理论、信号与系统、控制论、通信

DSP课程设计报告

共享知识分享快乐 盛年不重来,一日难再晨。及时宜自勉,岁月不待人。 数据采集处理和控制系统设计 一课程设计要求 1.基本DSP硬件系统设计要求 ①基本DSP硬件系统以TMS320C54x系列为核心处理器,包括最小系统、存储器扩展、显示器、键盘、AD、DA等电路模块; ②硬件设计画出主要芯片及电路模块之间的连接即可,重点考查电路模块方案设计与系统地址分配; ③设计方案以电路示意图为主,辅以必要的文字说明。 2.基本软件设计要求 ①看懂所给例程,画出例程输出波形示意图; ②修改例程程序,使之输出其它波形,如方波、三角波、锯齿波等均可; ③设计方案以程序实现为主,辅以必要的文字说明。 3.课程设计报告要求 ①硬件系统设计:设计思路、设计系统功能、主要芯片选型及使用方法、设计方案说明、电路示意图 ②软件系统设计:示例程序功能解读及输出波形示意图、设计软件功能、设计思路、实现源码(带程序注释) ③报告总结 二系统分析 利用实验箱的模拟信号产生单元产生不同频率的信号,或者产生两个频率的信号的叠加。在DSP 中采集信号,并且对信号进行频谱分析,滤波等。通过键盘或者串口命令选择算法的功能,将计算的信号频率或者滤波后信号的频率在LCD 上显示。主要功能如下: (1)对外部输入的模拟信号采集到DSP 内存,会用CCS 软件显示采集的数据波形。 (2)对采集的数据进行如下算法分析: ①频谱分析:使用fft 算法计算信号的频率。 ②对信号进行IIR 滤波或FIR 滤波,并且计算滤波前后信号的频率。 ③外部键盘或者从计算机来的串口命令选择算法功能,并且将结果在 LCD 上显示。 绘制出DSP系统的功能框图、使用AD(Altium Designer)绘制出系统的原理图和PCB 版图。 在 DSP 中采集信号,用CCS 软件显示采集的数据波形,以及对采集的数据进行算法分析。 三硬件设计 3.1 硬件总体结构

DSP实习报告模板

DSP应用技术实习报告 课程课题:基于DSP的键盘控制数字图像处理 方式及LCD显示 专业班级:电子信息科学与技术 学生姓名: 指导教师:邹修国李林徐友杨红兵 完成时间:

一、课程内容: ?掌握直方图统计的原理和程序设计 ?了解边缘检测的算法和用途 ?了解锐化的算法和用途 ?了解取反的算法和用途 ?掌握直方图均衡化增强的原理和程序设计 ?了解液晶显示器的显示控制原理及编程方法 ?了解键盘的使用原理及编程方法 二、设计功能及工作原理 能够实现功能: ?数字图像直方图统计 ?数字图像边缘检测(Sobel算子) ?数字图像的锐化(LAPLACE算子) ?数字图像的取反 ?数字图像直方图均衡化增强 通过键盘的输入可以控制图像处理的方式,并且LCD显示何种处理方式。 工作原理: ◆灰度直方图是灰度值的函数,描述的是图像中具有该灰度值的像素的个数,其横坐标表 示像素的灰度级别,纵坐标表示的是该灰度出现的频率。 ◆边缘检测算子检查每个像素的邻域并对灰度变化率进行量化,也包括方向的确定。大多 数使用基于方向导数掩模求卷积的方法。 ◆图像的锐化处理就是使模糊的图像变得更加清晰起来,拉普拉斯锐化法属于常用的一种 微分锐化方法。 ◆求反处理的图像与原来的图像黑白颠倒,取得类似照片底片的效果。 ◆直方图增强的方法就是压缩直方图中比例少的像素所占用的灰度范围,多出来的灰度空 间按照统计比例分配给直方图中比例高的像素使用。 三、设计过程 1.各种功能工程的分别建立: ?数字图像直方图统计 ?数字图像边缘检测(Sobel算子) ?数字图像的锐化(LAPLACE算子) ?数字图像的取反 ?数字图像直方图均衡化增强 ?键盘输入 ?液晶显示器控制显示 2.将各个功能模块进行组合: 1)打开键盘输入的工程文件,浏览key.c文件内容; 2)打开数字图像直方图统计的工程文件,将Histo.c主函数内的处理部分的代码复制到 key.c文件的case1语句后; 3)打开数字图像边缘检测的工程文件,将Image.c主函数内的处理不放入内的代码复制 到key.c文件的case2语句后;

DSP-AD学习心得

DSP-AD模块学习的心得 1.AD采样的高级教程 经过这几天的忙碌,我感觉我对2812的AD模块又有了一些新的理解,感觉AD的框架已经被我架出,现在来说明这几天对其中的理解。 1.1.AD的结构 首先还是要接受一下AD的基本结构吧!把几个容易混淆哦概念重新的定位,让大家看看我自己的理解, ①双排序和级联工作模式 ②顺序采样和同步采样 ③启停/连续工作模式 这三个概念是我自己学习的时候容易混淆或是不知道如何才能很好运用的一个门槛 下面以一个图形来表示他们之间的关系 所以2812AD总共有8种工作方式可以实现,在实际运用中可以根据自己的需要选择合适的工作方式。 1.2.AD模块时钟问题的提出 ①高速时钟 ②ADCLK-AD模块时钟 ③事件管理器时钟(如果要用到EVA/B来触发AD启动的时候)

以上就是整个和系统、AD模块相关的所有时钟的信息。当然里面涉及很多寄存器,各个寄存器的设置可以查相关的资料得出自己想要的合适的时钟和相应的采样保持脉冲的宽度。 1.3几个基本概念 接下来解释几个常混的概念,但是都是本人个人的理解不一定准确。 ①AD采样频率 ②AD启动频率 ③AD的采样保持宽度 ④AD的转换时间 以及这些跟ADCclk之间的联系? 首先来说明一下AD采样频率,我个人认为AD采样频率就是1S中采样多少个点,那么根据实际运用AD模块的经验,你自己启动几次AD模块,它就采样几次,意味着其实AD的采样频率就是AD的启动频率,如果你用事件管理器来触发的话,那么触发频率也同样是AD的采样频率,也就是你所用的通用定时器的定时时间。其次,AD的采样保持时间,这个是一定AD启动就马上开始采样,由于采样这个过程就是给电容充电的过程,那么就是意味着要需要一段的时间电容才可以电荷把电荷储存起来,采样保持时间就是起到这个作用的,但是和AD的启动频率有什么关系呢?个人认为AD的采样频率就是相邻两个采样点之间的时间间隔应该要大于采样保持器保持的时间,这样才可以保证在下一次采样触发到来之前把信号可靠的保持下来。最后讲到,AD的转换时间,这个就是采样保持后,要将保持的模拟量转换成数字量,就要通过内部的转换器,转换器的时间跟ADCclk有关。因为大家都知道AD转换器转换需要给他提供时钟,那么时钟频率越高,转换的速度越快,这样转换时间就越小。 这些关系希望大家可以理解清楚,不过以上都是本人自己的理解,希望可以帮我指出错误的地方。 ⑤合理的安排计算这些频率和时间是AD采样的关键,比如一个正弦信号如果您要求他要在一个正弦波的一个周期内采样24个点,那么首先要确定AD

dsp课程设计实验报告总结

DSP课程设计总结(2013-2014学年第2学期) 题目: 专业班级:电子1103 学生姓名:万蒙 学号:11052304 指导教师: 设计成绩: 2014 年6 月

目录 一设计目的----------------------------------------------------------------------3 二系统分析----------------------------------------------------------------------3 三硬件设计 3.1 硬件总体结构-----------------------------------------------------------3 3.2 DSP模块设计-----------------------------------------------------------4 3.3 电源模块设计----------------------------------------------------------4 3.4 时钟模块设计----------------------------------------------------------5 3.5 存储器模块设计--------------------------------------------------------6 3.6 复位模块设计----------------------------------------------------------6 3.7 JTAG模块设计--------------------------------------------------------7 四软件设计 4.1 软件总体流程-----------------------------------------------------7 4.2 核心模块及实现代码---------------------------------------8 五课程设计总结-----------------------------------------------------14

dsp心得体会

dsp心得体会 篇一:dsp实验报告心得体会 TMS320F2812x DSP原理及应用技术实验心得体会 1. 设置环境时分为软件设置和硬件设置,根据实验的需要设置,这次实验只是 软件仿真,可以不设置硬件,但是要为日后的实验做准备,还是要学习和熟悉硬件设置的过程。 2. 在设置硬件时,不是按实验书上的型号选择,而是应该按照实验设备上的型 号去添加。 3. 不管是硬件还是软件的设置,都应该将之前设置好的删去,重新添加。设置好的配置中 只能有一项。 4. CCS可以工作在纯软件仿真环境中,就是由软件在PC机内存中构造一个虚拟的 DSP环境,可以调试、运行程序。但是一般无法构造DSP 中的外设,所以软件仿真通常用于调试纯软件算法和进行效率分析等。 5. 这次实验采用软件仿真,不需要打开电源箱的电源。 6. 在软件仿真工作时,无需连接板卡和仿真器等硬件。 7. 执行write_buffer一行时。如果按F10执行程序,则程序在mian主函数中运行,

如果按F11,则程序进入write_buffe函数内部的程序运行。 8. 把str变量加到观察窗口中,点击变量左边的“+”,观察窗口可以展开结构变 量,就可以看到结构体变量中的每个元素了。 9. 在实验时,显示图形出现问题,不能显示,后来在Graph Title 把Input的大写 改为input,在对volume进行编译执行后,就可以看到显示的正弦波图形了。 10. 在修改了实验2-1的程序后,要重新编译、连接执行程序,并且必须对.OUT 文件进行重新加载,因为此时.OUT文件已经改变了。如果不重新加载,那么修改执行程序后,其结果将不会改变。 11. 再观察结果时,可将data和data1的窗口同时打开,这样可以便于比较,观察 结果。 12. 通过这次实验,对TMS320F2812x DSP软件仿真及调试有了初步的了解与认识,因为做 实验的时候都是按照实验指导书按部就班的,与真正的理解和掌握还是有些距离的。但是这也为我们日后运用这些知识打下了基础,我觉得实验中遇到的问题,不要急于问老师或者同学,先自己想办法分析原因,想办法解决,这样对

DSP语音信号处理课程设计(精)

DSP语音信号处理课程设计报告书 语音信号处理GUI工具箱设计 指导老师:专业:电子信息工程 班级: 姓名:学号: 设计时间: 2011年10月12日至 地点: 摘要 语音信号处理是研究数字信号处理技术和语音信号进行处理的一门学科,是一门新型的学科,是在多门学科基础上发展起来的综合性技术,它涉及到数字信号处理、模式识别、语言学。语音信号处理是研究用数字信号处理技术对语音信号处理的一门学科。处理的目的是要得到一些语音参数以便高效的传输或存储;或者是通过处理的某种运算以达到某种用途的要求。语音信号处理又是一门边缘学科。如上所诉,它是“语言语音学”与“数字信号处理”两个学科相结合的产物。 语音信号处理属于信息科学的一个重要分支,大规模集成技术的高度发展和计算机技术的飞速前进,推动了这一技术的发展。在数字音频技术和多媒体技术迅速发展的今天,传统的磁带语音录放系统因体积大、使用不便、放音不清晰而受到了巨大挑战。本次课程设计提出的体积小巧,功耗低的数字化语音存储与回放系统,可以有效的解决传统的语音录放系统在电子与信息处理的使用中受到的限制。 本文提出了语音信号处理课程建设的实验环节中的一些考虑,作为专业课程的学习,实验内容不能仅仅停留在验证性实验上,还应增加实验延伸的设计要求,是学生加深对理论分析认识的同时,强调培养学生的实际动手能力和知识综合运用能力。从而提高语音信号的教学和实验的质量。实验内容采用MATLAB编程实现,不仅易于语音信号处理的实现,更易引导学生完成实验延伸的设计。 目录 第一章绪论 (1) 1.1课程设计的目的及意义 (1) 1.2设计要求 (1) 1.3 研究内容 (1) 第二章语音信号处理理论基础 (3) 第三章系统方案论证 (4) 2.1 设计方案 (4) 2.2 GUI界面功能介绍 (4) 2.3 GUI界面的具体操作 (5)

DSP实验报告

实验0 实验设备安装才CCS调试环境 实验目的: 按照实验讲义操作步骤,打开CCS软件,熟悉软件工作环境,了解整个工作环境内容,有助于提高以后实验的操作性和正确性。 实验步骤: 以演示实验一为例: 1.使用配送的并口电缆线连接好计算机并口与实验箱并口,打开实验箱电源; 2.启动CCS,点击主菜单“Project->Open”在目录“C5000QuickStart\sinewave\”下打开工程文件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…”,屏幕会出现图形窗口设置对话框 5.双击Start Address,将其改为y0;双击Acquisition Buffer Size,将其改为1; DSP Data Type设置成16-bit signed integer,如下图所示; 6.点击主菜单“Windows->Tile Horizontally”,排列好窗口,便于观察 7.点击主菜单“Debug->Animate”或按F12键动画运行程序,即可观察到实验结果: 心得体会: 通过对演示实验的练习,让自己更进一步对CCS软件的运行环境、编译过程、装载过程、属性设置、动画演示、实验结果的观察有一个醒目的了解和熟悉的操作方法。熟悉了DSP实验箱基本模块。让我对DSP课程产生了浓厚的学习兴趣,课程学习和实验操作结合为一体的学习体系,使我更好的领悟到DSP课程的实用性和趣味性。

课程设计的总结报告

课程设计的总结报告 ----WORD文档,下载后可编辑修改---- 下面是小编收集整理的范本,欢迎您借鉴参考阅读和下载,侵删。您的努力学习是为了更美好的未来! 课程设计的总结报告篇一首先我们由衷的感谢老师提供给我们这样一个锻炼自己的机会,经过这四周的学习,本次课程设计即将结束,总的来说,经过这门课的学习收获还是相当大的。回顾这段时间的课程设计,至今我仍感慨万分。的确,从选材到开始制作,从理论到实践,在四周的实训日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。 通过这次课程设计使我们都更加懂得并亲身体会到了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从实践中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到很多问题,可以说是困难重重,并且在设计的过程中发现了自己的很多不足之处,发现自己对之前所学过的知识理解得不够深刻,掌握得不够牢固,有待加强。 生活就是这样,汗水预示着结果但是也见证着收获,劳动是人类生存、生活永恒不变的话题,通过实训,我才真正领略到“艰苦奋斗”这一词的真正含义。我想说,设计确实有些辛苦,但苦中也有乐,在如今单一的理论学习中,很少有机会能有实践的机会,但我们可以。而且设计也是一个团队的任务,一起的工作可以让我们有说有笑,相互帮助,配合默契,多少欢乐在这里洒下。我想说,之前的时间确实很累,但当我们看到自己所做的劳动成果时,心中也不免产生兴奋。也许有人不喜欢这类的工作,也许有人认为编程的工作有些枯燥,但我们认为无论干什么,只要人生活的有意义就够了,而且这也是最主要的,社会需要我们,我们也可以为社会而工作。 我们的工作是一个团队的工作,团队需要个人,个人也离不开团队,必须发扬团结协作的精神,某个人的离群都可能导致整项工作的失败。实训中只有一个人知道原理是远远不够的,必须让每个人都知道,否则一个人的错误,就有可能导致整个项目失败,团结协作是我们实训成功的一项非常重要的保证。而这次实

DSP实习实验报告

M A T L A B上机实习报告 姓名: 班级: 指导老师: 2009.12.13

一、实验课程名称:数字信号处理 二、实验目的 掌握应用MATLAB 解决数字信号处理问题的方法,即熟悉应用MATLAB 处理数字信号处理问题相关的函数。 三、实验设备 安装有MATLAB 软件的计算机 四、实验内容 编写MATLAB 程序,实现下列题目: 实验一: 设线性时不变(LTI )系统的冲激响应为h(n),输入序列为x(n) 1、h(n)=(0.8)n ,0≤n ≤4; x(n)=u(n)-u(n-4) 2、h(n)=(0.8)n u(n), x(n)=u(n)-u(n-4) 3、h(n)=(0.8)n u(n), x(n)=u(n) 求以上三种情况下系统的输出y(n)。 实验二: 1、设有离散序列 x(n)=cos(0.48πn)+cos(0.52πn) 分析下列三种情况下的幅频特性。 (1) 采集数据长度N=16,分析16点的频谱,并画出幅频特性。采集数据长度N=16,并 补零到64点,分析其频谱,并画出幅频特性。 (2) 采集数据长度N=64,分析64点的频谱,并画出幅频特性。 观察三幅不同的幅频特性图,分析和比较它们的特点及形成原因。 2、实现序列的内插和抽取所对应的离散傅里叶变换。(选做) ()()n R n n n x 128]365.1cos 36[cos ?? ? ??+??? ??=ππ 求()()n x n x 41=和()?? ? ??=42n x n x 对应的128点傅里叶变换,比较三个结果所得到的幅频特性,分析其差别产生的原因。 实验三: 1、设计一个Butterworth 数字低通滤波器,设计指标如下: 通带截止频率:0.2π,幅度衰减不大于1分贝 阻带截止频率:0.3π,幅度衰减大于15分贝 2、让不同频率的正弦波通过滤波器,验证滤波器性能。 3、分析不同滤波器的特点和结果。 4、编程设计实现IIR 滤波器。

dsp课程设计心得体会

dsp课程设计心得体会 篇一:DSP课程设计报告 JIU JIANG UNIVERSITY DSP应用课程设计报告 题目利用按键任意输入一个数值控制的转动角度院系电子工程学院 专业电子信息工程 姓名 班级1211 学号35 日期 - I - 内容提要 步进电机作为一种电脉冲—角位移的转换元件,由于具有价格低廉、易于控制、无积累误差和计算机接口方便等优点,在机械、仪表、工业控制等领域中获得了广泛的应用。通过DSP对步进电机的控制可以实现系统实时、精确、高效、安全的设计要求,从而实现了自动化生产过程。作为重要部件的DSP是否实现控制要求是应用系统能否可靠工作的关键。 许多研究机构和电机生产厂家对于用单片机和用功率器件来设计步进电机驱动系统作了大量的研究,如把MCS-51系列的8031单片机、美国Microchip公司的PIC系列的

PIC16C5X、各类PLC和VMOS管等功率器件作为控制系统都是比较成熟的。这些方面的资料和经验对于将更高速的DSP 器件用在驱动系统上都是很有帮助的。现在流行的方法是将一系列外围设备如数模转换器(A/D)、脉宽调制发生器(PWM)和数字信号处理器(DSP)内核集成在一起,就获得一个强大又非常经济的电机控制专用的的DSP。许多厂家开发出了电机专用的DSP器件和支持各种通用算法的模拟软件。不仅芯片的运算速度越来越快,且软件中集成和固化在硬件中的算法模块越来越多,使得实现各种功能和进行电机性能研究变得现实和容易,能够实现更加理想的控制要求,随着对步进电机的研究更加深入与芯片价格的降低和功能的增加以及随着半导体工艺,尤其是高密度CMOS工艺的发展和进步,芯片的价格日益下降,而性能却不断提高,软件和开发工具越来越多,越来越好,应用范围日益广泛。DSP作为一种高速处理器件在驱动系统中的应用也会更加广泛和普及,研究DSP在控制领域中的应用也有着重大现实意义。 目录 一课程设计要求 ................................................ .. (4) 二总体方案 ................................................

DSP课设论文

课程设计说明书(2011/2012学年第一学期) 课程名称:DSP控制器及其应用 题目:分频发生器 专业班级:通信工程 学生姓名: 学号: 指导教师: 设计周数:2周 设计成绩: 2012年1月5日

一、课程设计目的 通过本次的课程设计使学生增进对DSP的认识,加深对单DSP理论方面的理解, 使学生掌握DSP在实际生活中的应用。使学生了解和掌握用DSP实现分频发生器的设计方法、过程,为以后更多的设计打下良好基础,并且通过这次设计使我们对DSP应用的基本操作方法有了一定的了解,对于以后的发展打下了基础,所以本次课程设计对于学生的动手能力的提高有着很大的帮助并达到以下目的: (1)使学生增进对DSP F2812电路的感性认识,加深对理论方面的理解。 (2)使学生掌握软硬件的有关知识等。 (3)让同学们认识分频器器的工作原理和方法 (4)使学生了解和掌握软硬件设计过程、方法及实现,为以后设计和实现应用系统打下良好基础。 (5)通过简单课题的设计练习,可使学生了解必须提交的各项工程文件,也达到巩固、充实和综合运用所学知识解决实际问题的目的。 二、课程设计正文 2.1系统分析 2.1.1设计任务 本次设计名为分频发生器,也可以称为键盘输入分频输出装置,要求用9个按键,组成3行3列键盘,采用扫描按键的方法控制蜂鸣器发出对应的声音从而实现按键控制蜂鸣器发出不同频率的声音。 2.1.2性能指标 硬件部分: 1、按照系统设计要求绘制(3行3列按键及分明器)电路图。 2、按照电路图统筹安排各元器件在电路板上的分布,并焊接电路板。 3、了解各引脚功能,将电路板与TMS320F2812相关引脚相连接。 软件部分: 1、搞清楚各个引脚功能,调入引脚头文件。 2、了解了各引脚控制的行列后,编写键盘扫描程序。 3、编写延时程序,实现按键去抖。 最终实现键盘输入分频输出,并由蜂鸣器发出不同频率的响声。 2.2系统整体设计 2.2.1硬件设计组成框图

DSP实验学习心得

DSP实验学习心得 论DSP发展前景

DSP 即为数字信号处理器(Digital Signal Processing),是在模拟信号变换成数字信号以后进行高速实时处理的专用处理器。它的工作原理是将现实世界的模拟信号转换成数字信号,再用数学方法处理此信号,得到相应的结果。自从数字信号处理器(Digital Signal Processor)问世以来,由于它具有高速、灵活、可编程、低功耗和便于接口等特点,已在图形、图像处理,语音、语言处理,通用信号处理,测量分析,通信等领域发挥越来越重要的作用。随着成本的降低,控制界已对此产生浓厚兴趣,已在不少场合得到成功应用。DSP 数字信号处理器DSP 芯片采用了数据总线和程序总线分离的 哈佛结构及改进的哈佛结构,较传统处理器的冯?诺依曼结构具有更高的指令执行速度。其处理速度比最快的CPU 快10-50 倍。在当今数字化时代背景下,DSP 已成为通信、计算机、消费类电子产品等领域的基础器件,被誉为信息社会革命的“旗手”。 最初的DSP 器件只是被设计成用以完成复杂数字信号处理的算法。DSP 器件紧随着数字信号理论的发展而不断发展。DSP发展最快,现在的DSP 属于第五代产品,它与第四代相比,系统集成度更高,将DSP 芯核及外围组件综合集成在单一芯片上。这种集成度极高的DSP 芯片不仅在通信、计算机领域大显身手,而且逐渐渗透到人们日常消费领域,前景十分可观。近年来,随着通信技术的飞速发展,DSP已经成为信号与信息处理领域里一门十分重要的新兴学科,它代表着当今无线系统的主流发展方向。现在,通信领域中许多产品

都与DSP 密切联系,例如,Modem、数据加密、扩频通信、可视电话等。而寻找DSP 芯片来实现算法最开始的目标是在可以接受的时间内对算法做仿真,随后是将波形存储起来,然后再加以处理。 在短短的十多年时间,DSP芯片已经在信号处理、通信、雷达等许多领域得到广泛的应用。目前, DSP 芯片的价格也越来越低,性能价格比日益提高,具有巨大的应用潜力。DSP 芯片的应用主要有:(1)信号处理--如,数字滤波、自适应滤波、快速傅里叶变换、相关运算、频谱分析、卷积等。(2)通信--如,调制解调器、自适应均衡、数据加密、数据压缩、回坡抵消、多路复用、传真、扩频通信、纠错编码、波形产生等。(3)语音--如语音编码、语音合成、语音识别、语音增强、说话人辨认、说话人确认、语音邮件、语音储存等。(4)图像/图形--如二维和三维图形处理、图像压缩与传输、图像增强、动画、机器人视觉等。(5)军事--如保密通信、雷达处理、声纳处理、导航等。(6)仪器仪表--如频谱分析、函数发生、锁相环、地震处理等。(7)自动控制--如引擎控制、深空、自动驾驶、机器人控制、磁盘控制。(8)医疗--如助听、超声设备、诊断工具、病人监护等。(9)家用电器--如高保真音响、音乐合成、音调控制、玩具与游戏、数字电话/电视等DSP 的发展前景DSP 的功能越来越强,应用越来越广,达到甚至超过了微控制器的功能,比微控制器做得更好而且价格更便宜,许多家电用第二代DSP 来控制大功率电机就是一个很好的例子。汽车、个人通信装置、家用电器以及数以百万计的工厂使用DSP 系统。数码相机、IP 电话和手持电子设备的热销带来了对DSP 芯片的巨大需求。而手机、

dsp实习心得体会

dsp实习心得体会 DSP大家注意和传统的概念区分一下,传统我们经常说的DSP(Digital Signal Processing(数字信号处理))的缩写也就是说是一些功能算法,这里的DSP是指(Digital Signal Process(数字信号处理器))的缩写,也就是说他是一个集成一些外设的一个芯片,类似我们的单片机。我们通过程序实现一些特定的功能。 和传统单片机比较的区别? DSP功能比普通单片机高出很多,当然价格也比较高。所以直接用DSP和单片机比较是不合适的。我们这里比较不是从他的应用领域来比较,我们是从开发的角度来比较,为了是使那些熟练使用单片机的朋友可以很快上手。当然我的主要目的的大家可以比较学习,达到 熟悉一种CPU其他就可以很快上手。下面从几个方面比较一下 1,硬件上比较 从硬件上比较DSP和传统的单片机主要有几个方面不一样,很多DSP电源系统比传统的复杂,但是这个并不影响我们因为如TI的DSP都提供相关的测试电路。开始的时候大家可以完全按照他来设计。调试方式上有很大不同,DSP一

般通过JTAG来进行仿真和烧写的,而单片机是通过直接仿真器来仿真的(这里讲的单片机是比较早的,现在的单片机也有很多采用JTAG调试方式)。其他设计比如重要的时序设计所以CPU系统是一样的只要满足时序就可以达到目标。 2,软件上比较 相比硬件软件应该是DSP差别比较大的DSP的软件需要CMD文件,一般的单片机编译器编译以后就可以了不需要。并且CMD也是DSP学习过程中比较困难的一个方面。后面我们简单说明一下。 dsp实习心得体会(二) 小系统的是任何DSP系统开发前必须要完成的,你可以从一下几个方面获得小系统。一、购买一个市场上比较成熟的小系统产品;二、自己动手设计一个小系统。我们这里主要告诉大家怎么自己设计一个最小系统。 首先我给最小系统一个定义,我按照我个人的习惯把最小系统分成2个方面 1,狭义的最小系统 所谓狭义最小系统是指就是能够完成一个独立功能,并且方便观察的一个系统。比如我们常见的通过DSP控制一个LCD灯让它闪起来。完成这个功能我们可以认为狭义的最小系统完成。 独立完成功能,我们很容易想到要一个系统能够独立完

DSP课程设计报告(优)

DSP课程设计报告 ——多波形信号发生器

目录 一、实验目的 (2) 二、实验内容 (2) 三、实验原理 (3) 1.产生连续的波形的方法 (3) 1.1 查表法: (3) 1.2计算法: (3) 2. TLV320AIC23B的内部结构及工作原理 (3) 四、程序设计 (4) 五、程序调试 (10) 1、编译过程 (10) 2、.cmd程序(5502.cmd)全文及其解释: (10) 3、程序运行结果(图形和数据显示): (12) 六、硬件输出演示: (14) 七、实验感想与体会..................................................................................... 错误!未定义书签。 八、参考文献 (16) 一、实验目的 1.学习并掌握D/A转换器的初始化设置及其应用 2.学习并掌握使用DSP产生正弦波的原理和算法,进而掌握任意信号波形(如三角波、锯齿波、矩形波等信号)产生的原理和算法。 3.比较产生信号的两种主要方法(查表法和计算法)的优缺点。 4.熟练使用软件CCS3.3对程序的完整调试过程。 二、实验内容 使用DSP产生300~16000Hz的正弦、方波、锯齿波和三角波信号,输出信号的幅度从0~1Vrms(有效值)。要求使用计算法,并且频率可变、幅度可变。 本实验要求用软件CCS3.3编程实现,并与硬件连接进行功能演示。

三、实验原理 1.产生连续的波形的方法 1.1 查表法: 把事先将需要输出的数据计算好,存储在DSP 中,然后依次输出就可以了。查表法的优点是速度快,可以产生频率较高的波形,而且不占用DSP 的计算时间;查表法的缺点在于需要占用DSP 的内部的存储空间,尤其对采样频率比较大的输出波形,这样,需要占用的内部的空间将更大,而DSP 内部的存储空间毕竟有所限制。这使得查表法的应用场合十分有限。 1.2计算法: 采用计算的方法依次计算数据而后输出,然后再计算而后输出。计算法的优缺点正好和查表法相反。即:其优点是不占用DSP 的存储空间,其缺点是占用DSP 的计算时间,使得执行程序的开销变大。本实验将用第二种方法即计算法产生一个正弦波信号,从DA 输出。由余弦信号的递推公式: 得知:如果需要产生连续的余弦信号,必须知道首先两个余弦值的大小,然后就可以利用上式计算出后面的数据,这就是下面编程依据的核心算法。 正弦函数和余弦函数的泰勒级数数学表达式为: =x sin +--+-+-+---)! 12()1(!9!7!5!3121 9753n x x x x x x n n ,x ?),(∞-∞∈ =x cos +-+-+-+-)! 2()1(!8!6!4!2128642n x x x x x n n ,x ?),(∞-∞∈. 如果要计算一个角度ⅹ的正弦和余弦值,可以取其前五项进行近似计算。 也可以用递推公式求正弦和余弦值: θθθθ)2sin()1sin(cos 2sin ---?=n n n θθθθ)2cos()1cos(cos 2cos ---?=n n n 利用递推公式计算正弦和余弦值需已知cos(x)、sin(n-1)x 、sin(n-2)x 和cos(n-2)x 的值。用这种方法,求少数点可以,如产生连续正弦、余弦波,则累积误差太大,不可取。 最终产生信号的频率为f0=fs/N ,其中N 为抽样点数。 2. TLV320AIC23B 的内部结构及工作原理 TLV320AIC23B 是TI 公司生产的高性能语音CODEC 芯片,16、20、24、32位串行A/D 、

相关文档