dsp课程设计信号发生器方波.docx
《dsp课程设计信号发生器方波.docx》由会员分享,可在线阅读,更多相关《dsp课程设计信号发生器方波.docx(15页珍藏版)》请在冰豆网上搜索。
![dsp课程设计信号发生器方波.docx](https://file1.bdocx.com/fileroot1/2023-7/15/56360fff-66fb-431a-b568-0074ec2b73ad/56360fff-66fb-431a-b568-0074ec2b73ad1.gif)
dsp课程设计信号发生器方波
成绩评定表
学生姓名
王子豪
班级学号
23
专业
电子信息工程
课程设计题目
信号发生器(方波)
评
语
组长签字:
成绩
日期
2015年1月日
课程设计任务书
学院
信息科学与工程学院
专业
电子信息工程
学生姓名
王子豪
班级学号
课程设计题目
信号发生器(方波)
实践教学要求与任务:
基于Dsp的信号发生器设计:
1、设计一个信号发生器(方波)。
2、在XF引脚上输出任意频率的方波。
工作计划与进度安排:
1、选题、查阅资料及编写软件程序(或硬件原理图设计)。
2、课内上机调试程序及仿真。
3、课外上机调试程序及仿真。
4、调试出结果、调试结果验收并写报告。
5、修改报告及提交报告电子版(修改之后)。
6、正式提交报告(打印版)及参加第一次答辩。
指导教师:
2014年月日
专业负责人:
2014年月日
学院教学副院长:
2014年月日
1绪论1
1.1设计背景1
1.2设计目的2
1.3设计任务2
2设计过程3
2.1设计原理3
2.2XF引脚周期性变化3
2.3子程序的调用4
3程序代码5
3.1源程序5
3.2SDRAM初始化程序7
3.3方波程序连接命令文件9
4调试仿真运行结果分析10
4.1寄存器仿真结果10
4.2模拟输出仿真12
5.设计总结13
参考文献13
信号发生器(方波)
1绪论
1.1设计背景
数字信号处理是20世纪60年代,随着信息学科和计算机学科的高速发展而?
迅速发展起来的一门新兴学科。
它的重要性日益在各个领域的应用中表现出来。
?
其主要标志是两项重大进展,即快速傅里叶变换(FFT)算法的提出和数字滤波器设计方法的完善。
数字信号处理是把信号用数字或符号表示成序列,通过计算机或通用(专用)信号处理设备,用数值计算方法进行各种处理,达到提取有用信息便于应用的目的。
例如:
滤波、检测、变换、增强、估计、识别、参数提取、频谱分析等。
?
数字信号处理的目的是对真实世界的连续模拟信号进行测量或滤波。
因此在进行数字信号处理之前需要将信号从模拟域转换到数字域,这通常通过模数转换器实现。
而数字信号处理的输出经常也要变换到模拟域,这是通过数模转换器实现的。
数字信号处理的算法需要利用计算机或专用处理设备如数字信号处理器(DSP)和专用集成电路(ASIC)等。
数字信号处理的研究方向应该更加广泛、更加深入.特别是对于谱分析的本质研究,对于非平稳和非高斯随机信号的研究,对于多维信号处理的研究等,都具有广阔前景。
?
数字信号处理技术发展很快、应用很广、成果很多。
多数科学和工程中遇到的是模拟信号。
以前都是研究模拟信号处理的理论和实现。
模拟信号处理缺点:
难以做到高精度,受环境影响较大,可靠性差,且不灵活等。
数字系统的优点:
体积小、功耗低、精度高、可靠性高、灵活性大、易于大规模集成、可进行二维与多维处理。
随着大规模集成电路以及数字计算机的飞速发展,加之从60年代末以来数字信号处理理论和技术的成熟和完善,用数字方法来处理信号,即数字信号处理,已逐渐取代模拟信号处理。
?
数字信号处理是利用计算机或专用处理设备,以数字形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理,以得到符合人们所需要的信号形式。
数字信号处理是将信号以数字方式表示并处理的理论和技术。
数字信号处理与模拟信号处理是信号处理的子集。
数字信号处理技术及设备具有灵活、精确、抗干扰强、设备尺寸小、造价低、速度快等突出优点,这些都是模拟信号处理技术与设备所无法比拟的。
?
数字信号处理(Digital?
SignalProcessing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。
数字信号处理是围绕着数字信号处理的理论、实现和应用等几个方面发展起来的。
数字信号处理在理论上的发展推动了数字信号处理应用的发展。
反过来,数字信号处理的应用又促进了数字信号处理理论的提高。
而数字信号处理的实现则是理论和应用之间的桥梁。
数字信号处理是以众多的学科为理论基础的,它所涉及的范围及其广泛。
例如,在数学领域,微积分、概率统计、随机过程、数值分析等都是数字信号处理的基本工具,与网络理论、信号与系统、控制论、通信理论、故障诊断等也密切相关。
一些新兴的学科,如人工智能、模式识别、神经网络等,都与数字信号处理密不可分。
可以说,数字信号处理是把许多经典的理论体系作为自己的理论基础,同时又使自己成为一系列新兴学科的理论基础。
?
长期以来,信号处理技术—直用于转换或产生模拟或数字信号。
其中应用得最频繁的领域就是信号的滤波。
此外,从数字通信、语音、音频和生物医学信号处理到检测仪器仪表和机器人技术等许多领域中,都广泛地应用了数字信号处理(digital?
signal?
processing,DSP)技术。
数字信号处理己经发展成为一项成熟的技术,并且在许多应用领域逐步代替了传统的模拟信号处理系统。
1.2设计目的
1.通过课程设计加深对DSP软件有关知识的学习与应用。
2.学习汇编语言并能熟练掌握与应用。
3.了解定时中断原理。
1.3设计任务
1.设计一个信号发生器(方波)。
2.在XF引脚上输出任意频率的方波。
2设计过程
2.1设计原理
作为本设计的核心器件,DSP芯片的运算能力要求比较高,同时又存在运算过程中大量数据交换的特点。
方波信号发生器是信号中最常见的一种,它能输出一个幅度可调、频率可调的方波信号,在科学研究及生产实践中均有着广泛应用。
目前,常用的信号发生器绝大部分是由模拟电路构成的,当这种模拟信号发生器用于低频信号输出往往需要的RC值很大,这样不但参数准确度难以保证,而且体积大和功耗都很大,而由数字电路构成的低频信号发生器,虽然其低频性能好但体积较大,价格较贵,而本文借助DSP运算速度高,系统集成度强的优势设计的这种信号发生器,比以前的数字式信号发生器具有速度更快,且实现更加简便。
这里说明一下使用TI公司的DSP芯片TMS320C5502(以下简称5502)来产生方波信号的原理:
由于产生一个方波信号需要有一个适合的定时器来重复产生一个与方波周期相同的计数周期,并用一个比较寄存器来保持调制值,因此,比较寄存器的值应不断与定时寄存器的值相比较,这样,当两个值相匹配时,就会在响应的输出上产生一个转换(从低到高或从高到低),从而产生输出脉冲,输出的开启(或关闭)时间与被调制的数值成正比,因此,改变调制数值,相关引脚上输出的脉冲信号的宽度也将随之改变。
通过TMS320C5502的事件管理器模块可以产生一定占空比的脉冲信号,而使用其中的通用定时器、全比较单元和单比较单元则均可发出脉冲,由DSP可输出一系列等幅不等宽的波形信号,这些信号再经过外围一系列调理电路的变换之后,便可以得到所需要方波信号了。
事实上,在硬件上,DSP有两个设计一样的事件管理模块(EVA/EVB),每一个事件管理模块都有6个输出口,故可输出两组方波,一般均可满足通常的设计需要。
2.2XF引脚周期性变化
最简单的程序:
DSP_XF1.asm
循环对XF位置1和清0,用示波器可以在XF脚检测到电平高低周期性变化。
.mmregs?
?
?
?
?
?
?
?
?
?
?
;预定义的寄存器
.def?
?
CodeStart?
?
;定义程序入口标记
.text?
?
?
?
?
?
?
?
?
?
?
?
;程序区
CodeStart:
?
?
?
?
?
?
;程序入口
BSET?
XF?
?
?
?
;XF置1
RPT?
?
#999?
;重复执行1000次空指令产生延时
NOP
BCLR?
?
XF?
?
?
?
;XF清0
RPT?
?
#999?
?
;重复执行1000次空指令产生延时
NOP?
?
?
?
?
?
?
?
?
?
?
?
B?
?
?
CodeStart?
?
;跳转到程序开头循环执行
.end?
NOP指令执行时间为一个时钟周期,设DSP工作频率是50MHz,可以估算出XF引脚电平的变化频率约为:
50M/2000=25kHz
在没有示波器的情况下,就要将这个程序稍作改进,增加延时,用一个延时子程序将XF脚电平变化频率降到肉眼可分辨的程度,就可以用LED来显示电平的变化。
2.3子程序的调用
DSP_XF2.asm对DSP_XF1.asm稍作改进,用延时子程序设置较长的延时,可以用试验板上的LED看到XF引脚电平的变化
.mmregs;预定义的寄存器
.defCodeStart;定义程序入口标记
.text;程序区
CodeStart:
;程序入口
BSETXF;XF置1
CALLDelay;调用延时程序
BCLRXF;XF清0
CALLDelay;调用延时程序
BCodeStart;跳转到程序开头循环执行
;延时子程序:
Delay
;用两级减一计数器来延时。
调整AR1和AR2的大小LED闪烁的频率不同
Delay:
MOV#999,*AR1;循环次数1000
LOOP1:
MOV#4999,*AR2;循环次数5000
LOOP2:
BCCLOOP2,*AR2-;如果AR2不等于0,AR2减1,再判断
BCCLOOP1,*AR1-;如果AR1不等于0AR1减1,跳转到LOOP1
RET
.end
3程序代码
3.1源程序
;方波与程序清单
timer.asm
.mmregs
.def_c_int00
.refsdram_init
tim0.set0x1000
prd0.set0x1001
tcr0.set0x1002
prsc0.set0x1003
sysr.set0x07fd
clkmd.set0x1c00
pdp_timer0.settim0/128
STACK.usect".stack",200h
SYSSTACK.usect".sysstack",200h
.bssa1,1
.data
.sect".vectors"
rsv:
b_c_int00
nop
.align8
nmi:
.loop8
nop
.endloop
int0:
.loop8
nop
.endloop
int2:
.loop8
nop
.endloop
tint0:
b_Timer0
nop
.align8
;主程序:
.text
_c_int00:
amov#0,xdp
amov#STACK+200h,xsp
amov#SYSSTACK+200h,xssp
bsetintm
mov#1,@ivpd
mov#1,@ivph
mov#10h,@ier0
mov#10h,@dbier0
mov#0,@ier1
mov#0ffffh,@ifr0
mov#0ffffh,@ifr1
callsdram_init
mov#pdp_timer0,pdp
mov#04f0h,port(tcr0)
mov#0h,port(tim0)
mov#0ffffh,port(prd0)
mov#15h,port(prsc0)
mov#0e0h,port(tcr0)
bclrintm
amov#a1,xdp
mov#0,ac0
movac0,@a1
loop:
Nop
bloop
_Timer0:
mova1,ac0
bccLoop1,ac0==#1
bLoop2
Loop1:
bsetxf
mov#0,a1
bnext
Loop2:
bclrxf
mov#1,a1
Next:
reti
.end
3.2SDRAM初始化程序
.defsdram_init
ebsr.set0x6c00
egcr.set0x800
emirst.set0x801
emibe.set0x802
ce01.set0x803
ce02.set0x804
ce03.set0x805
ce11.set0x806
ce12.set0x807
ce13.set0x808
ce21.set0x809
ce22.set0x80A
ce23.set0x80B
ce31.set0x80C
ce32.set0x80D
ce33.set0x80E
sdc1.set0x80F
sdper.set0x810
sdcnt.set0x811
init.set0x812
sdc2.set0x813
sdram_pdp.setegcr/128
.text
sdram_init:
mov#0xa01,port(#ebsr);*ebsr=0xa01
mov#sdram_pdp,pdp
mov#0x220,port(@egcr);*egcr=0x220
mov#0x3000,port(@ce01);*ce01=0X3000
mov#0x1fff,port(@ce11);*ce11=0X1fff
mov#0x1fff,port(@ce21);*ce21=0x1fff
mov#0x1fff,port(@ce31);*ce31=0x1fff
mov#0x0,port(@emirst);*emirst=0
mov#0x5958,port(@sdc1);*sdc1=0X5958
mov#0x38f,port(@sdc2);*sdc2=0X38F
mov#0x0,port(@init);*init=0
ret
.end
3.3方波程序连接命令文件
MEMORY
{
PAGE0:
MMR:
origin=00000000h,length=00000c0h
SPRAM:
origin=00000c0h,length=0000040h
VECS:
origin=0000100h,length=0000100h
DARAM0:
origin=0000200h,length=0001E00h
DARAM1:
origin=0002000h,length=0002000h
DARAM2:
origin=0004000h,length=0002000h
DARAM3:
origin=0006000h,length=0002000h
}
SECTIONS
{
.vectors:
{}>VECSPAGE0
.bss:
{}>DARAM0PAGE0
.stack:
{}>DARAM1PAGE0
.sysstack:
{}>DARAM1PAGE0
.text:
{}>DARAM2PAGE0
.data:
{}>DARAM3PAGE0
}
4调试仿真运行结果分析
所有程序经调试无误,全部正常运行,根据定时器长度计算公式:
Tt=T*(1+TDDR)*(1+PRD),通过修改TDDR与PRD的值便可在XF引脚上输出频率任意频率的方波。
4.1寄存器仿真结果
在mov#0,a1设置断点,当程序运行到此位置时XF位已被置为1。
图4.1XF引脚输出1
在mov#1,a1设置断点,当程序运行到此位置时XF位已被置为0。
图4.2XF引脚输出0
当程序再次运行到mov#0,a1断点时,XF位又再一次被置为1。
图4.3XF引脚再次输出1
4.2模拟输出仿真
打开CCSV3.1的View——GraphPropertyDialog菜单,打开图形属性对话框,在对话框中修改相应参数,如图4.4所示。
图4.4图形显示窗口设置菜单
运行程序,在时域图观察视窗中的得到如图4.5所示的波形图。
图4.5图形显示XF引脚输出结果
5.设计总结
在本次课程设计中,对设计的信号发生器(方波)进行调试时采用了集成开发环境CodeComposerStudio(CCS),对C55xx用汇编语言进行调试。
本文以基于DSP的信号发生器(方波)的设计为题,完成了在XF引脚上输出任意频率的方波的任务。
但是上述工作尚有许多不成熟、不完善的地方,这就需要今后进一步开展的工作。
在这次课程设计从开始到完成,我得到了许多人的帮助。
首先我要感谢我的老师在课程设计上给予我的指导、提供给我的支持和帮助,这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把系统做得更加完善。
在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。
其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计商的难题。
同时也感谢学院为我提供良好的做毕业设计的环境。
最后再一次感谢所有在设计中曾经帮助过我的良师益友和同学。
参考文献
[1]方华刚.DSP原理与应用.北京.北京机械工业出版社,2006.1
[2]程佩青.数字信号处理教程第二版.北京.清华大学出版社,2001.8
[3]孙宗瀛.TMS320C5xDSP原理设计与应用.北京.清华大学出版社,2002
[4]郑红吴冠.TMS320C54XDSP应用系统设计.北京.北京航空航天大学出版社,2002
[5]TMS320C55XDSPProgrammer’sGuideSPRU376A[Z].TexasInstruments,2001
[6]TMS320C55XDSPMnemonicInstructionSetReferenceGuideSORU374G[Z].TexasInstrument2005