《电子技术应用》
您所在的位置:首页 > 可编程逻辑 > 业界动态 > 一种用作超声波信号源的AWG的研制

一种用作超声波信号源的AWG的研制

2009-03-06
作者:张 振1,2, 朱昌平1,2,

    摘  要: 研制了一种采用单片机与复杂可编程逻辑器件(CPLD)相结合的方法设计的任意波形发生器(AWG),并详细介绍了利用MATLAB获取波形数据的两种方法。实验证明,该系统能输出频率和幅度可调的多种标准函数波以及任意波形。在满足所需频带宽度的同时,提高了频率的分辨率和准确度。 

    关键词: AWG; 超声波信号源; DDS; 单片机; CPLD 

 

    在研究声化学的频率效应及超声流体浓度检测的过程中笔者发现,传统的模拟超声信号源只能直接产生适当频率的电信号,用以驱动特定的超声波换能器,且产生的波形种类十分有限,系统的智能化控制也不完善。这不仅使得超声设备不能被合理利用,同时也在实验过程中加大了操作人员的工作量。所以设计一个适用范围广、高质量、智能化的超声信号源有着非常重要的意义。 

    本文所介绍的任意波形发生器应用于频率100kHz以下的低频超声段。从系统性能、实现成本和复杂程度等方面综合考虑,采用了单片机与CPLD相结合的方法实现。其后级可运用B类功放以获得所需的功率输出。 

1 系统原理及特点 

    AWG的波形合成采用了基于Nyquist采样定律的DDS技术。模拟信号经过采样、量化后存入数据查找表,控制器通过对查找表的寻址获得波形数据,再经D/A转换、滤波即可恢复原波形。其实现过程如图1所示。 

 

 

    在系统时钟的作用下,将频率控制字(也即累加器步长)送至相位累加器,并与原有的数据相加,这样,累加器的输出是一个关于时间的线性相位函数。相位函数的斜率决定了信号的频率,而相位函数的斜率取决于每个时钟周期相位的增量。控制每个周期相位的增量即可控制合成信号的频率。改变累加步长,即可改变输出每个周期的相位增量,从而改变输出信号的频率[1]。 

    设定AWG的性能参数如下: 

    (1) 8种波形存储能力,每种最大存储字长为4KB。 

    (2) 可输出包括正弦波、方波、三角波的标准函数波形;可输出任意波形,并设定其复现频率。 

    (3) 频率带宽100kHz,最小分辨率为2Hz。 

    (4) 输出电压峰峰值分为2.5V、5V、7.5V和10V四档,每档可再进行256级量化。 

    (5) 波形数据通过数字存储示波器(DSO)采集或通过MATLAB合成。 

    (6) 具备当前波形数据掉电存储功能。 

    (7) 具备时控和PC控制功能。 

    (8) 背光液晶显示,良好的操作界面。 

    本系统与传统的模拟信号发生器相比具有频带宽、稳定性好、分辨率高、易于程控等特点;而相比于采用AD9851等DDS芯片设计的信号源又具有生成波形灵活多样的优势。因此它适合作为小信号源,被应用于功率超声和检测超声中。 

2 系统的硬件实现 

    AWG的硬件电路可以分为波形发生、整机控制和电源三个模块,其原理框图如图2所示。电源的设计采用经典的线性伺服稳压电路,这种电路的纹波系数很小,其速率、内阻以及稳定性都优于蓄电池,非常适合像信号源这样对噪声敏感的应用场合。 

 

 

