南昌大学DSP实验报告

合集下载

南昌大学数字信号处理实验报告实验二时域采样与频域采样

南昌大学数字信号处理实验报告实验二时域采样与频域采样

一、实验名称:时域采样与频域采样二、实验目的: 时域采样理论与频域采样理论是数字信号处理中的重要理论。

要求掌握模拟信号采样前后频谱的变化,以及如何选择采样频率才能使采样后的信号不丢失信息;要求掌握频率域采样会引起时域周期化的概念,以及频率域采样定理及其对频域采样点数选择的指导作用。

三、实验原理与方法:时域采样定理:a) 对模拟信号以间隔T进行时域等间隔理想采样,形成的采样信号的频谱是原模拟信号频谱以采样角频率()为周期进行周期延拓。

公式为:b) 采样频率必须大于等于模拟信号最高频率的两倍以上,才能使采样信号的频谱不产生频谱混叠。

C) 计算机进行实验的公式为:即理想采样信号的傅立叶变换可用相应的采样序列的傅立叶变换得到,只要将自变量ω用代替即可。

频域采样定理:a) 对信号x(n)的频谱函数X(ejω)在[0,2π]上等间隔采样N点,得到则N点IDFT[]得到的序列就是原序列x(n)以N为周期进行周期延拓后的主值区序列,公式为:b) 由上式可知,频域采样点数N必须大于等于时域离散信号的长度M(即N≥M),才能使时域不产生混叠,则N点IDFT[]得到的序列就是原序列x(n),即=x(n)。

如果N>M,比原序列尾部多N-M个零点;如果N<M,z则=IDFT[]发生了时域混叠失真,而且的长度N也比x(n)的长度M短,因此。

与x(n)不相同。

四、实验内容及步骤:(1)验证时域采样理论。

模拟信号:式中A=444.128,=50π,=50πrad/s。

它的幅频特性曲线如下图。

的幅频特性曲线按照的幅频特性曲线,选取三种采样频率,即=1kHz,300Hz,200Hz。

观测时间选。

为使用DFT,首先用下面公式产生时域离散信号,对三种采样频率,采样序列按顺序用,,表示。

要求:编写实验程序,计算、和的幅度特性,并绘图显示。

观察分析频谱混叠失真。

实验程序:A=444.128;a=50*sqrt(2)*pi;w0=50*sqrt(2)*pi;Tp=50/1000;F1=1000;F2=300;F3=200; %观察时间Tp=50msT1=1/F1;T2=1/F2;T3=1/F3; %不同的采样频率n1=0:Tp*F1-1;n2=0:Tp*F2-1;n3=0:Tp*F3-1; %产生不同的长度区间n1,n2,n3x1=A*exp(-a*n1*T1).*sin(w0*n1*T1); %产生采样序列x1(n)x2=A*exp(-a*n2*T2).*sin(w0*n2*T2); %产生采样序列x2(n)x3=A*exp(-a*n3*T3).*sin(w0*n3*T3); %产生采样序列x3(n)f1=fft(x1,length(n1)); %采样序列x1(n)的FFT变换f2=fft(x2,length(n2)); %采样序列x2(n)的FFT变换f3=fft(x3,length(n3)); %采样序列x3(n)的FFT变换k1=0:length(f1)-1;fk1=k1/Tp; %x1(n)的频谱的横坐标的取值k2=0:length(f2)-1;fk2=k2/Tp; %x2(n)的频谱的横坐标的取值k3=0:length(f3)-1;fk3=k3/Tp; %x3(n)的频谱的横坐标的取值subplot(3,2,1)stem(n1,x1,'.')title('(a)Fs=1000Hz');xlabel('n');ylabel('x1(n)'); subplot(3,2,3)stem(n2,x2,'.')title('(b)Fs=300Hz');xlabel('n');ylabel('x2(n)'); subplot(3,2,5)stem(n3,x3,'.')title('(c)Fs=200Hz');xlabel('n');ylabel('x3(n)'); subplot(3,2,2)plot(fk1,abs(f1))title('(a) FT[xa(nT)],Fs=1000Hz'); xlabel('f(Hz)');ylabel('幅度') subplot(3,2,4)plot(fk2,abs(f2))title('(b) FT[xa(nT)],Fs=300Hz');xlabel('f(Hz)');ylabel('幅度')subplot(3,2,6)plot(fk3,abs(f3))title('(c) FT[xa(nT)],Fs=200Hz');xlabel('f(Hz)');ylabel('幅度')运行结果:由图可见,采样序列的频谱的确是以采样频率为周期对模拟信号频谱的周期延拓。

DSP实验报告1,2

DSP实验报告1,2

DSP原理与应用实验报告实验一集成开发环境CCS应用基础一、程序分析(1)三个文件的作用及接口情况,说明各个文件中伪指令的作用。

答:test1.asm文件的作用是汇编主程序,vectors.asm文件是中断矢量处理程序,test1.cmd文件是命令文件。

test1.asm中伪指令的作用:.title作用是在每页的顶部打印文件标题.mmregs为存储器映像寄存器定义符号名。

使用.mmregs的功能和对所有的存储器映像寄存器执行set伪指令相同。

.usect汇编命令建立的自定义段也是未初始化段.def 定义全局变量.text已初始化段.end终止汇编,位于程序源程序的最后一行。

vectors.asm中伪指令的作用:.ref 定义全局变量.sect汇编器伪指令建立的自定义段也是已初始化段.space对存储器进行初始化。

(2)分析主程序的结构和功能,对每条指令进行注释,写出执行结果。

