DSP实验5

时间:2019-05-12 01:04:13下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《DSP实验5》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《DSP实验5》。

第一篇:DSP实验5

实验五 FIR数字滤波器的设计(设计性实验)

实验名称:FIR数字滤波器的设计 实验项目性质:编程设计 所属课程名称:数字信号处理 计划学时:4

一、实验目的

1.掌握用窗函数法、频率采样法设计FIR滤波器的原理及方法,熟悉响应的计算机编程;

2.熟悉线性相位FIR滤波器的幅频特性和相频特性; 3.了解各种不同窗函数对滤波器性能的影响。

二、预习与参考

2.1窗口法

窗函数法设计线性相位FIR滤波器步骤

  确定数字滤波器的性能要求:临界频率{ωk},滤波器单位脉冲响应长度N; 根据性能要求,合理选择单位脉冲响应h(n)的奇偶对称性,从而确定理想频率响应Hd(ejω)的幅频特性和相频特性;

 求理想单位脉冲响应hd(n),在实际计算中,可对Hd(ejω)按M(M远大于N)点等距离采样,并对其求IDFT得hM(n),用hM(n)代替hd(n);

 选择适当的窗函数w(n),根据h(n)= hd(n)w(n)求所需设计的FIR滤波器单位脉冲响应;

 求H(e),分析其幅频特性,若不满足要求,可适当改变窗函数形式或长度N,重复上述设计过程,以得到满意的结果。jω窗函数的傅式变换W(ejω)的主瓣决定了H(ejω)过渡带宽。W(ejω)的旁瓣大小和多少决定了H(ejω)在通带和阻带范围内波动幅度,常用的几种窗函数有:

  矩形窗 w(n)=RN(n); Hanning窗

 Hamming窗 ;

 Blackmen窗 ;

 Kaiser窗。

式中Io(x)为零阶贝塞尔函数。2.2频率采样法

频率采样法是从频域出发,将给定的理想频率响应Hd(ejω)加以等间隔采样

然后以此Hd(k)作为实际FIR数字滤波器的频率特性的采样值H(k),即令

由H(k)通过IDFT可得有限长序列h(n)

将上式代入到Z变换中去可得

其中Φ(ω)是内插函数

三、设计指标

(1)矩形窗设计线性相位低通滤波器(参数自主设定)(2)改用Hanning 窗,设计(1)中的低通滤波器。

四、实验要求(设计要求)

(1)编写窗函数法FIR滤波器设计代码,观察幅频和相位特性的变化,注意长度N变化的影响; 观察并记录窗函数对滤波器幅频特性的影响,比较两种窗的特点;(2)要求所编的程序能正确运行;画出波形,完成并提交实验报告。

五、调试及结果测试 提交带注释的(或给出每个操作所涉及的算法)且运行正确的源程序,说明调试过程中所遇到的问题、解决方法及经验与体会。

六、考核形式

理论课程闭卷考试,实验部分提交实验报告。

七、实验报告要求

1.实验报告必须独立完成,抄袭、复制他人作无效处理: 2.实验报告要求:

(1)要按规定从教学网站下载样板文件格式书写。

(2)实验报告要注明姓名,学号,实验名称,完成日期,联系电话。(3)内容不真实、不认真、不能按时完成的,不记成绩。(4)简要说明设计题目、内容、原理。

3.附滤波器设计代码及要求的图形。对实验结果和实验中的现象进行简练明确的分析并作出结论或评价,对本人在实验全过程中的经验、教训、体会、收获等进行必要的小结。4.报告要求独立完成,篇幅为A4纸不超过5页,突出自己的设计。5.对改进实验内容、安排、方法、设备等的建议和设想,(此部分可选作)。6.不能完成实验报告者,不能参加课程考试。

八、思考题

1.不同窗函数对滤波器性能的影响如何?

2.线性相位FIR滤波器的幅频特性和相频特性如何?

附:实验内容

%N=45,计算并画出矩形框、汉明窗、布莱克曼窗的归一化的幅度谱,并比较各自的主要特点 %(1)矩形窗(Rectangle Window)调用格式:w=boxcar(n),根据长度 n 产生一个矩形窗 w。

%(2)三角窗(Triangular Window)调用格式:w=triang(n),根据长度 n 产生一个三角窗 w。

%(3)汉宁窗(Hanning Window)调用格式:w=hanning(n),根据长度 n 产生一个汉宁窗 w。

%(4)海明窗(Hamming Window)调用格式:w=hamming(n),根据长度 n 产生一个海明窗 w。

%(5)布拉克曼窗(Blackman Window)调用格式:w=blackman(n),根据长度 n 产生一个布拉克曼窗 w。

%(6)恺撒窗(Kaiser Window)调用格式:w=kaiser(n,beta),根据长度 n 和影响窗函数旁瓣的β参数产生一个恺撒窗w 1 clear all %清零

close all %关闭其他程序 N=45;w1=boxcar(N);%矩形窗的调用 w2=hamming(N);%汉明窗的调用

w3=blackman(N);%布莱克曼窗的调用 [h,w]=freqz(w1,N);%矩形窗的幅频特性

figure(1)%第一张图

plot(w/pi,20*log10(abs(h)));%绘制图形

axis([0,1,-80,10]);%横轴0到1,纵轴是-80到10 grid on%画格

xlabel('归一化频率/π');%x轴标签 ylabel('幅度/dB');%y轴标签 title('矩形窗');%标题 figure(2)[h,w]=freqz(w2,N);plot(w/pi,20*log10(abs(h)));axis([0,1,-80,10]);grid on xlabel('归一化频率/π');ylabel('幅度/dB');title('汉明窗');figure(3)[h,w]=freqz(w3,N);plot(w/pi,20*log10(abs(h)));axis([0,1,-150,10]);grid on xlabel('归一化频率/π');ylabel('幅度/dB');title('布莱克曼窗');2 %N=15,带通滤波器的两个通带边界分别是w1=0.3π,w2=0.5π。用汉宁窗设计此线性相位滤波器,观察

%它的实际3dB和20dB带宽。N=45,重复这一设计,观察幅频和相位特性的变化,注意N变化的影响。

close all %关闭其他程序 clear all%清零 N=15;w1=0.3;w2=0.5;w=hanning(N);%汉宁窗的调用 n=0:N-1;alfa=(N-1)/2;%对称轴

h=fir1(N-1,[w1 w2],w);%设计加窗函数的有效滤波器,w1,w2通带的两个范围,w指汉宁窗

[h1,w3]=freqz(h,1);% %汉宁窗的幅频特性 figure(1)%第一张图

subplot(2,1,1);%两张图的第一张图

plot(w3/pi,20*log10(abs(h1)));%绘制图形

grid on;%画格

axis([0,1,-80,10]);;%横轴0到1,纵轴是-80到10 xlabel('归一化频率/π');%x轴标签 ylabel('幅度/dB');%y轴标签

subplot(2,1,2);%两张图的第二张图 plot(w3/pi,angle(h1));grid on;axis([0,1,-4,4]);xlabel('归一化频率/π');ylabel('角度/rad');N=45;w=hanning(N);n=0:N-1;alfa=(N-1)/2;h=fir1(N-1,[w1 w2],w);[h1,w3]=freqz(h,1);figure(2)subplot(2,1,1);plot(w3/pi,20*log10(abs(h1)));grid on;axis([0,1,-80,10]);xlabel('归一化频率/π');ylabel('幅度/dB');subplot(2,1,2);plot(w3/pi,angle(h1));grid on;axis([0,1,-4,4]);xlabel('归一化频率/π');ylabel('角度/rad');3 close all%关闭其他程序 clear all%清零 N=15;w1=0.3;w2=0.5;wn1=boxcar(N);%矩形窗的调用

wn2=blackman(N);%布莱克曼窗的调用

hn1=fir1(N-1,[w1 w2],wn1);%设计加窗函数的有效滤波器,w1,w2通带的两个范围,w指汉宁窗

hn2=fir1(N-1,[w1 w2],wn2);[h1,w3]=freqz(hn1,1);%矩形窗的幅频特性 figure(1)%第一张图%绘制图形

plot(w3/pi,20*log10(abs(h1)));%绘制图形 grid on;%画格

axis([0,1,-80,10]);%横轴0到1,纵轴是-80到10 xlabel('归一化频率/π');%x轴标签 ylabel('幅度/dB');%y轴标签 title('矩形窗,N=15');%标题 [h1,w3]=freqz(hn2,1);figure(2)plot(w3/pi,20*log10(abs(h1)));grid on;axis([0,1,-80,10]);xlabel('归一化频率/π');ylabel('幅度/dB');title('布莱克曼窗,N=15');N=45;wn1=boxcar(N);wn2=blackman(N);hn1=fir1(N-1,[w1 w2],wn1);hn2=fir1(N-1,[w1 w2],wn2);[h1,w3]=freqz(hn1,1);figure(3)plot(w3/pi,20*log10(abs(h1)));grid on;axis([0,1,-80,10]);xlabel('归一化频率/π');ylabel('幅度/dB');title('矩形窗,N=45');[h1,w3]=freqz(hn2,1);figure(4)plot(w3/pi,20*log10(abs(h1)));grid on;axis([0,1,-110,10]);xlabel('归一化频率/π');ylabel('幅度/dB');title('布莱克曼窗,N=45');4:

close all%关闭其他程序 clear all%清零 N=40;%beta=4 for n=1:3 %or循环 if n==1 %if语句 beta=4;elseif n==2 beta=6;else beta=10;end;w=kaiser(N,beta);%凯塞窗的调用

h=fir1(N-1,[0.2 0.4 0.6 0.8],w);%设计加窗函数的有效滤波器,w指汉宁窗 [h1,w1]=freqz(h,1);%凯塞窗的幅频特性 figure(n)%第n张图

subplot(2,1,1);%两张图的第一张图 plot(w1/pi,20*log10(abs(h1)));%绘制图形 grid on;%画格

axis([0,1,-80,10]);%横轴0到1,纵轴是-80到10 xlabel('归一化频率/π');%x轴标签 ylabel('幅度/dB');%y轴标签 if n==1 %if语句

title('beta=4');elseif n==2 title('beta=6');else title('beta=10');end;subplot(2,1,2);plot(w1/pi,angle(h1));grid on;axis([0,1,-4,4]);xlabel('归一化频率/π');ylabel('角度/rad');end 5 clear all%清零

close all%关闭其他程序 N=45;k=0:N-1;for k=0:N-1 %for循环 w=2*pi/N*k;%取样 hk(1,k+1)=0;if((w>=0.2*pi)&&(w<=0.4*pi))||(w>=0.6*pi && w<=0.8*pi)||(w>=1.2*pi && w<=1.4*pi)||(w>=1.6*pi && w<=1.8*pi)hk(1,k+1)=1;end end k=0:N-1;hk(1,5)=0.5;hk(1,11)=0.5;hk(1,14)=0.5;hk(1,20)=0.5;hk(1,27)=0.5;hk(1,33)=0.5;hk(1,36)=0.5;hk(1,42)=0.5;thetak=-k*2*pi/N*((N-1)/2);%表示相位 hk1=hk.*exp(j*thetak);%定义式子 hn=ifft(hk1);%快速傅立叶逆变换 [h1,w1]=freqz(hn,1);%幅频特性

plot(w1/pi,20*log10(abs(h1)));%绘制图形 grid on;%画格

axis([0,1,-80,10]);%横轴0到1,纵轴是-80到10 xlabel('归一化频率/π');%x轴标签 ylabel('幅度/dB');%y轴标签

六、实验分析及心得体会

第二篇:DSP实验学习心得

DSP实验学习心得

论DSP发展前景

DSP 即为数字信号处理器(Digital Signal Processing),是在模拟信号变换成数 字信号以后进行高速实时处理的专用处理器。它的工作原理是将现实世界的模拟信号转换 成数字信号,再用数学方法处理此信号,得到相应的结果。自从数字信号处理器(Digital Signal Processor)问世以来,由于它具有高速、灵活、可编程、低功耗和便于接口等特 点,已在图形、图像处理,语音、语言处理,通用信号处理,测量分析,通信等领域发挥 越来越重要的作用。随着成本的降低,控制界已对此产生浓厚兴趣,已在不少场合得到成 功应用。DSP 数字信号处理器 DSP 芯片采用了数据总线和程序总线分离的哈佛结构及改 进的哈佛结构,较传统处理器的冯?诺依曼结构具有更高的指令执行速度。其处理速度比最 快的 CPU 快 10-50 倍。在当今数字化时代背景下,DSP 已成为通信、计算机、消费类电 子产品等领域的基础器件,被誉为信息社会革命的“旗手”。

