你的位置:EETOP 赛灵思(Xilinx) 社区 >> >> 全部 >> 详细内容

基于FPGA的DDS信号发生器设计

发布者:jackzhang 时间:2015-07-24 19:55:10

0 引 言
   
信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波的电路被称为函数信号发生器。函数信号发生器的实现方法通常是采用分立元件或单片专用集成芯片,但其频率不高,稳定性较差,且不易调试,开发和使用上都受到较大限制。随着可编程逻辑器件(FPGA)的不断发展,直接频率合成(DDS)技术应用的愈加成熟,利用DDS原理在FP-GA平台上开发高性能的多种波形信号发生器与基于DDS芯片的信号发生器相比,成本更低,操作更加灵活,而且还能根据要求在线更新配置,系统开发趋于软件化、自定义化。本文研究了基于FPGA的DDS信号发生器设计,实现了满足预定指标的多波形输出。


1 DDS基本原理

    DDS建立在采样定理基础上,首先对需要产生的波形进行采样,将采样值数字化后存入存储器作为查找表,然后通过查表读取数据,再经D/A转换器转换为模拟量,将保存的波形重新合成出来。DDS基本原理框图如图1所示。

    除了滤波器(LPF)之外,DDS系统都是通过数字集成电路实现的,易于集成和小型化。系统的参考时钟源通常是一个具有高稳定性的晶体振荡器,为各组成部分提供同步时钟。频率控制字(FSW)实际上是相位增量值(二进制编码)作为相位累加器的累加值。相位累加器在每一个参考时钟脉冲输入时,累加一次频率字,其输出相应增加一个步长的相位增量。由于相位累加器的输出连接在波形存储器(ROM)的地址线上,因此其输出的改变就相当于查表。这样就可以通过查表把存储在波形存储器内的波形抽样值(二进制编码)查找出来。ROM的输出送到D/A转换器,经D/A转换器转换成模拟量输出。

2 系统总体方案设计
    该设计以FPGA开发平台为核心,将各波形的幅值/相位量化数据存储在ROM内,按照设定频率,以相应频率控制字k为步进,对相位进行累加,以累加相位值作为地址码读取存放在存储器内的波形数据,经D/A转换和幅度控制、滤波即可得到所需波形。波形发生器采取全数字化结构,用硬件描述语言Verilog设计实现其频率可调可显示。经开发平台的D/A转化和外加滤波整形处理波形数据,理论上能够实现任意频率的各种波形。系统总体设计方框图如图2所示。

    系统按工作原理和控制对象的先后分为三个功能单元:波形数据产生单元、D/A转化单元和滤波整形处理单元。波形数据产生单元除具有波形数据输出功能外,还有频率设置和输出显示功能。波形信号频率可设置范围为0~99 999 999 Hz,系统时钟采用外接晶体振荡器40 MHz时钟脉冲,频率稳定度优于10-4输出采用8位LED数码循环动态显示。D/A转换单元负责对从ROM表里读取的波形数据进行D/A转换,对D/A转换器件的选用从建立时间、位数、转化误差和转换时间等四个方面考虑。滤波整形处理单元完成对D/A转换的模拟波进行平滑,滤除杂波和高频干扰,补偿频带损耗和幅度损失,最终输出低误差、高质量、满足题设要求的波形。

