搜索
您的当前位置:首页正文

DSP实验报告

来源:爱够旅游网
DSP实验报告

姓名: 学号: 院系:

3.1.3 addasm:

一、实验内容:

使用汇编语言实现加法运算,汇编程序如下: _main: MOV ACC,#10 MOV T,#2

ADD ACC,T

.end

二、实验结果:

逐步运行,运行完第一步后ACC值为0000000A,运行结束后结果如下:

其中XT为00020000,高位0002即为T的值,而其他寄存器如P、XARO等为初始赋值结果。

3.1.4 CandASm:

一、实验内容:

源程序代码为: #include void main() {

int a=10; int b=10; int sum; addasm(); sum=add(a,b);

for(;;); }

add(int add1,int add2) {

int c;

c=add1+add2; return c; }

二、实验结果:

C文件内容为:a=10,b=10,sum=a+b.通过gel文件以及库文件编译为.out文件,结果如下:

连接芯片后,装载.out文件,即可运行。运行结果正确。

3.1.5 math:

一、实验内容:

void main(){

int fix_add,fix_sub,fix_mul,fix_div,fix_n;

double floa_add,floa_sub,floa_mul,floa_div,float_n; for(;;) { fix_add=fixed_add(1556,40); fix_sub=fixed_sub(334,222); fix_mul=fixed_mul(188,188); fix_div=fixed_div(188,18); floa_add=float_add(2.5e3,1.2e3); floa_sub=float_sub(2.0e2,3.0e2); floa_mul=float_mul(2.0e2,3.0e2); floa_div=float_div(2.0e4,2.0e2);

} }

fix_n=float_fixed(9.735e1); float_n=fixed_float(1557);

二、实验结果:

使用dsp实现基本的加减乘除数学运算。C程序通过调用子函数的方式实现加减乘除,编译、连接、装载过程同上,运行结果通过watch window窗口观察结果如下:

运行结果分析:

fix_add=1556+40=1596,都为int类型; fix_div=188<<4/18=104444,结都为int类型; fix _mul= fixed_mul(188,188)=188*188>>4=;

fix_n= fix_n=float_fixed(9.735e1)=int(97.35*2^4)=1557,int类型; fix_sub= fix_sub=fixed_sub(334,222)=334-222=112,int类型;

floa_add= float_add(2.5e3,1.2e3)=2500+1200=3700,double类型; floa_div= loat_div(2.0e4,2.0e2)=20000/200=1000,double类型; floa_mul= float_mul(2.0e2,3.0e2)=200*300=60000;double类型; floa_sub= float_sub(2.0e2,3.0e2)=200-300=100,double类型; floa_n= fixed_float(1557)=1557/16=97.3125,double类型;

3.2.1 memory:

一、实验内容:

主程序如下: void main() { int i; unsigned int * px; unsigned int * py; unsigned int * pz;

}

px=(unsigned int *)0x200; // 字地址,字节地址为400H py=(unsigned int *)0x210; // 字地址,字节地址为420H for ( i=0,pz=px;i<16;i++,pz++ ) (*pz)=i;

for ( i=0,pz=py;i<16;i++,pz++ ) // 在此加软件断点 (*pz)=0x1234;

for ( i=0;i<16;i++,px++,py++ ) // 在此加软件断点 (*py)=(*px);

for(;;); // 在此加软件断点

二、实验结果:

利用指针给0x200、0x210这两个为首的存储器中赋值0~F。运行结果如下:

通过memory window 观察存储器内容如下:

可以看出其中0x200~0x20F的值分别为0~F,0x210~0x21F的值分别为0~F,其他值为随机数。设置断点,逐步运行,观察存储器该地址的值变化与预期一样。

3.2.3 SRAM:

一、实验内容:

主程序如下: void main(void)

{

unsigned int i;

unsigned int Errcount = 0; /* Write on-board Sram */ for(i=0; iSourData[i] = i; }

Errcount = 0;//此行设置断点

/* Read on-board Sram and check it */ for(i=0; iif(i != SourData[i]) Errcount++; }

for(;;);//此行设置断点 }

二、实验结果:

给SourData[LENGTH](LENGTH=100)赋值0~99,运行结果如下:

通过memory window窗口观察存储器中的内容,结果如下:

结果显示SourData地址为5C0,从5C0开始以后100个单元的值分别为0~99,其他单元为随机数。实验发现,双击某单元的值,可以手动修改。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top