最初的 DSP 器件只是被设计成用以完成复杂数字信号处理的算法。DSP 器件 紧随着数字信号理论的发展而不断发展。DSP发展最快,现在的 DSP 属于第五代产品,它与第四代相比,系统集成度更高,将 DSP 芯核及外围组件综合集成在单一芯片上。这种集成度极高的 DSP 芯片不仅在通信、计算机领域大显身手,而且逐渐渗透 到人们日常消费领域,前景十分可观。近年来,随着通信技术的飞速发展,DSP已经成为信号与信息处理领域里一门十分重要的新兴学科,它代表着当今无线系统的主流发展方向。现在,通信领域中许多产品 都与 DSP 密切联系,例如,Modem、数据加密、扩频通信、可视电话等。而寻找 DSP 芯片来实现算法最开始的目标是在可以接受的时间内对算法做仿真,随后是将波形存储起 来,然后再加以处理。

在短短的十多年 时间,DSP芯片已经在信号处理、通信、雷达等许多领域得到广泛的应用。目前, DSP 芯片的价格也越来越低,性能价格比日益提高,具有巨大的应用潜力。DSP 芯片的应用主要有:(1)

信号处理--如,数字滤波、自适应滤波、快速傅里叶变换、相关运算、频谱分析、卷积等。(2)通信--如,调制解调器、自适应均衡、数据加密、数据压缩、回坡抵消、多路复用、传真、扩频通信、纠错编码、波形产生等。(3)语音--如语音编码、语音合成、语音识别、语音增强、说话人辨认、说话人确认、语音邮件、语音储存等。(4)图像/图形--如二维和三维图形处理、图像压缩与传输、图像增强、动画、机器人视觉等。(5)军事--如保密通信、雷达处理、声纳处理、导航等。

(6)仪器仪表--如频谱分析、函数发生、锁相环、地震处理等。(7)

自动控制--如引擎控制、深空、自动驾驶、机器人控制、磁盘控制。(8)

医疗--如助听、超声设备、诊断工具、病人监护等。(9)家用电器--如高保真音响、音乐合成、音调控制、玩具与游戏、数字 电话/电视等 DSP 的发展前景 DSP 的功能越来越强,应用越来越广,达到甚至超过了微控制器的功能,比 微控制器做得更好而且价格更便宜,许多家电用第二代 DSP 来控制大功率电机就 是一个很好的例子。汽车、个人通信装置、家用电器以及数以百万计的工厂使用 DSP 系统。数码相机、IP 电话和手持电子设备的热销带来了对 DSP 芯片的巨大需 求。而手机、PDA、MP3 播放器以及手提电脑等则是设备个性化的典型代表,这 些设备的发展水平取决于 DSP 的发展。新的形势下,DSP 面临的要求是处理速度 更高,功能更多更全,功耗更低,存储器用量更少。

DSP 的技术发展将会有以下 一些走势:(1)系统级集成 DSP 是潮流。小 DSP 芯片尺寸始终是 DSP 的技术发展方向。当前的 DSP 尺寸小、功耗低、性能高。各 DSP 厂商纷纷采用新工艺,改进 DSP 芯核,并将几个 DSP 芯核、MPU 芯核、专用处理单元、外围电路单元、存储单元 统统集成在一个芯片上,成为 DSP 系统级集成电路。(2)追求更高的运算速度和进一步降低功耗和几何尺寸。由于电子设备的 个人化和客户化趋势,DSP 必须追求更高更快的运算速度,才能跟上电子设备的 更新步伐。同时由于 DSP 的应用范围已扩大到人们工作生活的各个领域,特别是 便携式手持产品对于低功耗和尺寸的要求很高,所以

DSP 有待于进一步降低功 耗。按照 CMOS 的发展趋势,依靠新工艺改进芯片结构,DSP 运算速度的提高和 功耗尺寸的降低是完全可能的。

(3)DSP 的内核结构进一步改善。DSP 的结构主要是针对应用,并根据应用 优化 DSP 设计以极大改进产品的性能。多通道结构和单指令多重数据、超长指令 字结构、超标量结构、超流水结构、多处理、多线程及可并行扩展的超级哈佛结 构(SHARC)在新的高性能处理器中将占据主导地位。(4)DSP 嵌入式系统。DSP 嵌入式系统是 DSP 系统嵌入到应用电子系统中 的一种通用系统。这种系统既具有 DSP 器件在数据处理方面的优势,又具有应用 目标所需要的技术特征。在许多嵌入式应用领域,既需要在数据处理方面具有独 特优势的 DSP,也需要在智能控制方面技高一筹的微处理器(MCU)。因此,将 DSP 与 MCU 融合在一起的双核平台,将成为 DSP 技术发展的一种新潮流。DSP 的发展非常迅速,而销售价格逐年降低目前 DSP 的结构、总线、资源和 接口技术都趋于标准化,尤其接口的标准化进展更快。这给从事系统设计的工程 技术人员带来很大机遇,采用先进的 DSP 将会使开发的产品具有更强的市场竞争 力。

近几年来,DSP芯片、应用软件和系统的发展非常迅速,每年增长速度高达40%。其市场驱动力主要是因特网、无线通信、硬盘驱动器、可视电话和会议电视以及其它消费 类电子产品。也就是说,DSP产业的发展依赖于通信技术和通信市场。随着新的通信体 制、传输方式和多媒体智能终端的迅速发展,其算法、标准和规程都需要在实践中不断发 展、改进和优化。DSP编程的灵活性和不断增强的运算能力,同时又将使通信技术向更 高层次迈进。这对通信领域的广大科技人员是一个机遇。抓住这个机遇,我们将大有作为。

通过这几次实验,我初步的对dsp有了一定了解。虽然是在老师们的指导下完成实验要求的,但是我想我还是收获蛮多的。希望在以后的学习生活中能对dsp有更多的学习和研究。

第三篇:DSP实验心得体会

篇一:dsp实验报告心得体会

tms320f2812x dsp原理及应用技术实验心得体会

1.设置环境时分为软件设置和硬件设置,根据实验的需要设置,这次实验只是

软件仿真,可以不设置硬件,但是要为日后的实验做准备,还是要学习和熟悉硬件设置的过程。

2.在设置硬件时,不是按实验书上的型号选择,而是应该按照实验设备上的型

号去添加。

3.不管是硬件还是软件的设置,都应该将之前设置好的删去,重新添加。设置好的配置中

只能有一项。4.ccs可以工作在纯软件仿真环境中,就是由软件在pc机内存中构造一个虚拟的

dsp环境,可以调试、运行程序。但是一般无法构造dsp中的外设,所以软件仿真通常用于调试纯软件算法和进行效率分析等。

5.这次实验采用软件仿真,不需要打开电源箱的电源。

6.在软件仿真工作时,无需连接板卡和仿真器等硬件。

7.执行write_buffer一行时。如果按f10执行程序,则程序在mian主函数中运行,如果按f11,则程序进入write_buffe函数内部的程序运行。

8.把str变量加到观察窗口中,点击变量左边的“+”,观察窗口可以展开结构变

量,就可以看到结构体变量中的每个元素了。

9.在实验时,显示图形出现问题,不能显示,后来在graph title 把input的大写

改为input,在对volume进行编译执行后,就可以看到显示的正弦波图形了。

10.在修改了实验2-1的程序后,要重新编译、连接执行程序,并且必须对.out 文件进行重新加载,因为此时.out文件已经改变了。如果不重新加载,那么修改执行程序后,其结果将不会改变。11.再观察结果时,可将data和data1的窗口同时打开,这样可以便于比较,观察

结果。

12.通过这次实验,对tms320f2812x dsp软件仿真及调试有了初步的了解与认识,因为做

实验的时候都是按照实验指导书按部就班的,与真正的理解和掌握还是有些距离的。但是这也为我们日后运用这些知识打下了基础,我觉得实验中遇到的问题,不要急于问老师或者同学,先自己想办法分析原因,想办法解决,这样对自身的提高更多吧。通过做实验,把学习的知识利用起来,也对这门课程更加有兴趣了。

组员:叶孝璐 冯焕芬 郑玮仪 庞露露

2012年4月10号 篇二:dsp实验报告+心得体会

龙 岩 学 院

实 验 报 告

班 级 07电本(1)班 学号 2007050344 姓 名 杨宝辉 同组人 独立 实验日期 2010-5-18 室温 大气压 成 绩

基础实验

一、实验目的

二、实验设备

三、实验原理

浮点数的表达和计算是进行数字信号处理的基本知识;产生正弦信号是数字信号处理1.一台装有ccs软件的计算机; 2.dsp实验箱的tms320f2812主控板; 3.dsp硬件仿真器。1.掌握ccs实验环境的使用; 2.掌握用c语言编写dsp程序的方法。中经常用到的运算;c语言是现代数字信号处理表达的基础语言和通用语言。写实现程序时需要注意两点:(1)浮点数的范围及存储格式;(2)dsp的c语言与ansi c语言的区别。

四、实验步骤 1.打开ccs 并熟悉其界面;

2.在ccs环境中打开本实验的工程(example_base.pjt),编译并重建.out 输出文件,然后通过仿真器把执行代码下载到dsp芯片中;

3. 把x0 , y0 和z0添加到watch窗口中作为观察对象(选中变量名,单击鼠标右键,在弹出菜单中选择“add watch window”命令);

4. 选择view->graph->time/frequency„。设置对话框中的参数: 其中“start address”

设为“sin_value”,“acquisition buffer size”和“display data size”都设为“100”,并且把“dsp data type”设为“32-bit floating point”,设置好后观察信号序列的波形(sin函数,如图);

5. 单击运行;

6. 观察三个变量从初始化到运算结束整个过程中的变化;观察正弦波形从初始化到运算结束整个过程中的变化;

7. 修改输入序列的长度或初始值,重复上述过程。

五、实验心得体会

通过本次实验,加深了我对dsp的认识,使我对dsp实验的操作有了更进一步的理解。基本掌握了ccs实验环境的使用,并能够使用c语言进行简单的dsp程序设计。

从软件的安装到使用软件进行程序设计与仿真,锻炼了自己的动手能力,也遇到了不少的坎坷,例如芯片的选择,不能因为麻烦而省略该步骤,否则将会运行出错。

附录实验程序:

#include math.h #include stdio.h #define n 100 #define pi 3.14159 float sin_value[100];float x0,y0,z0;void main(void){ int i;for(i=0;i

/* 0.100 0000 0000 0000 */ z0=x0*y0;

