DSP实验报告3
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DSP 实验报告3
姓名 学号
时间 2015.6.9 地点 实验大楼A631
实验题目 卷积运算
一、 实验目的
1、学习如何用DSP 的C 语言程序实现卷积与相关的计算;
2、学习用CCS 调试程序的详细过程;
3、学习如何设置断点。
二、 实验内容及步骤
1、创建一个新项目工程
将“maxminmath 文件夹”复制到“D:\CCStudio_v3.3\MyProjects ”下。
2、打开工程调试程序,并说明程序的功能;
3、编程实现以下功能:
已知()()n R n x 4=,()()n R n h 4=,求()()()n h n x n y *=
a 、采用子程序调用的方式实现,并且注释程序;
b 、把x ,h 和y 添加到Watch 窗口中作为观察对象;
c 、观察三个数组从初始化到卷积运算结束整个过程中的变化(可单击变量名前的“+”号把数组展开),并将变化过程记录下来。
三、 实验程序
给出卷积运算的子程序:
void main()
{
int x[7]={0,0,0,1,1,1,1},h[7]={1,1,1,1,0,0,0},y[7]={0};
int i,j;
for(i=0;i<7;i++)
for(j=0;j<7;j++)
{if(i+j<7)
y[i]=y[i]+x[i+j]*h[j];
y[i]=y[i]%2;}
}
四、实验结果
y值的变化情况如下:
五、实验思考题
1、试用汇编语言编写实现卷积运算的程序;
.global start ;定义全局变量
.mmregs
.data; 开始数据段
.bss m,1; 开设全局变量,每个变量占用一个字 .bss n,1
.bss z,1
.text; 开始文本段
start: ST #1000h,AR1
ST #3000h,AR2
ST #5000h,AR3
ST #0,@m
RPT 999
RPT m+
LOOP: MVPD 6000h
MVDD *AR1+,*AR4
MVDD *AR2+,*AR5
MACP *AR4,*AR5,src
B LOOP
ST A,*AR3+
xh: b xh;空循环
.end
2、考虑如何实现复数的卷积运算。
用四个矩阵分别存储数组x和h中的复数实部和虚部,对它们分别计算乘加得到另外四个数组,将实部和实部、虚部和虚部乘得的数组相减就可得到复数卷积的最终实部,然后将实部和虚部相乘的两个数组相加可得最终的虚部。
六、小结:
不得不说,这次的实验很难解决,程序调试那块有点复杂,请教完同学之后顺利得以解决。