.title "example1.asm".mmregs ;使能存储器映像寄存器stack .usect "STACK",10h.def _c_int00;------------------------------------------------------------------------------.text_c_int00:stm # stack+10h, SP ;设置堆栈指针stm #0x0000, SWWSR ;所有存储器未加软件延迟;================================================stm #0x70,AR2st #0xff80,*AR2;================================================;观察控制位SXM的作用;当SXM=0时,进行无符号数的加载rsbx SXM ;SXM置零nopld *AR2, A ;(A)=( 000000FF80 H);------------------------;当SXM=1时,进行有符号数的加载ssbx SXM ;SXM置一nopld *AR2, A ;(A)=( FFFFFFFF80H ) ;================================================ ;================================================ ;观察控制位OVM的作用;当OVM=0时,对溢出不进行处理rsbx OVMld #0x7fff, 16, B ;立即数左移16位给Badd #0x7fff, 16, B ;(B)=( 00FFFE0000H);------------------------;当OVM=1时,对溢出进行处理ssbx OVMld #0x7fff, 16, Badd #0x7fff, 16, B ;(B)=( 007FFFFFFFH );================================================ ;================================================ ;观察控制位C16的作用;当C16=0时,进行32位双精度数加法运算ssbx OVMld #0x0001, 16, Aadd #0x7fff, Adst A, *AR2ld #0x0001, 16, Aor #0xffff, A ;相“或”rsbx C16nopdadd *AR2, A, B ;(B)=( 0000037FFEH);------------------------;当C16=1时,进行两个独立的16位数加法运算ssbx C16nopdadd *AR2, A, B ;(B)=( 0000027FFE H);================================================ ;================================================ ;观察控制位FRCT的作用;当FRCT=0时,对乘积不进行移位ld #0x1234, 16, Arsbx FRCTnopmpya *AR2 A中高16位与T相乘;(B)=( 0000001234H) ;------------------------;当FRCT=1时,对乘积左移1位ssbx FRCTnopmpya *AR2 ;(B)=( 0000002468 H);================================================ ;================================================ ;观察测试位TCbitf *AR2, #0x8000 ;(TC)=( 0 )nopnop;------------------------bitf *AR2, #0x0001 ;(TC)=( 1 )nopnop;================================================ ;================================================ ;观察标志位Cssbx SXMld #0x7fff, Ald #0x8000, Bmax A ;(C)=( 0 )nopnop;------------------------min B ;(C)=( 1 )nopnop;================================================ ;================================================ ;观察标志位OV A, OVBssbx SXMrsbx OV Ald #0x7fff, 16, Aadd #0xffff, A ;(OV A)=(0 )nopnop;------------------------add #0x7fff, 16, A ;(OV A)=( 1 )nopnop;================================================ dead_loop:nopnopnopnopb dead_loop.end(3)写出本工程的分段和存储器的定位情况。

dsp课程设计实验报告

dsp课程设计实验报告

DSP课程设计实验语音信号的频谱分析:要求首先画出语音信号的时域波形, 然后对语音信号进行频谱分析。

在MATLAB中, 可以利用函数fft对信号进行快速傅立叶变换, 得到信号的频谱特性, 从而加深对频谱特性的理解。

其程序为:>> [y,fs,bits]=wavread('I:\xp.wav',[1024 5120]);>> sound(y,fs,bits);>> Y=fft(y,4096);>> subplot(221);plot(y);title('原始信号波形');>> subplot(212);plot(abs(Y));title('原始信号频谱');程序运行结果为:设计数字滤波器和画出频率响应:根据语音信号的特点给出有关滤波器的性能指标:低通滤波器性能指标, =1000Hz, =1200Hz, =100dB, =1dB;高通滤波器性能指标, =4800Hz, =5000Hz, =100dB, =1dB;带通滤波器性能指标, =1200Hz, =3000Hz, =1000Hz, =3200Hz, =100dB, =1dB;要求学生首先用窗函数法设计上面要求的三种滤波器, 在MATLAB中, 可以利用函数firl 设计FIR滤波器;然后再用双线性变换法设计上面要求的三种滤波器, 在MA TLAB中, 可以利用函数butte、cheby1和ellip设计IIR滤波器;最后, 利用MATLAB中的函数freqz画出各种滤波器的频率响应, 这里以低通滤波器为例来说明设计过程。

低通:用窗函数法设计的低通滤波器的程序如下:>> fp=1000;fc=1200;As=100;Ap=1;fs=22050;>> wc=2*fc/fs;wp=2*fp/fs;>> N=ceil((As-7.95)/(14.36*(wc-wp)/2))+1;>> beta=0.1102*(As-8.7);>> Win=Kaiser(N+1,beta);>>b=firl(N,wc,Win);>>freqz(b,1,512,fs);程序运行结果:这里选用凯泽窗设计, 滤波器的幅度和相位响应满足设计指标, 但滤波器长度(N=708)太长, 实现起来很困难, 主要原因是滤波器指标太苛刻, 因此, 一般不用窗函数法设计这种类型的滤波器。

dsp实验报告4讲解

dsp实验报告4讲解

实验 2.4 外中断一.实验目的1.通过实验熟悉 VC5509A 的中断响应过程。

2.学会 C 语言中断程序设计,以及运用中断程序控制程序流程。

二.实验设备计算机, ICETEK-VC5509-A 实验箱及电源。

三.实验原理1.中断及中断处理过程:⑴中断简介:中断是一种由硬件或软件驱动的信号, DSP 在接到此信号时,将当前程序悬挂起来,转去执行另外一个任务, 这个任务我们称为中断服务程序 (ISR )。

TMS320C55X DSP 可支持32个ISR ,可由硬件或软件触发。