/* 00.01 0000 0000 0000 0000 0000 0000 0000 */ for(i=0;i

实 验 报 告

班 级 07电本(1)班 学号 2007050344姓 名 杨宝辉 同组人 独立 实验日期 2010-5-20 室温 大气压 成 绩

数码管控制实验

一、实验目的 1.2.3.熟悉2812的指令系统; 熟悉74hc573的使用方法。熟悉dsp的io操作使用方法。

二、实验设备 1.一台装有ccs2000软件的计算机;

2.插上2812主控板的dsp实验箱; 3.dsp硬件仿真器。

三、实验原理

此模块由数码管和四个锁存器组成。数码管为共阴极型的。数据由2812模块的低八位输入,锁存器的控制信号由2812模块输出,但经由cpld模块译码后再控制对应的八个

四、实验步骤

1.把2812模块小板插到大板上;

2.在ccs2000环境中打开本实验的工程编译example_7segled.prj,生成输出文件,通过仿真器把执行代码下载到dsp芯片;

3.运行程序;数码管会显示1~8的数字。

4.参考源代码自行修改程序改变显示样式。

五、实验心得体会

通过本次实验中,基本掌握了2812的指令系统的特点,并能够了解并熟悉74hc573的使用方法,进一步加深了对dsp的认识。同时,通过实验操作dsp的io操作使用方法,对于dsp的io操作可以熟悉的运用,学到更多的知识。

程序见附录:

#include include/dsp281x_device.h // dsp281x headerfile include file #include include/dsp281x_examples.h // dsp281x examples include file // prototype statements for functions found within this file.void delay_loop(void);void gpio_select(void);// global variable for this example short codetab[17]= {0x4020,0x6cc0,0x5800,0x4840,0x6440,0xc040,0xc000,0x4cc0, 0x4000,0x4040,0x4400,0xe000,0xd080,0xe800,0xd000,0xd400,0xffff};main(){ short i;// step 1.initialize system control: // pll, watchdog, enable peripheral clocks // this example function is found in the dsp281x_sysctrl.c file.initsysctrl();// specific clock setting for this example: 篇三:dsp实验学习心得

dsp实验学习心得

论dsp发展前景

dsp 即为数字信号处理器(digital signal processing),是在模拟信号变换成数 字信号以后进行高速实时处理的专用处理器。它的工作原理是将现实世界的模拟信号转换 成数字信号,再用数学方法处理此信号,得到相应的结果。自从数字信号处理器(digital signal processor)问世以来,由于它具有高速、灵活、可编程、低功耗和便于接口等特 点,已在图形、图像处理,语音、语言处理,通用信号处理,测量分析,通信等领域发挥 越来越重要的作用。随着成本的降低,控制界已对此产生浓厚兴趣,已在不少场合得到成 功应用。dsp 数字信号处理器 dsp 芯片采用了数据总线和程序总线分离的哈佛结构及改 进的哈佛结构,较传统处理器的冯?诺依曼结构具有更高的指令执行速度。其处理速度比最 快的 cpu 快 10-50 倍。在当今数字化时代背景下,dsp 已成为通信、计算机、消费类电 子产品等领域的基础器件,被誉为信息社会革命的“旗手”。

最初的 dsp 器件只是被设计成用以完成复杂数字信号处理的算法。dsp 器件 紧随着数字信号理论的发展而不断发展。dsp发展最快,现在的 dsp 属于第五代产品,它与第四代相比,系统集成度更高,将 dsp 芯核及外围组件综合集成在单一芯片上。这种集成度极高的 dsp 芯片不仅在通信、计算机领域大显身手,而且逐渐渗透 到人们日常消费领域,前景十分可观。近年来,随着通信技术的飞速发展,dsp已经成为信号与信息处理领域里一门十分重要的新兴学科,它代表着当今无线系统的主流发展方向。现在,通信领域中许多产品

都与 dsp 密切联系,例如,modem、数据加密、扩频通信、可视电话等。而寻找 dsp 芯片来实现算法最开始的目标是在可以接受的时间内对算法做仿真,随后是将波形存储起 来,然后再加以处理。

在短短的十多年 时间,dsp芯片已经在信号处理、通信、雷达等许多领域得到广泛的应用。目前, dsp 芯片的价格也越来越低,性能价格比日益提高,具有巨大的应用潜力。dsp 芯片的应用主要有:(1)

信号处理--如,数字滤波、自适应滤波、快速傅里叶变换、相关运算、频谱分析、卷积等。(2)通信--如,调制解调器、自适应均衡、数据加密、数据压缩、回坡抵消、多路复用、传真、扩频通信、纠错编码、波形产生等。(3)语音--如语音编码、语音合成、语音识别、语音增强、说话人辨认、说话人确认、语音邮件、语音储存等。(4)图像/图形--如二维和三维图形处理、图像压缩与传输、图像增强、动画、机器人视觉等。(5)军事--如保密通信、雷达处理、声纳处理、导航等。

(6)仪器仪表--如频谱分析、函数发生、锁相环、地震处理等。(7)自动控制--如引擎控制、深空、自动驾驶、机器人控制、磁盘控制。(8)医疗--如助听、超声设备、诊断工具、病人监护等。(9)家用电器--如高保真音响、音乐合成、音调控制、玩具与游戏、数字 电话/电视等 dsp 的发展前景 dsp 的功能越来越强,应用越来越广,达到甚至超过了微控制器的功能,比 微控制器做得更好而且价格更便宜,许多家电用第二代 dsp 来控制大功率电机就 是一个很好的例子。汽车、个人通信装置、家用电器以及数以百万计的工厂使用 dsp 系统。数码相机、ip 电话和手持电子设备的热销带来了对 dsp 芯片的巨大需 求。而手机、pda、mp3 播放器以及手提电脑等则是设备个性化的典型代表,这 些设备的发展水平取决于 dsp 的发展。新的形势下,dsp 面临的要求是处理速度 更高,功能更多更全,功耗更低,存储器用量更少。

dsp 的技术发展将会有以下 一些走势:(1)系统级集成 dsp 是潮流。小 dsp 芯片尺寸始终是 dsp 的技术发展方向。当前的 dsp 尺寸小、功耗低、性能高。各 dsp 厂商纷纷采用新工艺,改进 dsp 芯核,并将几个 dsp 芯核、mpu 芯核、专用处理单元、外围电路单元、存储单元 统统集成在一个芯片上,成为 dsp 系统级集成电路。(2)追求更高的运算速度和进一步降低功耗和几何尺寸。由于电子设备的 个人化和客户化趋势,dsp 必须追求更高更快的运算速度,才能跟上电子设备的 更新步伐。同时由于 dsp 的应用范围已扩大到人们工作生活的各个领域,特别是 便携式手持产品对于低功耗和尺寸的要求很高,所以 dsp 有待于进一步降低功 耗。按照 cmos 的发展趋势,依靠新工艺改进芯片结构,dsp 运算速度的提高和 功耗尺寸的降低是完全可能的。

(3)dsp 的内核结构进一步改善。dsp 的结构主要是针对应用,并根据应用 优化 dsp 设计以极大改进产品的性能。多通道结构和单指令多重数据、超长指令 字结构、超标量结构、超流水结构、多处理、多线程及可并行扩展的超级哈佛结 构(sharc)在新的高性能处理器中将占据主导地位。(4)dsp 嵌入式系统。dsp 嵌入式系统是 dsp 系统嵌入到应用电子系统中 的一种通用系统。这种系统既具有 dsp 器件在数据处理方面的优势,又具有应用 目标所需要的技术特征。在许多嵌入式应用领域,既需要在数据处理方面具有独 特优势的 dsp,也需要在

智能控制方面技高一筹的微处理器(mcu)。因此,将 dsp 与 mcu 融合在一起的双核平台,将成为 dsp 技术发展的一种新潮流。dsp 的发展非常迅速,而销售价格逐年降低目前 dsp 的结构、总线、资源和 接口技术都趋于标准化,尤其接口的标准化进展更快。这给从事系统设计的工程 技术人员带来很大机遇,采用先进的 dsp 将会使开发的产品具有更强的市场竞争 力。

近几年来,dsp芯片、应用软件和系统的发展非常迅速,每年增长速度高达40%。其市场驱动力主要是因特网、无线通信、硬盘驱动器、可视电话和会议电视以及其它消费 类电子产品。也就是说,dsp产业的发展依赖于通信技术和通信市场。随着新的通信体 制、传输方式和多媒体智能终端的迅速发展,其算法、标准和规程都需要在实践中不断发 展、改进和优化。dsp编程的灵活性和不断增强的运算能力,同时又将使通信技术向更 高层次迈进。这对通信领域的广大科技人员是一个机遇。抓住这个机遇,我们将大有作为。

通过这几次实验,我初步的对dsp有了一定了解。虽然是在老师们的指导下完成实验要求的,但是我想我还是收获蛮多的。希望在以后的学习生活中能对dsp有更多的学习和研究。篇四:dsp课程设计实验报告总结

dsp课程设计总结

(2013-2014学年第2学期)

题 目 : 专业班级 : 电子1103 学生姓名 : 万 蒙 学 号 : 11052304 指导教师 : 设计成绩 :

2014 年 6 月

目 录

一 设计目的--------3 二 系统分析--------3 三 硬件设计

3.1 硬件总体结构----------------------------3 3.2 dsp模块设计----------------------------4 3.3 电源模块设计---------------------------4 3.4 时钟模块设计---------------------------5 3.5 存储器模块设计-------------------------6 3.6 复位模块设计---------------------------6 3.7 jtag模块设计-------------------------7 四 软件设计

4.1 软件总体流程----------------------7 4.2 核心模块及实现代码--------8 五 课程设计总结----------------------14

一、设计目的

设计一个功能完备,能够独立运行的精简dsp硬件系统,并设计简单的dsp控制程序。

二、系统分析 1.1设计要求 硬件要求:

(1)使用tms320vc5416作为核心芯片。(2)具有最简单的led控制功能。(3)具有存放程序的外部flash芯片。(4)外部输入+5v电源。(5)绘制出系统的功能框图。

(6)使用ad(altium designer)绘制出系统的原理图和pcb版图。软件要求:

利用实验箱的模拟信号产生单元产生不同频率的信号,或者产生两个频率的信号的叠加。在dsp中采集信号,并且对信号进行频谱分析,滤波等。通过键盘选择算法的功能,将计算的信号频率或者滤波后信号的频率在lcd上显示。

三、硬件设计 3.1 硬件总体结构

3.2 dsp总体结构

3.3 电源模块设计

3.4 时钟模块设计

3.5 存储器模块设计

3.6复位模块设计

篇五:dsp实验报告(完美版)dsp实验报告

班 级:11050641 学 号:

姓 名:

指导教师:

实验一、二 dsp芯片的开发工具及应用实验 1.实验目的(1)熟悉ccs集成开发环境,掌握工程的生成方法;

(2)熟悉seed-dtk dad实验环境;

(3)掌握ccs集成开发环境的调试方法。

2.实验设备

dsp实验箱,计算机,ccs软件。

3.实验内容及步骤

(1)ccs软件的安装;

(2)了解seed-dtk5416实验环境;

(3)打开ccs集成开发环境,进入ccs的操作环境;

(4)新建一个工程文件

1在c:timyprojects中建立文件夹 volume1(如果ccs安装在其他○

d:ti ,则在d:timyprojects中);

2将c:titutorialtargetvolume1○拷贝到c:timyprojects volume1;

3从在ccs 中的project 菜单,选择 new; ○

4在project name域中,键入volume1; ○

5在location区域中,浏览步骤1所建立的工作文件夹; ○

6在project type 域中,选择executable(.out); ○

7在target域中,选择ccs配置的目标,并单击完成。○

(5)向工程中添加文件

1从project/add files to project,选择 volume.c,单击 open(或右○

击project view图标,选择add files to project);

2选择project/add files to project,在files of type对话框中,选○

择asm source files(*.a*, *.s*)。选择vectors.asm 和 load.asm, 单击open; 3选择 project/add files to project,在files of type 对话框中选○

4选择project/add files to project,到编辑器库文件夹○

(c:tic5400cgtoolslib),在files of type对话框中选择object and library files(*.o*, *.lib)。选择rts.lib文件,单击open。这个库提供目标dsp 运行时间支持(runtime-support);

5project view窗口,右击volume1.pjt,选择scan all dependencies,○

volume.h将出现在project view窗中的libraries文件夹;

头文件不要手动添加,自动到:当前目录(源文件所在)或预编译器的“include search path(-i)”option所指定的位置。显示头文件:project—>show dependencies。

6单击 volume1.pjt上的+号,展开工程列表。这个列表称为project ○

view。

(6)查看源程序代码

双击project view中 volume.c文件,ccs窗口的右半窗中出现c源代码。

(7)编译与运行程序

1选择project/rebuild all或单击(rebuild all)菜单条按钮,ccs重○

新进行编辑、汇编、连接工程里的所有文件。这个处理的有关信息在窗口低部一个小框里显示;

2默认时,.out文件编译到位于当前工程文件夹中的调试(debug),目录中○

也可以通过ccs工具条选择一个存储目录;

3选择file/load program。选中volume1.out,并按open。○

(c:timyprojectsvolume1debug 文件夹中。)ccs将程序装载到目标dsp上,打开显示程序反汇编指令的disassembly窗口;

4选择view/mixed source/asm.,这样可以同时查看c源程序和产生的汇○

编代码;

5在混合窗口单击汇编指令(单击有效指令,而不是指令的地址或指令所○

传递的区域),单击f1,ccs可以寻找此指令的帮助。这是学习指令的很好的方法;

6选择debug/go main,从主程序开始执行; ○

7选择debug/run或单击(run)按钮; ○

8选择debug/ halt,退出程序运行。○

(8)更改程序的选择、定位语法错误

1选择project/build options; ○

preprocessor,在define symbols区域键入fileio,按tab键; 3单击ok,保存新的选择设置; ○ 4选择project/rebuild all或单击(rebuild all)按钮。只要工程选择○

更改,则必须重新编译所有的文件;

5编译信息显示,程序包含编辑错误。单击build,你可以看见语法错误信○

息;

6双击描述语法错误位置的红色文字(第68行)○。注意volume.c源程序已打开,且光标位于下面的行上: processing(input, output);; 7语法错误位于光标位置的上一行(丢了个分号)○,如:puts(begin processing);;

8注意:edit窗口标题栏中的文件名附近出现星号(*)○,指示源程序已经被修改,文件保存后,星号消失; 9选择file/save,或按ctrl+s,将更改保存到volume.c; ○

10选择project/build,或(incremental build)单击工具条,ccs重新编○

译已经修改的文件; 11选择file/load program,选中volume1.out; ○

12选择debug/go main,从主函数开始执行。由→执行可以暂停; ○

13选择debug/run或(run)单击菜单条; ○

14选择debug/halt,退出程序运行。○

(9)使用断点(breakpoints)和观察窗口(watch window)程序执行时常常需要检查变量的值。1file/reload program; ○

2双击project view 窗中的volume.c。可以将窗口变大,看到更多的源○

代码;

3将光标放在dataio(); ○

4单击(toggle breakpoint)工具条,或按f9。选择空白区指示断点已经设○

置(红色图标); 5window,在ccs窗口的右下角出现单个区域,同时,这○

量的值;

6选择debug/go main; ○

7或按f5; ○

9达式图标,键入要观察的变量名dataio; ○

10中的白色区域,保存更改。这个值将立即出现在下面的例○

11over)或按f10,跨过对dataio()的调用; ○

