数字信号处理实验五实验报告

时间:2024.4.21

综合性、设计性实验报告

 姓名    陶建敏     学号  201308002107

           专业   通信工程    班级  通信1301  

           实验课程名称     数字信号处理       

           指导教师及职称  李玲香讲师         

开课学期     2015 至_  20## 学年学期

上课时间 2015    121017    

湖南科技学院教务处编印


第二篇:dsp实验报告五


DSP 实 验 报 告

(实验五)

班级:

学号:

姓名:

 

实验五 混合编程

一、实验目的

1. 学习使用实时运行库;

2. 熟悉用C和汇编混合编程的方法;

3. 掌握混合编程的调试方法。

 

二、实验环境

1. 集成开发环境Code Composer Studio 2.0(简称CCS)

2. 实验程序mix.c,mix.h(由程序自动加载,可不加,后同),mix.cmd,addfun.s54,rts.lib(有C的混合编程需要有库文件),c5402.gel(要有,有C的混合编程要用gel初始设置。选芯片时设置已自带,可不添加;如无则加)

三、实验步骤

1. 改设置:Build option子菜单linker中Basic项Autoinit Model 改为load-time Initialization或Run-time Initialization(不同的设置,SP初始值将不同。No Initialization也可以,但效果不如前两个好)。

2. 为使效果更明显,屏蔽前两条printf( )语句(可与第三条对比,编译后将出现警告,可忽略),编译项目文件得到.out程序。另外装载程序前,在Edit->Memory->Fill中,对Data Memory从0x0000到0xFFFF用全0x1111或0x2222等填充(注意:填充后必须对Gel文件重新Load一次)。然后装载程序,了解在混合编程环境下变量、函数的定义方法以及项目文件的编译方法。

3. 打开View Memory,用SP值(Debug_>Go main后的值)作为开始察看地址,从主程序main开始用Single Step方式调试程序,观察程序的执行过程。尤其是在C程序中调用汇编子函数以及返回的过程,注意当前SP和PC的变化。

4. 看懂代码,比较结果,并画出程序流程图;

四、实验结果

1、从主程序main开始用Single Step方式调试程序,观察程序的执行过程。尤其是在C程序中调用汇编子函数以及返回的过程,观察到当前SP和PC的变化为:

PC从地址0X0000205D一直进行自加,单步执行一次就加1;SP值在从main开始就一直保持0X0C86保持不变,直到return语句执行完后才变为0X0C9D,跳出主程序后SP值开始自减执行push语句,执行完后,紧接着在执行POP时继续进行自加。执行过程如下:

开始执行Goto main:

执行return后:

由此可见:PC值反映当前执行地址值;SP值只有在调用PUSH或POP等语句时才发生相应的变化。

2、程序分析及流程图:

#include <stdio.h>

#include "mix.h"

int mix_func_c(int *wl, int *wr, int val)  //定义求数组最小值的子函数;

{

       int i, val_min, tmp[8];   //定义变量

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

              tmp[i] = wl[i] * wr[i];   //两数相乘

       val_min = val;        //置初值,设定val_min最小值为val即100

       for(i=0; i<8; i++)      //比较,求出两数相乘后乘积的最小值

       {     

              if(val_min>tmp[i])

                     val_min = tmp[i];

       }

              return val_min;

}

void main()        //执行主函数