2.1 波形发生电路的设计 

    波形发生模块是本系统的核心。CPLD(EPM7128S)接收单片机发来的信息对波形的各项参数如波形种类、幅度、频率、滤波通道进行控制,通过查找表的方式实现波形生成。 

    本系统采用了基于E2PROM的查找表。器件选用8位并行E2PROM芯片AT28C256,存储容量为32KB。其读写时序十分简单,改变寻址地址,即输出对应数值,占用更少的CPLD内部宏单元。 

    对于幅度的控制和波形生成,则采用双DAC的方法,如图3所示。由于幅度控制对电流建立时间要求不高,可采用价格比较便宜的DAC0832。将其输出电压作为波形生成DAC的参考电压,通过改变DAC0832的输入来改变输出信号的幅度。而DAC0832的参考电压则由带隙电压基准源AD584提供,该芯片可提供四种参考电压。 

 

 

    在DDS系统中,波形生成DAC的电流建立时间决定了系统合成信号的最高频率。在本系统的设计中,合成信号的最高频率为100kHz,为了保证输出波形的质量,要求在输出最高频率时的周期点数不少于64点,则电流建立时间为: 

     

    为了留有一定的裕度,选用电流建立时间为100ns的AD7524。设AD584输出5V基准电压,DAC0832的数字输入为N1,则AD7524的参考电压为: 

     

    设AD7524的数字输入为N2,则经电流—电压转换后的输出UOUT2为: 

     

    为了减轻杂散干扰,需要在DDS输出端加一个滤波器。考虑到对带内幅值平坦性、多通道控制及电路设计复杂性上的要求[2],本设计采用了巴特沃思二阶低通滤波器如图4所示。其中模拟开关CD4052将有源二阶低通滤波电路组成多频段滤波电路,滤波截止频率分为100Hz、1kHz、10kHz和100kHz四档,根据输出波形频率的不同而选择一组电阻值进行分段滤波。通道选择和滤波使能由单片机直接控制。滤波器中的运放OP37构成同相比例放大器。 

 

 

2.2 整机控制电路的设计 

    整机控制模块以AT89S52单片机为核心,并由RS-232驱动器(MAX232)、串行E2PROM(AT24C02)、液晶显示模块(LCM1602)、矩阵键盘、ADC(ADC0831)及精密电压参考源(AD586)等部分组成,其电路如图5所示。该模块在系统中起到以下两点作用:一是将用户设定输出波形的参数按照特定的格式发送给CPLD产生相应波形;二是监测当前的工作状态。 

 

 

    键盘为14键的矩阵键盘,采用线翻转法对键码进行识别[3]。LCM1602型液晶模块是本机的显示输出设备,它具有功耗低、显示质量高、体积小、重量轻等特点。

    掉电存储功能由256B的I2C总线串行E2PROM(AT24C02)实现。 

    本系统内置了8位逐次逼近式A/D转换器(ADC0831),用以采样换能器两端的输出电流,进而估测功率源的输出功率。因此通过软件扫频的方式就可以找到换能器的谐振频率,实现频率跟踪。 

3 系统的软件实现 

3.1 CPLD的逻辑设计 

    虽然CPLD的内部逻辑功能属于硬件范畴,但是由于采用了软件的方法设计硬件,也将其归为系统的软件实现。 

    从功能上划分,CPLD的内部逻辑具有四个底层实体:控制字接收、相位累加、幅度DAC控制和波形DAC控制。它们分别采用MegaFunction单元库构建并采用Verilog HDL行为描述的方法实现。图6的虚线框描述了底层各实体间的关系。 

 

 

    底层各实体的设计参数由系统的性能指标决定。系统采用8MHz有源晶振,则每周期具有64个采样点的波形最高复现频率为: 

     

    因系统要求的最小分辨率不大于2Hz,故相位累加器的位数至少为22位,此时最小频率约为: 

     

    因此频率控制字(FSW)的位数为以上二者位数之差,即16位。 

    波形数据查找表28C256的地址总线为15位,其高3位由波形种类控制字(WSW)直接赋值,8种波形与地址的对应关系如表1所示。 

 

 

    低12位地址取相位累加器输出累加和的高12位,相位累加器的行为描述如下: 

    module PHASE_REG (EN,CLK,PIR,ADD_L12);  

    input [15:0] PIR;  

    input EN;  

    input CLK;  

    output [11:0] ADD_L12;  

    reg [21:0] sum;  

    reg [11:0] ADD_L12;  

    always@(posedge CLK)  

    if(EN) 

        begin  

           sum = sum + PIR;  

         ADD_L12 = sum[21:10];  

        end  

    endmodule 

    幅度DAC控制器将8位幅度控制字(ASW)赋给DAC0832并控制其输出使能。同样,波形DAC控制器将28C256的8位输出赋给AD7524并分别控制二者的读使能和输出使能。 

    在本系统中,CPLD单向接收单片机发送的4个字节(27位有效)的控制字,数据量少且对传输速度没有过高要求,因此接口设计采用SPI0的工作模式,只需占用三根口线。SPI0的工作时序十分简单,只需将片选(SS_n)拉低,然后在每个时钟(SCK)的上升沿送出数据(MOSI)即可[4]。串行移位用串入并出的移位寄存器实现,并行数据锁存则用D触发器,二者分别可由Quartus II MegaWizard向导中的LPM_SHIFTREG和LPM_FF构建,如图7所示。

 

 