12(remove all breakpoints)。○

的watch window 的值,也可以观察一个结构的元素的值。

2表达式图标,键入要观察表达式名称str; ○

3的白色空间,保存更改。数值将立即出现在下面的例子○

4source code调出 volume.c中全局申明、并初始化的○

构。volume.h定义了parms的结构类型;

5ccs将结构中所有元素和元素值。双击结构中元素的○

value选择view/watch 个区域显示观察变如果不在主程序,选择debug/run,选择watch1; ○ 单击name栏中表单击观察窗口子中;

单击(step 完成后,单击(10)使用带结构除了观察简单变量选择watch1; ○ 单击name栏中的单击观察窗口中中;

从reviewing the 类型为parms的结单击str上的+号,编辑元素的值;

6在watch window 中value栏,更改变量的值。注意:watch window中○

数值的更改,数值也变为红色,表示已经手动修改;

7选择watch window中str变量,按delete 键。其他变量同理; ○

8选择debug/breakpoints,在breakpoints中,单击delete all,然后○

单击ok。

(11)添加探针probe point(为了文件i/o)

可以添加探针(probe point),从pc机中的文件读数据。

按照下面的步骤使用探针:

从主pc中传递输入数据,到算法所使用的目标的缓冲器中;

从目标的缓冲器中传递输出数据,到主pc中;

用数据修改窗口。

下面将学习如何使用probe point,将pc文件中的内容,作为测试数据,传递到目标dsp中。另外,也可以使用断点修改所有打开的窗口。1选择file/load program,选中volume1.out,单击open; ○

2双击project view中的volume.c; ○

3将光标放到主程序中dataio(); ○

4单击(toggle probe point)。选择空白区域指示探针已经设置(兰色图○

标),如果废止

选择区,此行为兰色显亮;

5从file菜单,选择file i/o。出现file i/o对话框,因此可以选择输○

入输出文件; 6在file input,单击add file; ○

7浏览volume1工程文件夹,选中sine.dat,单击open。sine.dat文件是○

正弦波的十六进制数值,出现sine.dat文件的控制窗口。再后,当运行程序时,可以在数据文件中使用此窗口启动、停止、返回、或快进; 8在file i/o对话框,更改address 为inp_buffer,length为100,在○

wrap around中可以添加选中符号;

9单击add probe point。出现 break/probe points对话框中的 probe ○

points; 10在 probe point列表中,显亮行为:volume.c line 61--> no ○

connection; 11区域中,单击下箭头,从列表中选中sine.dat; ○

12probe point列表改向显示这个probe point连接到○

sine.dat 13i/o对话框显示文件现在连接到probe point; ○

14file i/o对话框。○

以查看关于时间的信号图形。

在connect to单击 replace。文件; 单击ok。file 单击ok,关闭(12)显示图形 在这个例子中,可

第四篇:DSP实验学习心得

DSP实验学习心得

DSP即为数字信号处理器(Digital Signal Processing),是在模拟信号变换成数字信号以后进行高速实时处理的专用处理器。它的工作原理是将现实世界的模拟信号转换成数字信号,再用数学方法处理此信号,得到相应的结果。自从数字信号处理器(Digital Signal Processor)问世以来,由于它具有高速、灵活、可编程、低功耗和便于接口等特点,已在图形、图像处理,语音、语言处理,通用信号处理,测量分析,通信等领域发挥越来越重要的作用。随着成本的降低,控制界已对此产生浓厚兴趣,已在不少场合得到成功应用。DSP 数字信号处理器DSP 芯片采用了数据总线和程序总线分离的哈佛结构及改进的哈佛结构,较传统处理器的冯诺依曼结构具有更高的指令执行速度。其处理速度比最快的CPU快10-50倍。在当今数字化时代背景下,DSP 已成为通信、计算机、消费类电子产品等领域的基础器件,被誉为信息社会革命的“旗手”。

最初的DSP器件只是被设计成用以完成复杂数字信号处理的算法。DSP器件紧随着数字信号理论的发展而不断发展。DSP发展最快,现在的DSP属于第五代产品,它与第四代相比,系统集成度更高,将DSP 芯核及外围组件综合集成在单一芯片上。这种集成度极高的DSP 芯片不仅在通信、计算机领域大显身手,而且逐渐渗透到人们日常消费领域,前景十分可观。近年来,随着通信技术的飞速发展,DSP已经成为信号与信息处理领域里一门十分重要的新兴学科,它代表着当今无线系统的主流发展方向。现在,通信领域中许多产品都与DSP 密切联系,例如,Modem、数据加密、扩频通信、可视电话等。而寻找DSP芯片来实现算法最开始的目标是在可以接受的时间内对算法做仿真,随后是将波形存储起

来,然后再加以处理。在短短的十多年时间,DSP芯片已经在信号处理、通信、雷达等许多领域得到广泛的应用。目前, DSP 芯片的价格也越来越低,性能价格比日益提高,具有巨大的应用潜力。DSP 芯片的应用主要有:(1)信号处理--如,数字滤波、自适应滤波、快速傅里叶变换、相关运算、频谱分析、卷积等。(2)通信--如,调制解调器、自适应均衡、数据加密、数据压缩、回坡抵消、多路复用、传真、扩频通信、纠错编码、波形产生等。(3)语音--如语音编码、语音合成、语音识别、语音增强、说话人辨认、说话人确认、语音邮件、语音储存等。(4)图像/图形--如二维和三维图形处理、图像压缩与传输、图像增强、动画、机器人视觉等。(5)军事--如保密通信、雷达处理、声纳处理、导航等。(6)仪器仪表--如频谱分析、函数发生、锁相环、地震处理等。(7)自动控制--如引擎控制、深空、自动驾驶、机器人控制、磁盘控制。(8)医疗--如助听、超声设备、诊断工具、病人监护等。(9)家用电器--如高保真音响、音乐合成、音调控制、玩具与游戏、数字电话/电视等DSP 的发展前景DSP的功能越来越强,应用越来越广,达到甚至超过了微控制器的功能,比微控制器做得更好而且价格更便宜,许多家电用第二代DSP 来控制大功率电机就是一个很好的例子。汽车、个人通信装置、家用电器以及数以百万计的工厂使用DSP 系统。数码相机、IP 电话和手持电子设备的热销带来了对DSP芯片的巨大需求。而手机、PDA、MP3 播放器以及手提电脑等则是设备个性化的典型代表,这些设备的发展水平取决于DSP 的发展。新的形势下,DSP面临的要求是处理速度更高,功能更多更全,功耗更低,存储器用量更少。

这学期我们学习了DSP的理论课程,也进行了相应的实验,实际操作让我们学习的更加深入。我们的主处理芯片: TMS320VC5502PGF300;

低功耗设计,比上一代 C54XX 器件功耗低 30%左右;

处理速度更快,双乘法器结构,处理速度 600MMACS;

软件程序兼容 C54XX DSP;

片内存贮空间 32K× 16Bit(DARAM)(64K Bytes);

最大外部寻址空间 8M× 16Bit; SDRAM: 1M× 16Bit; 2 路 8bit 板上 A/D 接口;

路的 TLC7528 转换,5M/S,8Bit;

片上 UART 接口,符合 RS232 标准;

8Mbit 扩展 FLASH,存储大量固化程序和数据;

设计有用户可以自定义的开关和测试指示灯;

3U 标准的 DSP 扩展总线,包括数据、地址、I/O、控制; 4 组标准扩展连接器,为用户进行二次开发提供条件;

具有 IEEE1149.1 相兼容的逻辑扫描电路,该电路仅用于测试和仿真; +5V 电源输入,内部+3.3V、+1.26V 电源管理;

高保真语音接口设计,双路语音采集,每路 48K/S; 4 层板设计工艺,稳定可靠;

具有自启动功能设计,可以实现脱机工作;

可以选配多种应用接口板,包括图像板,网络板等; 开发环境

开发 TMS320C55xx 应用系统一般需要以下设备和软件调试工具: 1.通用 PC 一台,安装 Windows2000 或 WindowsXP 操作系统及常用软件(如: WinRAR 等)。

2. TMS320C55xx 评估板及相关电源。如: ICETEK– VC5502-A 评估板。

3.通用 DSP 仿真器一台及相关连线。如: ICETEK-5100USB 仿真器。

4.控制对象(选用)。如: ICETEK-CTR 控制板。

5. TI 的 DSP 开发集成环境 Code Composer Studio。如: CCS3.1。

6.仿真器驱动程序。7.实验程序及文档。

ICETEK-DSP 教学实验箱的硬件连接 .连接电源:打开实验箱,取出三相电源连接线(如右图),将电源线的

一端插入实验箱外部左侧箱壁上的电源插孔中。确认实验箱面板上电源总

开关(位于实验箱底板左上角)处于“关”的位置,连接电源线的另一端至

220V 交流供电插座上,保证稳固连接。

2.使用电源连接线(如右图,插头是带孔的)连接各模块电源:确认实验

箱总电源断开。连接 ICETEK-CTR 板上边插座到实验箱底板上+12V 电源

插座; ICETEK-CTR 板下边插座到实验箱底板上+5V 电源插座;如使用

PP(并口)型仿真器,则连接仿真器上插座到实验箱底板上+5V 电源插座;

连接 DSP 评估板模块电源插座到实验箱底板上+5V 电源插座。注意各插

头要插到底,防止虚接或接触不良。

3.连接 DSP 评估板信号线:当需要连接信号源输出到 A/D 输入插座时,使用信号连接线(如右图)分别连接相应插座。

4. 接通电源: 检查实验箱上 220V 电源插座(箱体左侧)中保险管是否完好,在连接电源线以后,检查各模块供电连线是否正确连接,打开实验箱上的电源总开关(位于实验箱底板左上角),使 开关位于“开”的位置,电源开关右侧的指示灯亮。构造 DSP 开发软件环境

1.安装 CCS 软件(此文档假定用户将 CCS 安装在默认目录 C:CCStudio_v3.1 中,同时也建议

用户按照默认安装目录安装)⑵将实验箱附带的教学光盘插入计算机光盘驱动器。⑶打开教学光盘的“ CCS3.1”目录。⑷双击其中的“ Setup.exe”,进入安装程序。⑸选择“ Code Composer Studio”

按照安装提示进行安装,并重新启动计算机。⑹安装完毕,桌面上出现两个新的图标 2.安装 DSP 通用仿真器驱动

需要安装两部分:(1)仿真器的 Windows 驱动程序(并口无需,usb 口要安装);(2)根据仿真的 DSP 芯片不同,设置仿真器在 CCS 环境中的对应驱动程序。

⑴双击光盘中的“开发系统驱动USB”目录下的 usbdrv54x.exe 文件,然后再打开的页

面中输入 ccs 的安装路径,例如 C:CCStudio_v3.1 ⑵此时驱动已经被拷贝到 C:CCStudio_v3.1icetek 目录下。⑶然后把 usb 电缆连接到计算机的 usb 接口和 usb 仿真器上,计算机将提示找到新硬件,选择否,然后点下一步。3.安装实验程序

双击光盘中的实验安装文件,自动解压缩后安装到 C:ICETEK 目录下。

例如:实验安装文件为“ Setup5502A.exe” 4.安装初始化仿真器程序

将光盘中“工具”子目录下的“ xdsresetUSB”目录拷贝到硬盘上的任意路径下,建

议和实验程序目录放在一起,便一管理。然后用单击鼠标右键选择“ xdsresetUSB”目

录下 “ xdsrstusb”批处理文件,选择“发送到”->“桌面快捷方式”。注: 如果您的 CCS 系统未安装在默认的 C:CCStudio_v3.1 目录,请用鼠标右键单击桌面上“ xdsrstusb”图标,选择“属性”,将“快捷方式”项和“起始位置”中的路径改成您所安装的路径。

启动 CCS 启动 Emulator 方式:

⑴ 首先将实验箱电源关闭。连接实验箱的外接电源线。⑵ 检查 ICETEK-5100USB 仿真器的黑色 JTAG 插头是否正确连接到 ICETEK– VC5502-A板的 J1 插头上。注:仿真器的插头中有一个孔加入了封针,与 J1 插头上的缺针位置应重合,保证不会插错。

⑶ 检查是否已经用电源连接线连接了 ICETEK– VC5509-A 板上的POW1插座和实验箱底板上+5V 电源插座。⑷ 检查其他连线是否符合实验要求。检查实验箱上三个拨动开关位置是否符合实验要求。

⑸ 打开实验箱上电源开关(位于实验箱底板左上角),注意开关边上红色指示灯点亮。

ICETEK– VC5502-A 板上指示灯 D5 和 D6 点亮。如果打开了 ICETEK-CTR 的电源开关,ICETEK-CTR 板上指示灯 L1、L2 和 L3 点亮。如果打开了信号源电源开关,相应开关边的指示灯点亮。

⑹ 用实验箱附带的 USB 信号线连接 ICETEK-5100USB 仿真器和 PC 机后面的 USB 插座,注意 ICETEK-5100USB 仿真器上指示灯 Power 和 Run 灯点亮。

⑺ 双击桌面上仿真器初始化图标:

(8)如果进入 CCS 提示错误,先选“ Abort”,然后用“初始化 ICETEK-5100 USB2.0 仿真器”初始化仿真器,如提示出错,可多做几次。如仍然出错,拔掉仿真器上 USB 接头(白色方形),按一下 ICETEK– VC5509-A 板上 S1 复位按钮,连接 USB 接头,再做“初始化 ICETEK-5100 USB2.0仿真器”。

(9)如果遇到反复不能连接或复位仿真器、进入 CCS 报错,请打开 Windows 的“任务管理器”,在“进程”卡片上的“映像名称”栏中查找是否有“cc_app.exe”,将它结束再试。

退出 CCS 指示灯实验

了解 ICETEK-VC5502-AE 板在 TMS320VC5502DSP 外部扩展存储空间上的扩展。了解 ICETEK-VC5502-AE 板上指示灯扩展原理。学习在 C 语言中使用扩展的控制寄存器的方法。

TMS320VC5502DSP 的 EMIF 接口:

存储器扩展接口(EMIF)是 DSP 扩展片外资源的主要接口,它提供了一组控制信号和地

址、数据线,可以扩展各类存储器和寄存器映射的外设。-ICETEK-VC5502-AE 评估板在 EMIF 接口上除了扩展了片外 SDRAM 外,还扩展了指

示灯、DIP 开关和 D/A 设备。具体扩展地址如下: 0x400009,0x40000b: D/A 转换控制寄存器 0x400007: 板上 DIP 开关控制寄存器 0x400005: 板上指示灯控制寄存器

-与 ICETEK-VC5502-AE 评估板连接的 ICETEK-CTR 显示控制模块也使用扩展空间控制

主要设备:

608001h: 读-键盘扫描值,写-液晶控制寄存器 608002h: 液晶辅助控制寄存器

608003h、608004h: 液晶显示数据寄存器 608005h: 发光二极管显示阵列控制寄存器 拨码开关控制实验

了解 ICETEK-VC5502-AE 板在 TMS320VC5502DSP 外部扩展存储空间上的扩展。了解 ICETEK-VC5502-AE 板上拨码开关扩展原理。熟悉在 C 语言中使用扩展的控制寄存器的方法。

TMS320VC5502DSP 的 EMIF 接口:

存储器扩展接口(EMIF)是 DSP 扩展片外资源的主要接口,它提供了一组控制信号和地址、数据线,可以扩展各类存储器和寄存器映射的外设。

-ICETEK-VC5502-AE 评估板在 EMIF 接口上除了扩展了片外 SDRAM 外,还扩展了指

示灯、DIP 开关和 D/A 设备。具体扩展地址如下: 0x400009,0x40000b: D/A 转换控制寄存器 0x400007: 板上 DIP 开关控制寄存器 0x400005: 板上指示灯控制寄存器

-与 ICETEK-VC5502-AE 评估板连接的 ICETEK-CTR 显示控制模块也使用扩展空间控制

主要设备:

608001h: 读-键盘扫描值,写-液晶控制寄存器 608002h: 液晶辅助控制寄存器

608003h、608004h: 液晶显示数据寄存器 608005h: 发光二极管显示阵列控制寄存器 DSP 的定时器

通过实验熟悉 VC5502A 的定时器;掌握 VC5502A 定时器的控制方法;掌握 VC5502A 的中断结构和对中断的处理流程;学会 C 语言中断程序设计,以及运用中断程序控制程序流程。通用定时器介绍及其:

TMS320VC5502A 内部有两个 64 位通用定时器(GP), 控制方法详见spru618.pdf。中断响应过程(详见 spru371.pdf):

外设事件要引起 CPU 中断,必须保证: IER 中相应使能位被使能,IFR 相应中断也被使能。在软件中,当设置好相应中断标志后,开中断,进入等待中断发生的状态;外设(如定时器)中断发生时,首先跳转到相应中断级高的服务程序中(如:定时器 1 会引起 TINT中断),程序在进行服务操作之后,应将本外设的中断标志位清除以便能继续中断,然后返回。中断程序设计:

-程序中应包含中断向量表,VC5502A 默认向量表从程序区 0xffff00 地址开始存放,根据IPVD 和 IPVH 的值确定向量表的实际地址。

-注意观察程序中 INTR_init()函数的定义部分,其中 IPVD 和 IPVH 的值都为 0x0001;同时

观察配置文件 ICETEK-VC5502-AE.cmd 中的 VECT 段描述中 o=0x0100。

-向量表中每项为 8 个字,存放一个跳转指令,跳转指令中的地址为相应服务程序入口地址。

第一个向量表的首项为复位向量,即 CPU 复位操作完成后自动进入执行的程序入口。

-服务程序在服务操作完成后,清除相应中断标志,返回,完成一次中断服务。单路,多路数模转换(DA)

了解数模转换的基本操作。了解 ICETEK-VC5502-AE 板扩展数模转换方式。掌握数模转换程序设计方法。

1.数模转换操作:数模转换芯片使用 TLC7528C。TLC7528C 是双路、8 位数字-模拟转换器,内部具有各自单独的数据锁存器,其特性包括两 DAC 非常精密的一致性,数据通过公共 8 位输入口转送至两DAC 数据锁存器的任意一个。控制输入端 DACA/DACB 决定哪一个 DAC 被装载。器件的装载周期与随机存取存储器的写周期类似,能方便地与大多数通用微处理器总线或端口相接口。器件的工作电压 5V 至 15V,功耗小于 15mW(典型值)。2 或 4 象限的乘法功能使该器件成为许多微处理器的增益设置和信号控制的良好选择。它可工作于电压模式,与电流输出相比较,更适合于电压输出。TLC7528C 的工作温度范围从 0℃至 70℃。

2. TLC7528C 与 TMS320VC5502A 的连接:由于 TMS320VC5502A DSP 没有数模转换输出设备,采用外扩数模转换芯片的方法。在 ICETEK-VC5502-AE 板上选用的是 TLC7528C。TLC7528C 的转换寄存器被映射到了 DSP的 CE2 空间,两路 DA 转换通道的地址分别是: 0x400009,0x40000b。在 TLC7528C 的输出端,为了增加输出功率,经过一级运放再输出到板上插座上。

实验学习让我们更好的学习到了理论知识,不只是停留在理论上,实践才是真理。

第五篇:DSP实验教案

汇编语言程序设计实验

实验一 程序的控制与转移

一、实验目的

1、掌握条件算符的使用。

2、掌握循环操作指令(BNAZ)

二、实验设备

计算机、DSP实验箱、ccs5000软件。

三、实验内容:

编写程序,实现计算的值。

四、实验步骤

1、用仿真器将计算机与DSP实验箱连接好,并依次打开实验箱电源、仿真器电源,然后运行CCS 软件。

2、新建一个项目:点击Project-New,将项目命名为example2,并将项目保存在自己定义的文件夹下,注意文件夹一定要用英文名,不要将文件夹取名为中文名,因为CCS 软件不能识别以中文命名的文件夹。

3、新建一个源文件:点击File-New-Source File可以打开一个文本编辑窗口,点击保存按键,保存在和项目相同的一个文件夹下面(example2),保存类型选择*.ASM(如果源文件是C 语言编写的,保存类型选择*.C,本实验中的例程是使用汇编语言编写的,所以选择*.ASM 为保存类型),我们在这里将保存名字命名为example2.asm。

4、在项目中添加源文件:在新建了一个源文件以后,要想使用CCS 编译器对该源文件进行编译还需要将源文件添加到项目中去。添加方法是在工程管理器中右键单击example2.pjt,在弹出的菜单中选择Add Files,然后将刚才建立的example2.asm 文件添加到该项目中去。

5、编写源程序:

在工程管理器中双击example2.asm,将出现文本编辑窗口,在该文本编辑窗口中输入如下内容:

.title “example2.asm”.mmregs STACK.usect “STACK”,10H;堆栈的设置

.bss x,5;为变量分配6 个字的存储空间.bss y,1.def _c_int00;start.data table:.word 10,20,3,4,5;x1,x2,x3,x4,x5.text;start: STM #0,SWWSR;插入0 个等待状态 _c_int00: STM #0,SWWSR STM #STACK+10H,sp;设置堆栈指针 STM #x,AR1;AR1指向x RPT #4;下一条被重复执行5 遍

MVPD table,*AR1+;把程序存储器中的数据传送到数据存储器 LD #0,A;A清零

CALL SUM;调用求和函数 end: B end

SUM: STM #x,AR3;AR3指向x STM #4,AR2;AR2=4 loop: ADD *AR3+,A;*AR3+A-->A,然后AR3+ BANZ loop,*AR2-;如果AR2 的值不为0,则跳到loop 处;;否则执行下一条指令

STL A,*(y);把A 的低16 位赋给变量y RET.end 提示:

(1)源代码的书写有一定的格式,初学者往往容易忽视。每一行代码分为三个区:标号区、指令区和注释区。标号区必须顶格写,主要是定义变量、常量、程序标识时的名称。指令区在标号区之后,以空格或TAB 格开。如果没有标号,也必须在指令前面加上空格或TAB,不能顶格。注释区在标号区、程序区之后,以分号开始。注释区前面可以没有标号区或程序区。另外还有专门的注释行,以*打头,必须顶格开始。(2)一般区分大小写,除非加编译参数忽略大小写。

(3)标点符号有时不注意会打成中文全角版本号导致错误。

6、编写链接配置文件:

只有汇编源程序是不够的,一个完整的DSP 程序至少包含三个部分:主程序、中断向量表、链接配置文件(*.cmd)。这里先介绍一下链接配置文件。链接配置文件有很多功能,这里先介绍最常用的也是必须的两条:1.存贮器的分配 2.标明程序入口。

由于每个程序都需要一个链接配置文件,每个程序的链接配置文件根据实际情况的需要都略有不同,下面就为本实验的程序编写一个链接配置文件,其它实验的链接配置文件都可以参考与本书配套的相应例程来完成: /*example2.cmd */ vectors.obj /*中断向量的目标文件*/ example2.obj /*产生目标文件*/-o example2.out /*产生可执行下载文件,文件名可以根据不同项目而定*/-m example2.map /*产生存储器映射文件,文件名可以根据不同项目而定 */

MEMORY {

PAGE 0: /*定义程序存贮区*/ EPROG:

origin = 0x4000, len = 0x3f80

VECT:

origin = 0x7f80,len = 0x80

PAGE 1: /*定义数据存贮区*/ SYSREGS:

origin = 0x00,len = 0x60

BIOSREGS:

origin = 0x60,len = 0x20

IDATA:

origin = 0x80,len = 0x3f00

EDATA:

origin = 0x8000,len = 0x8000 } SECTIONS {

.text :> EPROG PAGE 0 /*将.text 段映射到PAGE0 的EPROM 区*/.data :> EPROG PAGE 0 /*将.data 段映射到PAGE0 的EPROM 区*/.vectors: > VECT PAGE 0/*将中断向量表定位到PAGE0 的VECS 区*/

.bss: > IDATA PAGE 1 /*将.bss 段映射到PAGE1 的IDATA 区*/

STACK: > IDATA PAGE 1 /*将.stack 段映射到PAGE1 的IDATA 区*/ }

7、编写中断向量表文件;/* vectors.asm */.title “vectors.asm”;/*中断向量表的文件名*/.ref _c_int00;start /*引用外部定义的标号*/.sect “.vectors”;/*定义初始化的段名*/ B _c_int00;start /*引用start*/.end

8、对项目进行编译和链接:

把 example2.asm、vectors.asm、example2.cmd 依次添加到项目后,点击Project-Compile File,在项目编译成功之后点击Project-Build 选项对该项目进行链接,生成*.OUT文件。

9、装载可执行文件:

要让程序代码在DSP内部运行必需将生成的*.OUT文件装载到DSP 内部,装载方法是点击:File-Load Programe再选择生成的example2.out 文件就可以将程序装载到DSP 的内部存储器中。

10、运行程序并查看结果:

a)首先打开欲查看的数据空间:点击View-Memory,弹出“Memory Window Options”对话框,把欲查看的地址改为0x0080,如右图所示。

