资源描述:
《实验三 用定时器实现数字振荡器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验三用定时器实现数字振荡器1实验目的在数字信号处理中,会经常使用到正弦/余弦信号。通常的方法是讲某个频率的正弦/余弦值余弦计算出来后制成一个表,DSP工作时仅作查表运算即可。在本实验中将介绍另一种获得正弦/余弦信号的方法,即利用数字振荡器用叠代方法产生正弦信号。本实验除了学习数字振荡器的DSP实现原理外,同时还学习C54X定时器使用以及中断服务程序编写。另外,在本实验中我们将使用汇编语言和C语言分别完成源程序的编写。2实验要求本实验利用定时器产生了一个2kHz的正弦信号,定时器被设置成每25uS产生一次中断,(等效于采样速率未40k)利
2、用该中断,在该中断服务程序中用叠代算法计算出一个SNT值,病利用CCS的图形显示功能查看波形。3实验原理(1)数字振荡器原理设一个传递函数为阵线序列sinkwT,其z变换为其中,A=2coswT,B=-1,C=sinwT。设初始条件为0,求出上式的反Z变换得:y[k]=Ay[k-1]+By[k-2]+Cx[k-1]这是个二阶差分方程,其单位冲击响应即为sinkwT。利用单位冲击函数x[k-1]的性质,即仅当k=1时,x[k-1]=1,代入上式得:k=0y[0]=Ay[-1]+By[-2]+0=097k=1y[1]=Ay[0]+By[-2]
3、+c=ck=2y[2]=Ay[1]+By[0]+0=Ay[1]k=3y[3]=Ay[2]+By[1]k=ny[n]=Ay[n-1]+By[n-2]在k﹥2以后,y[k]能用y[k-1]和y[k-2]算出,这是一个递归得方法。根据上面得说明,我们可以开始数字振荡器得设计。设该振荡器得频率为2kHz,采样率为40kHz(通过定时器设置,每隔25us中断一次,即产生一个y[n])则递归得差分方程系数为:A=2coswT=2cos(2×PI×2000/40000)=2×0.95105652B=-1C=sinwT=sin(2×PI×2000/400
4、00)=0.30901699为了便于定点DSP处理,我们将所有系数除以2,然后用16为定点格式表示为:这便是本实验中查生2kHz阵线信号的三个系数。在本实验中,主程序在初始化时先计算出y[1]和y[2],然后开放定时器中断。以后每次进入定时器中断服务程序时,利用前面的y[1]和y[2],计算出新的所有y[n],通过CCS提供的图形显示工具,我们将在图形窗口中看到一个正弦信号波形。下面时初始化和中断服务程序代码片断:初始化y[1]和y[2]:ssbxFRCT:置FRCT=1,准备进行小数乘法运算st#INIT_A,AA:将常数A装入变量AA
5、st#INIT_B,BB:将常数B装入变量BBst#INIT_C,CC:将常数C装入变量CCpshdCC:将变量CC压入堆栈popdy2:初始化y2=CC97ldAA.T:装AA到T寄存器mpyy2,a:y2乘系数A,结果放入A寄存器stha,y1:将A寄存器得高16位存入变量y1中断服务程序片断ldBB,T:将系数B装入T寄存器mpyy2,a:y2乘系数B,结果放入A寄存器ltdy1:将y1装入T寄存器,同时复制到y2macAA,a:完成新正弦数据的计算,a寄存器中为y1*AA+y2*BBstha,l,y1:将新数据存入y1,因所有系数
6、都除过2,所以在保存结果时转移一位,恢复数据正常大小stha,l,y0:将新正弦数据存入y0(2)C54X的定时器操作C54X的片内定时器利用CLKOUT时钟计数,用户使用三个寄存器(TIM,PRD,TCR)来控制定时器,参见表4-1。在表4-2中列出了定时器控制寄存器的各个比特位的具体定义。‘VC5402得另一个定时器(定时器1)的控制寄存器分别为:0×30(TIM1),0×31(PRD1),0×32(TCR1)。表4-1‘VC5402定时器0的相关寄存器寄存器地址名称用途0024hTIM定时器寄存器,每计数一次自动减一0025hPRD
7、定时器周期寄存器,当TIM减为0后,CPU自动将PRD的值装入TIM0026hTCR定时器控制寄存器表4-2定时器控制就存起(TCR)bit概要比特名称功能9715-12保留读出时为011soft该比特位与10位配合使用以决定定时器在使用仿真调试时的状态.Soft=0当进入仿真调试时,定时器立即停止工作。Soft=1当计数器被减为0后,停止工作。10free该比特位与11位配合使用以决定定时器在使用仿真调试时的状态free=0根据11比特位决定定时器状态free=1忽略11比特位,定时器不受影像9-6PSC定时器预置计数器。当PSC减为0
8、后,CPU自动将TDDR装入,然后TIM开始减1。5TRB定时器复位。当TRB=1时,CPU将PRD寄存器的值装入TIM寄存器,将TDDR的值装入PSC4TSS定时器停止状态。当系统复位时,T