3 系统功能单元实现
3.1 波形数据产生单元

    波形数据产生单元是信号发生器设计的主体。在此,采用DDS原理设计的信号发生器能完成三种波形(正弦、三角和方波)数据的产生,而且根据控制信号还可完成选定波形指定频率的输出。波形数据产生单元按功能实现上的相互联系可划分为频率控制字生成模块、相位累加器模块和波形数据ROM表模块,如图3所示。其中,频率控制字生成模块可根据输入产生指定频率字,同时显示输入频率数字。相位累加器模块负责对所选波形的相位寻址,以频率控制字作为步长反复进行累加运算。波形数据ROM表模块存放三种波形的幅值/相位量化值,通过地址选择相应波形的数据。

    系统输入控制使用4×4键盘.键盘主要按键功能介绍如下:
    “0~9”:数字键,设定信号频率;
    “确定”:用于对波形信号设置的确认,波形信号的设置必须“确定”后才有效;

 “←”:删除已输入信号频率数字的最后一位,用于修改设置的频率;
    “清零”:将频率数字快速全部清零;
    “↑”:步进增大控制;
    “↓”:步进减小控制。
    设定频率输出范围为1 kHz~10 MHz,频率步进为50 Hz。系统输出采用8个LED数码管,以扫描方式显示(单位为Hz)频率数字。根据DDS原理,以步进值50Hz作为频率控制字1,那么最大值10 MHz对应的频率控制字为200 000,用18位二进制数值就可以表示(218>200 000)。从抽样值恢复出原波形数据,理论上每个周期波形数据至少抽取2个点,考虑到实际应用时受频率损耗、线间串扰等因素的限制,该设计采用22 b的频率控制字和相位累加器,4 Kb的8位波形ROM表,取相位累加器输出的高12 b寻址波形数据,三种波形按幅值/相位对应关系分别存储782个数据。故各波形数据单位周期有800 768(782×210)个相位状态,完全满足任一波形在单位周期内取4个幅值点的要求,可保证即使输出最大频率的波形仍能达到较好的效果。波形选择功能 由两位开关组合实现,共有四种状态,其中三组用来表征不同的波型,另一组留作扩展波形用。
3.2 D/A转换单元
    数/模转换单元是继波形数据产生单元之后,将数字量形式的波形幅值转换成所要求的合成频率的模拟量形式信号。DAC输出信号实际上是阶梯模拟信号,需在数 /模转换后利用低通滤波器对波形进行平滑处理。在此,采用ADI公司生产的单片双8位CMOS乘法数/模转换器AD7528,线性度达到1/2,转换时间 达到纳秒级,可以很准确地进行10 MHz信号的量化运算。
3.3 滤波处理单元
   
滤波器是一种能通过有用频率信号 而同时抑制(或衰减)无用频率信号的电子装置。由于运算放大器具有近似理想的特性,且可以省去电感,得到接近理论预测的频率响应特性。构成有源滤波电路后 还具有一定的电压放大和缓冲作用,并能减小体积。综合考虑,系统采用运算放大器SL560构成二阶低通滤波器。

4 系统功能仿真和验证分析
4.1 频率控制字生成模块仿真与分析
   
频 率控制字的生成直接影响着波形数据的寻址,该模块负责快速记录并实时显示输入的频率数字,准确计算得到相应的频率控制字。系统键盘为高速动态扫描(频率为 200Hz),采用状态机设计,设置了按键去抖动功能。在FPGA开发平台对该模块进行功能验证,整体无误操作产生,几乎没有时滞效应,按键的防抖动效果 也良好,达到了预期的目的。
4.2 相位累加器模块仿真与分析
   
相位累加器用于实现相位累加,并存储其累加结果。当前,相位累加器的值和时钟周期到来后的相位累加器的值相差k(k为频率控制字)。该模块的仿真波形如图4所示。

4.3 实验波形观测与误差分析
    信号发生器功能验证无误,用示波器观测实验波形如图5所示。

    检测输入频率为0~10 MHz时,波形形状均良好,未出现明显失真。计算理论误差为0.095%,在实测中发现,波形数字的误差相对很小,不足0.1 %。由于滤波整形电路存在高频耦合通路,产生线间串扰,对滤波效果形成了不利影响,因此滤波器设计必须满足频带宽,截止特性好,抗干扰性强等特性。


最新课程

  • 深入浅出玩儿转FPGA

    本视频基于Xilinx公司的Artix-7FPGA器件以及各种丰富的入门和进阶外设,提供了一些典型的工程实例,帮助读者从FPGA基础知识、逻辑设计概念

  • 从零开始大战FPGA基础篇

    本课程为“从零开始大战FPGA”系列课程的基础篇。课程通俗易懂、逻辑性强、示例丰富,课程中尤其强调在设计过程中对“时序”和“逻辑”的把控,以及硬件描述语言与硬件电路相对应的“

  • Verilog基础及典型数字

    课程中首先会给大家讲解在企业中一般数字电路从算法到流片这整个过程中会涉及到哪些流程,都分别使用什么工具,以及其中每个流程都分别做了