{      int val, i, wl[8], wr[8];

       int min_asm, min_c;

       //register setting       //C中嵌套ASM语言

       asm("     stm        #0, SWWSR");

       asm("     stm        #0x00A0, PMST");

//    min_asm=1900;

//    min_c=2000;

       //call system function

       val = -100;        //定义val值

       val = abs(val);

       printf("val = %d\n", val);  

       //call asm function

       for(i=0; i<8; i++)     //对wl与wr数组赋初值

       {

              wl[i]=i;

              wr[i]=2*i+1;

       }

       min_asm = mix_func(wl, wr, val);  //调用混合编程程序,在C中映射汇编

       printf("val = %d\n", min_asm);      

       min_c = mix_func_c(wl, wr, val);   //在C函数中输出C

       printf("val = %d\n", min_c);    

       return;

五、实验结果分析

1. 实时运行库

实时运行库提供了标准C中的大部分函数,帮助建立C语言的环境,同时也提供一些基本的调试手段,如printf( )等。

2. 程序接口

参数传递是混合编程中非常重要的一部分:第一个参数放置在寄存器A中,其他参数按照逆序压入堆栈;返回的数据放置在寄存器A中。

3. 局部数据

局部数据是在堆栈中开设的,程序返回前消除。

4. 关于堆栈保护

在子程序addfun中,由于需要改变ST1中的数值,所以在子程序入口处先用语句pshm   ST1  ; ST1的值在堆栈中保护起来;

在子程序返回前,再用语句popm  AR1  ;恢复ST1原来的值。

注:例程见目录 \\ 71_mix.

mix.cmd中段设置说明:

1.  The .cinit section contains tables for initializing variables and constants.

2.  The .const section contains string constants and data defined with the C/C++ qualifier const (provided the constant is not also defined as volatile).

3.  The .text section contains all the executable code as well as string literals and compiler-generated constants.

4.  The .bss section reserves space for global and static variables. When you specify the -c linker option, at program startup, the C/C++ boot routine copies data out of     the .cinit section (which can be in ROM) and stores it in the .bss section.

5.  The .data section is normally used to contain tables of data or preinitialized variables.

六、实验心得体会

本次实验目的是我们通过研究一个程序代码学习使用实时运行库、熟悉用C和汇编混合编程的方法;并掌握混合编程的调试方法。

在上课的时候,老师就告诉我们关于混合编程的几种方法,当时由于时间有限,老师只是简单的叙述了这几种方法,记忆力不好,所以做的过程中很吃力,在助教和同学的帮助下,最后成功的完成了本次实验。

    本次实验,让我对DSP的混合编程有了更深刻的理解,更加熟练的使用DSP这个软件,让我受益匪浅。

更多相关推荐:
数字信号处理实验报告

南京信息工程大学数字信号处理实验报告学院:电子与信息工程学院班级:11通信1班学号:XXX姓名:XX指导教师:XX20XX/12/6实验一Matlab基本知识和信号处理工具箱一、实验目的1、了解Matlab的基…

数字信号处理实验报告 - 1

数字信号处理第一次实验报告学院:信息工程学院专业:电子信息工程二班学号:***姓名:实验一:系统响应及系统稳定性1.实验目的(1)掌握求系统响应的方法。(2)掌握时域离散系统的时域特性。(3)分析、观察及检验系…

数字信号处理实验报告

数字信号处理实验报告专业电子信息工程学号111308336姓名张强伟实验一数字滤波器的结构一实验目的1加深对数字滤波器分类与结构的了解2明确数字滤波器的基本结构及其相互间的转换方法3掌握用MATLAB进行数字滤...

数字信号处理实验报告

北京信息科技大学实验报告课程名称数字信号处理实验项目IIR数字滤波器设计实验仪器计算机MATLAB软件学院信息与通信工程学院班级姓名学号实验日期指导老师实验成绩实验二IIR数字滤波器设计一实验目的1熟悉用双线性...

数字信号处理实验报告一

西南大学学生实验报告姓名杨剑学号2220xx3220xx058班级1班专业电科实验日期20xx年9月29日实验学时2学时实验名称基本信号的产生和序列的基本运算实验目的学习使用MATLAB产生基本信号绘制信号波形...

哈工大 数字信号处理实验报告

实验一用FFT作谱分析实验目的1进一步加深DFT算法原理和基本性质的理解因为FFT只是DFT的一种快速算法所以FFT的运算结果必然满足DFT的基本性质2熟悉FFT算法原理和FFT子程序的应用3学习用FFT对连续...

数字信号处理实验报告2

实验一序列的产生姓名高洪美学号0819xx9213班级生医5班一实验目的熟悉MATLAB中产生信号和绘制信号的基本命令二实验环境基于WindowsPC的MATLAB三实验内容1单位样本和单位阶跃序列2指数信号3...

数字信号处理实验 信号、系统及系统响应实验报告

实验一信号系统及系统响应1实验目的1熟悉连续信号经理想采样前后的频谱变化关系加深对时域采样定理的理解2熟悉时域离散系统的时域特性3利用卷积方法观察分析系统的时域特性4掌握序列傅里叶变换的计算机实现方法利用序列的...

数字信号处理实验报告 (实验四)

实验四离散时间信号的DTFT一实验目的运用MATLAB计算离散时间系统的频率响应运用MATLAB验证离散时间傅立叶变换的性质二实验原理一计算离散时间系统的DTFTNN已知一个离散时间系统akynkk0bk0kT...

数字信号处理实验报告

数字信号处理实验报告专业信息与计算科学学号20xx14622姓名胡迪实验1常见离散信号产生和实现实验目的1加深对常用离散信号的理解2掌握matlab中一些基本函数的建立方法一作业题目生成方波序列已知归一化角频率...

数字信号处理实验报告4-MATLAB设计FIR滤波器

浙江万里学院实验报告专业班级电子104姓名黄文龙学号20xx014139实验日期20xx125一实验目的1掌握用窗函数法设计FIR数字滤波器的原理和方法2熟悉线性相位FIR数字滤波器的特性3了解各种窗函数对滤波...

数字信号处理实验报告

数字信号处理实验报告专业班级电信1101姓名曾文学号20xx1186020指导老师吴莉华中科技大学武昌分校20xx年5月21日实验一信号系统及系统响应1实验目的1加深对离散线性移不变LSI系统基本理论的理解明确...

数字信号处理实验报告(35篇)