. 基于 AD9833 的信号发生器的设计与实现 本文介绍一种基于直接数字频率合成技术(DDS)的信号发生器,该系统采用 AD9833 与 STC89C51 单片机相结合的方法,以单片机 STC89C51 为进程控制和任务调度的核心, 以 DDS 芯片 AD9833 为直接数字频率合成器,实现了输出正弦波频率在 10Hz~8MHz 范 围可调,三角波输出频率在 10Hz~1MHz 可调,方波输出频率在 10Hz~100KHz 可调。实验 证明,此设计硬件电路结构简单,软件控制灵活,输出信号频率稳定,分辨率高。 (一) 引言 低频信号发生器是一种常用的信号源,广泛应用于物理学、电工学教学实验,电子线路 和微机原理、接口技术实验,自动化测控系统等领域。低频信号发生器早期用于模拟某些控 制系统调试时所需的信号源,主要是采用了场效应管等纯硬件完成,但波形在峰值时略有失 真,效果不太理想。 本文介绍采用美国模拟器件公司的DDS芯片AD9833实现的低频信号发生器,可以产生 正弦波、方波和三角波三种波形。 (二)AD9833 电路结构 AD9833 的内部电路主要有数控振荡器(NCO)、频率和相位调节器、正弦查找表(Sine ROM)、数模转换器(DAC)、电压调整器,其功能框图如图 1 所示: 图 1 AD9833 内部框图 . . AD9833的核心是28位的相位累加器,它由加法器和相位寄存器组成,每来1个时钟, 相位寄存器以步长增加,相位寄存器的输出与相位控制字相加后输入到正弦查询表地址中。 正弦查询表包含1个周期正弦波的数字幅度信息,每个地址对应正弦波中0°~360°范围内的 1个相位点。查询表把输入的地址相位信息映射成正弦波幅度的数字量信号,去DAC输出模 拟量,相位寄存器每经过228/K个MCLK采样时钟后回到初始状态,相应地正弦查询表经过 一个循环回到初始位置,这样就输出了一个正弦波。输出正弦波频率为: fo=K(fMCLK/228) 其中,K为频率控制字,由外部编程给定,其范围为0≤K≤228-1。 (三)硬件电路设计 整个硬件系统框图如图 2 所示 电源(+5V) AD8055 缓冲放大 电源 (-5V) STC89C51 单片机 AD9833 键盘 图2 硬件系统框图 AD9833是一款低功耗可编程波形发生器,该器件可通过SPI接口和单片机相连,编程 能够产生正弦波、三角波、方波输出,输出频率范围为0MHz~12.5MHz。同时AD9833外 围电路简单,无需外接元件,输出频率和相位都可通过软件编程,易于调节,频率寄存器是 28位的,主频时钟为25MHz时,精度为0.1Hz,主频时钟为1MHz时,精度可以达到0.004Hz。 单片机选用STC89C51,单片机是整个系统的进程控制和任务调度的核心。 1.DDS 模块 DDS 的电路如图3所示,有源晶振为AD9833提供25MHz的系统时钟,单片机通过 FSYNC、SCLK、SDATA、三个引脚控制AD9833。AD9833是一块完全集成的DDS(Direct Digital Frequency Synthesis)电路,仅需要1个外部参考时钟、1个低精度电阻器和一个解 耦电容器就能产生高达12.5MHz的正弦波。 . . 图3 DDS 部分电路 AD9833 的引脚排列如图 4 所示,MCLK(5 脚)为外部参考频率信号的输入端,SDATA(6 脚)、SCLK(7 脚)、FSYNC(8 脚)组成AD9833的标准三线串行接口,可以与SPI、QSPI、 MICROWIRE 或 DSP芯片直接连接。16位串行数据字由6脚输入,在7脚的下降沿被读入 AD9833,8脚为频率更新控制信号,可以用作片选信号,当8脚保持低电平时新的控制字写 入AD9833中,在8脚的上升沿可以从Vout(10 脚)输出模拟或数字信号,其中三线串行接口 操作时序图如图5所示。 图 4 AD9833 引脚图 . . 图 5 AD9833 串行时序图 2.单片机系统电路 单片机系统电路由STC89C51为核心,STC89C51拥有丰富的IO口和片上资源,是目前比较 流行的单片机,该部分电路如图6所示,主要有时钟电路,复位电路构成。P3.0、P3.1、P3.7 分别与AD9833的SDATA(6脚)、SCLK(7脚)、FSYNC(8脚)相连,进行SPI接口访问控制。 图 6 单片机系统电路 3.输出缓冲放大器 输出缓冲放大电路选用AD8055,AD8055属于超高速运算放大器,高频放大失真小, 电路的增益为Rf/R14+1.通过调节电位器Rf可以改变输出电压的幅度。输出缓冲放大电路如 图7 所示: . . 图7 输出缓冲放大电路图 4.键盘和显示电路 键盘采用4×4键盘,如图8所示。 图8 键盘电路图 显示电路用数码管显示,直观方便,如图9所示。 . . 图9 显示电路图 (四)系统软件设计 软件采用C语言编写,使用循环扫描完成4×4键盘的扫描任务。程序的主流程图如图10 所示: . . 开始 初始化单片机 初始化数码管 初始化 AD9833 N 有按键? Y 处理按键 更新显示 更新波形频率 或形状 图10 程序主流程图 AD9833的主要任务就是完成正弦波形的迅速建立和频率的快速切换,可以通过软件设置不 同的频率控制字来达到切换频率的目的。在软件程序中,只要定时通过SPI向AD9833写入 不同的频率控制字,就可以控制信号的输出。在编程中需要注意的是,由于AD9833的频率 . . 控制字是16位的,因此对于SPI的写操作来说,需要分两次完成,还要注意AD9833的数据 位的写入顺序,因为其数据格式是高位在前,低位在后。 (五)结论 经测试,该信号发生器能产生正弦波、方波和三角波三种周期性波形,波形失真极小, 能够达到题目要求,输出信号频率稳定度优于10-3,输出正弦波信号的电压峰-峰值Vopp在 0~5V范围内可调。其结果表明,基于DDS所实现的低频信号发生器,无论是频率的精确度, 还是波形的低失真方面,效果都很理想。 附件: 原理图: PCB版图: . . .