1、16|电子制作 2023 年 1 月电子电路设计与方案0 引言随着现代电子技术的飞速发展,直接数字频率合成DDS 技术逐渐被广泛使用,从其技术理论上看,具有灵活性高、变频速度快、变频简单等优点。从实际效果来看,变频时分辨率高,相位噪声低,电路集成度高、频率稳定等优点。该技术已经逐渐被应用到现代雷达、导航、遥感、现代仪器仪表等关键领域。使用 DDS 技术产生任意频率波形的方案主要有三种。第一种是直接使用高性能专用 DDS 集成电路芯片,比如AD9833,此种方案的优点是产生的波形频率准确,变频时分辨率高,直接使用通讯协议控制输入。缺点是,可以产生的波形类型受限,只有特定的几种,且内部配置灵活性很
2、低。第二种是使用单片机实现 DDS 技术,此种方案在低频时配置较为简单,易于实现,在中高频时配置容易受到其他模块影响,严重影响波形频率精度。第三种是基于现场可编程门阵列 FPGA 来实现,此种方案灵活性较高,配置简单,易于实现,且变频范围广,分辨率高,唯一缺点就是,浪费FPGA 内部未使用资源,造价高昂1。1 DDS 基本原理和核心设计 1.1 DDS 基本原理 DDS 技术原理框图如图 1 所示,主要有以下关键几部分组成,N 位相位累加器、频率控制字、相位控制字、ROM 查找表和时钟源等。频率控制字相位累加器查找表正弦波三角波方波.PLLDAC驱动&低通滤波clock截取高n位clock相位
3、控制字频率控制字相位累加器查找表正弦波三角波方波.PLLDAC驱动&低通滤波clock截取高n位clock相位控制字 图 1 DDS 结构原理图相位累加器在高频时钟下以频率控制字的字长K做累加。累加后的相位累加器值通过高位截取后变为相位控制字,相位控制字即为查找表的地址。在查找表中即可找到对应波形的多位数字输出值。这就是 DDS 基本工作原理。若要输出波形,将输出的多位二进制数字输出通过 D/A 转换输出对应的模拟电压信号,再通过一个低通滤波器输出平滑的曲线2。1.2 DDS 核心设计若要实现更高的频率分辨率和精度,共有两种方式,第一,将查找表中的波形数据取的分辨率更高,取样点的数据更多,这就
4、意味着增加等倍的存储空间;第二,增加相位累加器的位数。事实上,典型的 DDS 系统会使用非常“长”位数的相位累加器,比如 28 位、32 位甚至 36 位,来实现高精度和高分辨率的信号输出频率。在 FPGA 内部所使用的硬件资源来看,只是多使用几个寄存器,但是对其内部资源来讲,影响微乎其微。但是从其实际意义上看,可以大大提高其频率的精度和分辨率3。表1 不同情况下频率可调节范围和分辨率相位累加器位数f1(Hz)f2(Hz)24位7.15 12M29.8 50M28位0.45 12M1.86 50M32位0.028 12M0.116 50M表 1 中,f1为外部时钟输入经过倍频后的输出频率为12
5、0MHz,f2为外部时钟输入经过 PLL 倍频后的输出频率为500MHz,波形可调的最低频率即为频率的分辨率。如表 1 所示,相位累加器位数更高,其对应的频率分辨率越高,系统主频经过倍频后的频率越高,输出波形的上限频率越高。需要注意的是,查找表地址为 8 位,比如当 f1=120MHz时候,在不同累加器位数下,其可调的波形分辨率不同,但是 120M/28=468.75kHz 是一个临界值,当输出频率小于等于 468.75kHz 时候,输出的波形特征则可以完全还原查找表中的波形数据点;当输出的波形频率大于 468.75kHz 时候,频率越高,输出的波形无法还原查找表中的波形数据点,还原度越来越低
6、,波形特征越来越不明显。同样的对于f2=500MHz 时候,500M/28 1.95MHz 也是可以保持原查找表中波形数据点的最大频率4。基于 FPGA 的 DDS 信号发生器设计董殿国,侯文(中北大学 信息与通信工程学院,山西太原,030051)摘要:函数信号发生器作为信号源,广泛的应用于课堂教学,研究试验和工业生产等各个领域。通过MCU与FPGA的硬件结合方式,由MCU负责输入输出的人机交互控制,FPGA负责实现核心DDS技术。然后对输出的波形做相关性能测试实验,正弦波的THD计算和三角波的线性度计算。测试结果表明,该信号发生器参数可调范围宽,精度高,稳定可靠,具有一定的实用价值。同时说明
7、了MCU与FPGA联合使用的这种硬件框架是稳定可靠的,是可以应用到大部分的微控制系统中的,也为进一步应用提供了重要的参考依据。关键词:DDS;FPGA;MCU;信号发生器DOI:10.16589/11-3571/tn.2023.01.010wwwele169com|17电子电路设计与方案2 系统硬件设计 2.1 硬件整体方案 函数信号发生器的硬件系统主要包括 MCU 控制电路,FPGA 构成的 DDS 发生器、DAC 转换和低通滤波电路,及一些用于输入输出的器件等。按键输入和 LCD 输出显示主要由 MCU 负责控制,MCU 然后将输入的信号运算处理后发送给 FPGA,FPGA 根据输入的各种
8、参数在 ROM 表中寻址,同时输出对应控制的波形、频率和幅度的数字信号,最后经过 DA 转换为对应的模拟电压信号,在经过一个低通滤波器使得模拟电压信号变得平滑。2.2 硬件模块电路系统的硬件电路主要分为两个部分,一是系统主控电路,二是 DDS 信号发生器电路。系统主控电路包括以 STM32F103C8T6 为主控的最小系统板、四路用户按键输入、OLED 显示屏输出(SPI)、UART 通信连接上位机、硬件 SPI 连接 FPGA 负责信号数据传输,如图 2 所示。DDS 信号发生器电路,其中的 FPGA 模块的核心芯片为 Lattice LCMXO2-4000HC-4MG132,其模块上内置
9、8 路输出 LED 指示灯、4 路按键输入、4 路拨码输入和两位数码管输出灯资源。DAC 芯片采用 3PEAK 的高速 10 位 DAC 芯片 3PD5651E,采样速率 125MSPS,CMOS 数模转换器。本系统中采用 12MHz 的外部晶振经过 PLL 倍频为 120MHz小于 DAC 芯片的最大采样速率,符合使用要求。3 系统软件设计 3.1 MCU 程序流程设计MCU主控制器主要负责系统中各个子任务的任务调度,系统的程序流程如图 3 所示,系统上电后先对各个模块进行初始化,包括串口初始化、OLED 显示屏对应 SPI1 外设初始化、FPGA 的 SPI2 外设初始化、按键和 LED
10、输入输出初始化等。程序中共有两个自定义的中断源,串口接收中断和按键的外部中断,按键的外部中断用于改变波形的相关参数对应的各个全局变量;而串口接收中断用于接收来自上位机中的信息,一类是波形参数对应的全局变量同步和参数显示,另一类是接收自定义波形数据表,并且通过 SPI 硬件通信接口实时存入 FPGA 的 ROM 模块中。此处有一个关键问题,上位机中波形参数的改变与显示,硬件上波形参数的改变和显示器的显示、程序内部波形参数对应的全局变量,以及波形的实际输出参数,在程序的运行过程中,需要时刻保证这四个模块中波形参数数据的同步。即先判定数据的输入输出属性,在每一个输入模块中添加波形参数更新标志位,实时
11、更新程序中的全局变量,然后再根据参数对应的全局变量,随即更新参数更新来源模块之外的参数显示模块即可以实现四个模块的实时同步。在 MCU 主程序的主函数中,主任务即为循环判断波形参数的全局变量是否改变,若改变则对串口传输上位机显示、SPI2 对应的 OLED 显示屏显示、SPI1 对应的 FPGA 三个模块做刷新处理;若未改变,则在间隔时间大于 10s 时+5V+3V3100nFC4100nFC210uFC310uFC1AMS1117-3.3U1GND/ADJ1Vout2Vin3Vout4USB1GND5D+3D-2VCC1ID4+5VMCU_RXDMCU_TXD+3V3100nFC5CH340
12、EU2UD+1UD-2GND3RTS4CTS5TNOW6VCC7TXD8RXD9V310KEY1120.1uC64.7kR31kR7+3V3KEY1KEY2+3V31kR84.7kR40.1uC7KEY212KEY3+3V31kR94.7kR50.1uC8KEY312J112345678SPI2_SCKSPI2_MOSIOLED_RESOLED_DCOLED_CS+3V3+3V32kR1LED12kR2LED2LEDKEY1KEY2KEY3KEY4SPI1_CSSPI1_SCKSPI1_MISOSPI1_MOSIGNDGND+5VOLED_DCOLED_RESOLED_CSSPI2_MOSIS
13、PI2_SCKMCU_RXDMCU_TXDGNDLEDKEY4120.1uC94.7kR61kR10+3V3KEY4M1VBAT1PC132PC143PC154PA05PA16PA27PA38PA49PA510PA611PA712PB013PB114PB1015PB1116NRST17+3V318GND19GND20PB1221PB1322PB1423PB1524PA825TX/PA926RX/PA1027PA1128PA1229PA1530PB331PB432PB533PB634PB735PB836PB937+5V38GND39+3V340STM32F103C8T6图 2 系统主控电路18|
14、电子制作 2023 年 1 月电子电路设计与方案候做刷新处理来降低容错率。开始波形参数改变 或 间隔时间10s是模块初始化SPI1发送参数给FPGAUART发送参数给上位机OLED屏幕刷新否串口接收中断按键外部中断中断服务函数波形参数更新标志位更新开始波形参数改变 或 间隔时间10s是模块初始化SPI1发送参数给FPGAUART发送参数给上位机OLED屏幕刷新否串口接收中断按键外部中断中断服务函数波形参数更新标志位更新 图 3 MCU 程序设计流程 3.2 FPGA 模块设计在整个系统中,FPGA 模块主要负责 DDS 核心数字变频技术的实现。主要包括,PLL 模块、SPI 通讯接收模块、数据
15、转换模块、DDS 累加器模块、ROM 查找表模块、幅度变换模块等。总共例化了四个波形数据的 ROM,其 mif 文件通过 MATLAB 软件编写,然后调用 IP 读取。但是由于FPGA 内部 ROM 资源限制,只能采用相位截断方法取高 n为作为查询地址使用。FPGA 的 DDS 系统模块设计,主要由 SPI 通讯接收模块负责接收 MCU 传输的波形参数,包括波形类型、波形频率和波形幅度等。然后由数据转换模块负责将对应的波形类型,频率、相位、幅度转换为相应的频率控制字和相位控制字,最后将控制字直接输入 DDS 累加器模块中,相位累加器在 120MHz 的时钟信号下产生采样地址,通过波形类型选择选
16、择对应的 ROM 查找表模块。在 ROM 模块中存储有正弦波、三角波、方波等常见波形的 10 位数字信号量,根据波形类型查找对应的 10 位数字信号值并输出到幅度变换模块。幅度变换模块同时根据输入的幅度设定值来输出对应的 10 为数字信号量。FPGA 不同于 MCU 的串行运行机制,FPGA 内部是通过组合逻辑和时序逻辑所构成的并行运行机制的电路模块。所以在很多需要串行运行的模块中,就需要添加各种标志位或者状态机来实现。其中,SPI 通信接收模块、数据转换模块、幅度变换模块都有关键的完成标志位,方便开启下一级模块使用。3.3 上位机软件设计上 位 机 软 件 使 用 NI 公 司 的 Labview 软 件 开 发,Labview 以其使用简单、图形化的编程方式、功能模块封装度高、对各类硬件采集卡和常见的标准接口适配性高等优点而收到广大工程师和相关从业者使用。通讯方式使用串行通信 UART 串口连接,波特率 115200,停止位 1 位,无奇偶校验位。为了提高调节各类参数和数据同步的响应时间,通讯协议使用自定义方式,第一位功能码,代表此时调节的参数类型,第二位到第九位为对应的参数值,使