当前位置:
文档之家› 一种高精度三角波发生器的设计
一种高精度三角波发生器的设计
一种高精度三角波发生器的设计
The design of high precision triangle wave signal generator
(中国工程物理研究院电子工程研究所)丁 勇 徐 晶 DING YONG XU JING 摘要:本文介绍了一种高精度三角波发生器的设计,适用于对信号线性度要求较高的电子设 备。该信号发生器基于 DDS 技术,采用通用的数字化平台和 FPGA/单片机的结构,具有性能 稳定、扩展性强的优点。在硬件部分描述了电路原理、工作流程及器件选型,并重点讨论了 单片机、高速 D/A、可编程低通滤波器等部分电路的设计。在软件部分详细介绍了三角波发 生器,FPGA 与单片机的接口等单元的 VHDL 语言实现。 关键词:信号;线性度;硬件;软件 中图分类号:TP346 文献标识码:A Abstract:In this paper, we discuss the design of high precision triangle wave signal generator, which can be used in some electric devices with the need for high linear signal.The signal generator is based on DDS technique, use universal digital frame and FPGA/MCU structure, with high stability and expansibility. In the hardware part, circuit principle, work flow and device selection are described. In addition, MCU circuit, high speed D/A converter and programmable low pass filter are introduced especially. In software part, the design of triangle wave signal generator, interface between FPGA and MCU based on VHDL are introduced. Keywords: Signal; Linearity; Hardware; Software
R2’
R1
R1’
AD8066
C1
+ -
三 角 波 信 号
图 3 高速 D/A 部分的电路图 高速 D/A 的输出还需接平滑滤波器,以提高三角波信号的线性度,降低 D/A 时间离散和 幅度离散对其线性度的影响。根据三角波调制信号的频谱特性,低通滤波器的截止频率取为 调制周期 fm 的 20 倍左右。因此,调制周期 fm 为 227.5kHz151.7Hz 时,可编程低通滤波器
1 引言
在雷达、 通信等领域的电子设备中, 常需要高精度的波形信号用作调制信号或基准信号。 传统方法是用模拟器件构成振荡源来产生,但稳定度差,调试困难。近年来,随着可编程器 件和软件技术的发展, 可采用 DDS 技术来生成高精度的波形信号, 其硬件平台能实现通用化、 标准化和模块化,而功能和参数可通过软件编程来设定和修改,具有稳定、灵活的优点。本 文介绍的高精度三角波发生器,具有很好的线性度,能满足高精度设备的需求,已在雷达中 设备中得到应用,用于 VCO 调制信号的产生。
F P G A 接 口
P0 ALE WR RD
图 2 单片机部分的电路图 高速 D/A 的采样率越高,分辨率越高,输出的信号线性度越好,但采样率和分辨率的提 高会带来技术难度和成本的提高。高速 D/A 采用 AD 公司的 AD9754AR,40MSPS 采样率,14 位 分辨率,能满足 VCO 调制信号对其线性度的要求。AD9754AR 采用差分电流输出接口,以抑制 共模干扰,通过运放将电流转换成电压输出。高速 D/A 部分输出的电压范围为 5V1.5V,为 了减小电压波动和噪声对调制信号线性度的影响,采用了低噪声运放和精确基准电压源。运 放采用 AD8066,150MHz 带宽,5V24V 工作电压。基准电压源采用 REF195ES,5V,精度2mV。 高速 D/A 部分的电路如图 3 所示。
FPGA
XC2V80
单片机
SST89V564RD
RS422 接口
看门狗
图 1 三角波发生器的硬件结构框图 硬件的核心为 FPGA 和单片机:FPGA 负责高速信号处理,如三角波信号的产生、分频系 数的计算等;单片机负责逻辑控制和接口,如分频系数的设置、频率的变化规律控制等,并
1
能通过 RS422 接口输入外部控制信号。 单片机与 FPGA 之间采用 8 位数据/地址复用总线接口, 通过访问特定地址的寄存器来实现逻辑控制和数据的读取。 FPGA/单片机的硬件结构能充分发 挥 FPGA 速度高、单片机控制能力强的优点,取长补短,灵活性强,成本低。 FPGA 选用 Xilinx 公司的 XC2V80,内含 512 个 Slices,16K 位 RAM。单片机选用 SST 公 司的 SST89V564RD,64K Flash 编程空间,8K 数据空间,并带有 SPI 串口,与可编程低通滤 波器的数字电位器直接通讯, 完成滤波器截止频率的设置。 SST89V564RD 的工作电压为 3.3V, 可与 FPGA 进行直接相连,不需进行电压转换。RS422 接口采用 MAXIM 公司的 AD844E,全双工 工作,既可输入控制数据,也可通过该接口实现 SST89V564RD 的在线编程和在线仿真。单片 机部分的电路如图 2 所示。
+5V +3.3V 2k AVDD DVDD F P G A 接 口 AD9754 • • • DB0 • • • DB13 CLK IOUTA IOUTB +9V 25 250 C 25 250 2k AD8066 +9V AD8066
+
+
C2 +9V
+9V
REF195 Vin Vout 1uF
R2
2
的截止频率应为 4.55MHz3.03kHz。 可编程低通滤波器采用二阶巴特沃斯低通滤波器的结构, 采用可编程电阻 R1’、R2’调整滤波器的截止频率。截止频率计算公式为:
0
1 ( R1 R1' )( R 2 R 2' )C1C 2
取 C1=C2=680pF , (R1+R1’)=(R2+R2’) , 则 电 阻 (R1+R1’) 和 (R2+R2’) 的 调 整 范 围 约 为 5075k。选择 AD 公司的 AD5207BRU100 双数字电位器(100k)作为可变电阻 R1’、R2’, 256 级抽头,滑动片固定电阻 50,因此 R1=R2=0。fm 的变化范围为 227.5kHz151.7Hz,与 电阻(R1+R1’)和(R2+R2’)的关系式为:
2 硬件组成
该三角波发生器基于 DDS 原理,能产生 227.5kHz151.7Hz 的高线性度三角波信号,其 频率可按递增、增减等规律变化,主要由 FPGA、高速 D/A、单片机和 RS422 接口等电路组成。 其硬件结构框图如图 1 所示。
高速D/A 电路 可编程低通 滤波器 三角波 信号 控 制 信 号
AD5207 数 字 电 位 器 CS CLK SDI SDO SST89V564RD #SS SCK 单 片 MOSI 机 MISO RXD TXD MAX488E A RO RS422 B 接口 Y DI Z MAX813L RST P1.0 RESET 看门狗 WDI
120
ቤተ መጻሕፍቲ ባይዱ
控制 信号 反馈 信号
R1 R1' R2 R2' 1 40C1 f m
由于数字电位器只有 256 级抽头,而 fm 的取值有 1500 个,R1’和 R2’只能取接近值,会 对调制信号的线性度有一定的影响, 但这种影响不会大。 同时也可采用使 R1’R2’, (R1+R1’) (R2+R2’)接近上述计算值的方法,来减小离散电阻值的影响。
3 软件设计
FPGA 使用 VHDL 语言编程,实现三角波发生、分频系数计算、单片机接口等功能。三角 波发生器采用 24 位累加器, 提高运算精度, 截取高 14 位输出给高速 D/A, 其 VHDL 程序如下: WAVEP:process (CLK) begin if CLK ='1' and CLK'event then if DIR='0' then if (NOT(WAVE)) < STEP then DIR <= '1'; else WAVE <= WAVE + STEP; end if; else if WAVE < STEP then DIR <= '0'; else WAVE <= WAVE - STEP; end if; end if; DBBUF <= WAVE(23 downto 10); end if; end process WAVEP; 其中 DIR 为三角波的上升沿、下降沿控制,STEP 为累加步长,由分频系数 n 计算出来。 在 FPGA 中,除法的实现比较困难,STEP 的计算采用了比较简单的查表法。 FPGA 与单片机之间采用总线接口, 需在 FPGA 中设计一个总线接口模块,实现单片机三总 线信号的编码。P0 为单片机的数据/低 8 位地址总线,ALE 为地址锁存使能信号,WR 为写信 号,RD 为读信号。由于在总线应用时,单片机的 P0 口是作为地址/数据总线分时复用的,因此 应在总线接口模块中设计一个三态缓冲器,实现 P0 口的三态接口。 其读写时序为: 在读/写周 期开始后, 单片机把低 8 位地址送到 P0 口总线上,利用 ALE 下降沿可将低 8 位地址锁存于 FPGA 的地址锁存器中; 然后根据读/写信号的状态读写外部数据,把数据送到 P0 口总线上; 数据读