b)点击 OK 按钮,然后点击 Debug-Run 让程序在DSP 内部运行,最后点击Debug -Halt,再观察“Memory ” 对话框,看是否与右图一致。

实验二 堆栈的使用方法

一、实验目的

掌握堆栈的使用方法。

二、实验设备

计算机、DSP 实验箱。

三、实验内容

编写程序,观察堆栈的使用情况。

四、实验步骤

1、用仿真器将计算机与DSP 实验箱连接好,并依次打开实验箱电源、仿真器电源,然后运行CCS 软件。

2、新建一个项目:点击Project-New,将项目命名为example3,并将项目保存在自己定义的文件夹下,注意文件夹一定要用英文名,不要将文件夹取名为中文名,因为CCS 软件不能识别以中文命名的文件夹。

3、新建一个源文件:点击File-New-Source File 可以打开一个文本编辑窗口,点击保存按键,保存在和项目相同的一个文件夹下面(example3),保存类型选择*.ASM(如果源文件是C 语言编写的,保存类型选择*.C,本实验中的例程是使用汇编语言编写的,所以选择*.ASM 为保存类型),我们在这里将保存名字命名为example3.asm。

4、在项目中添加源文件:在新建了一个源文件以后,要想使用CCS 编译器对该源文件进行编译还需要将源文件添加到项目中去。添加方法是在工程管理器中右键单击example3.pjt,在弹出的菜单中选择Add Files,然后将刚才建立的example3.asm 文件添加到该项目中去。

