基于DSP正弦信号发生器设计
随着计算机技术的飞速发展,对信号发生器波形的要求越来越高。目前,常用信号发生器大部分是由模拟电路构成,当这种模拟信号发生器用于低频输出时,由于需要较大的RC值,导致参数准确度难以保证,且造成体积和功耗偏大,而数字式波形发生器,因其输出幅值稳定、输出频率连续可调的优点,已逐渐取代了模拟电路信号发生器。由于其运算速度高,系统集成度强的优势,可以设计基于DSP的正弦信号发生器,该发生器实时性强、可扩展性好、波形精度高、可调节频率和幅度、稳定性好、用途广泛,各方面均优于模拟信号发生器和数字信号发生器。因此,本文提出了一种基于TMS320C5402的正弦信号发生器的设计方法。
1 系统硬件设计 1.1 系统硬件框图 该正弦信号发生器的硬件结构框图如图1所示,主要由TMS320C5402芯片,D/A转换器,独立键盘等几部分组成。
1.2 TMS320C5402简介 TMS320C5402芯片采用先进的修正哈佛结构,片内有8条总线、在片存储器和在片外围电路等硬件,同时还有高度专业化的指令系统,具有功耗小、高度并行等优点。此外,其支持C语言和汇编语言混合编程,高效的流水线操作和灵活的寻址方式使其适合高速实时信号处理。 1.3 数模转换部分设计 McBSP(Multi-channel Buffered Serial)即多通道缓冲串口,包括一个数据通道和一个控制通道。数据通道通过DX引脚发送数据、DR引脚接收数据。控制通道完成的任务包括内部时钟的产生、帧同步信号的产生、对这些信号的控制以及多通路的选择等。此外还负责产生中断信号送往CPU,产生同步事件信号通知DMA控制器。控制信息则是通过控制通道以时钟和帧同步信号的形式传送。 数模转换芯片采用TLC320AD50C,其是TI公司出品的一块将A/D和D/A转换功能集成在一起的接口芯片,采用∑-△技术在低系统成本下实现高精度的A/D和D/A转换。该芯片由一对16 bit同步串行转换通道组成,在A/D之后有一个抽取滤波器,在D/A之前有一个插值滤波器。 TLC320AD50C可以与TMS320C5402 DSP的McBSP无缝串行连接进行数据采集、存储和处理。SCLK输出时钟,M/S主从模式选择(H为高电平,为主机模式),DIN串行输入,DOUT串行输出,FS帧同步信号输出,对应DSP的各相应引脚。McBSP和D/A芯片的硬件电路连接如图2所示。
1.4 独立键盘的设计 本信号发生器采用独立键盘作为人机接口部分,即各个按键相互独立,按下相应的按键,就能输出对应幅度和频率的正弦波。 图3所示为中断方式工作的独立式键盘的连接图,每个按键各接一根I/O接口线,每根I/O接口线上的按键都不影响其它的I/O接口线。因此,可以通过检测I/O的电平状态判断出哪个键按下。这4个独立按键分别接HD0~HD3口,并且使用4个220 Ω的上拉电阻接Vcc。
当没有按下键时,对应的I/O接口线输入为高电平,当按下键时,对应的I/O接口线输入为低电平,则请求中断INT1。而在读键时,每一个键的状态通过读入键值的高低电平来反应。在中断服务程序中通过执行判键程序,判断是哪个键按下,从而设置对应的幅度和频率,执行产生正弦波形的程序。 独立式键盘的电路配置灵活、软件简单。但每个按键要占用1根I/O接口线,在按键较多时,I/O接口线浪费较大。故在按键数量不多时采用这种方法,本系统采用4个独立按键,而DSP芯片有足够的I/O接口可供使用,设计时可以充分利用这一特点来连接硬件,至于对按键时抖动的消除可在软件中完成。使用中断,可提高CPU的效率,实现资源共享和并行处理,同时也可以在芯片运行过程中对突发故障做出及时发现和处理。
2 系统软件设计 2.1 正弦波形产生原理 常见产生正弦波的方法有6种:(1)采样回放法;(2)实时计算法;(3)查表法;(4)查表结合插值法;(5)数值迭代法;(6)泰勒级数展开法。 采样回放法容易实现,但系统的扩展性差,且并没有充分利用DSP的数据计算处理能力。实时计算法需要花费较多时间,只能产生较低频率的正弦波,而且存在计算精度与计算时间的矛盾。查表法的精度受表的大小影响较大,表越大精度越高,但是存储量也越大。查表结合插值法亦称混合法,用它产生的正弦波达不到理想的精度。数值迭代法较难编写出清晰的程序来。泰勒级数展开法是一种有效的方法,与查表法和查表结合插值法相比,该方法需要的存储单元很少,而且精度更高。一个角度为的正弦和余弦函数,展开成5项泰勒级数如下 式中,x为θ的弦度值,正弦波的波形可以看成是由无数个点组成,这些点与x轴的每个角度值相对应,利用DSP可大量重复计算的优势来计算出x轴每一点对应的y值,然后通过D/A转换即可输出连续的正弦模拟信号。 2.2 变频调幅的方法 (1)16位定时模块。 C5402 DSP芯片片内定时器是一个软件可编程的计数器,它包括以下3个16位存储器映射寄存器:定时寄存器TIM,定时器周期寄存器PRD和定时控制寄存器TCR。片内定时器中,4位的预定标计数器PSC和16位定时计数器TIM组成一个20位的计数器,定时器每个CPU时钟周期减1,每次计数器减到0将产生定时器中断(TINT),同时PSC和TIM重新载入预设的值。定时器中断TINT的速率可由式(3)计算。 (2)变频调幅实现方法。 调幅的实现相对简单,只需在所有采样值前乘以一个调幅因子A1就可得到相应的正弦波幅值A。而调频的实现必须依赖于C5402芯片内的16位定时器。DSP芯片不断向D/A芯片送出采样值,然后经模数转换后可在示波器上观察到连续的正弦波形。先预设要产生的正弦信号频率为f,根据正弦波生成原理可知,向D/A送出采样值的间隔,即向D/A送值的周期T1=T/N(N为采样点数),那么向D/A送值的频率为f1=N×f,即向D/A送值的频率是期待产生的正弦波信号频率的N倍。 因此,为了能够调节产生正弦信号的频率,实际上改变向D/A芯片送值的频率即可。而改变向D/A芯片送值的频率就得用到C5402芯片内的16位定时器。根据式(3)将需要的频率值换算成PRD内的初值和TDDR的初值,并将该初值分别置入PRD和TDDR。 2.3 软件设计 软件系统采用模块化结构设计,主要包括DSP主程序,中断程序和键盘驱动程序。DSP系统的主程序流程图如图4所示。先对系统进行检测、配置MeBSP端口等,开启中断调用键盘驱动程序读取键值并处理,进入中断后根据相应的键值设置相应的信号参数,并通过D/A转换,产生不同幅度、频率的正弦波。
中断程序流程图如图5所示。首先根据键盘的按键值选择已设置好的正弦波的幅度与频率,然后按以下步骤执行:(1)计算0°~45°的正弦和余弦值;(2)利用正弦函数倍角公式sin2x=2sinx cosx,计算0°~90°的正弦值;(3)通过复制,获得0~359°的正弦值;(4)将0°~359°的正弦值重复输出,便可以得到正弦波。
在CCS开发环境下编程,通过仿真器将程序下载到DSP芯片中,选择不同的按键产生相应的中断,即可在示波器中观察到相应的正弦波形。所产生的波形具有精度高,幅值稳定的特点,同时具有较强的实时性和灵活性。
3 结束语 DSP芯片具有的特殊软硬件结构和指令系统,使其能高速处理各种数字信号处理算法。基于此设计的正弦信号发生器具有速度高、精度高的特点。同时该系统依靠简洁的外部硬件电路设计和合理的软件程序设计,能够产生幅度和频率可调的高稳定度正弦波。而且该系统的可扩展性良好,只需要在中断服务程序中改变送往D/A芯片中的采样值,而不改动任何硬件电路,就可以实现三角波、方波乃至更复杂波形的输出。
|