打印
[DSP]

基于DSP正弦信号发生器设计

[复制链接]
1081|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Flower1|  楼主 | 2020-4-22 23:24 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
基于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芯片中的采样值,而不改动任何硬件电路,就可以实现三角波、方波乃至更复杂波形的输出。

使用特权

评论回复

相关帖子

沙发
kkzz| | 2020-5-1 09:34 | 只看该作者
利用DSP产生频率可变正弦波信号发生器  

使用特权

评论回复
板凳
hudi008| | 2020-5-1 09:34 | 只看该作者
如何更改正弦信号源程序,使之变成余弦信号

使用特权

评论回复
地板
lzmm| | 2020-5-1 09:34 | 只看该作者
怎么使用DSP28335采集信号发生器发出的信号?

使用特权

评论回复
5
minzisc| | 2020-5-1 09:35 | 只看该作者
         

使用特权

评论回复
6
selongli| | 2020-5-1 09:35 | 只看该作者
哪里能找到数控正弦函数信号发生器 的资料  

使用特权

评论回复
7
fentianyou| | 2020-5-1 09:35 | 只看该作者
简易信号发生器的课程设计  

使用特权

评论回复
8
xiaoyaodz| | 2020-5-1 09:35 | 只看该作者
为什么不用DDS呢?   

使用特权

评论回复
9
febgxu| | 2020-5-1 09:36 | 只看该作者
音频信号怎么检测      

使用特权

评论回复
10
sdlls| | 2020-5-1 09:36 | 只看该作者
《 基于TMS320VC5509A 的信号发生器》  

使用特权

评论回复
11
pixhw| | 2020-5-1 09:36 | 只看该作者
如何产生任意幅度和周期的正弦波  

使用特权

评论回复
12
hudi008| | 2020-5-1 09:36 | 只看该作者
dsp28335怎么接信号发生器  

使用特权

评论回复
13
lzmm| | 2020-5-1 09:36 | 只看该作者
protues中正弦信号发生器的值怎么设置  

使用特权

评论回复
14
kkzz| | 2020-5-1 09:36 | 只看该作者
正弦函数表。一般选择0~90度范围做表即可,分辨率可以取1度。

使用特权

评论回复
15
pixhw| | 2020-5-1 09:36 | 只看该作者
怎么用SPWM产生正弦波   

使用特权

评论回复
16
sdlls| | 2020-5-1 09:36 | 只看该作者
如何用到DSP实现正弦波转方波   

使用特权

评论回复
17
febgxu| | 2020-5-1 09:37 | 只看该作者
基于NCO IP核的信号发生器  

使用特权

评论回复
18
xiaoyaodz| | 2020-5-1 09:37 | 只看该作者
DDS的速度还是可以的。      

使用特权

评论回复
19
fentianyou| | 2020-5-1 09:37 | 只看该作者
用AD9850做信号发生器   

使用特权

评论回复
20
selongli| | 2020-5-1 09:37 | 只看该作者
如何将脉冲信号拟合成正弦信号?  

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

623

主题

887

帖子

6

粉丝