DSP实验报告1new
实验报告
课程名称: DSP技术及应用 学号: 姓名:
实验2.1 基础实验
一、实验目的
1.掌握CCS3.3实验环境的使用;
2.掌握用C语言编写DSP程序的方法。
二、实验设备
1.一台装有CCS3.3软件的计算机;
2.DSP实验箱的TMS320F2812主控板;
3.DSP硬件仿真器。
三、实验原理
浮点数的表达和计算是进行数字信号处理的基本知识;产生正弦信号是数字信号处理中经常用到的运算;C语言是现代数字信号处理表达的基础语言和通用语言。写实现程序时需要注意两点:(1)浮点数的范围及存储格式;(2)DSP的C语言与ANSI C语言的区别。
四、实验步骤
1、在CCS3.3环境中打开本实验的工程(Example_base.pjt)[位置为:/ Example_2812/ Example_math/ Example_base],此文件是C程序,连接(project-connect),出现汇编。
2、选择file-load program编译并重建 .out 输出文件,然后通过仿真器把执行代码下载到DSP芯片中;
3、选中变量名X0 , Y0 和Z0,单击鼠标右键,在弹出菜单中选择“Add Watch Window”命令,把X0 , Y0 和Z0添加到Watch窗口中作为观察对象。
4、选择view->graph->time/frequency… 。 设置对话框中的参数: 其中“Start Address”设为“sin_value”,“Acquisition buffer size”和“Display Data size”都设为“100”,并且把“DSP Data Type”设为“32-bit floating point”。
五、实验代码
#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));
}
六、实验现象
设置好后观察信号序列的波形(sin函数,如图);
七、思考题
试用C语言编写实现其他数学运算的程序;
题:用C语言求5!
程序:
#include
void main()
{
int i,t;
t=1;
i=2;
while(i<=5)
{t=t*i;
i=i+1;}}
八、实验小结
本次试验是初次接触DSP硬件仿真器,将DSP实验箱的TMS320F2812主控板与一台装有CCS3.3软件的计算机连接,就可以进行仿真,打开相应的工程文件,将程序代码下载到DSP芯片,改变相应参数,运行即可看到程序运行的结果。
实验报告
课程名称: DSP技术及应用 学号: 姓名:
实验2.4 快速傅里叶变换 (FFT) 实现
一、实验目的
1.掌握FFT算法的基本原理;
2.掌握用C语言编写DSP程序的方法。
二、实验设备
1.一台装有CCS3.3软件的计算机;
2.DSP实验箱的TMS320F2812主控板;
3.DSP硬件仿真器。
三、实验原理
离散信号x(n)的傅里叶变换可以表示为
,
式中的WN 称为蝶形因子,利用它的对称性和周期性可以减少运算量。
时间抽取FFT是将N点输入序列x(n) 按照偶数项和奇数项分解为偶序列和奇序列。偶序列为:x(0), x(2), x(4),…, x(N-2);奇序列为:x(1), x(3), x(5),…, x(N-1)。这样x(n) 的N点DFT可写成:
单个蝶形运算示意图如下:
以N=8为例,时间抽取FFT的信号流图如下:
从上图可以看出,输出序列是按自然顺序排列的,而输入序列的顺序则是“比特反转”方式排列的。也就是说,将序号用二进制表示,然后将二进制数以相反方向排列,再以这个数作为序号。如011变成110,那么第3个输入值和第六个输入值就