5、编写源程序:

在工程管理器中双击example3.asm,将出现文本编辑窗口,在该文本编辑窗口中输入如下内容:

.title “example3.asm”.mmregs size.set 100 stack.usect “STK”,size;堆栈的设置

.bss length,10H.def _c_int00;start.text _c_int00: B start;start: STM #0,SWWSR;插入0 个等待状态

STM #stack+size,SP;设置堆栈的指针 LD #-8531,A STM #size,AR1 MVMM SP,AR7 loop: STL A,*AR7-BANZ loop,*AR1-.end

6、编写链接配置文件:

参照实验一,需要更改的地方如下:

7、编写中断向量表文件 参照实验一,可不作修改。

8、对项目进行编译和链接:

把 example3.asm、vectors.asm、example3.cmd 依次添加到项目后,点击Project-CompileFile,在项目编译成功之后点击Project-Build 选项对该项目进行链接,生成*.out 文件。

9、装载可执行文件:

要让程序代码在 DSP 内部运行必需将生成的*.OUT 文件装载到DSP 内部,装载方法是点击:File-Load Programe 再选择生成的example3.out 文件就可以将程序装载到DSP 的内部存储器中。

10、运行程序并查看结果:

a)首先打开欲查看的数据空间:点击View-Memory,弹出“Memory Window Options”对话框,把欲查看的地址改为0x0090,如右图所示。

b)点击OK 按钮,然后点击Debug-Run 让程序在DSP内部运行,最后点击Debug-Halt,再观察“Memory ”对话框,看是否与下图一致:

实验三 加减法和乘法运算

一、实验目的

掌握加减法和乘法运算指令。

二、实验设备

计算机、DSP 实验箱。

三、实验内容

编写程序,分别实现计算 z=x+y-w、y=mx+b、y=x1×a2+x2×a2、。

四、实验步骤

1、用仿真器将计算机与DSP 实验箱连接好,并依次打开实验箱电源、仿真器电源,然后运行CCS 软件。

2、新建一个项目:点击Project-New,将项目命名为example4,并将项目保存在自己定义的文件夹下,注意文件夹一定要用英文名,不要将文件夹取名为中文名,因为CCS 软件不能识别以中文命名的文件夹。

3、新建一个源文件:点击File-New-Source File 可以打开一个文本编辑窗口,点击保存按键,保存在和项目相同的一个文件夹下面(example4),保存类型选择*.ASM(如果源文件是C 语言编写的,保存类型选择*.C,本实验中的例程是使用汇编语言编写的,所以选择*.ASM 为保存类型),我们在这里将保存名字命名为example4.asm。

4、在项目中添加源文件:在新建了一个源文件以后,要想使用CCS 编译器对该源文件进行编译还需要将源文件添加到项目中去。添加方法是在工程管理器中右键单击example4.pjt,在弹出的菜单中选择Add Files,然后将刚才建立的example4.asm 文件添加到该项目中去。

5、编写源程序:

在工程管理器中双击example4.asm,将出现文本编辑窗口,在该文本编辑窗口中输入如下内容:

********** 计算 z=x+y-w **********.title “example4.asm”.mmregs STACK.usect “STACK”,10H;堆栈的设置

.bss x,1;为变量分配4 个字的存储空间.bss y,1.bss w,1.bss z,1.def _c_int00.data table.word 10,26,23;x,y,w.text _c_int00: STM #0,SWWSR;插入0 个等待状态

STM #STACK+10H,SP;设置堆栈指针 STM #x,AR1;AR1指向x RPT #2 MVPD table,*AR1+;把程序存储器中的数据移动到数据存储器 CALL SUMB end: B end

SUMB: LD *(x),A ADD *(y),A SUB *(w),A STL A,*(z)RET.end

6、编写链接配置文件:

参照实验一,需要更改的地方如下:

7、编写中断向量表文件 参照实验一,可不作修改。

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”对话框,把欲查看的地址改为0x0080,如右上图所示。b)点击OK 按钮,然后点击Debug-Run 让程序在DSP 内部运行,最后点击Debug-Halt,再观察“Memory ”对话框,看是否与右图一致:

11、建立其它项目工程文件

建立项目工程文件 example5,使之实现计算y=mx+b;建立项目工程文件example6,使之实现计算y=x1×a2+x2×a2;建立项目工程文件example7,使之实现计算

注:各源程序操作步骤均与前面相似,需要观察的数据存储器的地址均为0x0080;另外要注意对相应的链接配置文件作相应的修改。下面是它们的实验结果:

example5 的结果

example6结果

Example7 的结果

实验四 重复操作

一、实验目的

掌握各种重复操作指令。

二、实验设备

计算机、DSP 实验箱。

三、实验内容

编写程序,实现对数组初始化后再对每个元素加 1。

四、实验步骤

1、用仿真器将计算机与DSP 实验箱连接好,并依次打开实验箱电源、仿真器电源,然后运行CCS 软件。

2、新建一个项目:点击Project-New,将项目命名为example9,并将项目保存在自己定义的文件夹下,注意文件夹一定要用英文名,不要将文件夹取名为中文名,因为CCS 软件不能识别以中文命名的文件夹。

3、新建一个源文件:点击File-New-Source File 可以打开一个文本编辑窗口,点击保存按键,保存在和项目相同的一个文件夹下面(example9),保存类型选择*.ASM(如果源文件是C 语言编写的,保存类型选择*.C,本实验中的例程是使用汇编语言编写的,所以选择*.ASM为保存类型),我们在这里将保存名字命名为example9.asm。

4、在项目中添加源文件:在新建立了一个源文件以后,要想使用CCS 编译器对该源文件进行编译还需要将源文件添加到项目中去。添加方法是在工程管理器中右键单击example9.pjt,在弹出的菜单中选择Add Files,然后将刚才建立的example9.asm 文件添加到该项目中去。

5、编写源程序:

在工程管理器中双击example9.asm,将出现文本编辑窗口,在该文本编辑窗口中输入如下内容:

********** 学习块重复操作指令:RPTB **********.title “example9.asm”.mmregs STACK.usect “STACK”,10H.bss x,5.def _c_int00.text _c_int00: STM #x,AR1 LD #2H,A;将数组每个元素初始化为2 RPT #4 STL A,*AR1+;把A 的低16 位赋给AR1 指向的变量x,然后AR1+1 LD #1,16,B;为每个元素加1 作准备 STM #4,BRC STM #x,AR4 RPTB next-1;next-1为循环结束地址 add *AR4,16,B,A STH A,*AR4+ next: LD #0,B end: B end.end

6、编写链接配置文件:

参照实验一,需要更改的地方如下: 更改前 更改后

7、编写中断向量表文件 参照实验一,可不作修改。

8、对项目进行编译和链接: 把 example9.asm、vectors.asm、example9.cmd依次添加到项目后,点击Project-Compile File,在项目编译成功之后点击Project-Build 选项对该项目进行链接,生成*.out 文件。

9、装载可执行文件:

要让程序代码在 DSP 内部运行必需将生成的*.OUT 文件装载到DSP 内部,装载方法是点击:File-Load Programe 再选择生成的example9.out 文件就可以将程序装载到DSP 的内部存储器中。

10、运行程序并查看结果:

a)首先打开欲查看的数据空间:点击View-Memory,弹出“Memory Window Options”对话框,把欲查看的地址改为0x0080,如右图所示。b)点击OK 按钮,然后点击Debug-Run 让程序在DSP 内部运行,最后点击Debug-Halt,再观察“Memory ”对话框,看是否与下图一致:

11、试用数据块传送指令实现数组初始化:把上述程序中的“STLA,*AR1+”改成“MVPD table,*AR1+”,看实现结果是否一致。

实验五 数据块传送

一、实验目的

掌握各种数据块传送操作指令。

二、实验设备

计算机、DSP 实验箱.三、实验内容

编写程序,实现把数据从程序存储器传送到数据存储器,以及从数据存储器传送到程序存储器。

四、实验步骤

1、用仿真器将计算机与DSP 实验箱连接好,并依次打开实验箱电源、仿真器电源,然后运行CCS 软件。

2、新建一个项目:点击Project-New,将项目命名为zhao3,并将项目保存在自己定义的文件夹下,注意文件夹一定要用英文名,不要将文件夹取名为中文名,因为CCS 软件不能识别以中文命名的文件夹。

3、新建一个源文件:点击File-New-Source File 可以打开一个文本编辑窗口,点击保存按键,保存在和项目相同的一个文件夹下面(zhao3),保存类型选择*.ASM(如果源文件是C 语言编写的,保存类型选择*.C,本实验中的例程是使用汇编语言编写的,所以选择*.ASM为保存类型),我们在这里将保存名字命名为zhao3.asm。

4、在项目中添加源文件:在新建立了一个源文件以后,要想使用CCS 编译器对该源文件进行编译还需要将源文件添加到项目中去。添加方法是在工程管理器中右键单击zhao3.pjt,在弹出的菜单中选择Add Files,然后将刚才建立的zhao3.asm 文件添加到该项目中去。

