数字振荡器.doc
上传人:sy****28 上传时间:2024-09-14 格式:DOC 页数:3 大小:170KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

数字振荡器.doc

数字振荡器.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

系名:姓名:学号:日期:班级:装订线下上装订线专业班级院(系)课程或实验课名称陕西理工学院实验报告(200———200学年第学期)学号实验项目名称学生姓名实验学时实验类型实验地点(实验室)指导教师名称成绩日月年实验日期指导教师年月日测试信号分析与处理数字振荡器的实现2实验目的:学习数字振荡器的DSP实现原理学习C54X定时器的使用学习C54X中断程序的编写实验内容:利用定时器产生一个2kHz的正弦信号。使用汇编语言和C语言分别完成源程序的编写,并利用CCS的图形显示功能查看波形。实验原理:1、在数字信号处理中,会经常使用到正弦/余弦信号。通常的方法是将某个频率的余弦值预先计算出来后制成一个表,DSP工作时仅作查表运算即可。另外一种获得正弦/余弦信号的方法是:利用数字振荡器用叠代方法产生正弦信号。定时器设置成每25uS产生一次中断(等效于采样速率为40K)。利用该中断,在中断服务程序中用叠代算法计算出一个SIN1、2、程序实现:数字振荡器原理:设一个传递函数为正弦序列sinkωT,其Z变换为:H(Z)=其中,A=2cosωT,B=-1,C=sinωT。设初始条件为0,求出上式的反变换位得:y[k]=Ay[k-1]+By[k-2]+Cx[k-1]这是一个二阶差分方程,其单位冲击相应即为sinkωT。利用单位冲击函数x[k-1]的性质,即仅当时k=1时,x[k-1]=1,代入上式得:k=0y[0]=Ay[-1]+By[-2]+0=0k=1y[1]=Ay[1]+By[-1]+c=Ck=2y[2]=Ay[1]+By[0]+0=ACk=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]算出,这是一个递归的差分方程。C54X的定时器操作C54X的片内定时器利用CLKOUT时钟计数,用户使用三个寄存器(TIM,PRD,TCR)来控制定时器,表中列出了定时器控制各个寄存器的各比特位的具体定义。VC5402的另一个定时器(定时器1)的控制寄存器分别为:0x30(TIM1),0x31(PRD1),0x32(TCR1)。寄存器地址名称用途0024hTIM定时器寄存器,每计数一次,自动减10025hPRD定时器周期寄存器,当TIM减为0后,CPU自动将PRD的值装入TIM0026hTCR定时器控制寄存器C54X中断的使用在C54X中用户可以通过中断屏蔽寄存器来决定开放或关闭一个中断请求。寄存器的各个比特位的定义如表:15、1413121110987ResvdDMAC5DMAC4BXINT1orDMAC3BXINT1orDMAC2HPINTINT3TINTorDMAC16543210DMAC0BXINT0TINT0TINT0INT2INT1INT0其中,HPINT表示HPI接口中断,INT3-INT0为外部引脚产生的中断,TXINT和TRINT为TDM串口的发送和接收中断,BXINT0和BRINT0为BSP串口的发送和接收中断,TINT0定时器0中断。在中断屏蔽寄存器IMR中,1表示允许CPU响应对应的中断,0表示禁止。当然要CPU响应中断,ST1寄存器中的INTM还应该为0(允许所有中断)。当DSP响应中断时,PC指针指向中断向量表中对应中断的地址,进入中断服务子程序。中断向量表是C54X存放中断服务程序的一段内存区域,大小为80H。在中断向量表中,每一个中断占用4个字的空间,一般情况是将一条跳转或延时跳转指令存放于此。当然,如果中断服务程序很短(小于或等于4个字),可以直接放入该向量表。中断向量表的位置可以通过修改基地址来改变,其基地址由PMST寄存器中的IPTR决定。学生姓名学号系名:姓名:学号:日期:班级:装订线下上装订线陕西理工学院实验报告实验条件:DSP实验箱、装有CCS环境的计算机实验步骤:使用汇编语言编制程序1)新建工程文件sinewave.mak。2)编写汇编源程序exer3.asm。3)添加vec_table.asm和sinewave.cmd文件到工程文件中。3)完成编译、连接,生成sine.out文件。4)装载sine.out文件。5)设置图形显示方式。①设置断点。②观察波形。使用C语言编制程序1)新建工程文件sinewave_c.mak。2)编写汇编源程序timer.c。3)添加timer.c、vec_table.asm和timer.cmd文件到工程文件中。4)添加C使用的标准库rts.lib.3)完成编译、连接,生成timer.out文件。4)装载timer.ou