3.2 单片机的软件设计 

    单片机的程序利用C语言编写,可分为驱动程序(包括液晶驱动、键盘驱动、SPI总线驱动、I2C总线驱动、串口驱动等)和菜单程序两部分。图8为本系统的操作流程图。 

 

 

    在输出模式中,直接进入“Last waveform”菜单后就能方便地读取前一次保存的波形参数;而在“New waveform”菜单下则可以重新设置参数。 

    本系统还有两种特别的控制方式:一是在“RS232 Mode”中,可由PC机通过串口发送控制字并监控其工作状态,在上位机软件的支持下可以使本机协同其他智能仪器高效地完成实验过程;二是在“Anolog Mode”中,波形参数或运行状态可由输入电压量来控制,例如当换能器或功放工作时间过长导致发热量过大时,可关闭输出。 

    在“DSP.Waveform”菜单中,完成所有控制字的转换、存储、发送和显示。单片机向CPLD发控制字的接口程序如下: 

    /**向CPLD的SPI端口写一个字节的控制字**/ 

    void write_SPI(uchar SETWORD) 

    { 

     uchar i; 

     for(i=0;i<8;i++) 

      { 

        SCK=0; 

        DATA=(SETWORD<

        SCK=1; 

      } 

    } 

    /**向CPLD的SPI端口写四个字节的控制字**/ 

    void write_SETWORD() 

    { 

      SS=0;                    //SPI传送开始 

      write_SPI(WSW);      //写波形种类控制字 

      write_SPI(FSW_H);    //写波形频率控制字高字节 

      write_SPI(FSW_L);    //写波形频率控制字低字节 

       write_SPI(ASW);    //写波形幅度控制字 

       SS=1;                   //SPI传送结束,波形发生模块开始工作 

     EN_4052=0;         //滤波器开始工作 

    } 

3.3 波形数据的获取 

    采用两种方法获取所需的波形数据,即公式法和采样法。 

    在利用超声波进行变压器油中微水浓度检测的实验中[5],为了避免接收信号相互重叠,需要用单脉冲触发的正弦波激励发射端换能器,使声波通过充满油水混合物的管道,并于接收端观测、分析波形,以便设计合适的放大和整形电路。下面分别用以上两种方法说明发射端和接收端波形数据的获取。 

    (1) 用公式法获取发射端波形 

    常用的波形通常都可以用公式进行描述,MATLAB的内部就提供了大量的波形产生函数[6],具体调用方法见软件说明文档。 

    本系统中,每种波形的存储深度为4 096点,其数据表可看作是1*4 096的一维数组,且元素的取值范围为0~255,直流偏置量为128。获取占空比为1/16的单脉冲触发正弦波数据可分三步完成: 

    首先产生256点的正弦数据表,程序如下:  

    x=0:2*pi/255:2*pi;   % 采样一个周期,采样点数为256 

    y0=(sin(x)+1)*128;  %直流偏置为128,幅值范围0~255 

    y1=uint8(y);              %幅值取8位无符号整形 

    其次在y1后添加长度为3 840的幅值为128的数据点。可以利用y2=repmat(128,1,4 096)语句建立一个1*4 096的全128数组,将y1的值粘贴至y2的前256点即可。 

    最后,在Quartus II软件[7]中新建字长为8bit,长度为4 096的HEX文件,从MATLAB的Array Editor中将y2的数据复制到该文件,并在E2PROM烧录软件中按指定起始地址将其导入即可。 

    (2) 用采样法获取接收端波形 

    有些波形较为复杂,不易用公式描述,则可用数字存储示波器采集并处理后将其复现。图9即为TDS1012型示波器采集的发射端和接收端的波形。该示波器除了能将屏幕所示信息存为bmp位图外,还可将CH1和CH2的波形数据以2 500点的存储深度保存为CSV(逗号分隔值)文件。 

 

 

    以接收端的波形为例,在MATLAB中将CSV文件中的波形数据以一维数组的形式导入,并利用Array Editor中的二维绘图功能查看并截取一个周期的波形数据。由于此时数据点数并不是4 096,而是小于2 500的值,因此需要进行插值处理,程序如下: 

    x0=1:1739;                 %截取后的波形点数为1739点 

    x1=1:1 739/4 098:1 739; %插值后的波形点数为4096点 

    y1=spline(x0,y0,x1);     %三次样条插值,y0为插值前数据 

    y2=uint8(y1);               %幅值取8位无符号整形 

    插值后的周期波形如图10所示。 

 

 

4 试验结果及分析 

    使用TDS1012型示波器测试本系统的性能。表2记录的是一组正弦波的频率测量结果,结果表明合成波形的频率误差在2Hz以内,与理论值相符,达到了设计指标。

 

 

    图11所示为输出频率为10kHz的正弦波,它是降指数波、DSB调幅波和基波与3次谐波叠加的任意波形,滤波方式为Auto,即系统根据设定频率自动选择相应的滤波通道。 

 

 

    但是,对于像方波这样含有许多高频成分的波形,在选用Auto方式滤波时,大于复现频率的成分会被大幅衰减,导致波形失真,图12左上图为10kHz方波通过10kHz低通滤波器前后的波形,右上图为滤波后频谱。通过手动设置滤波通道,增大通带宽度,就可以减小波形失真,左下图和右下图分别为通过100kHz低通滤波器后的波形和频谱。 

 

 

    本文针对低频超声波的应用,介绍了一种采用单片机和CPLD研制的任意波形发生器,它可以为实验室提供一种高性价比的超声信号源解决方案。随着新一代大规模低成本CPLD的推出与应用(如MAX II系列),本系统还可扩展波形数据联机下载或实时采集等功能。若采用更高速率的DAC和查找表存储器还可进一步提高输出带宽,使之覆盖整个超声频段。 

参考文献 

[1] 吴秋兰.现代数字系统设计方法研究及其在AWG中的应用[D].济南:山东大学,2001. 

[2] 毛敏,郑珍,周渭.基于DDS的低通滤波器的设计与实现[J].电子科技,2006(3):17-20. 

[3] 求是科技.单片机典型模块设计实例导航[M]. 北京:人民邮电出版社,2004. 

[4] 黄任.AVR单片机与CPLD/FPGA综合应用入门[M].北京:北京航空航天大学出版社,2006. 

[5] 朱昌平,单鸣雷,齐本胜,等.变压器油中微水及混合气体超声在线检测方法及装置[P].中国:200710021320.5,2007.  

[6] 郭仕剑,王宝顺,贺志国,等.MATLAB7.X数字信号处理[M].北京:人民邮电出版社,2006.  

[7] Altera Corporation.Quartus II 7.1 Handbook,2007. 

[8] 王文华.基于DDS技术的任意波形发生器研究[D].杭州:浙江大学,2002. 

[9] 冯若.超声手册[M].南京:南京大学出版社,2006. 

[10] 任绪科,赵俊渭,周明.基于CPLD和单片机的任意波形发生器设计[J].电子产品世界.2005(1):118-119. 

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。