任意波形发生器是一种数据信号发生器。在调试硬件时,常常需要加入一些信号,以观察电路工作是否正常。用一般的信号发生器,不但笨重,而且只发一些简单的波形,不能满足需要。这时候就可用任意波形发生器来产生一些需要的信号进行相关的实验工作。
市场上出售的信号产生器价格昂贵。结合实际需要,我们设计一种任意波形发生器。电路设计中充分利用MATLAB的仿真功能,将希望得到的波形信号在MATLAB中完成信号的产生、抽样和模数转换,并将得到的数字波形数据存放在数据存储器中,通过单片机和CPLD控制,将波形数据读出,送入后向通道进行A/D转换和放大处理后得到所需的模拟信号波形。利用上述方法设计的任意波形发生器,信号产生灵活方便、功能扩展灵活、信号参数可调,实现了硬件电路的软件化设计。具有电路结构简单、实用性强、成本低廉等优点。
任意波形发生器的设计思想,是利用MATLAB的强大仿真功能,方便、快捷的生成给定频率、周期、脉宽的任意波形数据;并将数据预存在数据存储器中。在单片机控制下,利用CPLD电路产生地址读出数据,送入D/A转换电路,得到所需的任意波形信号。系统结构框图如图1;图中分频电路和地址发生器由CPLD实现:
1、 单片机控制电路 单片机采用AT89C52芯片,通过软件编程产生所要求的控制信号。主要的控制参数包括:信号周期、脉宽;分频电路的开始信号、地址发生器的复位信号;E2PROM的选通信号;D/A转换电路的选通 信号。在具体电路中,端口P1.0控制分频电路的启动、P1.1控制地址发生器的清零,P2.0控制28C256和AD7545的选通信号。单片机工作在定时器0方式,软件设计利用C语言实现。流程图如图2所示: 2、 波形数据生成 MATLAB作为一款的数学工具软件,具有强大的运算功能;可以方便的产生各种信号波形,在软件中实现波形信号的产生、抽样和模数转换。设计的任意波形发生器,数据存储器选用28C256芯片,信号波形通过MATLAB仿真产生;得到的波形数据存放在数据存储器28C256中。具体设计中,我们要求产生周期为200ms,脉宽为5ms的单/调频混合信号,其中单频信号的脉宽为4ms,频率为30KHz;调频信号的脉宽为1ms,频率为30KHz[[_]]35KHz。在MATLAB中设定抽样率为500KHz,得到了2500个波形数据。这些混合波形数据在烧录入数据存储器的过程中,由于波形数据较多,直接用手工录入数据存储器中不仅费时且容易出错。为克服这一弊端,通过MATLAB编程的方法将产生的波形数据按照HEX文件的INTEL格式存放,然后将这些波形数据整批次烧录入数据存储器中。采用上述方法,波形数据生成简单,快捷;可根据需要在软件程序中方便地修改信号参数;无需改动硬件电路即可实现信号参数的功能扩展。 3、 CPLD逻辑设计 分频电路采用两片74HC163实现。通过分频电路,将12MHz的晶振标准频率分频后,得到500KHz的抽样频率,作为地址发生器的时钟。分频电路的工作由单片机控制。 地址发生器电路由3片74HC163组成,时钟频率为500KHz,有分频电路提供;和预存的波形数据抽样频率相一致,以实现数据的无失真读出。 4、 D/A转换电路 D/A转换电路的实现如图3所示。 电路中,AD7545将波形数据转换为模拟信号;LF353进行信号滤波和整形。
任意波形发生器的发展趋势是更高取样率,更高分辨率和更大存储量,目前实时带宽超过1GHz的产品比较少,而且分辨率只有8位,不能满足快速发展的移动通信和高速网络的测量要求。与数字存储示波器相比,任意波形发生器的全面指标存在明显差距,前者的取样率达到20GS/s和带宽6GHz,后者的取样率是4.8GS/s和带宽2GHz。任意波形发生器首先要赶上数字存储示波器,然后再往前发展,因为在电路构成方面,任意波形发生器的核心部件是高速数/模转换器,它的工艺潜力还很大,显然缺少的是市场需求。
任意波形发生器的另一重要应用领域是低频,例如心电图、汽车点火、防撞气囊、医疗仪器等,频率范围在声频以下,多组信号输出,16位以上的分辨率。这类任意波形发生器以VXI总线、PXI总线和PC总线模块较多,每年都有新产品推出。