基于DSP的定时器实现数字振荡器(汇编语言).doc

基于DSP的定时器实现数字振荡器(汇编语言).doc

ID:57256364

大小:132.00 KB

页数:6页

时间:2020-08-07

基于DSP的定时器实现数字振荡器(汇编语言).doc_第1页
基于DSP的定时器实现数字振荡器(汇编语言).doc_第2页
基于DSP的定时器实现数字振荡器(汇编语言).doc_第3页
基于DSP的定时器实现数字振荡器(汇编语言).doc_第4页
基于DSP的定时器实现数字振荡器(汇编语言).doc_第5页
资源描述:

《基于DSP的定时器实现数字振荡器(汇编语言).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、基于DSP的定时器实现数字振荡器一、实验目的1.更进一步掌握定时器和中断的使用;2.学会用数字振荡器方法产生正弦/余弦信号;二、实验原理利用定时器及中断产生频率为f正弦信号,定时器被设置成每1/fs产生中断一次(等效于采样速率),在中断服务程序中用迭代算法计算出一个正弦值。用此方法可以很精确地产生某频率的正弦波。设一个传递函数为正弦序列,其Z变换为,其中A=,B=-1,C=。设初始条件为0,求出其反Z变换得:是一个二阶差分方程,其单位冲击响应即为sinkωT,利用单位冲击函数x[k-1]的性质,即仅当k=1时,x[k-1]=1,推导得:在k>2以后,y[k]能用

2、y[k-1]和y[k-2]算出,这是一个递归的差分方程。式中,fs为采样频率,f为正弦波频率。A为正弦波幅度。可见用数字频率振荡器产生正弦波的实质就是用程序实现上述的递归差分方程。如要产生振荡器的频率为2kHz正弦波,设采样速率为40k,通过定时器设置,每隔25us中断一次,即产生一个y[n]。则递归差分方程系数为:B=-1为了便于定点DSP处理,将所有系数除以2,然后用16位定点格式表示为:A=6D4BH,B=C000H,C=214FH,这便是产生2kHz正弦信号的三个系数。主程序初始化时先计算出y[1]和y[2],然后开放定时器中断,以后每次进入定时器中断服

3、务程序时,利用前面计算出的y[1]和y[2]计算出新的y。初始化y[1]和y[2]SSBXFRCT;置FRCT=1,准备进行小数乘法运算ST#0x79BC,AA;将常数装入变量AAST#0xC000H,BB;将常数装入变量BBST#0x13C7H,CC;将常数装入变量CCPSHDCC;将CC压入堆栈POPDY2;初始化Y2=CCLDAA,T;将AA装到T寄存器MPYY2,A;Y2乘以系数A,结果放入A寄存器STHA,Y1;将A寄存器的高16位存入变量Y1;中断服务程序段:LDBB,T;将系数B装入T寄存器MPYY2,A;Y2乘系数B,结果放入A寄存器LTDY1;

4、将Y1装入T寄存器,同时复制到Y2MACAA,A;完成新正弦数据计算,A寄存器;中为Y1*AA+Y2*BBSTHA,1,Y1;将新数据存入Y1,因所有系数都;除过2,在保存结果时转移一位,;恢复数据正常大小STHA,1,Y0;将新正弦数据存入Y0VC5402的片内定时器利用CLKOUT时钟计数,用三个寄存器(TIM、PRD、TCR)来控制定时器。到定时器实际上可以有20个比特的周期寄存器。它对CLKOUT信号计数,先将PSC减1,直到PSC为0,然后用TDDR重新装入PSC,同时将TIM减1,直到TIM减为0。这时CPU发出TINT中断,同时在TOUT引脚输出一

5、个脉冲信号,脉冲宽度为CLKOUT一致。然后用PRD重新装入TIM,重复下去直到系统或定时器复位。因而定时器中断的频率由下面的公式决定:TINT的频率=,其中tc表示CLKOUT的周期。设置PRD寄存器值为12499,TINT中断频率为40kHz。定时器初始化程序段为:STM#10H,TCR;停止定时器STM#2499H,PRD;设置PRD寄存器值为2499,;TINT中断频率为Foutclk=(2499+1)=100MHz/2500=40kHzSTM#20H,TCR;重新装入TIM和PSC,然后;;启动定时器,在开放中断屏蔽寄存器IMR后,就可以产生频率为20

6、00Hz的正弦波。三、实验内容与步骤1.使用C54x汇编语言实现数字振荡器,并通过CCS提供的显示窗口观察输出信号波形以及频谱。2.根据确定数字振荡器的频率,确定系数。数字振荡器系数的确定在前面已经说明,3.启动CCS,新建工程文件,如文件名为sinewave.pjt。并建立如下文件:汇编源程序exer3.asm.title"fortestINTserviceprogram...(25us)".mmregs.global_c_int00,_tint,vectorOFF_INTIMER.set04Ch;vectorofINTtimeratVECTOR+OFF_IN

7、TIMERINIT_A.set079bch;A/2=0.INIT_B.set0c000h;B/2=-0.5INIT_C.set013c7h;C/2=0..bssy0,1.bssy1,1.bssy2,1.bsstemp,1.bssAA,1.bssBB,1.bssCC,1.text_c_int00:ld#0,dpssbxintm;disableallinterrupt!st#1fffh,spld#vector,a;getvectortableaddress!and#0FF80h,aandm#007Fh,pmstorpmst,astlma,pmst;设置IPTRstm

8、#10h,TCR;ini

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。