⑵DSP 处理中断的步骤:① 接收中断请求 :由软件或硬件发出。

② 响应中断请求 :对于可屏蔽中断,需要满足若干条件,才发生响应;而对于不可屏蔽中断, 则立即响应。

③ 准备执行中断服务程序。

- 完成当前正在执行的指令;将进入流水线但还未解码的指令清除。

- 自动保存若干寄存器的值到数据堆栈和系统堆栈。

- 取得用户定义的中断向量表中当前中断向量,中断向量指向中断服务程序入口。

④ 执行中断服务程序。

中断服务程序包含中断返回指令, 这样返回时可以出栈以前保存的关 键寄存器数据,从而恢复中断服务程序执行前的现场。

⑶中断向量表:中断向量表的构成请参见 TI 的文档 sprs295d.pdf 之 3.11 节。

中断向量表的地址可以由用户指定。

⑷外中断:⑵ 构造中断向量表:可以用汇编语言构造,编写一个汇编语言模块程序 vector.asm 。

⑶ 修改链接命令文件:在 MEMORY 小节中开辟单独的地址段用以存放中断向量表;在 SECTIONS 小节中指定 .vectors 段到前步开设的内存段中。

⑷ 主程序中进行初始化设置:定位中断向量表、使能中断、清中断等。

4.实验程序流程图:TMS320C5509 可以响应2.ICETEK-CTR 板的键盘接口: 显示 /控制模块 ICETEK-CTR 每个扫描码结束后保存,同时向INT0-INT4 五个外中断。

DSP实验报告8

DSP实验报告8

DSP实验报告8实验8.1 语⾳采集和放送班级1班姓名宋潇玙、潘继茹学号2013051124、2013051132⼀、实验⽬的1.了解ICETEK-VC5509-A板上语⾳芯⽚codec芯⽚TLV320AIC23的设计和程序控制原理。

2.了解数字回声产⽣原理,变成及其参数选择,控制。

3.熟悉VC5509DSP扩展储存器的编程使⽤⽅法⼆、实验设备PC,ICETEK-VC5509-A实验箱,⽿机,麦克风三、实验内容通过观察窗⼝观察bEcho,uDelay,uEffect。

BEcho=1时数字回声功能激活。

Udelay调节⼀重回声延时,数字较⼩时延时较⼩,较⼤时延时较⼤。

UEffect调节回声⾳量,数字较⼩时⾳量较⼩。

四、实验结果观察窗⼝delay和effect分别是数字声的延迟时间和响度。

修改程序使回声信号出现两次void main(){ SDRAM_init();EnableAPLL();PLL_Init(40);AIC23_Init();for(;;){AIC23_Mixer();wait(25);AIC23_Mixer();}}实验8.2 语⾳信号编码解码⼀、实验⽬的1.了解ICETEK-VC5509-A板上语⾳芯⽚codec芯⽚TLV320AIC23的设计和程序控制原理。

2.了解语⾳编码G711的特点、⼯作原理及其编程。

3.了解PCM编码过程及应⽤,学习Alaw压缩解压缩⽅法的运算过程和程序编制实现。

4.通过实验体会语⾳编码。

⼆、实验设备PC,ICETEK-VC5509-A实验箱,⽿机,麦克风三.实验结果调节bcodec的参数值,为0时为原声,改变使之⾮零输出为编码并还原的声⾳。

实验8.3 语⾳信号的FIR滤波⼀.实验⽬的1.熟悉ICETEK–VC5509-A 板上语⾳codec 芯⽚TLV320AIC23 的设计和程序控制原理。

2.熟悉FIR滤波器⼯作原理及其编程。

3.使⽤TI算法库dsplib 提⾼程序运⾏效率。

DSP实验报告

DSP实验报告

DSP实验报告院(系)名称自动化科学与电气工程学院学生姓名学号任课老师吴冠2014年 6 月实验1 CCS入门实验2(C语言的使用)一、实验目的1. 学习用标准C 语言编制程序;了解常用的C 语言程序设计方法和组成部分。

2. 熟悉使用软件仿真方式调试程序。

二、实验内容1. DSP源文件的建立;2. DSP程序工程文件的建立;3. 掌握C语言在DSP中的应用。

三、实验背景知识当使用标准C 语言编制的程序时,其源程序文件名的后缀应为.c。

CCS 在编译标准C 语言程序时,首先将其编译成相应汇编语言程序,再进一步编译成目标DSP 的可执行代码。

最后生成的是coff 格式的可下载到DSP 中运行的文件,其文件名后缀为.out。

由于使用C 语言编制程序,其中调用的标准C 的库函数由专门的库提供,在编译连接时编译系统还负责构建C 运行环境。

所以用户工程中需要注明使用C 的支持库。

四、实验主程序1.add.c:实验的主程序。

2.28335.gel:系统初始化3.28335.cmd: 声明了系统的存储器配置与程序各段的连接关系。

Add.c 中程序:#include <stdio.h>/* ======== main ======== */void main(){int a=10;int b=10;int c;c=a+b;for(;;);五、实验步骤1.双击图标进入CCS环境;2.添加工程pjt文件,点击Project →open命令3.在弹出的对话框中选中cadd.pjt文件添加该工程文件。

4.添加gel文件,即右键点击工程视窗中的GEL files,在弹出的菜单中选择laod gel 命令。

5.添加.out文件,即使用File→Load Program菜单命令。

装载add.out文件,进行调试。

.out文件一般存放在程序文件夹的debug文件夹中。

6.打开观察窗口观看变量的值,即使用View→Watch Window菜单命令。

dsp实验报告