5、编写源程序:

在工程管理器中双击zhao3.asm,将出现文本编辑窗口,在该文本编辑窗口中输入如下内容: ************ 学习数据块传送指令:MVPD、MVDD ************.title “zhao3.asm”.mmregs STACK.usect “STACK”,30H.bss x,20.bss y,20.data table:.word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20.def _c_int00.text _c_int00: STM #x,AR1 RPT #19 MVPD table,*AR1+;程序存储器传送到数据存储器 STM #x,AR2 STM #y,AR3 RPT #19 MVDD *AR2+,*AR3+;数据存储器传送到数据存储器 end: B end.end

6、编写链接配置文件: 参照实验一,需要更改的地方如下: 更改前 更改后

7、编写中断向量表文件 参照实验一,可不作修改。

8、对项目进行编译和链接:

把 zhao3.asm、vectors.asm、zhao3.cmd 依次添加到项目后,点击Project-Compile File,在项目编译成功之后点击Project-Build 选项对该项目进行链接,生成*.out 文件。

9、装载可执行文件:

要让程序代码在DSP 内部运行必需将生成的*.OUT 文件装载到DSP 内部,装载方法是点击:File-Load Programe 再选择生成的zhao3.out 文件就可以将程序装载到DSP 的内部存储器中。

10、运行程序并查看结果:

a)首先打开欲查看的数据空间:点击View-Memory,弹出“Memory Window Options”对话框,把欲查看的地址改为0x0080,如右图所示。

c)点击 OK 按钮,然后点击Debug-Run 让程序在DSP 内部运行,最后点击Debug-Halt,再观察“Memory ”对话框,看是否与下图一致:

实验六 除法运算

一、实验目的

掌握除法运算的实现方法。

二、实验设备

计算机、DSP 实验箱。

三、实验内容

分别编写程序,实现计算 0.4÷(-0.8)和16384÷512 的值。

四、实验步骤

1、用仿真器将计算机与DSP 实验箱连接好,并依次打开实验箱电源、仿真器电源,然后运行CCS 软件。

2、新建一个项目:点击Project-New,将项目命名为zhao9f,并将项目保存在自己定义的文件夹下,注意文件夹一定要用英文名,不要将文件夹取名为中文名,因为CCS 软件不能识别以中文命名的文件夹。

3、新建一个源文件:点击File-New-Source File 可以打开一个文本编辑窗口,点击保存按键,保存在和项目相同的一个文件夹下面(zhao9f),保存类型选择*.ASM(如果源文件是C 语言编写的,保存类型选择*.C,本实验中的例程是使用汇编语言编写的,所以选择*.ASM为保存类型),我们在这里将保存名字命名为zhao9f.asm。

4、在项目中添加源文件:在新建立了一个源文件以后,要想使用CCS 编译器对该源文件进行编译还需要将源文件添加到项目中去。添加方法是在工程管理器中右键单击zhao9f.pjt,在弹出的菜单中选择Add Files,然后将刚才建立的zhao9f.asm 文件添加到该项目中去。

5、编写源程序:

在工程管理器中双击zhao9f.asm,将出现文本编辑窗口,在该文本编辑窗口中输入如下内容:

********************************* * |被除数|<|除数|,商为小数 * * 计算0.4÷(-0.8)的值 * *********************************.title “zhao9f.asm”.mmregs STACK.usect “STACK”,10H.bss num,1;分子.bss den,1;分母.bss quot,1;商.data table:.word 4*32768/10;-128.word-8*32768/10;1024.def _c_int00.text _c_int00: LD #1H,DP;设置数据页指针,使DP 指向第1 页(80H 处)STM #num,AR1 RPT #1 MVPD table,*AR1+;传送2 个数据至分子、分母 LD @den,16,A;将分母移到累加器A(31~16)MPYA @num;(num)*(A(31~16))->B,获取商的符号;(在累加器B 中)ABS A;分母取绝对值

STH A,@den;分母取绝对值存回原处

LD @num,16,A;将分子移到累加器A(32~16)ABS A;分子取绝对值

RPT #14;15次减法循环,完成除法 SUBC @den,A XC 1,BLT;如果B<0(商为负数),则需要变号 NEG A STL A,@quot;保存商 end: B end.end

6、编写链接配置文件:

参照实验一,需要更改的地方如下:

7、编写中断向量表文件 参照实验一,可不作修改。

8、对项目进行编译和链接:把 zhao9f.asm、vectors.asm、zhao9f.cmd 依次添加到项目后,点击Project-Compile File,在项目编译成功之后点击Project-Build 选项对该项目进行链接,生成*.out 文件。

9、装载可执行文件:

要让程序代码在 DSP 内部运行必需将生成的*.OUT文件装载到DSP 内部,装载方法是点击:File-LoadPrograme 再选择生成的zhao9f.out 文件就可以将程序装载到DSP 的内部存储器中。

10、运行程序并查看结果: a)首先打开欲查看的数据空间:点击View-Memory,弹出“Memory Window Options”对话框,把欲查看的地址改为0x0080,如右图所示。

b)点击OK 按钮,然后点击Debug-Run 让程序在 DSP 内部运行,最后点击Debug-Halt,再观察“Memory ”对话框,看是否与右图一致:

11、上述程序是商为小数的除法,下面编写商为整数的除法:

a)建立项目工程文件zhao9g,编写源程序zhao9g.asm,并与zhao9f.asm 作一比较。以下是源程序:

******************************** * |被除数|>=|除数|,商为整数 * * 计算16384÷512 的值 * ********************************.title “zhao9g.asm”.mmregs STACK.usect “STACK”,10H.bss num,1;分子.bss den,1;分母.bss quot,1;商.data table:.word 16384;更改被除数 66*32768/100.word 512

;更改除数-33*32768/100.def _c_int00.text _c_int00: LD #0020H,DP;指定数据页指针

STM #num,AR1 RPT #1 MVPD table,*AR1+;传送2 个数据至分子、分母 LD @den,16,A;将分母移到累加器A(31~16)MPYA @num;(num)*(A(31~16))->B,获取商的符号;(在累加器B 中)ABS A;分母取绝对值

STH A,@den;分母取绝对值存回原处 LD @num,A;将分子移到累加器A(32~16)ABS A;分子取绝对值

RPT #15;16次减法循环,完成除法 SUBC @den,A XC 1,BLT;如果B<0(商为负数),则需要变号 NEG A STL A,@quot;保存商 end: B end.end b)编写链接配置文件:

参照实验一,需要更改的地方如下:

c)编写中断向量表文件 参照实验一,可不作修改。

d)把各文件添加到项目中并对项目进行编译和链接并下载到DSP 内部,具体方法请参照前面的步骤。

d)运行程序并查看结果:

首先打开欲查看的数据空间:点击View-Memory,弹出“Memory Window Options” 对话框,把欲查看的地址改为0x0080,如右图所示。运行程序后,结果如下:

实验七 定时器中断实验

一、实验目的

1、掌握DSP 中断技术,学会对DSP 中断的处理方法。

2、掌握中断对于程序流程的控制,理解DSP 对于中断的响应时序。

3、掌握汇编语言编写中断的基本方法。

二、实验设备

计算机、DSP实验箱。

二、实验原理

DSP一般情况下均支持软件中断和硬件中断。软件中断由指令引起,如INTR、TRAP、RESET;硬件中断由外部中断信号和内部中断信号引起,外部硬件中断如INT0-INT2,内部硬件中断包括定时器、串口、主机接口等引起的中断。软件中断不分优先级,硬件中断有优先级。中断寄存器有中断标志寄存器IFR 和中断屏蔽寄存器IMR。

1、中断标志寄存器(Interrupt Flag Register,IFR)是一个存储器映像寄存器,当某个中断触发时,寄存器的相应位置1,直到中断处理完毕为止。IFR 各位的意义如图:

不同型号DSP 的IFR的5-0 位对应的中断源完全相同,是外部中断和通信中断标志位。其它15-6 位中断源根据芯片的不同,定义的中断源不同。当对芯片进行复位、中断处理完毕,写1于IFR的某位,执行INTR 指令等硬件或软件中断操作时,IFR的相应位置1,表示中断发生。通过读IFR 可以了解是否有已经被挂起的中断,通过写IFR可以清除被挂起的中断。在以下3 种情况下将清除被挂起的中断。(1)复位(包括软件和硬件复位)。(2)置位1 写入相应的IFR 标志位。

(3)使用相应的中断号响应该中断,即使用INTR #K 指令。若有挂起的中断,在IFR中该标志位为1,通过写IFR 的当前内容,就可以清除所有正被挂起的中断;为了避免来自串口的重复中断,应在相应的中断服务程序中清除IFR 位。

2、中断屏蔽寄存器

中断屏蔽寄存器(Interrupt Mask Register,IMR),是用于屏蔽外部和内部的硬件中断。通过读IMR 可以检查中断是否被屏蔽,通过写可以屏蔽中断(或解除中断屏蔽),在IMR 位置0,则屏蔽该中断。IMR 不包含/RS 和NMI,复位时IMR 均设为0,TMS320C5410a 中断屏蔽寄存器IMR 各位的意义如下:

硬件中断信号产生后能否引起DSP 执行相应的中断服务程序还取决于以下四点(复位和NMI 除外,它们不可屏蔽):

(1)、状态寄存器ST1 的INTM 位为0,即中断方式位,允许可屏蔽中断;INTM 为1,禁止可屏蔽中断。若中断响应后INTM 自动置1,则其它中断将不被响应。在ISR(中断服务程序)中以RETE 指令返回时,INTM 位自动清0,INTM 位可用软件置位,如指令SSBX INTM(置1)和RSBX INTM(清0)。

(2)、当前没有响应更高优先级的中断。

(3)、中断屏蔽寄存器IMR 中对应此中断的位为1。在IMR 中相应位为1,表明允许该中断。(4)、在中断标志寄存器(IFR)中对应位置为1。

TMS320C54x 中,中断向量地址由PMST 寄存器中的9 位中断向量地址指针IPTR 和左移2位后的中断向量序号(中断向量序号位0~31,左移2 位后变成7 位)所组成。例如:已知中断向量序号INT0=0001 0000B=10H,中断向量地址指针IPTR=0001H,求中断向量地址?

因为中断向量序号左移2 位后变成100 0000B=40H 所以中断向量地址为0000 0000 1100 0000B=00C0H 复位时,IPTR 位置全1(IPTR=1FFH),并按此值将复位中断向量映射到程序存储器的511页空间。所以硬件复位后,程序地址总是PC=1111 1111 1000 0000B=0FF80H,即总是从0FF80H开始执行程序。而且,硬件复位地址是固定不变的,其他中断向量可以通过改变内容重新安排中断程序的地址。例如中断向量地址指针IPTR=0001H,中断向量就被移到0080H 开始的程序存储空间。

当DSP响应中断时,将依次完成以下步骤:

(1)、发出IACK 信号,并清除IFR 中相应的中断标志位。(2)、将PC 值(返回地址)压入堆栈。(3)、取中断向量。

(4)、跳转到相应的中断服务程序。

(5)、保存应保护的寄存器和变量,压入堆栈。(6)、执行中断处理程序。

(7)、恢复保护的内容,从堆栈弹出。(8)、中断返回,从堆栈中弹出返回地址。(9)、继续执行原先的程序。

本实验是利用DSP内部的定时器产生中断来完成中断实验,这里先简要介绍一下DSP内部的定时器:TMS320VC5410a有一个16 位的定时器,定时器带有一个4位预分频器PSC和16位定时计数器TIM。CPUCLOCK时钟先经PSC预分频后,用分频的时钟再对TIM 作减1计数,当TIM减为0 时,将在定时器输出管脚TOUT上产生一个脉冲,同时产生定时器中断请求,并将定时器周期寄存器PRD的值装入TIM。

定时器由TIM、PRD、TCR 三个寄存器和相应的输出管脚TOUT组成。(1)TIM 在数据存储器中的地址为0024H,是减1计数器。(2)PRD 地址为0025H,存放定时时间常数。

(3)TCR 地址为0026H,存储定时器的控制及状态位。定时器产生中断的计算公式如下:

定时周期=CLKOUT*(TDDR+1)*(PRD+1)TMS320VC5410a 的定时器可以被特定的状态位实现停止、重新启动、重新设置或禁止。可以使用该定时器产生周期性的CPU 中断。

定时器初始化的步骤为:

