收藏 分销(赏)

实验五 数字振荡器实验.docx

上传人:pc****0 文档编号:7428982 上传时间:2025-01-04 格式:DOCX 页数:14 大小:373.24KB 下载积分:10 金币
下载 相关 举报
实验五 数字振荡器实验.docx_第1页
第1页 / 共14页
实验五 数字振荡器实验.docx_第2页
第2页 / 共14页


点击查看更多>>
资源描述
实验五 数字振荡器实验 一、实验目的 本实验属于综合性实验,在项目开发中,我们经常要用产生某一频率的正弦振荡信号,比如在电话通信中,用两个不同频率的正弦信号的叠加来代表按键。正弦信号的生成方法有三种,计算法、查表法和数字振荡器。用计算法求正弦波的离散序列值程序设计容易,但实际应用时会占用计算时间,使系统运行速度变慢。查表法是先通过matlab将正弦波的序列值计算出来并寄存在存储器中,运行时只要按顺序和一定的速度取出便可。这种方法要占用较多的存储空间,但是速度快。第三种方法是利用数字振荡器来实现不同频率信号的叠加,这种方法通过迭代的方法计算出不同频率的正弦信号序列,结构简单,运算速度快,节省内存,因此在DSP实际应用中我们选择这种方法。 数字振荡器的本质是,使用一个IIR(Infinite Impulse Response)滤波器,通过把它的极点放在单位圆上面来产生振荡。 利用正弦波sinx的指数形式 可以得到正弦序列x(n)的Z变换为 ,此式在|z|>1时成立,且。 根据Z变换的基本原理和性质,序列x[n]及其Z变换X(z)之间存在一一对应的关系,即对于给定的X(z),可以通过反Z变换,唯一地确定x[n]。 因此,产生一个正弦波就等价于利用上式设计一个二阶IIR滤波器,使其系统传递函数就是正弦序列x[n]的z变换。系统传递函数为 滤波器的极点就是分母的根。 = 由上式可以看出,P1,2是一对复根,其幅值为1,相角为wT。幅值为1的极点在单位圆上,对应一个数字振荡器,其振荡频率由系数A、B和C决定。因此,设计数字振荡器主要是设计这些系数。 由系统函数求得差分方程:,设初始条件为0,对上式作反Z变换,得,这是一个二阶差分方程,其单位冲激响应就是sin(wT)。 由上面的式子可得数字振荡器系统流程图如图1所示: Z-1 Z-1 B A C X(n) y(n) 图1数字振荡器系统流程图 利用单位冲激函数x[n-1]的性质,即仅当n=1时,x[n-1]=1,代入上式 n=0 y[0]=Ay[-1]+By[-2]+0=0 n=1 y[1]=Ay[0]+By[-1]+C=C n=2 y[2]=Ay[1]+By[0]+0=Ay[1] n=3 y[3]=Ay[2]+By[1] . n=k y[k]=Ay[k-1]+By[k-2] . . 在n>2以后,y[n]可以用y[n-1]和y[n-2]算出,这是一个递归的差分方程。 由此出发,就可以完成数字振荡器的设计。例如,设该振荡器的频率为F=1KHz,采样频率为Fs=10KHz,则,系数A=2cos(wT)=1.618033989;B=-1;C=sin(wT)=0.587785252,由此基础上,利用之前那个公式就可以产生相应的正弦波。 二、实验设备 1) 微机一套,操作系统为WINWODS98、WINDOWS2000 SP2或WINDOWS XP SP1或具有更高级的补丁。 2) DSP硬件仿真器一台、DSP实验箱一台,示波器一台。 1) 5000CCS2.0软件版本。 4)部分源程序及链接命令文件见D:\EXPER\EXP6目录下的.asm 和.cmd文件.c文件,.lib文件。 三、实验设置 1、开关K9拨到右边,即仿真器选择连接右边的CPU2; 四、实验内容 1、用Z变换的移位性质可知: hn=Asin((n+1)w0)U(n); 其中 所以得到差分方程:;; 其中: ;——为输出信号的频率; ——正弦信号的幅值;——采样信号频率(8KHZ); ——归一化数字频率;设初始条件则差分方程变换为: ;初始条件:; 根据上面的参数,代入输出信号的频率可以得到产生不同频率正弦信号所需要的参数表1数字振荡器参数表。 频率 /HZ A B 697 1.70774 -1 0 0.52049 770 1.64528 -1 0 0.56856 852 1.56868 -1 0 0.62033 941 1.47820 -1 0 0.67359 1209 1.16410 -1 0 0.81315 1336 0.99636 -1 0 0.86707 1477 0.79862 -1 0 0.91682 1633 0.56854 -1 0 0.95875 表1数字振荡器参数表 2、使用内存的图形观察工具对正弦振荡器的仿真结果进行时域分析和频域分析,注意正确设置参数。例程,产生770HZ正弦振荡信号。 图a 770HZ的时域图形 图b 770HZ的频谱图 五、实验内容 1)仔细阅读所给的部分源程序,并完成该程序。要求实现697HZ+1209HZ两种频率的正弦信号叠加输出。 2)从叠加后的波形输出来看,原始波形中含有的哪些频谱成分? 3)完成表1数字振荡器参数表中各个参数值得计算? 七、源程序及链接程序 1、datasamp.c /************************************************ * FileName: DTMF.C * * Description: 数字振荡器实验 * Write by: LinLianDong * * Date: 2013-05-03 * * Update: 2013-05-03 * *************************************************/ #include "typedef.h" //#include "math.h" //由于使用sin()函数 //此程序产生697HZ正弦波,load程序以后,运行,才能得到仿真结果; //设置断点,观察变量地址; //仿真CPU用C54XX simulator //数据格式31-bit floating point //采样频率8KHZ,时域显示用line,频域显示用bar;程序设计中频域采样取N=205; main() { //以下初始化参数为正弦振荡器初始化参数 float a1_row; float a[8]={1.70774,1.64528,1.56868,1.47820,1.16410,0.99636,0.79862,0.56854}; double yn_chu_zhi[8]={-0.52049,-0.56856,-0.62033,-0.67359,-0.81315,-0.86707,-0.91682}; int j; double yn[800],yn_row[400];//400点合成频率输出+400点静音信号 //程序开始; yn_row[1]=0; yn[0]=0; yn[1]=0; //生成正弦波 a1_row=a[1]; //row=770; yn_row[0]=yn_chu_zhi[1]; for(j=2;j<=400;j++) //产生正弦信号序列,400点 { yn_row[j]=a1_row*yn_row[j-1]-yn_row[j-2]; yn[j]=yn_row[j]; } /* 此处添加代码,实现两个不同频率正弦信号的叠加; */ for(j=401;j<=799;j++) //400点正弦信号和400点静音信号组合 { yn[j]=0; } } 2、CMD文件如下: MEMORY { PAGE 0: PROG: origin = 0x1000, len = 0x2000 VECT: origin = 0x4f80, len = 0x80 PAGE 1: IDATA: origin = 0x80, len = 0x2000 DARAM: origin = 0x3000, len = 0x1000 } SECTIONS { .vectors: {} > VECT PAGE 0 /*汇编的中断向量表*/ .text: {} > PROG PAGE 0 /*C与汇编的可执行代码段*/ .cinit: {} > PROG PAGE 0 /*C 初始化变量和常数表*/ .bss: {} > IDATA PAGE 1 /*C与汇编的全局和静态变量*/ .const: {} > DARAM PAGE 1 /*C 定义常量段*/ .stack: {} > DARAM PAGE 1 /*C 系统堆栈*/ .switch: {} > IDATA PAGE 1 /*为常量语句建立的表格*/ .data: {} > IDATA PAGE 1 /*汇编的定义的数据段 */ } 第4章 附 录 附录1:TMS320C5402 CPU及外设存储器寄存器映射表 0 IMR 中断屏蔽寄存器 1 IFR 中断标志寄存器 2-5 - 测试保留 6 ST0 状态寄存器0 7 ST1 状态寄存器1 8 AL 累加器A低字(15-0比特) 9 AH 累加器A高字(31-16比特) A AG 累加器A保护位(39-32比特) B BL 累加器B低字(15-0比特) C BH 累加器B高字(31-16比特) D BG 累加器B保护位(39-32比特) E T 暂存寄存器 F TRN 传送寄存器 10-17 AR0-AR7 辅助寄存器ARn n=0~7 18 SP 堆栈指针 19 BK 循环缓存区大小寄存器 1A BRC 块重复计数器 1B RSA 块重复开始地址 1C REA 块重复结束地址 1D PMST 状态寄存器 1E XPC 程存扩展寻址寄存器 1E-1F - 保留 20 McBSP0_DRR2 带缓存串口0数据接收寄存器2 21 McBSP0_DRR1 带缓存串口0数据接收寄存器1 22 McBSP0_DXR2 带缓存串口0数据发送寄存器2 23 McBSP0_DXR1 带缓存串口0数据发送寄存器1 24 TIM 定时器计数器 25 PRD 定时器周期寄存器 26 TCR 定时器控制寄存器 27 - 保留 28 SWWSR 等待状态产生寄存器 29 BSCR Bank-switching控制寄存器 2A - 保留 2B SWCR 扩展等待控制寄存器 2C HPIC 主机接口控制寄存器 2D-2F - 保留 30 TIM1 定时器计数器 31 PRD1 定时器周期寄存器 32 TCR1 定时器控制寄存器 33-37 - 保留 38 McBSP0_SPSA 多缓冲串口0子地址寄存器 39 McBSP0_SPSD 多缓冲串口0子数据寄存器 3A-3B 保留 3C GPIOCR GP I/O 引脚控制寄存器 3D GPIOSR GP I/O 引脚状态寄存器 3E-3F 保留 40 McBSP1_DRR2 带缓存串口1数据接收寄存器 41 McBSP1_DRR1 带缓存串口1数据发送寄存器 42 McBSP1_DXR2 带缓存串口1控制寄存器 43 McBSP1_DXR1 带缓存串口1控制扩展寄存器 44-47 - 保留 48 McBSP1_SPSA 多缓冲串口1子地址寄存器 49 McBSP1_SPSD 多缓冲串口1子数据寄存器 4A-53 54 DMPREC DMA优先允许控制寄存器 55 DMSA DMA子地址寄存器 56 DMSDI 57 DMSDN 58 CLKMD 时钟方式寄存器 59-5F - 保留 附录2:C5402中的中断标志寄存器(IMR)和中断屏蔽寄存器(IFR) 1) 中断标志寄存器IFR IFR中某位为1表明有相应中断,再次写1清除中断。 2)中断屏蔽寄存器IMR 要开放某个中断,只需向IMR中相应位(中断允许位)写1。而ST1中INTM位为中断屏蔽总开关。 IFR和IMR寄存器各位功能描述 位号 名称 功能描述 15-14 —— 保留 13 DAMC5 DMA通道5中断标志/屏蔽位 12 DMAC4 DMA通道4中断标志/屏蔽位 11 BXINT1/DMAC3 McBSP1发送中断标志/屏蔽位或 DMA通道3中断/标志屏蔽位 10 BRINT1/ DMAC2 McBSP1接收中断标志/屏蔽位或 DMA通道2中断标志/屏蔽位 9 HPINT 主机接口中断标志/屏蔽位 8 INT3 外部中断3中断标志/屏蔽位 7 TINT1/ DAMC1 TIMER1中断标志/屏蔽位或 DMA通道1中断标志/屏蔽位 6 DMAC0 DMA通道0中断标志/屏蔽位 5 BXINT0 McBSP0发送中断标志/屏蔽位 4 BRINT0 McBSP0接收中断标志/屏蔽位 3 TINT0 Timer0中断标志/屏蔽位 2 INT2 外部中断2中断标志/屏蔽位 1 INT1 外部中断1中断标志/屏蔽位 0 INT0 外部中断0中断标志/屏蔽位 注:所有DMA通道控制均由DMPREG寄存器来控制 附录3:TMS320C5402中断向量表与优先级 中断号 优先级 名 称 位 置 功 能 0 1 -RS/SINTR 0 复位(软、硬件) 1 2 -NMI/SINT16 4 非屏蔽中断 2 - SINT17 8 软件中断17 3 - SINT18 C 软件中断18 4 - SINT19 10 软件中断19 5 - SINT20 14 软件中断20 6 - SINT21 18 软件中断21 7 - SINT22 1C 软件中断22 8 - SINT23 20 软件中断23 9 - SINT24 24 软件中断24 10 - SINT25 28 软件中断25 11 - SINT26 2C 软件中断26 12 - SINT27 30 软件中断27 13 - SINT28 34 软件中断28 14 - SINT29 38 软件中断29 15 - SINT30 3C 软件中断30 16 3 -INT0/SINT0 40 外部中断0 17 4 -INT1/SINT1 44 外部中断1 18 5 -INT2/SINT2 48 外部中断2 19 6 TINT/SINT3 4C 定时器0中断 20 7 BRINT0/SINT4 50 缓存串口0接收中断 21 8 BXINT0/SINT5 54 缓存串口0发送中断 22 9 保留DMAC0,SINT6 58 保留(缺省)DMAC0 23 10 TINT(DMAC1),SINT7 5C 定时器1中断或DMA通道1中断 24 11 -INT3/SINT8 60 外部中断3 25 12 HPINT/SINT9 64 HPI口中断 26 13 BRINT1(DMAC2)/SINT10 68 带缓存串口1接收中断 27 14 BXINT1(DMAC3)/SINT11 6C 带缓存串口1发送中断 28 15 DMAC4,SINT12 70 DMA通道4中断 29 16 DMAC5,SINT13 74 DMA通道5中断 30-31 - 78-7F 保留 附录4:TMS320C5402状态和控制寄存器 1)状态寄存器0 (ST0),结构如下: 15~13 12 11 10 9 8~0 Bit ARP TC C OVA OVB DP 各状态位功能描述 位号 名称 功能描述 15~13 ARP 辅助寄存器指针。当寻址不修正时,要求ARP=0 12 TC 测试/控制标志位。保存ALU的测试结果 11 C 进位位。加法时产生进位或减法时产生借位置C=1 10 OVA 累加器A和B溢出标志位 9 OVB 累加器A和B溢出标志位 8~0 DP 数据存储器页指针。在直接寻址时作为数存的高9位地址 2)状态寄存器1 (ST1),结构如下: 15 14 13 12 11 10 9 8 7 6 5 4~0 BRAF CPL XF HM INTM 0 OVM SXM C16 FRCT CMPT ASM 各状态位功能描述 位号 名称 功能描述 15 BRAF 块重复操作标志位。为1时表示进行块重复操作 14 CPL 直接寻址编辑方式位。CPL=0时直接寻址指针为DP,CPL=1时直接寻址指针为SP 13 XF XF引脚状态位。通过改变该寄存器的值可以改变XF引脚的输出 12 HM 保持方式位。处理器响应hold信号时,HM=0时表示处理器继续执行内部操作,而将外部接口置成高阻,当HM =1时,表示处理器暂停内部操作 11 INTM 中断方式位。当INTM=0时,开放所有可屏蔽中断,当INTM=1时,关闭所有可屏蔽中断 10 0 读时总是0 9 OVM 溢出方式位。OVM=0时,忽略溢出,当OVM=1时,发生溢出时填充00 7fff ffffh(正溢出)或00 8000 0000h(负溢出) 8 SXM 符号扩展方式位。SXM=0时禁止符号扩展,SXM=1时数据进入ALU时进行符号扩展 7 C16 双16位/双精度算术方式位。C16 =0时进行双精度算术运算,C16=1时进行双16位算术运算 6 FRCT 小数方式位。在小数乘法时乘法器输出左移一位,来消除多余符号位。 5 CMPT 修正方式位,决定ARP是否进行修正。CMPT=0时,间接单数存操作数操作时,不进行ARP修正,CMPT=1时,用AR0进行修正。 4~0 ASM 累加器移位方式位。 3)处理器工作方式状态寄存器(PMST),结构如下: 15~7 6 5 4 3 2 1 0 Bit IPTR MP/MC OVLY AVIS DROM CLKOFF SMUL SST 各状态位功能描述 位号 名称 功能描述 15~7 IPTR 中断向量指针。指向中断向量位置 6 MP/ 微处理器/微控制器工作方式位。若MP/=0使用片内ROM,若MP/=1则片内ROM 不安排到程序空间,此状态由外部引脚决定,但是可以软件修改 5 OVLY RAM重复占位位。当OVLY=0,DARAM只能映射到程序空间,当OVLY=1时,DARAM同时映射到程序存储空间。注意:数据页0不能映射到程序空间。 4 AVIS 地址可见位。设置寻址内部程序空间时地址线是否在外部地址引脚输出,当AVIS=1时,则内部程序寻址时,在地址总线上同时输出。 3 DROM 数据ROM位。DROM=0时,片内ROM不映射到程序存储区,DROM=1时,片内ROM映射到数据存储区。 2 CLKOFF CLKOUT时钟输出关断位。CLKOUT=1时,禁止CLKOUT的输出,并且保持高电平。 1 SMUL 乘法饱和方式位。当SMUL=1时,并且OVM=1,FRCT=1时,在进行乘法累加运算时,作饱和处理。 0 SST 存储饱和位。 附录5:片内4K掩模ROM的内部资源 地址为:F800h—FFFFh,其内部资源,其中 F000h – F7FFh 保留 F800h – FBFFh 程序自动载入程序 FC00h – FCFFh 256-word的μ律扩展表 FD00h – FDFFh 256-word的A律扩展表 FE00h – FEFFh 256-word的sin查找表 FF00h – FF7Fh 保留 FF80h – FFFFh 中断向量表 附录6:TMS320C5402时钟方式引脚状态及时钟方式寄存器 引脚状态 CLKMD寄存器复位值 时钟方式 CLKMD1 CLKMD2 CLKMD3 0 0 0 E007h PLL*15 0 0 1 9007h PLL*10 0 1 0 4007h PLL*5 1 0 0 1007h PLL*2 1 1 0 F007 PLL*1 1 1 1 0000h CLK/2 1 0 1 F000h CLK/4 0 1 1 —— 保留(旁路模式) CLKMD中各位域定义 15~12 11 10~3 2 1 0 PLLMUL PLLDIV PLLCOUNT PLLON/OFF PLLNDIV PLL STATUS PLLMUL 表示PLL倍频系数 PLLDIV表示PLL分频系数 PLLCOUNT 表示PLL计数器,用来设置PLL锁定时间 PLLON/OFF 表示PLL通断位 PLLNDIV 表示时钟发生器选择位,决定时钟发生器的工作方式,0表示分频器方式,1表示PLL方式 PLL STATUS 是PLL的状态位。指示时钟发生器的工作方式(此状态位只读) 附录7:软件等待状态寄存器(SWWSR) 15 14~12 11~9 8~6 5~3 2~0 XPA扩展寻址位 I/O空间 64K 数据空间 高32K 数据空间 低32K 程序空间 高32K 程序空间 低32K 附录8:TMS320C5402存储器分配 (MP/ 、OVLY、DROM对存储器分配的影响) 附录9:TMS320C5402 –PQFP封装引脚排列顺序
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服