dsp实验报告

dsp实验报告C54x的浮点数的算术运算(实验⼀)实验⽬的:1)了解TMS320C54x汇编语⾔程序的基本格式,以及汇编、链接的基本过程。

2)初步熟悉软件仿真器Simulator的⽤法。

实验内容:A.基础实验将两个⼩数相乘,分离尾数与指数,进⾏算术运算,最后归⼀化。

乘法运算时遵循指数相加尾数相乘的规则。

1)编写浮点乘法程序ex1.asm,完成X1*X2=0.3×(—0.8)运算。

2) 编写链接命令⽂件ex1.cmd。

B.提⾼实验:⽤汇编语⾔实现:y1=x1*a1-x2*a2y2=12/3+1y3=0.3*(-0.5)+1实验程序框图及清单:此次试验中,在⼀个程序⾥完成基础和提⾼部分,四个计算分别作为四个⼦程序。

具体程序及相关注释如下:.title "lab1.asm".mmregsSTACK .usect "STACK", 10H.bss x1,1 ;定点数操作数1.bss x2,1 ;定点数操作数2.bss e1,1 ;指数1.bss m1,1 ;尾数1.bss e2,1 ;指数2.bss m2,1 ;尾数2.bss ep,1 ;乘积的指数.bss mp,1 ;乘积的尾数.bss product,1 ;定点乘积.bss temp,1 ;暂存单元.bss a1,1.bss a2,1.bss b1,1.bss b2,1 ;提⾼实验y1=a1*b1-a2*b2.bss y1,1.bss c1,1 ;提⾼实验y2=12/3+1.bss c2,1.bss c3,1.bss y2,1.bss d1,1 ;提⾼实验y3=0.3*(-0.5)+1.bss d2,1.bss d3,1.bss y3,1.def start.datatable: .word 3*32768/10.word -8*32768/10.word 4*32768/10 ;.word 2*32768/10 ;提⾼实验y1=a1*b1-a2*b2数据.word 12,3,1 ;提⾼实验y2=12/3+1数据.word 3*32768/10.word -5*32768/10 ;提⾼实验y3=0.3*(-0.5)+1数据.word 1 .textstart: STM #0,SWWSRSTM #STACK+10H,SPMVPD table,@x1MVPD table+1,@x2LD @x1,16,A ;EXP AST T,@e1NORM ASTH A,@m1 ;将操作数x1转换成浮点数存⾄e1和m1中LD @x2,16,A ;EXP AST T,@e2NORM ASTH A,@m2 ;将操作数x2转换成浮点数存⾄e2和m2中CALL MULT ;调⽤浮点乘法⼦程序CALL LAB11 ;y1=x1*a1-x2*a2⼦程序CALL LAB12 ;y2=12/3+1⼦程序CALL LAB13 ;y3=0.3*(-0.5)+1⼦程序done: B doneMULT: SSBX FRCT ;设置⼩数相乘浮点乘法⼦程序SSBX SXM ;设置符号扩展LD @e1,A ;ADD @e2,A ;指数相加STL A,@ep ;LD @m1,T ;MPY @m2,A ;尾数相乘EXP A ;ST T,@temp ;NORM A ;将乘积浮点化STH A,@mp ;浮点乘积尾数存mp单元LD @temp,AADD @ep,ASTL A,@ep ;浮点乘积指数存ep单元NEG ASTL A,@tempLD @temp,TLD @mp,16,ANORM ASTH A,@productRETLAB11: STM #a1,AR1 y1=x1*a1-x2*a2⼦程序RPT #3MVPD table,*AR1+SSBX FRCTSSBX SXMLD @a1,TMPY @b1,ALD @a2,TMAS @b2,ASTH A,@y1RETLAB12: STM #c1,AR1 y2=12/3+1⼦程序RPT #2MVPD table+4,*AR1+RSBX FRCTRSBX SXMLD @c1,BRPT #15SUBC @c2,BADD @c3,BSTL B,@y2RETLAB13: STM #d1,AR1 y3=0.3*(-0.5)+1⼦程序RPT #2MVPD table+7,*AR1+SSBX FRCTSSBX SXMLD @d1,TMPY @d2,ALD A,-1,A ;q.15格式转换成q1.14格式ADD @d3,14,A ;与转换成q.14的1相加STH A,@y3 ;q1.14的结果存⼊y3RET.end实验中遇到的问题及解决⽅法主要是Dos命令的熟悉和语法错误的纠正运⾏结果:A.0x0148是基础部分的计算结果(q.15格式)换算回来是B.0x23d6是y1=x1*a1-x2*a2(0.3*0.4-(-0.8)*0.2)的结果0.28045654296875误差为0.28045654296875-0.28=0.00045654296875C.0x0005是y2=12/3+1的结果D.0x666是y3=0.3*(-0.5)+1的结果-0.150146484375误差为-0.150146484375-(-0.15)=-0.00014648375⼩结通过本次试验熟悉并掌握了部分dos命令以及dsp的⼤部分汇编指令,并能在dos调试环境下调程序,检查变量以验证结果正确与否。

DSP短学期 实验报告

DSP短学期 实验报告

DSP应用系统设计实验报告一、设计任务通过矩阵键盘的输入,利用TMS320LF2407的事件管理模块,可以简单有效的控制步进电机的停转、转速和转向。

系统中设计了相应的人机界面,进行相应变量的显示、操作即可在液晶上实时显示电机当前运行状态。

利用拓展端口控制外围设备的方法,掌握使用2407DSP通用计时器的控制原理及中断服务程序的编程方法;了解蜂鸣器发生原理和音乐发生方法;了解步进电机的使用方法;了解液晶显示控制原理及编程方法及小键盘的应用。

