DSP实验报告
dsp实验报告总结doc

3.2 DSP总体结构
3.3 电源模块设计
3.4 时钟模块设计
3.5 存储器模块设计
3.6复位模块设计
篇二:DSP实验报告
DSP课程设计 实 验 报 告
语音压缩、存储和回放
学 院:电子信息工程学院电子科学与技术专业 设计人员: 吴莲梅 08214085电子0803班 杨 莹 08214088电子0803班指导老师: 日 期:
(1)A律限制采样值为12比特,A律的压缩可以按照下列公式进行定义:
A|x|11?lnA|x|1
(0?|x|?)?sgn(x)(?|x|?1)F(x)?sgn(x)
1?lnAA1?lnAA
式中,A是压缩参数(在欧洲,A=87.6)x是需要压缩的归一化整数。从线性到A律的压缩转换如下表所示:(压缩后的码字组成:比特0-3表示量化值,比特4-6表示段值,压缩后
一、 设计目的
设计一个功能完备,能够独立运行的精简DSP硬件系统,并设计简单的DSP控制程序。
二、 系统分析
1.1设计要求 硬件要求:
(1)使用TMS320VC5416作为核心芯片。 (2)具有最简单的led控制功能。 (3)具有存放程序的外部Flash芯片。 (4)外部输入+5V电源。 (5)绘制出系统的功能框图。
(6) 仪器仪表--如频谱分析、函数发生、锁相环、地震处理等。 (7) 自动控制--如引擎控制、深空、自动驾驶、机器人控制、磁盘控制。 (8) 医疗--如助听、超声设备、诊断工具、病人监护等。(9) 家用电器--如高保真音响、音乐合成、音调控制、玩具与游戏、数字 电话/电视等 DSP 的发展前景 DSP 的功能越来越强,应用越来越广,达到甚至超过了微控制器的功能,比 微控制器做得更好而且价格更便宜, 许多家电用第二代 DSP 来控制大功率电机就 是一个很好的例子。汽车、个人通信装置、家用电器以及数以百万计的工厂使用 DSP 系统。数码相机、IP 电话和手持电子设备的热销带来了对 DSP 芯片的巨大需 求。而手机、
dsp原理与应用实验报告总结

dsp原理与应用实验报告总结DSP(Digital Signal Processing)数字信号处理是利用数字技术对信号进行处理和分析的一种方法。
在本次实验中,我们探索了DSP的原理和应用,并进行了一系列实验以验证其在实际应用中的效果。
以下是对实验结果的总结与分析。
实验一:数字滤波器设计与性能测试在本实验中,我们设计了数字滤波器,并通过性能测试来评估其滤波效果。
通过对不同类型的滤波器进行设计和实现,我们了解到数字滤波器在信号处理中的重要性和应用。
实验二:数字信号调制与解调本实验旨在通过数字信号调制与解调的过程,了解数字信号的传输原理与方法。
通过模拟调制与解调过程,我们成功实现了数字信号的传输与还原,验证了调制与解调的可行性。
实验三:数字信号的傅里叶变换与频谱分析傅里叶变换是一种重要的信号分析方法,可以将信号从时域转换到频域,揭示信号的频谱特性。
本实验中,我们学习了傅里叶变换的原理,并通过实验掌握了频谱分析的方法与技巧。
实验四:数字信号的陷波滤波与去噪处理陷波滤波是一种常用的去除特定频率噪声的方法,本实验中我们学习了数字信号的陷波滤波原理,并通过实验验证了其在去噪处理中的有效性。
实验五:DSP在音频处理中的应用音频处理是DSP的一个重要应用领域,本实验中我们探索了DSP在音频处理中的应用。
通过实验,我们成功实现了音频信号的降噪、均衡和混响处理,并对其效果进行了评估。
实验六:DSP在图像处理中的应用图像处理是另一个重要的DSP应用领域,本实验中我们了解了DSP在图像处理中的一些基本原理和方法。
通过实验,我们实现了图像的滤波、边缘检测和图像增强等处理,并观察到了不同算法对图像质量的影响。
通过以上一系列实验,我们深入了解了DSP的原理与应用,并对不同领域下的信号处理方法有了更深刻的认识。
本次实验不仅加深了我们对数字信号处理的理解,也为日后在相关领域的研究与实践提供了基础。
通过实验的结果和总结,我们可以得出结论:DSP作为一种数字信号处理的方法,具有广泛的应用前景和重要的实际意义。
DSP实验报告6

DSP第六、七次实验报告1. 实验目的:(1)进一步熟悉Matlab实验环境和语言。
(2)熟悉各种滤波器的结构及Matlab实现语言。
(3)掌握用冲击响应不变法和双线性变换法设计IIR滤波器的方法。
(4)掌握用窗函数法和频率抽样法设计FIR滤波器的方法。
2. 实验内容及总结:1.滤波器结构:(1)IIR滤波器各种结构1、直接型结构例如直接型滤波器系统函数, 则有系数向量a=[1,a1,a2,a3],b=[b0,b1,b2], 利用:Y=filter[b,a,x]求信号x(n)通过此滤波器的输出。
2、由系统函数或差分方程求系统的二阶分式(含一阶分式)的级联结构将例如的系统函数重写为二阶分式节的级联型, 利用:[sos,G]=tf2sos(b,a)3、由二阶分式的级联结构转换成系统函数的直接结构是第二步的逆运算, 调用函数:[b,a] = sos2tf(sos)可以求得系数向量a,b, 从而得到H(z)4、由系统函数求部分分式展开(留数及其极点计算)即求z反变换的部分分式展开法, 利用:[r,p,c]=residuez(b,a)其中极点为p, 留数为r, 直接项系数为c。
5、由r,p,c求系统函数即第4步的逆运算, 利用:[b,a]=residuez(r,p,c)6、由直接型结构转换为并联型结构需开发函数:[C,B,A]=tf2par(b,a)其中, b,a为直接型的系数向量, C,B,A为并联型实系数向量, 基本思想是: 1.反复调用[r,p,c]=residuez(b,a)求出极点及留数;2.利用cplxpair函数把极点、留数对按复共轭极点-留数对, 实极点-留数对的顺序排列;3.开发cplxcomp函数, 保证极点和留数相互对应;4.调用[b,a]=residuez(r,p,c)计算并联二阶节的分子分母。
7、由并联型结构转换成直接型结构开发函数:[b,a]=par2tf(C,B,A)为[C,B,A]=tf2par(b,a)的逆函数。
dsp数据存取实验报告

竭诚为您提供优质文档/双击可除dsp数据存取实验报告篇一:Dsp实验一数据存取实验《Dsp技术》课程实验报告学生姓名:所在班级:指导教师:记分及评价:一、实验名称Dsp数据存取实验二、实验目的(1)掌握Tms320F2812程序空间的分配(2)掌握Tms320F2812数据控件的分配三、实验内容(3)往0x003F9020地址开始的八个存储单元依次写入0-8的八个数(4)读取0x003F9020地址开始的八个存储单元内容并写入0x003F9028地址开始的八个存储单元内。
(5)从0x003F9020开始的八个存储单元的内容依次与0x003F9020地址开始的八个存储单元相乘,运算结果存入0x003F9000开始的八个存储单元内。
(6)从0x003F9020开始的八个存储单元的内容依次与0x003F9020地址开始的八个存储内容相加,运算结果依次存入0x003F9038地址开始的八个存储单元内。
四、实验程序与结果分析程序和结果如图1:图1结果voidmain(void){inti;volatileunsignedint*room=(volatileunsignedint*)0x3f 9020;volatileunsignedint*room2=(volatileunsignedint*)0x3 f902F;volatileunsignedint*room3=(volatileunsignedint*)0x3 f9030;volatileunsignedint*room4=(volatileunsignedint*)0x3 f903F;//Initializesystemcontrol://pLL,watchDog,enableperipheralclocksInitsysctrl();//DisablecpuinterruptsDInT;//Disablecpuinterruptsandclearallcpuinterruptflags: IeR=0x0000;IFR=0x0000;/*将0xAAAA写入从数据空间的地址0x3f9020开始的8个单元中*/for(i=0;i {*room=0x0000+i;room++;}/*从0x3f9020开始的8个空间读出数据依次写入从0x3f9028开始的8个单元中*/for(i=0;i {*room2=*(room-1);room--;room2--;}room2++;for(i=0;i {*room3=((*room)*(*room2));//0x003F9028开始的八个存储单元的内容依次与0x003F9030地址开始的八个存储单元相乘room++;room2++;room3++;}room--;room2--;for(i=0;i {*room4=((*room)+(*room2));//0x003F9028开始的八个存储单元的内容依次与0x003F9038地址开始的八个存储内容相加room--;room2--;room4--;}}五、小结通过本次实验,我学会了Tms320F2812的寻址方式,明白了试验箱扩展存储器空间的寻址方法以及ccs修改、填充Dsp内存单元的方法,加深了对于ccs2000软件的应用,为接下来的实验提供良好的帮助。
DSP实验报告

DSP实验报告⼀、综合实验内容和要求1. 实验⽬的(1) 学习掌握CCS3.3编译器的使⽤;(2) 通过实验学习掌握TMS320F28335的GPIO ,浮点计算; (3) 学习并掌握A/D 模块的使⽤⽅法;(4) 学习并掌握中断⽅式和查询⽅式的串⼝通信; (5) 学习并掌握28335DSP 的定时器相关的设置与运⽤; (6) 学习信号时域分析的⽅法,了解相关波形参数的计算⽅法; (7) 了解数字滤波的⼀些基本⽅法; (8) 学习数码管的驱动及运⽤。
(9) 学习MATLAB 串⼝以及画图的运⽤。
2. 实验设计内容与要求:(1) 对给定的周期波形信号采⽤TI 公司的TMS320F28335DSP ,利⽤试验箱上的相关资源计算出波形的周期T ,波形的有效值rms V ,平均值avg V 。
其中,有效值和平均值的计算公式(数字量的离散公式)如下:rms V =1()NavgiV u i N=∑式中N 为⼀个周期采样点数,()u i 为采样序列中的第i 个采样点。
(2) 通过算法计算出波形的有效值和平均值,利⽤串⼝通信把测得的数据发送到串⼝助⼿查看,或者在MATLAB 上编写上位机程序,把发送的数据在MATLAB 上画出来。
(3) 把测得的数据实时显⽰在数码管上。
⼆、硬件电路图1为试验系统的硬件图,硬件电路主要包括TMS320F28335DSP 实验箱,SEED-XDS510仿真器,数码管,SCI,信号发⽣器,电脑,串⼝线等。
图1 硬件电路图三、实验原理本试验主要是通过程序去测量⼀个周期波形的有效值、平均值、峰值等相关参数。
计算离散数据的有效值可⽤公式rms V =平均值可⽤公式1()N avgiV u i N=∑。
所以⾸先需要测出波形的周期,然后确定每个周期需要采样的点数N ,最后去计算平均值和有效值。
v mv 1图2 理想输⼊采样波形如图2所⽰为⼀个正弦输⼊波形,m V 为输⼊波形的峰值,1V 是介于0~ m V 的⼀个值。
DSP实验报告_6

实验一: 闪灯实验熟悉DSP 软硬件测试系统实验目的1.了解SHARC 系列高性能数字信号处理器的程序开发过程和编程语言;2.熟悉集成开发工具VisualDSP++, 学会使用VisualDSP++进行SHARC 系列ADSP 的程序开发、编译与调试;3.掌握SHARC 系列ADSP 的程序加载设计和加载过程。
实验内容利用波形产生信号板, 结合FPGA 编程技术和程序编程器, 编写测试ADSP21065L 和FPGA 之间硬件连接的应用程序, 同时完成应用程序的加载和脱机操作, 在信号指示灯“HL2”上产生可调周期的脉冲信号, “点亮”与“熄灭”指示灯HL2。
实验要求通过DSP 编程, 在其FLAG11引脚上模拟如下波形的周期信号:要求:(1) 500H T ms >,500L T ms >. (2) 并用示波器查看波形, 测量信号周期。
实验步骤1. 熟悉电路图, 清楚波形产生电路板ADSP21065L 与可编程FPGA 器件之间的连接关系;2. 编写FPGA 程序。
在FPGA 内部将ADSP21065L 的标志引脚FLAG11(引脚号26)设置为输出, 作为FPGA 的输入信号, 在FPGA 内部编程将该信号直接输出在发FPGA 的37引脚号上, 设置37引脚为输出信号, 驱动板上的HL2 LED 指示灯;3. 启动VisualDsp++4.5,选择project 工程选项菜单, 创建一个名称为Test.dpj 的工程文件, 选择处理器的型号为ADSP-21065L ;4.弹出一个对话框, 选择是否需要加入VDSP kernel ,选择“NO ”;5. 在工程中加入以下参考源文件:\exp1\test(boot)\ boot1.asm 和boot1.ldf 6.编译, 链接调试, 生成可执行文件。
7.运行程序, 可以看到波形发生电路板上的指示灯“HL2”不断闪动。
8. 利用示波器观测系统时钟,并测量产生信号的波形和周期。
DSP实验报告5_2

DSP 第五次实验1.实验目的:(1)进一步熟悉matlab 实验环境和语言。
(2)掌握求序列圆周翻褶的MATLAB 方法。
(3)掌握求序列DFT 及IDFT 矩阵的MATLAB 方法。
(4)掌握用MATLAB 求解用圆周卷积计算线性卷积的时域的方法。
(5)掌握用FFT 计算有限长序列的线性卷积和线性相关的方法。
2.实验内容及总结:1.圆周翻褶【例3.27】 已知()[2,3,4,5,6],8X n N ==,求x(n)的8点圆周翻褶序列88(())()x n R n -。
代码:clc;clear allx=[2,3,4,5,6];N=8;x=[x,zeros(1,N-length(x))];nx=0:N-1y=x(mod(-nx,N)+1);subplot(121),stem([0:N-1],x);title('原序列');xlabel('n');ylabel('x(n)');grid;subplot(122),stem([0:N-1],y);title('圆周翻褶序列');xlabel('n');ylabel('x((n))8 R8(n)');grid;结果:总结:对于圆周翻褶(0),0()(())()(),11N Nx ny n x n R nx N n n N==-=⎨-≤≤-MA TLAB可用y=x(mode(-nx,N)+1)求得。
因此,要求X(n)=[2,3,4,5,6],N=8的8点圆周翻褶序列,要先将x(n)补零到8点长度再求圆周翻褶。
x=[x,zeros(1,N-length(x))];nx=0:N-1 %x补零到8点长y=x(mod(-nx,N)+1); %圆周翻褶从一开始,因此得到8点长%序列,应该再加一2.DFT矩阵,IDFT矩阵【例3.29】已知N=4的DFT矩阵w4,求IDFT矩阵w4I。
DSP(数字信号处理)实验报告2

本科学生实验报告学号124090314 姓名何胜金学院物电学院专业、班级12电子实验课程名称数字信号处理(实验)教师及职称杨卫平开课学期第三至第四学年下学期填报时间2015 年 3 月 1 9 日云南师范大学教务处编印2.产生幅度调制信号x[t]=cos(2t)cos(200t),推导其频率特性,确定抽样频率,并会出波形。
程序: clc,clear,close all t=[0:0.01:5];x=cos(2*pi*t).*cos(200*pi*t); plot(t,x);clc,clear,close allt0=0:0.001:0.1;x0=0.5*(cos(202*pi*t0)+cos(198*pi*t0)); plot(t0,x0,'r') hold on fs=202;t=0:1/fs:0.1;x=0.5*(cos(202*pi*t)+cos(198*pi*t)); stem(t,x);3.对连续信号x[t]=cos(4t)进行抽样以得到离散序列,并进行重建。
(1)生成信号x(t),时间为t=0:0.001:4,画出x(t)的波形。
程序clc,clear,close all t0=0:0.001:3; x0=cos(4*pi*t0); plot(t0 ,x0,'r');(2)以faam=10HZ对信号进行抽样,画出在0≤t≤1范围内的抽样序列,x[k],利用抽样内插函数恢复连续时间信号,画出重逢信号的波形。
程序:clc,clear,close all t0=0:0.001:3; x0=cos(4*pi*t0); plot(t0,x0); hold onfs=10;t=0:1/fs:3; x=cos(4*pi*t); stem(t,x);4.若x[k]是对连续信号x(t)=cos(0.5t)以samf=2Hz抽样得到的离散序列,如何通过在抽样点之间内插,恢复原连续时间信号x(t)?程序:clc,clear,close all t=0:0.0001:4; x=cos(0.5*pi*t); plot(t,x); Figure1:clc,clear,close allt=0:0.0001:4; x=cos(0.5*pi*t); subplot(2,1,1); plot(t,x);t0=0:0.5:4;x0=cos(0.5*pi*t0); subplot(2,1,2); stem(t0,x0);5.已知序列x[k]={1,3,2,-5;k=0,1,2,3},分别取N=2,3,4,5对其频谱X(e j)进行抽样,再由频域抽样点恢复时域序列,观察时域序列是否存在混叠,有何规律?k=[0,1,2,3]; x=[1,3,2,-5]; n=100;omega=[0:n-1]*2*pi/n;X0=1+3*exp(-j*omega)+2*exp(-2*j*omega)-5*exp(-3*j*omega); subplot(3,4,1);stem(k,x);title('原序列');subplot(3,4,2);plot(omega./pi,abs(X0));title('序列的频谱 N=100');N=2;omega=[0:N-1]*2*pi/N;X1=1+3*exp(-j*omega)+2*exp(-2*j*omega)-5*exp(-3*j*omega); subplot(3,4,5);stem(omega./pi,abs(X1));title('频域抽样 N=2');rx1=real(ifft(X1)); subplot(3,4,9);stem(rx1);title('时域恢复');N=3;omega=[0:N-1]*2*pi/N;X2=1+3*exp(-j*omega)+2*exp(-2*j*omega)-5*exp(-3*j*omega); subplot(3,4,6);stem(omega./pi,abs(X2));title('频域抽样 N=3');rx2=real(ifft(X2)); subplot(3,4,10);stem(rx2);title('时域恢复');N=4;omega=[0:N-1]*2*pi/N;X3=1+3*exp(-j*omega)+2*exp(-2*j*omega)-5*exp(-3*j*omega); subplot(3,4,7);stem(omega./pi,abs(X3));title('频域抽样 N=4');rx3=real(ifft(X3)); subplot(3,4,11);stem(rx3);title('时域恢复');。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一 程序的控制与转移一、实验目的1、掌握条件算符的使用。
2、掌握循环操作指令(BNAZ )和比较操作指令(CMPR )二、实验设备计算机、ZY13DSP12BD 实验箱、5402EVM 板。
三、实验原理程序控制指令主要包括分支转移、子程序调用、子程序返回、条件操作及循环操作等。
通过传送控制到程序存储器的其他位置,转移会中断连续的指令流。
转移会影响在PC 中产生和保护的程序地址。
其中转移可以分为两种形式的,一种是有条件的,另一种是无条件的。
四、实验内容编写程序,实现计算y=∑=51i ix的值。
五、实验步骤1、用仿真机将计算机与ZY13DSP12BD 实验箱连接好,并依次打开实验箱电源、仿真机电源,然后运行CCS 软件。
2、新建一个项目:点击Project -New ,将项目命名为example2,并将项目保存在自己定义的文件夹下。
3、新建一个源文件example2.asm 。
将该文件添加到工程example2.pjt 中。
4、在工程管理器中双击example2.asm ,编写源程序: .tiltle ”example2.asm ” .mmregsSTACK .usect ”STACK ”,10H ;堆栈的设置.bss x,5 ;为变量分配6个字的存储空间 .bss y,1 .def start .datatable: .word 10,20,3,4,5 ;x1,x2,x3,x4,x5 .textStart: STM #0,SWWWSR ;插入0个等待状态 STM #STACK+10H,sp ;设置堆栈指针STM #x,AR1 ;AR1指向xRPT #4 ;下一条被重复执行5遍MVPD table,*AR1+ ;把程序存储器中的数据传送到数据存储器 LD #0,A ;A 清零CALL SUM ;调用求和函数 end: B endSUM: STM #x,AR3 ;AR3指向x STM #4,AR2 ;AR2=4loop: ADD *AR3+,A ;*AR3+A-->A,然后AR3+BANZ loop,*AR2- ;如果AR2的值不为0,则跳到loop 处;否则执行下一条指令 STL A,*(y) ;把A 的低16位赋给变量yRET.end6、编写链接配置文件:/*example2.cmd */vectors.obj /*中断向量的目标文件*/example2.obj /*产生目标文件*/-o example2.out /*产生可执行下载文件,文件名可以根据不同项目而定*/-m example2.map /*产生存储器映射文件,文件名可以根据不同项目而定*/-estart /*程序入口*/MEMORY{PAGE 0: /*定义程序存贮区*/EPROM:org=0090H len=0F70H /*定义EPROM区,起始地址0090H,长度0F70H*/ VECS: org=0080H len=0010H /*定义VECS区,起始地址0080H,长度0010H*/PAGE 1: /*定义数据存贮区*/SPRAM:org=1000H len=1000H /*定义SPRAM区,起始地址1000H,长度1000H*/ DARAM:org=2000H len=2000H /*定义DARAM区,起始地址2000H,长度2000H*/}SECTIONS{.text :>EPROM PAGE 0 /*将.text段映射到PAGE0的EPROM区*/.data :>EPROM PAGE 0 /*将.text段映射到PAGE0的EPROM区*/.bss :>SPRAM PAGE 1 /*将.text段映射到PAGE1的SPRAM区*/STACK :>DARAM PAGE 1 /*将.text段映射到PAGE1的DARAM区*/.vectors :>VECS PAGE 0 /*将中断向量表定位到PAGE0的VECS区*/}7、编写中断向量表文件/* vectors.asm */.title "vectors.asm" /*中断向量表的文件名*/.ref start /*引用外部定义的标号*/.sect ".vectors" /*定义初始化的段名*/B start /*引用start*/.end8、对项目进行编译和链接:把example2.asm、vectors.asm、example2.cmd依次添加到项目后,点击Project-Compile File,在项目编译成功之后点击Project-Build选项对该项目进行链接,生成*.OUT文件。
9、装载可执行文件:点击:File-Load Programe再选择生成的example2.out文件就可以将程序装载到DSP的内部存储器中。
M10、运行程序并查看结果:首先打开欲查看的数据空间:点击View-Memory,弹出“Memory Window Options”对话框,把欲查看的地址改为0x1000。
下面是运行结果:实验二 加减法和乘除法运算一、实验目的掌握加减法和乘除法运算指令。
二、实验设备计算机、ZY13DSP12BD 实验箱、5402EVM 板。
三、实验原理加减法是通过指令ADD 和SUB 来实现的。
乘法是通过MPY 和MAC 来实现的。
而在C54X 指令中没有除法器硬件,也就没有专门的除法指令,但是可以一条条件减法指令加上重复指令“#RPT #15”就可以实现两个无符号数的除法运算。
四、实验内容1、编写程序,分别实现计算z=x+y-w 、y=mx+b 、y=x1×a2+x2×a2、y=∑=41i ii xa 。
2、分别编写程序,实现计算0.4÷(-0.8)和16384÷512的值。
五、实验步骤1、用仿真机将计算机与ZY13DSP12BD 实验箱连接好,并依次打开实验箱电源、仿真机电源,然后运行CCS 软件。
2、新建一个项目,将项目命名为example4。
3、新建一个源文件保存在和项目相同的一个文件夹下面(example4),保存类型选择*.ASM ,保存名字命名为example4.asm 。
4、在项目中添加源文件:将刚才建立的example4.asm 文件添加到该项目中去。
5、编写源程序:在工程管理器中双击example4.asm ,将出现文本编辑窗口,在该文本编辑窗口中输入计算z=x+y-w 的代码如下: .title "example4.asm" .mmregsSTACK .usect "STACK",10H ;堆栈的设置 .bss x,1 ;为变量分配4个字的存储空间 .bss y,1 .bss w,1 .bss z,1 .def start .datatable .word 10,26,23 ;x,y,w .textstart: STM #0,SWWSR ;插入0个等待状态 STM #STACK+10H,SP ;设置堆栈指针 STM #x,AR1 ; AR1指向x RPT #2MVPD table,*AR1+ ;把程序存储器中的数据移动到数据存储器 CALL SUMB end: B endSUMB: LD *(x),AADD *(y),ASUB *(w),ASTL A,*(z)RET.end6、编写链接配置文件:参照实验一,需要更改的地方如下:更改前更改后example2.obj example4.obj-o example2.out -o example4.out-m example2.map -m example4.map7、编写中断向量表文件参照实验一,可不作修改。
8、对项目进行编译和链接:把example4.asm、vectors.asm、example4.cmd 依次添加到项目后,点击Project-Compile File,在项目编译成功之后点击Project-Build 选项对该项目进行链接,生成*.out 文件。
9、装载可执行文件:要让程序代码在DSP 内部运行必需将生成的*.OUT 文件装载到DSP 内部,装载方法是点击:File -Load Programe 再选择生成的example4.out 文件就可以将程序装载到DSP 的内部存储器中。
10、运行程序并查看结果:a)首先打开欲查看的数据空间:点击View-Memory,弹出“Memory Window Options” 对话框,把欲查看的地址改为0x1000,如右图所示。
b)点击OK 按钮,然后点击Debug-Run 让程序在DSP 内部运行,最后点击Debug-Halt,再观察“Memory ”对话框,看是否与下图一致。
11、实验结果截图:12、建立其它项目工程文件建立项目工程文件example5,使之实现计算y=mx+b ;建立项目工程文件example6,使 之实现计算y=x1×a2+x2×a2;建立项目工程文件example8,使之实现计算y=∑=41i ii xa ,实验步骤基本同上。
实验代码及结果如下: 计算y=mx+b :.title "example5.asm" .mmregsSTACK .usect "STACK",10H ;堆栈的设置 .bss m,1 ;为变量分配4个字的存储空间 .bss x,1 .bss b,1 .bss y,1 .def start .datatable: .word 3,15,20 ;m,x,b .textstart:STM #0,SWWSR ;插入0个等待状态 STM #STACK+10H,SP ;设置堆栈指针 STM #m,AR1 ;AR1指向mRPT #2 ;把下一条指令重复执行3遍MVPD table,*AR1+ ;把程序存储器中的数据转移到数据存储器 CALL SU end: B end SULD *(m),T MPY *(x),A ADD *(b),A STL A,*(y) RET .end连接表如下更改。
更改前 更改后 example2.obj example5.obj -o example2.out -o example5.out -m example2.map -m example5.map 向量表可以不做更改。
实验结果:计算 y=x1*a1+x2*a2代码:.title "example6.asm".mmregsSTACK .usect "STACK",10H ;堆栈的设置.bss x1,1 ;为变量分配5个字的存储空间.bss x2,1.bss a1,1.bss a2,1.bss y,1.def start.datatable: .word 3,5,15,20 ;x1,x2,a1,a2.textstart: STM #0,SWWSR ;插入0个等待状态STM #STACK+10H,SP ;设置堆栈指针STM #x1,AR1 ;AR1指向x1RPT #3 ;移动4个数据MVPD table,*AR1+ ;把数据从数据存储器存入程序存储器CALL SUMend: B endSUM: LD *(x1),TMPY *(a1),BLD *(x2),TMAC *(a2),B STL B,*(y) STH B,*(y+1) RET.end连接表如下更改。