DSP实验报告3

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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中的复数实部和虚部,对它们分别计算乘加得到另外四个数组,将实部和实部、虚部和虚部乘得的数组相减就可得到复数卷积的最终实部,然后将实部和虚部相乘的两个数组相加可得最终的虚部。

六、小结:

不得不说,这次的实验很难解决,程序调试那块有点复杂,请教完同学之后顺利得以解决。

相关文档
最新文档