该实验设计分成4个模块完成:•液晶模块•键盘模块•电机模块•其它模块(蜂鸣器、点阵)具体化即:1. DSP芯片接受矩阵键盘的输入。

2. DSP芯片对LED灯,蜂鸣器控制模块。

3. DSP芯片对相应信息的反馈,即:LCD液晶显示。

4. DSP控制电机正反转以及对电机速度调节。

二、系统构成及子模块原理:1.硬件原理方框图1所示,该系统由LCD液晶显示模块、矩阵键盘模块、电机模块及包含蜂鸣器和点阵的模块组成。

图1硬件原理方框图2:系统总流程图:3:子模块工作原理a.键盘输入:键盘在信号采集系统中是一个很关健的部件,它能向系统输入数据、传送命令等功能,是人工干预系统的主要手段,键盘输入功能主要提供控制信号和数据的输入。

键盘的扫描码由DSP的I/O扩展地址0x8001给出,当有键盘输入时,读此端口得到扫描码,当无键按下时读此端口的结果为0。

各按键的扫描码排列如下所示。

0x18,0x14,0x12,0x11 0 1 2 30x28,0x24,0x22,0x21 4 5 6 70x48,0x44,0x42,0x41 8 9 A B0x88,0x84,0x82,0x81 C D E F扫描码对应键值也即,当读8001H端口时,如果其值为‘18H’,则表示键盘按下的键是“0”,如果其值为‘0’,则表示没有键按下。

将键盘扫描得到的数据存入内存,然后根据数据值就能够确定所输入的键,通过映射关系,就能过将每一个键设为特定的功能。

dsp实验报告3

dsp实验报告3

§2.1 基础实验一、实验目的1. 掌握CCS3.3实验环境的使用;2. 掌握用C语言编写DSP程序的方法。

二、实验设备1. 一台装有CCS3.3软件的计算机;2. DSP实验箱的TMS320F2812主控板;3. DSP硬件仿真器。

三、实验原理浮点数的表达和计算是进行数字信号处理的基本知识;产生正弦信号是数字信号处理中经常用到的运算;C语言是现代数字信号处理表达的基础语言和通用语言。

写实现程序时需要注意两点:(1)浮点数的范围及存储格式;(2)DSP的C语言与ANSI C语言的区别。

四、实验步骤1.打开CCS3.3 并熟悉其界面;2.在CCS3.3环境中打开本实验的工程(Example_bASe.pjt)[位置为:/ Example_2812/ Example_math/ Example_base],编译并重建.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.修改输入序列的长度或初始值,重复上述过程。

五.实验注意事项1.把代码载入硬件时注意操作顺序,要操作规范,以免烧坏硬件2.只有添加了可视窗口才可以看到图形3.读懂程序以后再按要求修改,才能完成要求4.注意观察修改程序的图形变化与之前的比较六.实验程序/** Program for convolve **/#include <math.h>int N1,N2; /*输入数组长度*/int n; /*输出数组长度*/int m,i,k;float x[20];float h[20];float y[20]; /*输出数组*/main(){N1=10; /* x 长度*/N2=10; /* h 长度*/n=N1+N2-1; /* 输出y 的长度*/ for(i=0;i<20;i++) /* 初始化数组*/{x[i]=0;h[i]=0;y[i]=0;}for(i=0;i<n;i++) /* 给x数组赋值*/{if(i<N1){x[i]=i;}else{x[i]=0;}}for(i=0;i<=n;i++) /* 给h数组赋值*/{if(i<N2){h[i]=1;}else{h[i]=0;}}for(i=0;i<n;i++) /* 计算卷积*/{for (k=0;k<=i;k++)y[i]=y[i]+h[k]*x[i-k];}while(1);七.实验结果八.实验小结通过本实验熟悉和使用CCS3.3实验环境,虽然还不是充分解读CCS3.3技巧,但有了这次自己动手,掌握其基本技巧。

DSP课程设计实验报告

DSP课程设计实验报告

目录1.实验一指示灯演示 (3)2.实验二键盘输入 (7)3.实验三液晶显示器控制显示 (11)4.实验四FIR/IIR 算法 (18)实验一指示灯演示一.实验目的1.了解ICETEK–VC5509-A板在TMS320VC5509DSP外部扩展存储空间上的扩展。

2.了解ICETEK–VC5509-A板上指示灯扩展原理。

3.学习在C语言中使用扩展的控制寄存器的方法。

二.实验设备计算机,ICETEK-VC5509-A实验箱(或ICETEK仿真器+ICETEK–VC5509-A系统板+相关连线及电源)。

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

ICETEK–VC5509-A评估板在EMIF接口上除了扩展了片外SDRAM外,还扩展了指示灯、DIP开关和D/A设备。

