dsp实验2
实验1.2 : TMS320VC55x DSP汇编语言基本程序设计
实验人员:曹琰、张哲俊、谈晨浩
一. 实验目的
1.通过实验掌握TMS320VC55x汇编语言基本程序设计指令。
2.学习在CCS环境中调试汇编代码。
二. 实验设备
PC机一台,操作系统WindowsXP,安装Code Composer Studio 3.3软件。
三. 实验原理
1.汇编语言程序:
⑴汇编语言程序在执行时直接从用户指定入口开始,常见入口标号为“start”。
⑵由于CCS的代码链接器默认支持C语言,在编制汇编语言程序时,需要设置链接参数,选择非自动初始化,注明汇编程序的入口地址。
2.TMS320VC55x汇编语言基本程序设计指令(见书3.2.2节)
(1)加法:ADD src,dst
运行结果:dst=src+dst;两个寄存器的内容相加。
(2)减法:SUB src,dst
运行结果:dst=dst-src;两个寄存器的内容相减。
(3)乘法累加:MAC ACx,Tx,ACy
运行结果:ACy=rnd(ACy+(ACx*Tx));累加器ACx和Tx的内容相乘,再与累加器ACy相加,结果舍入后放入ACy。
(4)移动指令:MOV Smem,dst
运行结果:dst=Smem;操作数加载到目的寄存器
四.实验步骤
1.实验准备:
(1)设置实验环境为:软件仿真模式,参看:第二部分、第一章、四、1。
(2)设置工程文件:
2. 已知:x=1,y=2,求:z=x+y
⑴汇编语言程序TASM.asm:
.mmregs
.model call=c55_std
.model mem=large
.global x
.bss x,1,0,0
.sym x,x, 4, 2, 16
.global y
.bss y,1,0,0
.sym y,y, 4, 2, 16
.global z
.bss z,1,0,0
.sym z,z, 4, 2, 16
.sect ".text"
.align 4
.global start
.sym s tart,start, 36, 2, 0
start:
MOV #2, *(#y)
MOV #1, *(#x)
L1:
MOV *(#y), AR1
ADD *(#x), AR1, AR1
MOV AR1, *(#z)
B L1
注意:在输入汇编语言源程序时,除了标号以外的程序行必须以一个空格或Tab制表字符开始。
⑵连接命令文件TASM.cmd:
MEMORY
{
DARAM: o=0x100, l=0x7f00
DARAM2: o=0x8000, l=0x8000
}
SECTIONS
{
.text: {} > DARAM
.bss: {} > DARAM
.stack {} > DARAM
}
实验要求:
(1) 运行此程序,在内存窗口观察结果:
选择“View”菜单中“Memory…”项,在“Memroy Window Options”
窗口中的“Address”项中输入&x,单击“OK”。
得:x=1; y=2; z=3;
(2) 在”watch”窗口观察结果:
在源程序TASM.asm中双击变量x,y,z,再单击鼠标右键,选择“Add to Watch Window”。
请把”watch”窗口观察结果显示如下:
(3)对照观察map文件和cmd文件的内容:
[1]打开TASM.map和TASM.cmd。
程序的入口地址:
map文件中“ENTRY POINT SYMBOL”中说明了程序入口地址(start)。
则入口地址为:100。
内存使用情况:
map文件中“MEMORY CONFIGURATION”标明了程序占用DARAM的使用情况,共占用26个存储单元。
-观察map文件中的“SECTION ALLOCATION MAP”段:
可看出TASM.obj的入口地址为: 80 ,这也是程序的入口地址。
用户定义的变量:
从120H开始,共占用了90个单元(Word)。
3.已知:x=3,y=5,编程实现:z=x*y+18
;源程序:TASM1.asm
.mmregs
.model call=c55_std
.model mem=large
.def start
.global x
.bss x,1
.bss y,1
.bss z,1
.text
start:
MOV #5, *(#y)
MOV #3, *(#x)
L1:
AMOV #y, xar1 ; (xar1)=(y)
AMOV #x ,xar2
MOV #18,ac0
MAC *ar1,*ar2,ac0 ; (ac0)=rnd((ac0)+(ar1)*(ar2) ) MOV ac0, *(#z) ; (z)=(ac0)
end: B end
.end
链接命令文件与TASM.cmd相同。
实验要求:
运行该程序,观察内存结果:z=33。
*五、问题与思考题
(1)修改程序完成z=x+y,其中:x=0f000h,y=0e000h。
程序:
.mmregs
.model call=c55_std
.model mem=large
.global x
.bss x,1,0,0
.sym x,x, 4, 2, 16
.global y
.bss y,1,0,0
.sym y,y, 4, 2, 16
.global z
.bss z,1,0,0
.sym z,z, 4, 2, 16
.sect ".text"
.align 4
.global start
.sym s tart,start, 36, 2, 0
start:
MOV #0e000h, *(#y)
MOV #0f000h, *(#x)
L1:
MOV *(#y), AR1
ADD *(#x), AR1
MOV AR1, *(#z)
B L1
结果图形(memory界面):
(2)修改程序完成z=x-y,其中x=0f000h,y=0e000h。程序:
.mmregs
.model call=c55_std
.model mem=large
.global x
.bss x,1,0,0
.sym x,x, 4, 2, 16
.global y
.bss y,1,0,0
.sym y,y, 4, 2, 16
.global z
.bss z,1,0,0
.sym z,z, 4, 2, 16
.sect".text"
.align4
.global start
.sym start,start, 36, 2, 0 start:
MOV #0e000h, *(#y)
MOV #0f000h, *(#x)
L1:
MOV *(#y), AR1
SUB *(#x), AR1
MOV AR1, *(#z)
B L1
结果图形(memory界面):
实验1.3 : C语言与C/汇编混合的DSP基本程序设计
一.实验目的
1.通过实验掌握标准C语言基本程序设计指令。
2.掌握在CCS环境中调试C语言DSP代码。
3.了解在CCS环境中实现C/汇编语言混合编程。
二.实验设备
PC机一台,操作系统WindowsXP,安装Code Composer Studio 3.3软件。
三.实验原理
1.在CCS中编写标准C语言程序
CCS支持使用标准C语言开发DSP应用程序。当使用标准C语言编制程序时,其源程序文件名的后缀应为.c;其中可调用标准C的库函数。
程序中若要使用大于64K的数据空间,需要设置C工程使用大模式(见实验1.2 四1(2))。
2.在CCS中编写C/汇编混合语言程序
何时使用混合编程技术?
----当需要提高模块的效率(包括空间/时间两方面),而C语言程序无法达到要求时。
如何混合编程? ---两种方法:
(1)混合工程:使用C程序为主,加入汇编语言程序模块(格式:asm(“XXX”) )。
(2)使用模块技术:在应用程序中划分出比较清晰的模块,不同模块采用不同语言设计,强调效率和速度的模块采用汇编设计。
四.实验内容
*设置实验环境为:软件仿真模式,参看:第二部分、第一章、四、1。
*设置C工程使用大模式(见实验1.2 四1(2))。
1.已知:x=1,y=2,采用C语言编程实现: z=x+y
//源程序:CProgram.c
main( )
{
int x,y,z; //定义变量
x=1; y=2; //给变量赋值
while(1) //循环
{
z=x+y; //将x与y相加赋值到z
}
}
;链接命令文件: CProgram.cmd
-l rts55x.lib
MEMORY
{
DARAM: o=0x100, l=0x7f00;定义入口地址
DARAM2: o=0x8000, l=0x8000
}
SECTIONS
{
.text: {} > DARAM
.bss: {} > DARAM;
.stack: {} > DARAM
.cinit: {} > DARAM
}
实验要求:
(1)在空格中填入注释。
(2)在“Memory”窗口观察x,y,z的值。
选择“View”菜单中“Memory…”项,在“Memroy Window Options”窗口中的“Address”项中输入&x,单击“OK”完成设置;“Memory”窗口中x的当前取值显示在第1个地址之后。则:x=1;y=2;z=3。
(3) 在“watch”窗口观察x,y,z的值。
在源程序CProgram.c中双击变量x,y,z,再单击鼠标右键,选择“Add to Watch Window”。
请把”watch”窗口观察结果显示如下:
(4) map文件和cmd文件。
[1]打开CProgram.map文件,观察其中的内容:
程序的入口地址:map文件中“ENTRY POINT SYMBOL”中说明了程序入口地址为:000004e8。
内存使用情况:“MEMORY CONFIGURA TION”标明了程序占用DARAM的使用情况,共占用00000b52个存储单元。
观察map文件中的“SECTION ALLOCATION MAP”段:可看出CProgram.obj的入口地址为000004e8,这也是main函数的入口地址。
[2]改变内存分配
将”CProgram.cmd”文件中的DARAM: o=0x100, l=0x7f00改为
DARAM: o=0x200, l=0x7e00,重新编译工程,观察map文件中有何变化?
“ENTRY POINT SYMBOL”中的程序入口地址改为了: 000005e8 。
(5)已知:x=1,y=2,采用C语言编程实现:z=x*y+15
实验要求:
[1]编写源程序:Cprogram1.c
链接命令文件同Cprogram.cmd
[2]在“Memory”窗口或”watch”窗口观察z的值。
则z=17。
2.已知:x=3,y=17,采用C/汇编语言混合编程实现: z=x+y
//主程序(c语言):Cprogram.c
int x,y,z;
int add(int a,int b); //声明子函数add (用汇编语言编写)
main()
{
x=3; y=17;
while ( 1 )
{
z=add(x,y); //调用add子函数
}
}
* Add.asm、CProgram.cmd在目录:
C:\ICETEK\VC5509Ae\VC5509Ae\Lab0104-CASM\中。
实验要求:
(1)运行该程序。
(2)在”memory”窗口中观察z值。
则:z=20。
五.问题与思考题
已知:x= sin(2.3π),y= cos(1.7π),采用C语言编程实现:z=x+y
提示:设置x,y为double格式;程序须包含
源程序:
结果:
DSP实验二 拨码开关实验
实验二拨码开关实验 —、实验目的 1.了解DSP开发系统的组成和结构 2.了解IO的基本编程方法 二、实验设备 计算机,CCS3.3版本软件,DSP仿真器,E300实验箱,2812CPU板。 三、实验原理 8位的数字量输入(由拨码开关产生),当拨码打到靠近LED时为低。相反为高。通过 74LS244(可读)缓冲连接到DSP的数据总线的低8位。CPU通过读指令读取到拨码开关产 生的8位输出的数字量,然后CPU通过写指令把读出的8位数字量写入(0x2200)单元内, 使连接到DSP的数据总线的低8位的74LS273的输出端产生高低信号,此时LED灯产生亮灭。 当对应LED灯点亮时说明输出为低,熄灭时为高。 (器件74LS244和74LS273详细的介绍请参看数据手册) 数字量输入输出单元的资源分配如下: 基地址:2000h(当CS1为0时分配有效) 数字量分配空间为数据空间地址:基地 址+0x2200(低8位,只读) 拨码开关扩展工作原理 说明:74LS244片选号、74LS273 片选信号和74LS273复位信号由E300 上CPLD译码产生。 本实验使用DSP数据总线的低8 位。 实验任务一: 1、编写程序完成将拨码开关的信息读入DSP,然后再将该信息回写,控制led灯。调整"数字输入输出单元"的开关K1~K8,观察LED1~LED8灯亮灭的变化。 2、本实验的程序流程框图如下:
3、输入主要程序 #include "DSP281x_Device.h" // DSP281x Headerfile Include File #include "DSP281x_Examples.h" // DSP281x Examples Include File void main(void) { unsigned int temp; temp = 0; DINT; InitSysCtrl(); InitPieCtrl(); IER = 0x0000; IFR = 0x0000; InitPieVectTable(); for(;;) { asm(" nop "); temp = *(int *)0x2200&0x00ff; asm(" nop "); * (int *)0x2200 = temp; asm(" nop "); } } 四、实验步骤(步骤基本与实验一相同) 1. 2812CPU板的JUMP1的1和2脚短接,拨码开关SW1的第二位置ON。 2.E300板上的开关SW4的第二位置ON,其余OFF;SW5开关全部置ON;其余开关全部置OFF。 3.运行Code Composer Studio (CCS)(CCS3.3需要“DEBUG→Connect”) 4. 用“Project\open”打开系统项目文件 路径为“c:\DSP_examep\DSP281X_examples\e300_02_switch\Example_281x_switch.pjt”双击该文件 5、输入主要程序。
DSP实验二.
实验三 IIR 滤波器设计 一、实验目的: 1.认真复习滤波器幅度平方函数的特性,模拟低通滤波器的巴特沃思逼近、切比雪夫型逼近方法;复习从模拟低通到模拟高通、带通、带阻的频率变换法;从模拟滤波器到数字滤波器的脉冲响应不变法、双线性变换法的基本概念、基本理论和基本方法。 2掌握巴特沃思、切比雪夫模拟低通滤波器的设计方法;利用模拟域频率变换设计模拟高通、带通、带阻滤波器的方法.。 3.掌握利用脉冲响应不变法、双线性变换法设计数字滤波器的基本方法;能熟练设计巴特沃思、切比雪夫低通、带通、高通、带阻数字滤波器。 4.熟悉利用MATLAB 直接进行各类数字滤波器的设计方法。 二、实验内容 a. 设计模拟低通滤波器,通带截止频率为10KHz,阻带截止频率为16KHz,通带最大衰减1dB,阻带最小衰减20dB。 (1) 分别用巴特沃思、切比雪夫I、切比雪夫II 型、椭圆型滤波器分别进行设计,并绘制所设计滤波器的幅频和相频特性图。 (2) 在通带截止频率不变的情况下,分别用n=3,4,5,6 阶贝塞尔滤波器设计所需的低通滤波器,并绘制其相应的幅频响应和相频响应图。 %%%%%%%%%----巴特沃思-----%%%%%%% clc;clear all; omegap=10000*2*pi;omegas=16*10^3*2*pi; Rp=1;As=20; [N,omegac]=buttord(omegap,omegas,Rp,As,'s');%低通的节次 [b,a]=butter(N,omegac,'s'); [H,w]=freqs(b,a); %设计滤波器的幅频和相频特性图 subplot(211) plot(w/2*pi/1000,20*log10(abs(H)))
DSP实验程序及结果
#include"math.h" #define PI 3.1415926 #define WANG 16 #define RUI 1024 int FIRLOW(int *nx,float *nh,int nError,int nCoeffNumber); float h[WANG],fU; int xx[RUI],rr[RUI],wc[RUI]; main() { int i,n_Output=0; fU=0.0005; for ( i=0;i FIR #include DSP实验报告 院系:哈尔滨理工大学荣成校区 专业:电子信息工程 学号: 1230160101 姓名:董小天 日期: 2015年6月16日 实验二有限冲击响应滤波器(FIR)算法实验 一、实验目的 1.掌握用窗函数发设计FIR数字滤波器的原理和方法; 2.熟悉线性相位FIR数字滤波器特性; 3.了解各种窗函数对滤波特性的影响; 二、实验设备 1.计算机,CCS 3.1版软件,实验箱,DSP仿真器,连接线。 三、实验原理 1.有限冲击响应数字滤波器的基础理论; 2.模拟滤波器原理(巴特沃斯滤波器、且比学府滤波器、贝塞尔滤波器); 3.数字滤波器系数的确定方法。 四、实验步骤 1、复习如何设计FIR数字滤波;阅读本实验原理,掌握设计步骤; 2、阅读本实验所提供的样例子程序; 3、运行CCS软件,对样例程序进行跟踪,分析结果; 4、填写实验报告。 5、样例程序实验操作说明 A.实验前准备: ①实验箱和CPU配置:SW2的2、4置ON,1、3置OFF;S2全置ON,S23置ON,JP3拨码开关的3、6位置ON,其余置OFF;S2全部置OFF. ②用到西安连接“信号源”2号孔“信号源1”和“A/D单元”2号孔“ADIN1”; B.实验 启动CCS 3.1,打开文件Exp_fir.pjt工程文件;在i=0处设置断点;打开VIEW/GRAPH/TIME/FREQUENCY打开窗口,进行如下改动(参照图片),其中x,y分别表示经A/D转换后的输入混叠信号(输入信号)和对该信号进行FIR滤波的结果; 五、成果展示及代码 单击“Animate”运行程序,在实验箱上调整观察窗口并观察滤波的效果(滤波效果明显); DSP实验报告(第二次实验) 实验四、正弦信号发生器 验四、正弦信号发生器 一、实验目的 1. 掌握利用DSP产生正弦信号的原理 2. 熟悉子程序调用的程序结构以及堆栈的使用 3.掌握CCS的图形输出操作 二、实验设备 1. 集成开发环境Code Composer Studio(简称CCS) 2. 实验代码Sin.s54、Lab.cmd和Lab.gel 三、实验内容 1. 阅读理解多项式逼近正弦的文档 2. 阅读和理解Sin.s54 3. 调试正弦波发生器 4. 加入断点,并选取图形观测,利用动画及时更新 5. 试利用迭代的方法来实现正弦信号发生器 四、实验结果和提示 1. 2345sin()= 3.140625 + 0.02026367 - 5.325196 + 0.5446778 + 1.800293x x x x x x ,x 为第一象限内的弧度值。因为sin()sin(),sin()sin()x x x x π-=-=-,所以只需将第二,三,四象限内的弧度值转换到第一象限即可计算出相应的正弦函数值。由于有限精度,规定弧度值从~ππ-,其中π=0x7FFF ,π/2=0x4000,π-=0x8000。利用级数展开产生正弦波,必须在调用计算子程序之前备份好累加器A 中的当前弧度值,以便计算结束后实现x 增量。正弦波的频率可以通过增幅的大小来进行控制,如果假定程序循环一次为一个时间单位,则正弦波的周期为65536/步长,频率为周期倒数。x 自动增长时要注意当x 超过π后必须调整到~ππ-的范围内才能调用计算子程序,即若,2x x x ππ>=-则。 2. 需要使用临时数据时,必须用frame 语句留出所需空间,使用结束后要将堆栈指针还原以防堆栈内存泄漏。要注意的是frame 的下一条指令不能使用直接寻址。 3. 注意事项:利用累加器写乘法寄存器T (stlm )之后的下一条指令不能使用T ;条件转移指令xc 在指令访问阶段判断条件,该条件必须在先于xc 指令的2个指令之前产生;条件转移指令bc 是在指令执行阶段判断条件,不存在这方面的问题。具体细节请参见《数字信号处理系统的应用和设计》3.6节和 4.5节。 4. 图形观测时选择菜单View->Graph->Time/Frequency ,然后设置如下图: 信号与信息处理综合实验(DSP部分) 学院:信息与通信工程学院 班级:2013211125 姓名:商晴庆 学号: 班内序号: 组号: 2016年4月 实验二 FFT的实现 一、实验目的 (1)进一步熟悉DSK6416开发平台,掌握调试功能; (2)充分理解FFT过程,并编码实现功能。 二、程序功能 (1)基础:将FFT结果写入SDRAM中,并读取出来。 (2)提高:其他点数的FFT 三、模块描述 (1)GBLCTL寄存器配置部分: static EMIFA_Config MyEmifaConfig = { EMIFA_GBLCTL_RMK ( EMIFA_GBLCTL_EK2RATE_FULLCLK, //1 X EMIF input clock EMIFA_GBLCTL_EK2HZ_CLK, //eclkout2 continue output during hold EMIFA_GBLCTL_EK2EN_ENABLE, //eclkout2 enable output EMIFA_GBLCTL_BRMODE_MRSTATUS, //bus request is memory access or refresh pending/in progress EMIFA_GBLCTL_NOHOLD_DISABLE, EMIFA_GBLCTL_EK1HZ_CLK, //eclkout1 continue output during hold EMIFA_GBLCTL_EK1EN_ENABLE, //eclkout1 enable output EMIFA_GBLCTL_CLK4EN_ENABLE, //clkout4 output enable EMIFA_GBLCTL_CLK6EN_ENABLE //clkout6 output enable ), (2)CECTL0-3寄存器配置部分 0xffffffd3, //64BIT SDRAM 0xffffffe3, 0x22a28a22, 0x22a28a22, (3)SDCTL寄存器配置部分 东南大学自动化学院 实验报告 课程名称: D SP 原理及C 程序开发 第二次实验 实验名称:基于DSP 系统的实验——指示灯、拨码开关和定时器院(系):自动化专业:自动化 姓名:学号: 实验室:实验组别: 同组人员:实验时间:2012 年 4 月 18日 评定成绩:审阅教师: 第一部分实验:基于DSP 系统的实验——指示灯和拨码开关 一.实验目的 1. 了解ICETEK –F28335-A 评估板在TMS320F28335DSP 外部扩展存储空间上的扩展。 2. 了解ICETEK –F28335-A 评估板上指示灯和拨码开关扩展原理。 3. 学习在C 语言中使用扩展的控制寄存器的方法。 二.实验设备 计算机,ICETEK –F28335-A 实验箱(或ICETEK 仿真器+ICETEK–F28335-A 评估板+相关连线及电源)。 三.实验原理 1.TMS320F28335DSP 的存储器扩展接口 存储器扩展接口是DSP 扩展片外资源的主要接口,它提供了一组控制信号和地址、数据线,可以扩展各类存储器和存储器、寄存器映射的外设。 -ICETEK –F28335-A 评估板在扩展接口上除了扩展了片外SRAM 外,还扩展了指示灯、DIP 开关和D/A 设备。具体扩展地址如下: 0x180004- 0x180005:D/A 转换控制寄存器 0x180001:板上DIP 开关控制寄存器 0x180000:板上指示灯控制寄存器 -与ICETEK –F28335-A 评估板连接的ICETEK-CTR 显示控制模块也使用扩展空间控制主要设备: 208000-208004h :读-键盘扫描值,写-液晶控制寄存器 208002-208002h :液晶辅助控制寄存器 208003-208004h :液晶显示数据寄存器 2.指示灯与拨码开关扩展原理 学院:信息与电气工程班级:姓名:学号: 课程:DSP原理及应用实验日期:2011年4 月20 日成绩: 实验二CCS使用操作:报告: 1.实验目的 (1) 熟悉CCS集成开发环境,掌握工程的生成方法。 (2) 掌握CCS集成开发环境的调试方法。 2.实验内容及步骤 (1)查阅CCS发展历史,给出CCS发展的版本和适用的芯片。 Code Composer Studio 包含一整套用于开发和调试嵌入式应用的工具。它包含适用于每个TI 器件系列的编译器、源码编辑器、项目构建环境、调试器、描述器、仿真器以及多种其它功能。CCS IDE 提供了单个用户界面,可帮助您完成应用开发流程的每个步骤。借助于精密的高效工具,用户能够利用熟悉的工具和界面快速上手并将功能添加至他们的应用。 版本 4 之前的 CCS 均基于 Eclipse 开放源码软件框架。Eclipse 软件框架可用于多种不同的应用,但是它最初被开发为开放框架以用于创建开发工具。我们之所以选择让 CCS 基于Eclipse ,是因为它为构建软件开发环境提供了出色的软件框架,并且正成为众多嵌入式软件供应商采用的标准框架。CCS 将 Eclipse 软件框架的优点和德州仪器 (TI) 先进的嵌入式调试功能相结合,为嵌入式开发人员提供了一个引人注目、功能丰富的开发环境。 CCS 有 2 个版本:白金版和微处理器版。各版本支持的处理器不同。支持的内核白金版:TMS320C6000、TMS320C5000、TMS320C2800、TMS470、TMS570、ARM 7、ARM9、ARM 11、ARM Cortex M3(不包含Stellaris Cortex M3)、ARM Cortex R4、ARM Cortex A8 和MSP430 处理器版:TMS320C2800 和MSP430 CCS 白金版和微处理器版都使用以下各项:主机:PC 操作系统:Microsoft Windows Vista 和XP (2) 使用CCS时,经常遇到下述扩展名文件,说明分别是什么文件。 ①project. mak :即MAKE文件,VC4及以前版本使用的工程文件,用来指定如何建立一个工程,VC6 把MAK文件转换成DSP文件来处理。 ②program. c :定义的变量、数组、函数的声明 ③program. asm :Oracle管理文件(OMF) ④. h :H C程序头文件 ⑤. lib :LIB 库文件 ⑥project. cmd :CMD Windows NT,OS/2的命令文件;DOS CD/M命令文件;dBASEⅡ程序文件 ⑦program. obj :OBJ 对象文件 ⑧program. Out:C语言输出文件 ⑨project. Wks :WKS Lotus 1-2-3电子表格;Microsoft Works文档 数学与软件科学学院实验报告 学期:_2016_至_2017_ 第_一_ 学期2016年10月26日课程名称:_数字信号处理_ 专业:_信息与计算科学_ 实验编号:02实验项目:FT及其性质 实验成绩:_____ 一、实验目的及要求 (1) 掌握FT的定义; (2) 通过实验掌握FT 的周期性、对称性。 二、实验内容 (1) 绘制x(n)=0.8n u(n)经过FT之后的幅频—相位图,观察图像了解x(e jw)的周期性; (2) 分析x(n)=e jwn的对称性,给出图像进行验证。 三、实验准备 安装MATLAB的计算机系统。 四、实验步骤(该部分不够填写.请填写附页) (1) 绘制x(n)=0.8n u(n)经过FT之后的幅频—相位图,观察图像了解x(e jw)的周期性; >> n=-2:2; >> x=(0.8).^n; >> k=-300:300; >> w=(pi/100)*k; >> X=x*(exp(-j*pi/100)).^(n'*k); >>magX=abs(X); >>angX=angle(X); >>subplot(2,1,1); >>plot(w/pi,magX); >>ylabel('幅度|x|'); >>axis([-3,3,0,7]); >>subplot(2,1,1); >>plot(w/pi,angX/pi); >> ylabel('相位'); >> axis([-3,3,-1.5,1.5]); (2) 分析x(n)=e jwn的对称性,给出图像进行验证。>> n=-10:10; >> w=1/2; >> m=3; >>alpha=j*m*w; >> x=exp(alpha*n); >> y=conj(x); >> real1=real(x); >> imag1=imag(x); >> real2=real(y); >> imag2=imag(y); >>subplot(2,1,1); >>stem(n,imag1); >> hold on >>subplot(2,1,1); >>stem(n,imag2,'.r'); >>xlabel('n'); >>ylabel('x(n)'); >>title('Imaginary Part'); >>subplot(2,1,1); >>stem(n,real1); >> hold on >>subplot('2,1,2'); >>stem(n,real2,'.r'); 实验1.2 : TMS320VC55x DSP汇编语言基本程序设计 实验人员:曹琰、张哲俊、谈晨浩 一. 实验目的 1.通过实验掌握TMS320VC55x汇编语言基本程序设计指令。 2.学习在CCS环境中调试汇编代码。 二. 实验设备 PC机一台,操作系统WindowsXP,安装Code Composer Studio 3.3软件。 三. 实验原理 1.汇编语言程序: ⑴汇编语言程序在执行时直接从用户指定入口开始,常见入口标号为“start”。 ⑵由于CCS的代码链接器默认支持C语言,在编制汇编语言程序时,需要设置链接参数,选择非自动初始化,注明汇编程序的入口地址。 2.TMS320VC55x汇编语言基本程序设计指令(见书3.2.2节) (1)加法:ADD src,dst 运行结果:dst=src+dst;两个寄存器的内容相加。 (2)减法:SUB src,dst 运行结果:dst=dst-src;两个寄存器的内容相减。 (3)乘法累加:MAC ACx,Tx,ACy 运行结果:ACy=rnd(ACy+(ACx*Tx));累加器ACx和Tx的内容相乘,再与累加器ACy相加,结果舍入后放入ACy。 (4)移动指令:MOV Smem,dst 运行结果:dst=Smem;操作数加载到目的寄存器 四.实验步骤 1.实验准备: (1)设置实验环境为:软件仿真模式,参看:第二部分、第一章、四、1。 (2)设置工程文件: 2. 已知:x=1,y=2,求:z=x+y ⑴汇编语言程序TASM.asm: .mmregs .model call=c55_std .model mem=large .global x .bss x,1,0,0 .sym x,x, 4, 2, 16 .global y .bss y,1,0,0 DSP技术实验报告 实验名称:A/D采集实验 姓名:陈丹 学号:100401202 班级:电信2班 时间:2013-5-10 南京理工大学紫金学院电光系 一、实验目的 1、了解TMS320F2812片上外设AD; 2、熟悉片上AD的使用; 3、利用片上AD进行数据采集。 二、实验原理 1、TMS320F2812片内AD简介 ADC模块功能框图 TMS320F2812片内有1个带采样保持电路的12BIT的A/D转换模块。 (1)ADC的特点: 12位模/数转换模块ADC; 2个采样和保持(S/H)电路; 模拟输入电压范围:0-3V; 快速的转换时间,ADC时钟可以配置为25MHz; 16通道模拟输入; 自动排序功能支持16通道独立循环自动转换,每次转换的通道可以软件编程选择; 排序器可以工作在2个独立的8通道排序器模式,也可以工作在16通道级联模式; 自动排序器允许对同一个通道进行多次采样,以完成过采样算法,获得更高的采样精度; 16个结果寄存器存放ADC的转换结果,转换后的数字量表示为: 量化间隔为: (2)ADC 的排序器操作 ADC 模块排序器由两个独立的8状态排序器(SEQ1和SEQ2)构成,这两个排序器还可以级联构成一个16状态的排序器(SEQ )。设置ADCTRL1.SEQ_CASC 位选择(0:双排序器模式;1:级联模式)这里的状态是指排序器内能够完成的ADC 自动转换通道的个数。 单(16状态,级联)排序器模式 3 4095- ? =REF in V V D -) (73.04095)(3mV V v ==? 双(两个8状态,相互独立)排序器模式功能框图 对于这两种排序器模式,ADC模块都可以对一系列转换进行自动排序,每次ADC 模块收到一个开始转换请求,就能自动的完成多个转换。对于每一个转换,可通过模拟复用器选择16个输入通道中的任何一个。转换结束后,所选通道转换的数字量保存到相应的结果寄存器(ADCRESULTn)中。用户也可以对同一通道进行多次采样,从而实现过采样算法,过采样模式有利于提高采样的精度。 ADC可以工作在同步采样模式或者顺序采样模式。设置ADCTRL3.SMODE_SEL位选择(0:顺序采样模式;1:同步采样模式)。对于每一个转换(或在同步采样模式中的一对转换),CONVXX位(ADCCHSELSEQ寄存器)确定采样和转换的外部模拟量输入引脚。 在顺序采样模式中,CONVXX4位都用来确定输入引脚,最高位确定采用哪个采样并保持缓冲器,其他3位定义偏移量。 同步采样模式中,CONVXX寄存器的最高位不起作用,每个采样和保持缓冲器对CONVXX低3位确定的引脚进行采样。 (3)ADC的寄存器: DC控制寄存器 ADCTRL1 ADCTRL2 ADCTRL3 最大转换通道寄存器 MAXCONV 自动排序状态寄存器 AUTO_SEQ_SR DSP技术及课程设计实验报告二(精) 东南大学自动化学院 实验报告 课程名称: D SP 原理及C 程序开发 第二次实验 实验名称:基于DSP 系统的实验——指示灯、拨码开关和定时器院(系):自动化专业:自动化 姓名:学号: 实验室:实验组别: 同组人员:实验时间:2012 年 4 月 18日 评定成绩:审阅教师: 第一部分实验:基于DSP 系统的实验——指示灯和拨码开关 一.实验目的 1. 了解ICETEK –F28335-A 评估板在TMS320F28335DSP 外部扩展存储空间上的扩展。 2. 了解ICETEK –F28335-A 评估板上指示灯和拨码开关扩展原理。 3. 学习在C 语言中使用扩展的控制寄存器的方法。 二.实验设备 计算机,ICETEK –F28335-A 实验箱(或ICETEK 仿真器+ICETEK–F28335-A 评估板+相关连线及电源)。 三.实验原理 1.TMS320F28335DSP 的存储器扩展接口 存储器扩展接口是DSP 扩展片外资源的主要接口,它提供了一组控制信号和地址、数据线,可以扩展各类存储器和存储器、寄存器映射的外设。 -ICETEK –F28335-A 评估板在扩展接口上除了扩展了片外SRAM 外,还扩展了指示灯、DIP 开关和D/A 设备。具体扩展地址如下: 0x180004- 0x180005:D/A 转换控制寄存器 0x180001:板上DIP 开关控制寄存器 0x180000:板上指示灯控制寄存器 -与ICETEK –F28335-A 评估板连接的ICETEK-CTR 显示控制模块也使用扩展空间控制主要设备: 208000-208004h :读-键盘扫描值,写-液晶控制寄存器 208002-208002h :液晶辅助控制寄存器 208003-208004h :液晶显示数据寄存器 2.指示灯与拨码开关扩展原理 DSP 实用技术课程 实验报告 课程名称: 实验名称: 姓名: 学号: 班级: 指导老师: 实验时间: 实验二CCS操作 一、实验目的 1. 掌握TMS320C5400系列汇编语言程序的基本格式 2. 掌握程序编译、连接、运行和调试的基本过程 3. 熟悉Code Composer Studio的使用 二、实验设备 1. 集成开发环境Code Composer Studio(以下简称CCS) 2. 实验代码ccs_basic.s54、ccs_basic.cmd和ccs_basic.gel 三、实验主要内容及结果提示 1.基本操作: 1. 建立项目,并加入文件 a 运行CCS setup,选择C5402 Simulator,选择Project→New菜单项,建立一个新的项目ccs_basic.pjt(注意建立路径,并选择Project→add files to new project 菜单项,加入文件ccs_basic.s54和ccs_basic.cmd; b 在工程视图中选中GEL files文件夹,单击鼠标右键,在弹出的菜单中选择Load GEL选项,载入ccs_basic.gel; 2. 编译和连接 a 编译:选择Project-->Build Option,在Compile表单的Category列表中,选择Basic选项,并设置Generate debug info为full symbolic debug选项,选择Files选项,并在设置Asm File Ext 中写入“s54”为汇编语言扩展名; b 连接:选择Project-->Build Option,在linker表单中的Autoinit mode选项中选择no autointialization模式,Output Filename中输入.\debug\ ccs_basic.out,Code Entry Point 中输入main,Map Filename中输入ccs_basic.map,然后保存选项设置。 c 选择Project→Build构建整个项目,产生可执行文件ccs_basic.out; d 选择File->Load Program,装载可执行文件ccs_basic.out。 2.练习 1 观察存储器映象文件ccs_basic.Map,理解存储器的配置情况; 2 观察和修改存储器单元的内容 具体实验步骤如下: 1. 观察存储器映象Map文件 实验一熟悉MATLAB环境 一、实验目的 (1 ) 熟悉MATLAB的主要操作命令。 (2) 学会简单的矩阵输入和数据读写。 (3) 掌握简单的绘图命令。 (4) 用MATLAB编程并学会创建函数。 (5) 观察离散系统的频率响应。 二、实验内容 认真阅读附录,在MATLAB环境下重新做一遍附录中的例子,体会各条命令的含义。在熟悉了MATLAB基本命令的基础上,完成以下实验。 上机实验内容: 数组的加、减、乘、除和乘方运算。输入A=[1 2 3 4],B=[3 4 5 6],求C=A+B; D=A-B;E=A.*B;F=A./B;G=A.^B;并用Stem语句画出A、B、C、D、E、F、G。 A: B: C=A+B D=A-B E=A*B F=A./B G=A.^B 并用Stem 语句画出A 、B 、C 、D 、E 、F 、G 。 (2) 用MATLAB 实现下列序列: ()()a 0.8015n x n n =≤≤ n=[0:1:15]; x1=(0.8).^n; figure;stem(x1); ()()()0.23015j n b x n e n +=≤≤ n=[0:1:15]; x2=(0<=n<=15).*exp(0.2*n+j*3*n); figure;stem(x2); ()()()() 3cos 0.1250.22sin 0.250.1015c x n n n n ππππ=+++≤≤ n=[0:1:15]; x3=(0<=n<=15).*(3*cos(0.125*pi*n+0.2*pi)+2*sin(0.25*pi*n+0.1*pi)); figure;stem(x3); d) 将(c)中的x(n)扩展为以16为周期的函数 ()()1616x n x n =+ , 绘出四个周期。 n=[0:1:63]; x4=(0<=n<=63).*(3*cos(0.125*pi*rem(n,16)+0.2*pi)+2*sin(0.25*pi*rem(n,16)+0.1*pi)); figure;stem(x4); 篇一:d s p实验报告心得体会 ms320f2812x dsp原理及应用技术实验心得体会 1.设置环 境时分 为软件 设置和 硬件设 置,根 据实验 的需要 设置, 这次实 验只是 软件仿真,可以不设置硬件,但是要为日后的实验做准备,还是要学习和熟悉硬件设置的过程。 2.在设置 硬件时, 不是按 实验书 上的型 号选择, 而是应 该按照 实验设 备上的 型 号去添加。 3.不管是 硬件还 是软件 的设置, 都应该 将之前 设置好 的删去, 重新添 加。设 置好的 配置中 只能有一项。 https://www.360docs.net/doc/52830504.html,s可 以工作 在纯软 件仿真 环境中, 就是由 软件在 pc机内 存中构 造一个 虚拟的 dsp环境,可以调试、运行程序。但是一般无法构造dsp中的外设,所以软件仿真通常用于调试纯软件算法和进行效率分析等。 5.这次实 验采用 软件仿 真,不 需要打 开电源 箱的电 源。 6.在软件 仿真工 作时, 无需连 接板卡 和仿真 器等硬 件。 7.执行 write_ buffer 一行时。 如果按 f10执 行程序, 则程序 在mian 主函数 中运行, 如果按f11,则程序进入write_buffe函数内部的程序运行。 8.把str 变量加 到观察 窗口中, 点击变 量左边 的“+”, 观察窗 口可以 展开结 构变 量,就可以看到结构体变量中的每个元素了。 9.在实验 时,显 示图形 出现问 题,不 能显示, 后来在 graph title 把 input 的大写 改为input,在对volume进行编译执行后,就可以看到显示的正弦波图形了。 10.在修改 了实验 2-1的 程序后, 要重新 编译、 实验二:编写一个以C语言为基础的DSP程序 一、实验目的 1.学习C语言编制程序:了解C语言程序设计方法和组成部分。 2.学习编制连接命令文件,用来控制代码的连接。 3.学会建立和改变map文件,以及利用它观察DSP内存使用情况。 4.进一步熟悉CCS调试程序。 二、实验设备 1.PC机一台:操作系统为Windows2000或WindowsXP。 2.ICETEK-F2812-EDU实验箱一台。 三、实验原理 1.C语言程序 (1)CCS支持使用标准C语言应用程序。当使用标准C 语言编制的程序时,其源程序文件名的后缀应为.c(如:volume.c)。 (2)CCS 在编译标准C 语言程序时,首先将其编译成相应汇编语言程序,再进一步编译成目标DSP 的可执行代码。最后生成的是coff 格式的可下载到DSP 中运行的文件,其文件名后缀为.out。 2.命令文件的作用 命令文件(文件名后缀为cmd)为链接程序提供程序和数据在具体DSP 硬件中的位置分配信息。通过编制命令文件,我们可以将某些特定的数据或程序按照我们的意图放置在DSP 所管理的内存中。命令文件也为链接程序提供了DSP 外扩存储器的描述。在程序中使用CMD 文件描述硬件存储区,可以只说明使用部分,但只要是说明的,必须和硬件匹配,也就是只要说明的存储区必须是存在的和可用的。 3.内存映射(map)文件的作用 一般地,开发的DSP 程序在调试好后,要固化到系统的ROM 中。为了更精确地使用ROM空间,我们就需要知道程序的大小和位置,通过建立目标程序的map 文件可以了解DSP 代码的确切信息。当需要更改程序和数据的大小和位置时,就要适当修改cmd 文件和源程序,再重新生成map 文件来观察结果。另外,通过观察map 文件,可以掌握DSP 存储器的使用和利用情况,以便进行存储器方面的优化工作。 四、实验步骤 1.实验准备:设置软件仿真模式。 2.建立工程文件:新建工程文件设置如图2.1。 CCS 软件的使用一、软件设置步骤:软件仿真(不使用仿真器)时的软件配置方法如下: 1、点击桌面“SETUP CCS2”的图标,出现如下窗口; 2、点击“Close” ,如下图所示:在上述窗口中右键点击“My System”下的C55XXCyele Accurate Simulator, 点击”Remove”并确认。然后用鼠标把窗口中间的“C54XX Simulator”移到左边的“My System” 窗口中。弹出如下所示的界面: 3、点击“NEXT ”按钮,出现如下图示的窗口: 4、点击窗口中的按钮,在弹出的对话框中选择“SIN5402.cfg”,点击“打开” 铵钮,出现如下图示的窗口: 5、点击“NEXT ”按钮,弹出如下图示的窗口: 6、在上图窗口中点击按钮,在弹出的窗口中选择 “c5402sim.gel”,然后点击“打开”,点“Finish”完成,出现如下图所示的界面,然后关闭窗口保存设置。二、CCS5000 的使用方法: (一CCS 文件名介绍在使用CCS 前,应该先了解以下软件的文件名约定: Project.p.t CCS 定义的工程文件Program.c C 程序文件 Program.asm 汇编语言程序文件 Filename.h 头文件,包括DSP/BIOS API 模块 Filename.lib 库文件 Program.cmd 连接命令文件 Program.obj 编译后的目标文件 Program.out 可在目标DSP 上执行的文件,可在CCS 监控下调试/执行 (二编写一个简单的程序:这一部分将介绍如何在CCS 下面新建一个程序,及如何编译、连接、下载、调试程序。 1、新建一个工程文件(1)、打开桌面上图标CCS 2 (’C5000),出现下图界面;(2)、点击菜单Project、在出现的下拉菜单中点击New 弹出下图示所示的窗口,然后在“Project”中输入项目名字,则会在C:\ti\myprojects 目录下建立一个、文件夹 example,并在example 文件夹下建立项目文件 example.pjt (也可以自己定义其它路径)。注意:此文件不能在中文目录下。(3)点击“完成”按钮出现界面如下:(4 )此时即可加入各种文件项目中,也可马上建立一个源文件然后加入到项目中。建立源文件的方法是:点击File-New -Source,即弹出一个可供编辑的窗口,在窗口中输入内容,然后保存为相应的文件(如果是汇编代码,则保存为文件名后缀为ASM 的文件,依次类推),最后即可把此建立的文件添加到项目中。下面介绍把文件添加到项目中的方法。 2、往工程中加入文件如果把example 文件夹下的example.asm, example.cmd, vectors.asm 三个文件添加到C:\ti\myprojects\exampl 继续我的第二个实验;实现按键控制LED亮灭: 功能描述: 上电默认LD3亮; 触动一次按键SW12,LD3灭 再按一次按键SW12,LD3亮 再触动一次按键SW12,LD3灭 再按一次按键SW12,LD3亮 。。。。。。 实现每触动一次按键,LED执行一次由亮到灭,或者由灭到亮,也就是实现一次状态反转。 电路连接说明: LD3 设置为通用GPIO 上拉输出初始化后默认为输出LD3亮状态;LD3控制LED灯的负极,如下图; SW12 设置为通用GPIO 上拉输入该引脚应用滤波功能,且仅在按键抬起时控制LD3状态发生变化。 按键电路如上图,GPIO53须输出0,当按键按下时,读取GPIO50端口值,为0,当按键未按下时,GPIO50因为上上拉作用,其端口值为1。 程序设计说明: 按键的读取采用实时扫描的方式(非中断方式),功能要求在按键抬起后发 生LED状态翻转;所以要记录上一次按键值,并且将当前值==0&&上一次值==1时,做为按键抬起有效,控制LED发生状态翻转。 主要程序如下: while(1) { EALLOW; last_Key_SW12 = new_Key_SW12; //保存旧值 new_Key_SW12 = Key_SW12();//读取新值 if( last_Key_SW12==0 && new_Key_SW12==1) LD3_TOGGLE(); EDIS; } 经实际测试,上述程序可以实现LD3的翻转,基本达到设计要求。但是在测试过程中,时好时坏,有时能够看见LED快速翻转,说明按键有抖动的情况,这里可以考虑IO口滤波,即在初始化时,设置IO采样周期以及量化串口,设置如下:采样周期设置为200时,不再出现抖动现象,按键稳定操作。 源程序如下: #include""// DSP2833x Headerfile Include File #include""// DSP2833x Examples Include File #define LD3_ON() = 1 #define LD3_OFF() = 1 #define LD3_TOGGLE() = 1 #define LD4_ON() = 1 #define LD4_OFF() = 1 #define Key_SW12() * 实验二:数字信号的 FFT 分析 题目1 假设信号 x(n) 由下述信号组成: ()0.001*c o s (0.45)s i n (0.3)c o s (0.302) 4x n n n n ππππ=+-- 这个信号有两根主谱线 0.3pi 和 0.302pi 靠的非常近,而另一根谱线 0.45pi 的幅度很小,请选择合适的长度 N 和窗函数,用 DFT 分析其频谱,得到清楚的三根谱线。 步骤: 1.编写离散傅里叶变换DFT 函数: function [Xk] = dft(xn,N) % Computes Discrete Fourier Transform Coefficients % [Xk] = dft(xn,N) % Xk = DFT coeff. array over 0 <= k <= N-1 % xn = input signal % N = length of DFT n = [0:1:N-1]; % row vector for n k = [0:1:N-1]; % row vecor for k WN = exp(-j*2*pi/N); % Wn factor nk = n'*k; % creates a N by N matrix of nk values WNnk = WN .^ nk; % DFT matrix Xk = xn * WNnk; % row vector for DFT coefficients 2.代码实现: n=0:1:999; x=0.001*cos(0.45*n*pi)+sin(0.3*n*pi)-cos(0.302*n*pi-0.25*pi); stem(n,x); title('signal x(n), 0<=n<=999');xlabel('n'); X=dft(x,1000); % 计算1000点DFT magX=abs(X(1:1:501)); % 镜像对称,只画出一半 k=0:1:500;w=2*pi*k/1000; stem(w/pi,magX); title('DTFT Magnitude');xlabel('frequency in pi units'); axis([0.29,0.31,0,500]); xlabel('frequency between 0.29pi and 0.31pi'); axis([0.44,0.46,0,0.5]); xlabel('frequency between 0.44pi and 0.46pi'); 3.图片:DSP实验报告2解读
DSP第二次实验报告
DSP实验二
DSP技术及课程设计实验报告二(精)
DSP实验报告二CCS的使用
DSP实验二 FT及其性质
dsp实验2
dsp实验二
DSP技术及课程设计实验报告二(精)
DSP实验二CCS操作(精)
DSP实验
DSP实验心得体会
dsp实验二-编写一个以C语言为基础的DSP程序
DSP实验指导书(学生用)(精)
DSP实验二、TMS320F28335 按键输入 控制LED亮灭
北邮 DSP 实验二实验报告