文档详情

实验二用定时器实现数字振荡器案例.doc

发布:2017-06-16约5.81千字共10页下载文档
文本预览下载声明
电子科技大学 通信 学院 标 准 实 验 报 告 (实验)课程名称 DSP设计与实践 电子科技大学教务处制表 电 子 科 技 大 学 实 验 报 告 学生姓名: 学 号: 指导教师:向超 实验地点: 实验时间: 实验室名称: 电子科技大学—美国德州仪器DSP技术/培训中心 实验项目名称: 用定时器实现数字振荡器 三、实验学时:4学时 四、实验原理: 数字振荡器原理 设一个传递函数为正弦序列sinkωT,其z变换为 H(z)= EMBED Equation.3 EMBED Equation.3 v儭丌a=2cosé?, B=-1, C=siné? 其中,A=2cosωT, B=-1, C=sinωT。设初始条件为0,求出上式的反Z变换得: y[k]=Ay[k-1]+By[k-2]+Cx[k-1] 这是一个二阶差分方程,其单位冲击响应即为sinkωT。利用单位冲击函数x[k-1]的性质,即仅当k=1时,x[k-1]=1,代入上式得: k=0 y[0] = Ay[-1] + By[-2] + 0 = 0 k=1 y[1] = Ay[0] + By[-2] + c = c k=2 y[2] = Ay[1] + By[0] + 0 = Ay[1] k=3 y[3] = Ay[2] + By[1] . . k=n y[n]= Ay[n-1] + By[n-2] 在k2以后,y[k]能用y[k-1]和y[k-2]算出,这是一个递归的差分方程。 根据上面的说明,我们可以开始数字振荡器的设计。设该振荡器的频率为2kHz,采样率为40kHz(通过定时器设置,每隔25us中断一次,即产生一个y[n]),则递归的差分方程系数为: A=2cosωT=2cos (2 x PI x 2000 / 40000)=2 x 0 x4 1e6f0 B=-1 C=sinωT=sin (2 x PI x 2000 / 40000)=0 x4 =9e4b 为了便于定点DSP处理,我们将所有的系数除以2,然后用16位定点格式表示为: a f378 c 4f25 这便是本实验中产生2KHz正弦信号的三个系数。在本实验中,主程序在初始化时先计算出y[1]和y[2],然后开放定时器中断。以后每次进入定时器中断服务程序时,利用前面的y[1]和y[2],计算出新的有y[0],通过CCS提供的图形显示工具,我们将在图形窗口中看到一个正弦信号波形。下面是初始化和中断服务程序代码片段: 初始化y[1]和y[2]: ssbx FRCT ;置FRCT=1,准备进行小数乘法运算 st #INIT_A,AA ;将常数A装入变量AA st #INIT_B,BB ;将常数B装入变量BB st #INIT_C,CC ;将常数C装入变量CC pshd CC ;将变量CC压入堆栈 popd y2 ;初始化y2=CC ld AA, T ;装AA到T寄存器 mpy y2,a ;y2乘系数A,结果放入A寄存器 sth a,y1 ;将A寄存器的高16位存入变量Y1 中断服务程序片段: ld BB,T ;将系数B装入T寄存器 mpy y2,a ;y2乘系数B,结果放入A寄存器 ltd y1 ;将y1装入T寄存器,同时复制到y2 mac AA,a ;完成新正弦数据的计算,a寄存器中为 ; y1*AA+y2*BB sth a,1,y1 ;将新数据存入y1,因所有系数都除过2,所以在保 ;存结果时转移一位,恢复数据正常大小。 sth a,1,y0 ;将新正弦数据存入y0 (2)C54X的定时器操作 C54X的片内定时器利用CLKOUT时钟计数,用户使用三个寄存器(TIM,PRD,TCR)来控制定时器,参见表4-1。在表4-2中列出了定时器控制寄存器的各个比特位的具体定义。‘VC5402的另一个定时器(定时器1)的控制寄存器分别为:0x30(TIM1),0x31(PRD1),0x32(TCR1)。 从上面
显示全部
相似文档