具体扩展地址如下:400800-400802h:D/A转换控制寄存器400000-400000h:板上DIP开关控制寄存器400001-400001h:板上指示灯控制寄存器与ICETEK–VC5509-A评估板连接的ICETEK-CTR显示控制模块也使用扩展空间控制主要设备:602800-602800h:读-键盘扫描值,写-液晶控制寄存器600801-600801h:液晶辅助控制寄存器602801h 、600802h:液晶显示数据寄存器602802-602802h:发光二极管显示阵列控制寄存器2.指示灯扩展原理:四.实验程序流程图五.实验程序编写/*实现每个灯分别亮一段时间,正向顺序和反向顺序亮灯,乱序亮灯,两个灯乱序同时亮灭,四个灯产生频谱效果,单个灯闪烁*/#include "myapp.h"#define LBDS (*((unsigned int *)0x400001))// 定义指示灯寄存器地址和寄存器类型void Delay(unsigned int nDelay); // 延时子程序main(){unsigned int uLED[10]={1,2,4,8,5,10,6,9,1,0};// 控制字,逐位置1unsigned int vLED[20]={7,15,1,7,3,7,15,7,3,1,0,1,7,3,15,7,1,7,0,1};// 控制字,逐位置2int i,j;PLL_Init(72); // 初始化DSP运行时钟SDRAM_init(); // 初始化EMIF接口while ( 1 ){i=0;j=0; //每个灯亮一遍,时间偏长,检查灯是否完好LBDS=uLED[i+3]; //4灯亮Delay(8192);LBDS=uLED[i+2]; //3灯亮Delay(8192);LBDS=uLED[i+1]; //2灯亮Delay(8192);LBDS=uLED[i]; //1灯亮Delay(8192);for ( i=0;i<4;i++ ){LBDS=uLED[i]; // 正向顺序送控制字Delay(1024); // 延时}for ( i=3;i>=0;i-- ){LBDS=uLED[i]; // 反向顺序送控制字Delay(1024); // 延时}for ( i=0;i<2;i++) //按1-3-2-4顺序亮灯{j=i+2;LBDS=uLED[i];Delay(2048);LBDS=uLED[j];Delay(2048);}for ( i=4;i<6;i++) //1、3灯与2、4灯交替亮{LBDS=uLED[i];Delay(4096);}for ( i=0;i<10;i++) //23灯,14灯循环亮{for(j=6;j<8;j++){LBDS=uLED[j];Delay(1024);}}for(i=0;i<20;i++) //频谱效果{LBDS=vLED[i];Delay(512);}for(i=0;i<15;i++) //一个灯闪烁{for(j=8;j<10;j++){LBDS=uLED[j];Delay(256);}}}}void Delay(unsigned int nDelay) //延时子程序{int ii,jj,kk=0;for ( ii=0;ii<nDelay;ii++ ){for ( jj=0;jj<1024;jj++ ){kk++;}}}六.实验步骤1.实验准备:连接实验设备。

DSP实验报告,2

DSP实验报告,2

DSP实验报告,2DSP 实验报告班班级:学学号:姓姓名:指导教师:实验一常用指令实验 1 1 .实验目的了解 P DSP 系统的组成和结构 2 2 .实验设备 3 3 .实验内容及步骤 4 4 .实验结果及分析 5 5 .实验体会实验七 D A/D 转换实验一、实验目的 1.熟悉 A/D 转换的根本原理; 2.掌握 AD7822 的技术指标和常用方法; 3.掌握并熟悉使用DSP 和 AD7822BN 的接口及其操作。

二、实验设备计算机,CCS2.0 软件,DSP 仿真器,试验箱三、实验步骤和内容 1、拨码开关设置 2、运行 CCS 软件,加载示范程序; 3、观察采样报告; 4、填写实验报告。

5、样例程序实验操作说明6、开关 K9 拨到右边,即选择连接右边的 CPU:CPU2;启动 CCS 2.0,在Project->Open->菜单翻开exp06cpu2 目录下面的工程文件“exp06.pjt”。

用下拉菜单中Project->Open,翻开“exp06cpu2/exp06.pjt”,双击“Sour ”,可查看源程序。

在 File->Load Program 菜单下加载 exp06cpu2\debug 目录下的 exp06.out 文件。

在“782254.c”中如以下图“i=0;”处,设置断点。

单击“Run”运行程序,程序运行到断点处停止:7、用下拉菜单中的 View/Grap 的“Time/Frequen ”翻开一个图形观察窗口; 8、单击“Ani te”运行程序,调节源 1 的频率、幅值、波形调节旋钮,在图形观察窗口观察 A/D 转换后的数据波形变化; 9、单击“Halt”暂停程序运行,用“View”的下拉菜单中“Memory”翻开存储器数据观察窗口;设置该存储器数据观察窗口的参数,选择地址为 databuff,数据格式 C 格式 16进制; 10、单击“Ani te”运行程序,调整存储器数据观察窗口,并在该窗口中观察数据变化,A/D 转换后的数据存储地址为 databuff 单元开始的 256 个单元内,变化数据将变为红色; 11、单击“Halt”停止程序运行;12、关闭“exp06.pjt”工程文件,关闭个窗口,本实验完毕。

dsp实验报告四

dsp实验报告四

DSP 实验报告(实验四)班级:学号:姓名:实验四、正弦信号发生器一、 实验目的1. 掌握利用DSP 产生正弦信号的原理2. 熟悉子程序调用的程序结构以及堆栈的使用3. 掌握CCS 的图形输出操作二、 实验设备1. 集成开发环境Code Composer Studio (简称CCS )2. 实验代码Sin.s54、Lab.cmd 和Lab.gel三、实验内容1. 阅读理解多项式逼近正弦的文档2. 阅读和理解Sin.s543. 调试正弦波发生器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是在指令执行阶段判断条件,不存在这方面的问题。

dsp实验报告 3

dsp实验报告 3

实验三PWM实验:一、实验目的了解TMS320F28335 的PWM 模块原理二、实验设备(1)装有Windows 的PC 机一台;(2) XDS510 仿真器一套;(3) YX-F28335 开发板一套;(4) 示波器一台;三、实验步骤(1) 首先按照实验一配置CCS4.1.2 软件并打开;(2) 接着把仿真器的USB 与电脑进行连接,将仿真器的另一端JATG 端插到YX-F28335 开发板的JATG 针处;(3) Target->Launch TI Debug 后,点击Target->Connect Target。

