0703030223信号发生器方波正文.docx
- 文档编号:3020674
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:11
- 大小:165.96KB
0703030223信号发生器方波正文.docx
《0703030223信号发生器方波正文.docx》由会员分享,可在线阅读,更多相关《0703030223信号发生器方波正文.docx(11页珍藏版)》请在冰豆网上搜索。
0703030223信号发生器方波正文
信号发生器(方波)
1绪论
1.1设计背景
数字信号处理器,也称DSP芯片,是针对数字信号处理需要而设计的一种具有特殊结构的微处理器,它是现代电子技术、相结合的产物。
一门主流技术,随着信息处理技术的飞速发展,计算机技术和数字信号处理技术数字信号处理技术逐渐发展成为它在电子信息、通信、软件无线电、自动控制、仪表技术、信息家电等高科技领域得到了越来越广泛的应用。
数字信号处理因为运算速度快,具有可编程特性和接口灵活的特点,使得它在许多电子产品的研制、开发和应用中,发挥着重要的作用。
采用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初始化程序sdram_init.asm
.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方波程序连接命令文件timer.cmd
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.1
4调试仿真运行结果分析
4.2所有程序经调试无误,全部正常运行,根据定时器长度计算公式:
Tt=T*(1+TDDR)*(1+PRD),通过修改TDDR与PRD的值便可在XF引脚上输出频率任意频率的方波。
4.3运行结果截图
在mov#0,a1设置断点,当程序运行到此位置时XF位已被置为1。
图4.1XF引脚输出1
在mov#1,a1设置断点,当程序运行到此位置时XF位已被置为0。
图4.2XF引脚输出0
当程序再次运行到mov#0,a1断点时,XF位又再一次被置为1。
图4.3XF引脚再次输出1
课设过程中遇到的问题与解决方案
在程序调试过程中出现缺少空格、符号及字母大小写等错误,经过仔细阅读修改后程序运行正常。
结论
本文得到的结论如下:
在对设计的信号发生器(方波)进行调试时采用了集成开发环境CodeComposerStudio(CCS),即对C55xx的汇编语言进行调试。
[1]本文以基于DSP的信号发生器(方波)的设计为题,完成了在XF引脚上输出任意频率的方波的任务。
但是上述工作尚有许多不成熟、不完善的地方,这就需要今后进一步开展的工作。
[2]
[3]
[4]
[5]参考文献
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 0703030223 信号发生器 方波 正文
![提示](https://static.bdocx.com/images/bang_tan.gif)