杜威,孟丽囡,宁武
(辽宁工业大学 电子与信息工程学院,辽宁锦州,121000)
宽频函数信号发生器是一种能够产生宽带正弦、三角波、方波及脉冲等多种函数波形,且其频率、幅度等参数可进行调整输出的仪器。宽频函数信号发生器的研究与设计对生产与生活都具有重要的意义[1]。目前,DDS 技术作为信号发生器设计的关键性新技术,具有输出波形频率分辨率高、稳定性好和便于数字化控制等优势,因此在信号发生器领域中具有重要的地位和广泛的应用[2]。
直接频率合成技术作为目前信号发生器设计的关键性技术,在信号发生器领域中具有重要的地位。目前大多数的信号发生器都采用CPU 作为函数信号发生器的控制核心,操作和控制DDS 芯片产生函数信号波形。伴随微处理器技术和微波集成电路的进步,信号发生器逐渐采用液晶显示屏、触摸式键盘取代模拟的度盘、表头、旋钮控制和显示方式,构成良好的人机交互界面。相比于以往功耗数百瓦的函数信号发生器,采用DDS 技术的信号发生器功耗极低仅为数十瓦。信号的频率稳定性能够达到晶体振荡器实现的水平,采用直接频率数字合成的信号发生器可以实现多台模拟式信号发生器才能实现的功能[3]。
本设计实现函数信号发生器的周期性函数波形信号的产生,通过STM32F103C8T6 单片机读取输入的键盘信息,经过程序处理后送入AD9833 波形产生单元以及D/A 转换器实现波形的调频和调幅功能,并且通过OLED 显示屏实时显示相关函数波形的类型、频率以及幅度参数。通过单片机技术实现函数信号的波形、频率、幅度参数调节,主控单片机、AD9833 波形生成电路、程控放大电路、按键电路、显示电路、D/A 转换等组成;系统软件程序主要包括键盘读取,波形类型、频率、幅度选择,OLED 显示相关的程序设计。系统整体框图如图1 所示。
图1 整体结构框图
0~10MHz 多功能函数信号发生器的系统硬件电路由主控电路、AD9833 波形产生电路、程控放大电路、D/A 转换电路、显示电路以及按键电路等组成。
STM32F103C8T6 单片机最小系统核心部分主要由时钟电路、复位电路、供电电源电路三个部分构成[4]。利用该最小系统就可以实现宽频函数信号发生器的控制目的,完成矩阵键盘扫描、OLED 显示、函数波形信号切换、频率以及幅度参数调整等基本功能。
系统最小系统电路由时钟电路、复位电路、调试下载电路、启动方式选择以及核心微处理器组成。
系统的复位电路采用10k 的上拉电阻和0.1μF 的电容以及独立按键构成,与单片机的NRST 引脚连接,一般的复位电路来说,只要在单片机的NRST 管脚上保持10ms 及以上的低电平信号,单片机就可以有效地复位[5]。
系统时钟电路的外部高速时钟源利用是4MHz~16MHz晶体振荡器,一般取典型值8MHz 大小的晶振和22pF 大小的电容组成,分别与单片机的OSC_IN 引脚和OSC_OUT 引脚连接,给外设提供时钟,通过STM32F103C8T6内部倍频器设置为9 倍频,使其最高工作主频率为72MHz,这样能使单片机快速地处理外部事件。外部低速时钟电路由32.768kHz 的晶体振荡器和15pF 大小的电容组成[6],用来给RTC 提供实时时钟。主控电路原理图如图2 所示。
图2 主控电路原理图
AD9833 是一款采用DDS 技术、低功耗、可编程波形发生器,器件采用MSOP 封装,非常小巧,外围电路较为简单,仅需要1 个外部参考时钟、一个低精度电阻器和一个解耦电容器,通过SPI 接口和单片机相连,通过编程可生成正弦波、三角波、方波[7]。输出频率和相位都可通过软件编程,易于调节。AD9833 的主频时钟为25MHz 时,精度为0.1Hz,主频时钟为1MHz 时,精度可以达到0.004Hz。AD9833的内部电路主要有数控振荡器(NCO)、频率和相位调节器、正弦查找表(Sine ROM)、数模转换器(DAC)、电压调整器。AD9833 有3 根串行接口线,与SPI、QSPI、MICROWIRE 和DSP 接口标准兼容,在串口时钟SCLK 的作用下,数据是以16 位的方式加载到设备上,FSYNC 引脚是使能引脚,电平触发方式,低电平有效。进行串行数据传输时,FSYNC 引脚必须置低,要注意FSYNC 有效到SCLK 下降沿的建立时间的最小值。FSYNC 置低后,在16 个SCLK的下降沿数据被送到AD9833 的输入移位寄存器,在第16个SCLK 的下降沿FSYNC 可以被置高,但要注意在SCLK下降沿到FSYNC 上升沿的数据保持时间ts 的最小和最大值。当然,也可以在FSYNC 为低电平的时候,连续加载多个16位数据,仅在最后一个数据的第16 个SCLK 的下降沿的时候将FSYNC 置高,最后要注意的是,写数据时SCLK 时钟为高低电平脉冲,但是,在FSYNC 刚开始变为低时,SCLK必须为高电平。
AD9833 的外围电路如图3 所示。用矩阵键盘设定频率大小以数字信号方式从单片机的3 个I/O 口和AD9833 连接。采用DDS 芯片AD9833 作为宽频函数信号发生器的波形产生核心器件,采用数控方式调整频率。通过FSYNC、SCLK、SDATA 三个口写入数据。当FSYNC 引脚为低电平时,数据在串行时钟(SCLK)的控制下作为16 位字载入AD9833 器件具体的寄存器之中。频率值的改变由写入频率寄存器中的频率码决定。通过程序控制,将寄存器中的值送入相位累加器输入端,相位累加器的输出经过正弦查询表将数字相位信息作为查找表的地址并将其相位信息转换成幅度,得到阶梯状的波形信号。
图3 波形产生电路原理图
VCA821 是一款直流耦合,具有高带宽,以线性分贝连续可变电压控制的增益放大器,它提供了一个高阻抗差动输入单端转换增益控制输入,使用时会因为所设定的最大增益值而变化,它的最大增益倍数设定是由增益电阻(RG)和反馈电阻(RF)共同决定的[8]。VCA821 内部体系最大增益的设置基于两个外部电阻,它们分别被称为增益电阻(RG)和反馈电阻(RF),VCA821的增益放大倍数由增益电阻(RG)和反馈电阻(RF)共同决定,根据计算增益放大倍数的公式如式(1)所示:
VCA821 电路的增益放大倍数为10。AD9833 将以确定好频率和波形种类经过1k 电阻输入到VCA821 的VIN 引脚,由于是程控放大,需要的放大倍数可通过编程经过AD5320把数据传给VCA821。最终确定频率和幅值的各种波形经过滤波电路输出到示波器上。程控放大电路如图4 所示。
图4 程控放大电路原理图
由于输出电压幅值是0~5V 可调,AD9833 理论上最大输出幅值为0.65V,据此,预设将增益放大电路总的放大倍数设置为10 倍,以确保AD9833 输出幅值无法达到理论值时可以通过放大来达到任务要求。函数信号发生器为了可以输出高性能的波形,采用通用型运算放大器和乘法型D/A转换器来实现幅度放大,其对乘法型D/A转换器的转换速度要求高,成本代价较高。综合设计的难易程度与成本,最终选取数字电位器与固定增益的放大器结合实现波形的幅度连续可调。
AD5320 是单片12 位电压输出D/A 转换器,单电源工作,电压范围为+2.7V~5.5V。片内高精度输出放大器提供满电源幅度输出,AD5320 利用一个3 线串行接口,时钟频率可高达30MHz,能与标准的SPI、QSPI、MICROWIRE和DSP 接口标准兼容[9]。单片机4 个输出端口分别连接AD5320 的SCLK、DIN、SYNC 和VDD,以进行输入数字信号,最后通过VOUT 引脚输出模拟信号通过外部电路传给放大电路来实现D/A 转换。D/A 转换电路如图5 所示。
图5 D/A 转换电路原理图
在本设计中利用0.96 寸I2C 通信OLED 屏作为函数信号发生器的显示设备,实现函数波形种类、频率、幅度等参数的显示。
显示电路作为本次设计中的人机交互设备,其作用主要完成输出函数信号的波形种类、信号幅度以及频率值的显示。当使用者通过矩阵键盘输入所设定的频率、波形种类等参数信息时,经过单片机处理数据控制AD9833 波形产生电路与幅度放大电路调整波形参数,通过OLED 显示屏实时显示设定的参数信息。使用者根据显示屏显示的参数信息结果,可以判断所设置的参数信息是否正确,适当地进行参数信息调整。显示电路如图6 所示。
图6 显示电路原理图
在本次设计中,需要为单片机提供3.3V 电源、为AD9833 提供5V 电源、为VCA821 提供±5V 电源。电源电路为单片机或其他外部硬件分别提供稳定的3.3V 电源和±5V 电源,电源电路如图7 所示。
图7 电源电路原理图
当STM32F103C8T6 单片机一上电即进行OLED 显示初始化、AD9833 波形产生电路初始化、幅度放大电路初始化操作,OLED 显示预先设定好的频率、幅度、波形等参数信息,AD9833 波形生成电路以及幅度控制电路实时响应。当使用者未按下按键S1时,进入步进的频率设置界面。首先,通过按键S2 进行频率值的加减操作,步进值为1kHz。然后,通过按键S3 进行幅度值的加减操作,步进值为0.1V。最后通过按键S4 实现波形的切换,实现所有的参数设定。整体系统的软件设计实现了宽频函数信号发生器的设计要求。
主程序软件流程图如图8 所示。通过单片机协调控制外围的AD9833波形生成电路、幅度调理电路实现了宽频函数信号发生器的设计。采用按键键盘配合OLED 显示屏实现相关的波形种类、频率、幅度的显示和参数设定。
图8 主程序流程图
单片机经过三线式SPI 方式将所要实现的波形、频率参数写入AD9833的内部寄存器。当FSYNC 引脚被置为低电平时,16 位串行数据字(SDATA)在串行时钟的作用下通过AD9833 的SDATA引脚写入具体的内部寄存器之中。频率值的改变由写入频率寄存器中的频率字决定。由于AD9833 串行方式传输需要16位字节,而单片机每次以8 位字节传送数据,每个周期内只有8 个SCLK 下降沿。因此在第一批传送数据结束时,P2.1应该仍保持低电平,同时启动第二次的写操作来传输数据的第二个字节。AD9833 首先接收MSB 写入目标寄存器,4 个MSB 为控制信息,接下来的4 个为地址,最后的8 个LSB将包含数据信息。
以SPI 串行方式向AD9833内部的控制寄存器写入数据,设置AD9833 的工作模式。采用PSEL 和FSEL 控制位方式选取具体的频率寄存器和相位寄存器。有两种数据源可以选择,当Freq_SFR 为0 时将数据分两次写入频率寄存器0,首先写入低14 位数据,然后写入高14 位数据,最后设置相位,频率寄存器0输出波形。当Freq_SFR 为1 时将数据分两次写入频率寄存器1,首先写入低14 位数据,然后写入高14 位数据,最后设置相位,频率寄存器1 输出波形。在设置的8 个时钟周期后,内部的D/A 转换器将产生数据输出[10]。如果想改变波形的相位或者频率时,通过向AD9833 重新写入16 位新数据完成。向AD9833 写入0x2000 输出正弦波;向AD9833 写入0x2002 输出三角波;向AD9833 写入0x2028 输出方波。实现波形生成电路流程图如图9 所示。
图9 波形生成程序流程图
AD9833 波形生成电路与单片机通过SPI 三线式连接。单片机的TXD 驱动AD9833 的SCLK 引脚,RXD 驱动串行数据线SDATA。FSYNC 信号通过单片机的位可编程引脚P2.1获得。波形生成电路测试包括正弦波、三角波以及方波三种波形信号的输出频率、幅度、失真等参数,具体测试如下。
AD9833 内部的正弦查询表将来自频率和相位寄存器的相位信息转换成幅度信息,从而在输出端产生正弦波。将Bit Mode 位清0,AD9833 的输出口IOUT 与IOUTB 将提供正弦波输出,正弦波参数数据记录表如表1 所示。1MHz的正弦波如图10 所示。
表1 正弦波参数数据记录表
图10 正弦波波形测试
对记录的10 组正弦波数据进行计算得频率、幅度精度平均值。计算结果表明:正弦波的频率精度达到0.20%,幅度平均精度达到0.89%。在高频段由于放大器的带宽所限,幅度输出精度略有下降。
转换器将产生10 位的线性三角波。将Bit Mode 位置1,AD9833 的输出口IOUT 与IOUTB 将提供三角波输出。三角波参数数据记录表如表2 所示。1MHz 三角波的测试结果如图11 所示。
表2 三角波参数数据记录表
图11 三角波波形测试
对记录的10 组三角波数据进行计算得频率、幅度精度平均值。计算结果表明:三角波的频率精度达到0.16%,幅度精度达到2.20%。设计的7 阶巴特沃思低通滤波器和放大器在高频段受到带宽所限是导致误差的主要原因。
DAC 输出后经过低通滤波电路来改善波形的抖动性能,然后将平滑的正弦波施加于AD9833 内部比较器的输入端VIN 引脚。当控制寄存器中的Bit OPBITEN 和Bit SIGN/PIB置1 时,在SIGN BIT OUT 引脚将输出方波信号。方波参数数据记录表如表3 所示。1MHz 方波测试结果如图12 所示。
图12 方波波形测试
对记录的10 组方波数据进行计算得频率、幅度精度平均值。计算结果表明:方波的频率精度达到0.48%,幅度精度达到0.59%。
本文设计了基于DDS 的0~10MHz 多功能函数信号发生器设计,运用电子技术、单片机控制技术及DDS 技术实现周期性函数波形的产生。利用按键与液晶屏构成良好的人机交互界面,通过按键设定输出函数波形的种类、频率、幅度等参数,并通过液晶显示屏OLED 实时显示设置的参数。通过各部分硬件电路分模块调试及软件调试,最终完成宽频函数信号发生器样机制作。基于DDS 的0~10MHz 多功能函数信号发生器设计实现了正弦波、三角波、方波等周期性函数波形输出功能,输出波形的频率在0~10MHz 范围内连续可调以及幅度0~5V范围连续可调。本设计的创新之处在于采用DDS 技术具有频率分辨率高、稳定度好的优势,该宽频函数信号发生器可广泛应用于现代科研、教学试验、仪表测量等领域,装置具有低功耗、低成本的特点,实现了绿色环保、低碳节能。