(4) 由于工程已经是一个可烧写的可执行文件,所以直接在CCS 中点击Target->LoadProgram……命令,在文件lab24-PWM 下加载Debug 目录下的.out 可执行文件;(5) 在CCS 菜单栏点击Target->Run,之后用户打开示波器,将示波器的地线接到开发板的地线端,另一端接到YX-F28335 开发板J4的第1 脚。

四、实验原理脉冲宽度调制(PWM)是一种对模拟信号电平进行数字编码的方法,其根据相应载荷的变化来调制晶体管栅极或基极的偏置,来实现开关稳压电源输出晶体管或晶体管导通时间的改变,这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。

PWM 的控制方法:采样控制理论中有一个重要结论:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。

PWM 控制技术就是以该结论为理论基础,对半导体开关器件的导通和关断进行控制,使输出端得到一系列幅值相等而宽度不相等的脉冲,用这些脉冲来代替正弦波或其他所需要的波形。

按一定的规则对各脉冲的宽度进行调制,既可改变逆变电路输出电压的大小,也可改变输出频率。

五、实验过程1、测量波形(电路连接)并在示波器上显示:的转动情况。

DSP实验报告完美版

DSP实验报告完美版

DSP实验报告班级:学号:姓名:指导教师:实验一、二 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:\ti\myprojects中建立文件夹volume1(如果CCS安装在其他d:\ti ,则在d:\ti\myprojects中);○2将c:\ti\tutorial\target\volume1拷贝到c:\ti\myprojects\ 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 对话框中选择 Linker Command File (*.cmd),选择volume.cmd,单击Open。

DSP实验报告

DSP实验报告

实验一 信号、系统及响应一、 实验目的1. 熟悉理想采样的性质,了解信号采样前后的频谱变化,加深对采样定理的理解。

2. 熟悉离散信号和系统的时域特性。

3. 熟悉线性卷积的计算编程方法:利用卷积的方法,观察分析系统响应的时域特性。

4. 掌握序列傅氏变换的计算机实现方法,利用序列的傅氏变换对离散信号,系统及系统响应进行频域分析。

二、 实验内容在编制以上各部分程序以后,编制主程序调用各个功能模块实现对信号,系统和系统响应的时域,频域分析,完成以下实验内容。

1.分析理想采样信号序列的特性。

产生理想采样信号序列()a x n ,使A =444.128,α=,0Ω= a.首先选用采样频率为1000Hz,T =1/1000,观察所得理想采样信号的幅频特性,在折叠频率以内和给定的理想幅频特性无明显差异,并做记录。

b.改变采样频率为300Hz,T=1/300,观察所得到的幅频特性曲线的变化,并做记录c.进一步减少采样频率为200Hz,T=1/200,观察频谱“混淆”现象是否明显存在,说明原因,并记录幅频特性曲线。

2.离散信号,系统和系统响应的分析(1).观察信号()b x n 和系统()b h n 的时域和幅频特性,利用线性卷积求信号通过系统以后的响应。

比较系统响应和系统()b h n 的时域和幅频特性,注意它们之间有无差异,并绘出曲线。

(2).观察信号()c x n 和系统()a h n 的时域和幅频特性,利用线性卷积求系统响应。

判断响应序列图形及序列非零值长度是否与理论结果一致,说出一种定性判断响应序列图形正确与否的方法(提示:10()()()c a x n h n R n ==)。

利用系统的傅立叶变换数值计算子程序求出()k j Y e ω,观察响应序列的幅频特性。

定性判断结果正确与否,改变信号()c x n 的脉冲宽度,使N =5,重复以上动作,观察变化,记录改变参数前后的差异。

(3)将实验步骤2-(2)中信号变换为()a x n ,其中A=1,α =0.4,0Ω=2.0734,T=1。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1 实 验 报 告 实验课程: DSP原理及应用 学生姓名: 学 号: 专业班级:

2012年 5月 25日 2

目录 实验一 定点除法运算 实验二 FIR滤波器 实验三 FFT算法 实验四 卷积计算 实验五 数码管显示 实验六 语音录放 3

实验一 定点除法运算 一、实验目的 1、熟悉C54指令系统,掌握常用汇编指令,学会设计程序和算法的技巧。 2、学习用指令实现除法运算。

二、实验设备

计算机; DSP 硬件仿真器;DSP 实验开发平台。 三、实验原理 由内置的硬件模块支持,数字信号处理器可以高速的完成加法和乘法运算。但 TMS320 系列 DSP不提供除法指令,为实现除法运算,需要编写除法子程序来实现。二进制 除法是乘法的逆 运算。乘法包括一系列的移位和加法,而除法可分解为一系列的减法和移位。本 实验要求编写 一个16 位的定点除法子程序。 1.除法运算的过程 设累加器为 8 位,且除法运算为10 除以3,除的过程包括与除数有关的除数逐 步移位,然 后进行减法运算,若所得商为正,则在商中置1,否则该位商为0 例如:4 位除法示例: (1)数的最低有效位对齐被除数的最高有效位 00001010 - 00011000 11110010 (2)由于减法结果为负,丢弃减法结果,将被除数左移一位再减 00010100 - 00011000 11111000 (3)结果仍为负,丢弃减法结果,将被除数左移一位再减 00101000 - 00011000 00010000 (4)结果为正,将减法结果左移一位后把商置1,做最后一次减 00100001 - 00011000 00001001 (5)结果为正,将减法结果左移一位加1 得最后结果,高4 位是余数,低4 位商: 00010011 2.除法运算的实现 为了尽量提高除法运算的效率,’C54x 系列提供了条件减指令SUBC 来完成除法操作。

