armok 发表于 2009-6-19 02:59:16

任意波形发生器的设计

来源:电子产品世界/ 西北工业大学 航海学院 任绪科 赵俊渭 周明


引言

      在电子工程设计与测试中,常常需要一些复杂的、具有特殊要求的信号,要求其波形可任意产生,频率方便可调。通常的信号产生器难以满足要求,市场上出售的任意信号产生器价格昂贵。结合实际需要,我们设计了一种任意波形发生器。电路设计中充分利用MATLAB的仿真功能,将希望得到的波形信号在MATLAB中完成信号的产生、抽样和模数转换,并将得到的数字波形数据存放在数据存储器中,通过单片机和CPLD控制,将波形数据读出,送入后向通道进行A/D转换和放大处理后得到所需的模拟信号波形。利用上述方法设计的任意波形发生器,信号产生灵活方便、功能扩展灵活、信号参数可调,实现了硬件电路的软件化设计。具有电路结构简单、实用性强、成本低廉等优点。

http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_454369.jpg
(原文件名:01 图1   系统框图.jpg)

任意波形发生器的设计思想,是利用MATLAB的强大仿真功能,方便、快捷的生成给定频率、周期、脉宽的任意波形数据;并将数据预存在数据存储器中。在单片机控制下,利用CPLD电路产生地址读出数据,送入D/A转换电路,得到所需的任意波形信号。系统结构框图如图1;图中分频电路和地址发生器由CPLD实现。




         电路设计及实现


      单片机控制电路

      单片机采用AT89C52芯片,通过软件编程产生所要求的控制信号。主要的控制参数包括:信号周期、脉宽;分频电路的开始信号、地址发生器的复位信号;E2PROM的选通信号;D/A转换电路的选通信号。在具体电路中,端口P1.0控制分频电路的启动、P1.1控制地址发生器的清零,P2.0控制28C256和AD7545的选通信号。单片机工作在定时器0方式,软件设计利用C语言实现。流程图如图2所示。


http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_454370.jpg
(原文件名:02 图2   软件流程图.jpg)

         波形数据生成

      MATLAB作为一款优秀的数学工具软件,具有强大的运算功能;可以方便的产生各种信号波形,在软件中实现波形信号的产生、抽样和模数转换。设计的任意波形发生器,数据存储器选用28C256芯片,信号波形通过MATLAB仿真产生;得到的波形数据存放在数据存储器28C256中。具体设计中,我们要求产生周期为200ms,脉宽为5ms的单/调频混合信号,其中单频信号的脉宽为4ms,频率为30KHz;调频信号的脉宽为1ms,频率为30KHz_35KHz。在MATLAB中设定抽样率为500KHz,得到了2500个波形数据。这些混合波形数据在烧录入数据存储器的过程中,由于波形数据较多,直接用手工录入数据存储器中不仅费时且容易出错。为克服这一弊端,通过MATLAB编程的方法将产生的波形数据按照HEX文件的INTEL格式存放,然后将这些波形数据整批次烧录入数据存储器中。采用上述方法,波形数据生成简单,快捷;可根据需要在软件程序中方便地修改信号参数;无需改动硬件电路即可实现信号参数的功能扩展。

         CPLD逻辑设计

      分频电路采用两片74HC163实现。通过分频电路,将12MHz的晶振标准频率分频后,得到500KHz的抽样频率,作为地址发生器的时钟。分频电路的工作由单片机控制。

      地址发生器电路由3片74HC163组成,时钟频率为500KHz,有分频电路提供;和预存的波形数据抽样频率相一致,以实现数据的无失真读出。

电路设计中,采用ALTRA公司的EPM7128AETC100-10芯片,在MAX+PLUSⅡ开发环境中完成分频缏泛偷刂贩⑸ 鞯缏返纳杓啤; 贑PLD的电路设计,可以省去大部分的中小规模集成电路和分离元件;使得电路具有集成度高、工作速度快、编程方便、价格低廉的显著优点。通过CPLD和数据预生成的信号实现方法,无需改变硬件电路,即可实现信号参数的任意调整;同时外围电路十分简单,为工程调试和应用带来了方便。   

         D/A转换电路

      D/A转换电路的实现如图3所示。 电路中,AD7545将波形数据转换为模拟信号;LF353进行信号滤波和整形。



http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_454371.jpg
(原文件名:03 图3   DA转换电路.jpg)


         结语

       采用上述方法设计的任意波形发生器,通过软件和硬件结合,充分发挥MATLAB强大的仿真功能,尽可能的减少了硬件开销。根据实际需要,可产生正弦波、三角波、锯齿波、方波等多种波形,可以产生线性调频信号(LFM),单频脉冲信号(CW),余弦包络信号以及他们之间的组合信号等多种波形参数;满足了工程需要。该任意波形发生器已应用于在研项目“水中运动目标轨迹测量”中,效果良好。

pdaabao 发表于 2009-6-19 03:09:04

不错,呵呵,我第一个顶贴。不过这样可能指标低了一些,用DDS核心可能会好很多。

gzhuli 发表于 2009-6-19 03:14:16

其实就是DDS,原理和DSO正好相反,DSO是AD->储存->波形显示,DDS是波形生成->储存->DA。
单片机控制频率很难做得高,一般得FPGA。

jj3055 发表于 2009-6-19 07:33:52

用了LF353做滤波整形,这东西最多做到几百KHz

jj3055 发表于 2009-6-19 07:35:35

这个东西要魏昆同学出手搞,他做过一个很不错的。

bure 发表于 2009-6-19 12:21:56

不知道这个“任意波形发生器”最高输出频率是多少?如果只是是0~200KHz,按1-2-5步进,32点波表的任意函数波形,倒是不难实现,还可以结合“经济型袖珍示波器”实时显示出波形,所需成本极低,基本上就是:STM32+LCD+运放+DAC 就可以了,如果DAC精度高,输出波形的幅度还可以在较大范围调整。

pan8902 发表于 2009-8-18 19:47:01

没用DDS芯片产生的频率不是会比较低吗?

ggddll 发表于 2009-8-19 07:18:03

MARK

wajlh 发表于 2009-8-19 07:23:54

make

zb19890622 发表于 2009-8-21 22:10:56

顶一下!

longquan 发表于 2009-8-21 23:16:12

电赛中老师买一2C5T144板
配一个5514   tl5616×2//一百兆的十位DAC××××××××××800¥

guo88455648 发表于 2009-12-3 14:09:10

不错,留个记号

guochengqiang 发表于 2010-1-1 23:29:25

学习

bland 发表于 2010-5-30 12:21:36

这个东西还不是开源的,只能看看不能DIY。

tk20064359 发表于 2010-9-10 10:34:26

任意波形发生器主要是靠软件来实现波形变化的吧?

mychestnut 发表于 2010-12-31 16:14:16

^_^,我们系的老师!真亲切啊。

kouxiangtang 发表于 2010-12-31 21:55:25

lv123123123 发表于 2011-8-2 10:40:10

mark

power_check 发表于 2011-8-2 11:48:23

mark

slzxriver 发表于 2011-8-2 12:47:00

mark

blackhorse21 发表于 2011-8-2 13:07:00

Mark

michaelwang51 发表于 2011-12-28 01:52:46

mark

风铃 发表于 2012-12-5 13:04:31

不错不错

keepmoving29 发表于 2012-12-27 10:37:06

{:smile:}看看
页: [1]
查看完整版本: 任意波形发生器的设计