(1)、将TCR 中的TSS 位置1,关闭定时器。(2)、修改PRD。

(3)、重新设置TCR:令TSS=0,TRB=1,并按要求设置SOFT,FREE、TDDR。

设置定时器中断的步骤为(设INTM=1):

(1)、将IFR 中TINT 位置为1,清除以前的定时器中断请求。(2)、将IMR 中的TINT 位置为1,打开定时器中断。(3)、将ST1 中的INTM 位置为0,使能所有中断。

每当TIM 减为0 时,会产生一个定时器中断,并在相应的TOUT 管脚上产生一个宽度为CLKOUT 周期的正脉冲。

在RESET 后,TIM 和PRD 被设置为最大值(FFFFH),TCR 中的TDDR 置0,定时器启动。定时控制寄存器(TCR)为一个映射到片内的16 位寄存器:

RESERVED:常常设置为0。

FREE 和SOFT: 软件调试组合控制位,用于控制调试程序断点操作情况下的定时器状态。当free=0 且soft=0 时,定时器立即停止工作。当free=0 且soft=1 且计数器TIM 减为1 时,定时器停止工作。当free=1 且soft=x 时,定时器继续工作。PSC: 预定标计数器。每个CLKOUT 作减1 操作,减为0 时,“TDDR”寄存器的值装载到“PSC”寄存器,TIM 减1,PSC 的作用相当于预分频器。

TRB: 定时器重新加载控制位,用于复位片内定时器。当TRB 置1 时,“PRD”寄存器的值装载到“TIM”寄存器,“TDDR”寄存器的值装载到“PSC”寄存器,TRB 常常设置为0。TSS: TSS=0,定时器开始。TSS=1,定时器停止。TDDR: 定时器分频比。以此数对CLKOUT 分频后再去对TIM 做减1 操作,当“PSC”为0,“TDDR”寄存器的值装载到“PSC”寄存器中。

四、实验内容

利用定时器中断制作方波发生器,通过XF 引脚控制LED 发光来检测方波的周期。

五、实验步骤

1、新建一个项目:testxf.pjt;

2、在项目中编辑以下汇编语言文件:

有时定时的长度不能满足需要,比如F=10Mhz时,定时最大是:10ns*2^4*2^16=10.485760ms。如果需要更长的定时,就要在定时器中断子程序中再加一个计数器,直到产生一定次数的定时中断后再执行相应的操作。如下程序可以产生1Hz 的方波:

;;fangbo.asm;利用定时器Timer0 在XF 脚产生周期1s 的的方波;.title “fangbo.asm”.mmregs.def _c_int00;程序入口

.def TINT0_ISR;Timer0中断服务程序 STACK.usect “STACK”,10H;分配堆栈空间;设定定时器0 控制寄存器的内容

K_TCR_SOFT.set 0B<<11;TCR第11位soft=0 K_TCR_FREE.set 0B<<10;TCR第10位free=0 K_TCR_PSC.set 0B<<6;TCR第9-6位,可设跟TDDR 一样,也可不设自动加载 K_TCR_TRB.set 1B<<5;TCR第5位TRB=1此位置1,PSC会自动加载的 K_TCR_TSS.set 0B<<4;TCR第4位TSS=0 K_TCR_TDDR.set 0100B<<0;TCR第3-0位TDDR=0100B K_TCR.set K_TCR_SOFT|K_TCR_FREE|K_TCR_PSC|K_TCR_TRB|K_TCR_TSS|K_TCR_TDDR K_TCR_STOP.set 1B<<4;TSS=1时计数器停止

.data DATA_DP: XF_Flag:.word 1;当前XF的输出电平标志,如果XF_Flag=1,则XF=1;==;主程序:

;==.text _c_int00: STM #STACK+10H,SP;设堆栈指针SP LD #DATA_DP,DP;设数据地址DP STM #XF_Flag,AR2;AR 指向XF 标志;改变中断向量表位置

K_IPTR.set 7F80h;指向7f80H,默认是FF80 LDM PMST,A AND #7FffH,A;保留低7位,清掉高位

OR #K_IPTR,A;STLM A,PMST;初始化定时器0;f=20Mhz,定时最大是:50ns*2^4*2^16=50ms,;要输出1s 的方波,可定时25ms,再在中断程序中加个40计数器;Tt=50ns*(1+4)*(1+49999)=5ms;f=20M, Tt=50ns*(1+4)*(1+49999)=25ms;再加40 计数器

CounterSet.set 39;定义计数次数 PERIOD.set 49999;定义计数周期

.asg AR1,Counter;AR1做计数指针,重新命名以便识别

STM #CounterSet,Counter;设计数器初值

STM K_TCR_STOP,TCR;停止计数器0;STM #PERIOD,TIM;可设成跟PRD 一样,也可不设自动加载

STM #PERIOD,PRD;设定计数周期

STM #K_TCR,TCR;开始Timer0 stm #0008h,IMR;允许Timer0中断

STM #0008h,IFR;清除挂起的中断

RSBX INTM;开中断 end1: nop B end1;==;Timer0 中断服务程序:TIN0_ISR;== TINT0_ISR: PSHM ST0;本中断程序影响TC,位于ST0 中

BANZ Next,*Counter-;判断不等于0 时跳转,然后计数器减1 STM #CounterSet,Counter;恢复初值

;判断当前XF状态并作电平变化

BITF *AR2,#1;IF XF_Flag=1 then TC=1 else TC=0 BC ResetXF,TC;IF TC=1 then XF=0 else XF=1 setXF: SSBX XF;置XF为高电平

ST #1,*AR2;相应修改标志

B Next ResetXF: RSBX XF;;置XF为低电平

ST #0,*AR2;相应修改标志 Next: POPM ST0 RETE.end

3、编写存储器配置文件:(fangbo.cmd)/*-e _c_int00 This is the entry point reset vector */-m map.map-o fangbo.out MEMORY { PAGE 0: /*定义程序存贮区*/ EPROM: origin = 0x4000, len = 0x3f80 VECT: origin = 0x7f80, len = 0x80 PAGE 1: /*定义数据存贮区*/ SYSREGS: origin = 0x00, len = 0x60 BIOSREGS: origin = 0x60, len = 0x20 IDATA: origin = 0x80, len = 0x3f00 EDATA: origin = 0x8000, len = 0x8000 } SECTIONS {.text :>EPROM PAGE 0 /*将.text 段映射到PAGE0 的EPROM 区*/.data :>EPROM PAGE 0 /*将.data 段映射到PAGE0 的EPROM 区*/.vectors: > VECT PAGE 0/*将中断向量表定位到PAGE0 的VECS 区*/.bss: > IDATA PAGE 1 /*将.bss 段映射到PAGE1 的IDATA 区*/ STACK > IDATA PAGE 1 /*将.stack 段映射到PAGE1 的IDATA 区*/ }

4、编写中断向量表文件(vectors.asm)

中断向量表是DSP 程序的重要组成部分,下面是5410a 中断向量表的一个示例,可以作为模板:

***************************************************************** *vectors.asm *完整的5410a 中断向量表示例

*5410a 共有30 个中断向量,每个向量占4 个字的空间。

*使用的向量一般加一条跳转指令转到相应中断服务子程序,其余空位用NOP 填充

*未使用的向量直接用RETE 返回,是为了防止意外进入未用中断。

*****************************************************************.sect “.vectors”;开始命名段.vecotrs.global _c_int00;引用程序入口的全局符号定义

;引用其它中断程序入口的全局符号定义

.align 0x80;中断向量必须对齐页边界

.global TINT0_ISR RESET: B _c_int00;Reset 中断向量,跳转到程序入口 STM #200,SP;stack size of 200 nmi: RETE;enable interrupts and return from one NOP NOP NOP;NMI~;software interrupts sint17.space 4*16 sint18.space 4*16 sint19.space 4*16 sint20.space 4*16 sint21.space 4*16 sint22.space 4*16 sint23.space 4*16 sint24.space 4*16 sint25.space 4*16 sint26.space 4*16 sint27.space 4*16 sint28.space 4*16 sint29.space 4*16 sint30.space 4*16

int0: RETE;External user interrupt #0 NOP NOP NOP int1: RETE;External user interrupt #1 NOP NOP NOP int2: RETE;External user interrupt #2 NOP NOP NOP tint: BD TINT0_ISR;Timer0 中断

NOP

NOP rint0: RETE;McBSP #0 receive interrupt(default)NOP NOP NOP xint0: RETE;McBSP #0 transmit interrupt(default)NOP NOP NOP rint2: RETE;McBSP #2 receive interrupt(default)NOP NOP NOP xint2: RETE;McBSP #2 transmit interrupt(default)NOP NOP NOP int3: RETE;External user interrupt #3 NOP NOP NOP hint: RETE;HPI interrupt NOP NOP NOP rint1: RETE;McBSP #1 receive interrupt(default)NOP NOP NOP xint1: RETE;McBSP #1 transmit interrupt(default)NOP NOP NOP.space 16*16.end 技巧提示:第一个中断(Reset 中断)是每个程序都应该有的,在不需要其它中断的情况下,可以只用这一部分,后面全部省掉。另外一个重要问题是中断向量表的位置,上电时默认是在FF80H 处,但实际上很多情况下无法把中断向量表加载到FF80 处,一般重定向到0080H,并在程序开头重新设置一下IPTR的值。K_IPTR.set 7f80h;指向7f80H,默认是FF80 LDM PMST,A AND #7FffH,A;保留低7位,清掉高位 OR #K_IPTR,A;STLM A,PMST 要注意的是这段代码要用到累加器A,所以嵌入这段代码的地方必须在用到累加器A 之前。

5、在testxf.pjt 文件中添加fangbo.asm、vector.asm、fangbo.cmd 文件,进行编译和链接,注意该项目是由汇编语言编写的,应该注意实验一的步骤9 的选项是否正确。

6、装载fangbo.out 文件到DSP 芯片并运行程序,观测XF 的变化。也可以观察CLKOUT管脚电平的变化。

下载DSP实验5word格式文档
下载DSP实验5.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    dsp实验指导书尉

    电气工程学院 《DSP技术及应用》 实验指导书 尉学军编写 适用专业:电子信息工程 贵州大学 二OO 八年八月 前言 《数字信号处理》实验是理论教学的深化和补充,具有较强的实践性......

    DSP技术实验指导书

    一 基础实验:CCS 的使用与简单应用程序的调试 1.1 实验目的 1. 熟悉 CCS 集成开发环境,掌握工程的生成方法; 2. 熟悉 SEED-DEC5416 实验环境; 3. 掌握 CCS 集成开发环境的调试方......

    DSP实验教案(一)(最终5篇)

    实验一 CCS使用和数据存储实验 一、 实验目的 1. 掌握CCS的使用 2. 掌握 TMS320C54X 程序空间的分配; 3. 掌握 TMS320C54X 数据空间的分配; 4. 能够熟练运用TMS320C54X 数据空......

    2013级下学期DSP实验期末考试题

    2013级DSP实验期末考试题 1、LED灯结合外部中断实验  以一次正反向LED灯亮显示为一个周期,实现正向1,3,2,4灯依次亮,反向3,1,4,2依次亮,如此重复进行  在运行中的任何时候均可......

    DSP实验小数运算的实现(范文模版)

    实验二 小数运算的实现 一、实验目的 1.掌握小数运算的原理。 2.熟悉CCS 开发软件的使用; 3. 熟悉SIMULATOR的使用方法。 二、实验内容 编写计算yaxi14ii的程序。其中数据......

    DSP实验5利用SPTool工具分析离散时间信号

    实验5 利用SPTool工具分析离散时间信号 目标:利用sptool工具观察信号波形、频谱和滤波。 要求: 1. 系统采样率2048,产生噪声信号,观察信号波形和频谱; 设计低通滤波器去除高频分......

    实验一 DSP Builder设计应用概要

    湖南文理学院电气与信息工程学院 《嵌入式系统及应用》 实 验 指 导 书 指导教师:伍宗富 实验一 DSP Builder设计应用 实验学时:4学时 实验类型:综合 实验要求:必做 一、实......

    DSP实验指导书完全版正文_图文(精)

    第一章 实验系统介绍 一、系统概述 EL-DSP-EXPII教学实验系统属于一种综合的教学实验系统,该系统采用双CPU 设计,实现了DSP 的多处理器协调工作。两个DSP 通过HPI 口并行连接,......