四、实验步骤 1.用Simulator 方式启动Code Composer。 2 . 执行Project New 建立新的项目, 输入chuf作为项目的名称, 将程序定 位在 D:\ti\myprojects\chuf目录。 3.执行File New Source File 建立新的程序文件,为创建新的程序文件命名为 chuf.asm 并 保存;执行Project Add Files to Project,把chuf.asm 加入项目中。 4. 执行File New Source File 建立新的文件并保存为chuf.cmd; 执行Project Add Files to Project,把chuf.cmd 加入项目中。 5.编辑chuf.asm 加入如下内容: ;*** 编制计算除法运算的程序段。其中|被除数|<|除数|,商为小数*** .title "chuf.asm" .mmregs .def start,_c_int00 4

.bss num,1 .bss den,1 .bss quot,1

.data table .word 4*32768/10 ;0.4 .word -8*32768/10 ;-0.8

.text _c_int00 b start nop nop start: STM #num,AR1 RPT #1 MVPD table,*AR1+ ;传送2个数据至分子、分母单元 STM #den,AR1 LD *AR1-,16,A ;将分母移到累加器A(31-16) MPYA *AR1+ ;(num)*(A(32-16))->B,获取商的符号 ;(在累加器B中) ABS A ;分母取绝对值 STH A,*AR1- ;分母绝对值存回原处 LD *AR1+,16,A ;分子->A(32-16) ABS A ;分子取绝对值 RPT #14 ;15次减法循环,完成除法 SUBC *AR1,A XC 1,BLT ;如果B〈0(商是负数)则需要变号 NEG A STL A,*(quot) ;保存商 .END 6、编译chuf.cmd加入如下内容: /*chuf.cmd*/ chuf.obj -m chuf.map -o chuf.out

MEMORY { PAGE 0: ROM :origin=0080h,length=1000h ROM :origin=0060h,length=10h PAGE 1: OTHER :origin=0400h,length=40h } 5

SECTIONS { .text: {}>ROM PAGE 0 .data : {}>ROM PAGE 0 .stack : {}>OTHER PAGE 1 .bss : {}>OTHER PAGE 1 } 7、实验结果:

五、实验小结 通过几次的课程实验,我学到了不少新的知识,只有自己真正做过才会知道和了解。结合课程中所学的理论知识,和参考资料做课程实验。达到学有所用的目的。学会查阅相关手册与资料,通过查阅手册和文献资料,并掌握合理选用 的原则,培养独立分析与解决问题的能力。 这次设计我们学到了很多东西,熟悉 CCS5000 软件的使用,还加深了对知识 的理解和掌握。作为一名大三的学生,我觉得能做类似的课程设计是十分有意义的。 6

实验二 FIR滤波器 一、 实验目的 1、熟悉数字滤波的基本原理和实现方法; 2、熟悉线性相位FIR 数字滤波器特性; 3、通过观察对实际信号的滤波作用,获得对数字滤波的感性认识。

二、 实验设备 计算机; DSP 硬件仿真器;DSP 实验开发平台。

三、 实验硬件设置 1、将实验箱右侧的船型开关往”I”方向打开电源; 2、将主板的开关S33(主板右上角)拨通+/-5V 电源; 3、实验开始前先按RST 硬件复位(实验中不要再按复位键)。

四、 实验步骤 1、启动CCS编写实验程序代码; 2、打开Projects ,选择MYprojects →fir→fir.pjt; 3、打开程序后.进行运行和编译;编辑fir.asm 加入如下内容: ;一个FIR滤波器源程序 fir.asm .mmregs .global start .def start,_c_int00

INDEX .set 1 KS .set 256 ;模拟输入数据缓冲区大小

N .set 17 COFF_FIR .sect "COFF_FIR" ;FIR滤波器系数 .word 0 .word 158 .word 264 .word -290 .word -1406 .word -951 .word 3187 .word 9287 .word 12272 .word 9287 .word 3187 .word -951 7

.word -1406 .word -290 .word 260 .word 158 .word 0 .data INPUT .copy "firin.inc" ;模拟输入在数据存储区0x2400 OUTPUT .space 1024 ;输出数据在数据区0x2500 ;FIR_DP .usect "FIR_VARS",0 ;D_FIN .usect "FIR_VARS",1 ;D_FOUT .usect "FIR_VARS",1 COFFTAB .usect "FIR_COFF",N DATABUF .usect "FIR_BFR",N BOS .usect "STACK",0Fh TOS .usect "STACK",1

.text .asg AR0,INDEX_P .asg AR4,DATA_P ;输入数据x(n)循环缓冲区指针 .asg AR5,COFF_P ;FIR系数表指针 .asg AR6,INBUF_P ;模拟输入数据指针 .asg AR7,OUTBUF_P;FIR滤波器输出数据指针 _c_int00 b start nop nop start: ssbx FRCT STM #COFFTAB,COFF_P RPT #N-1 ;将FIR系数从程序存储器移动 MVPD #COFF_FIR,*COFF_P+ ;到数据存储器

STM #INDEX,INDEX_P STM #DATABUF,DATA_P RPTZ A,#N-1 STL A,*DATA_P+ ;将数据循环缓冲区清零

STM #(DATABUF+N-1),DATA_P ;数据缓冲区指针指向x[n-(N-1)] STM #COFFTAB,COFF_P ; FIR_TASK: STM #INPUT,INBUF_P STM #OUTPUT,OUTBUF_P STM #KS-1,BRC RPTBD LOOP-1

相关文档
最新文档