基于FPGA和LabVIEW任意波形发生器设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1 绪论
波形发生器是一种常用的信号源,广泛应用于通信、雷达、测控、电子对抗以及现代化仪器仪表等领域,是一种为电子测量工作提供符合严格技术要求的电信号设备。

随着现代电子技术的飞速发展,现代电子测量工作对波形发生器的性能提出了更高的要求,不仅要求能产生正弦波、方波等标准波形,还能根据需要产生任意波形,且操作方便,输出波形质量好,输出频率范围宽,输出频率稳定度、准确度及分辨率高,频率转换速度快且频率转换时输出波形相位连续等。

可见,为适应现代电子技术的不断发展和市场需求,研究制作高性能的任意波形发生器十分有必要,而且意义重大。

1.1 波形发生器的发展及现状
波形发生器的核心技术是频率合成技术,主要方法有:直接模拟频率合成、锁相环频率合成(PLL),直接数字合成技术(DDS)。

传统的波形发生器一般基于模拟技术。

它首先生成一定频率的正弦信号,然后再对这个正弦信号进行处理,从而输出其他波形信号。

早期的信号发生器大都采用谐振法,后来出现采用锁相环等频率合成技术的波形发生器。

但基于模拟技术的传统波形发生器能生成的信号类型比较有限,一般只能生成正弦波、方波、三角波等少数的规则波形信号。

随着待测设备的种类越来越丰富,测试用的激励信号也越来越复杂,传统波形发生器已经不能满足这些测试需要,任意波形发生器(AWG)就是在这种情况下,为满足众多领域对于复杂的、可由用户自定义波形的测试信号的日益增长的需要而诞生的。

随着微处理器性能的提高,出现了由微处理器、D/A以及相关硬件、软件构成的波形发生器。

它扩展了波形发生器的功能,产生的波形也比以往复杂。

实质上它采用了软件控制,利用微处理器控制D/A,就可以得到各种简单波形。

但由于微处理器的速度限制,这种方式的波形发生器输出频率较低。

目前的任意波形发生器普遍采用DDS(直接数字频率合成)技术。

基于DDS技术的任意波形发生器(AWG)利用高速存储器作为查找表,通过高速D/A转换器对存储器的波形进行合成。

它不仅可以产生正弦波、方波、三角波和锯齿波等规则波形,而且还可以通过上位机编辑,产生真正意义上的任意波形。

1.2 FPGA
FPGA是英文Field Programmable GateArray的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。

它是作为专用集成电路领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点[8]。

FPGA采用了逻辑单元数组LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出/输入模块lOB(Input/Output Block)和内部联机(Interconnect)三个部分。

FPGA的基本特点主要有:(1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。

(2)FPGA可做其他全定制或半定制ASIC电路的中试样片。

(3)FPGA 内部有丰富的触发器和I/O引脚。

(4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。

(5)FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL 电平兼容。

因此,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。

FPGA具有静态可重复编程和动态在系统重构的特性,使得硬件功能可以像软件一样通过编程来修改。

在FPGA实际应用中,设计的保密和设计的可升级是十分重要的,用单片机束配置FPGA可以很好的解决上述问题。

用单片机配置FPGA器件时,关键在于产生合适的时序。

可编程逻辑芯片的发展,特别是高速FPGA的推出,给DDS的开发应用提供了一个非常合适的契机。

利用FPGA,普通用户也可以根据需要开发自己的DDS芯片。

FPGA 一般使用HDL语言进行开发。

HDL语言软件式的硬件设计方法可以给DDS芯片的设计带来高度的灵活性,可以根据需要方便的实现所需的功能。

同时,FPGA的速度也越来越快,现在的FPGA已经可以轻松的工作在上百MHz的时钟频率之下,这样就给实现高速DDS芯片提供了有利条件。

1.3 虚拟仪器
1986年,美国国家仪器公司提出了虚拟仪器的概念。

虚拟仪器是以通用计算机作为系统控制器,由软件来实现人机交互和大部分仪器功能的一种计算机仪器系统。

虚拟仪器利用个人计算机强大的图形环境来建立虚拟仪器面板,从而完成对仪器的控制、数据分析与显示功能。

它可以代替传统仪器,改变传统仪器的使用方式,提高仪器的功能、使用效率,大幅度降低仪器价格,使用户可以根据自己的需要定义仪器的功能[10]。

虚拟仪器的出现代表着仪器发展的最新方向和潮流,是信息技术的一个重要
领域,对科学技术的发展和工业生产将产生不可估量的影响。

与传统仪器相比,虚拟仪器有以下一些特点:软件是核心,灵活性和可扩展性,性价比高,良好的人机界面,与其他设备互联的能力。

LabVlEW是美国国家仪器公司推出的基于图形编程的虚拟仪器软件,它不仅是一种开发语言,更是一个具有扩展性和通用性的软件开发平台。

LabVIEW强大的硬件驱动、图形显示能力和便捷的快速程序设计,为过程控制和工业自动化应用提供了优秀的解决方案。

同时,LabVIEW提供了功能强大的高级数学分析库,包括统计、估计、回归分析、线型代数、信号生成算法、时域和频域算法众多科学领域,可满足各种计算和分析需要。

2 系统方案设计
2.1 总体方案设计
设计方案如图2.1所示。

图2.1 方案设计图
由上位机的人机交互界面通过串口发送指令到下位机,由下位机产生波形,经过数模转换、低通滤波后输出所需要的波形。

2.2 上位机和下位机
上位机是指:人可以直接发出操控命令的计算机,一般是PC,屏幕上显示各种信号。

下位机是直接控制设备获取设备状况的的计算机,一般是PLC/单片机之类的。

上位机发出的命令首先给下位机,下位机再根据此命令解释成相应时序信号直接控制相应设备。

下位机不时读取设备状态数据(一般模拟量),转化成数字信号反馈给上位机。

在概念上控制者和提供服务者是上位机,被控制者和被服务者是下位机,也可以理解为主机和从机的关系,但上位机和下位机是可以转换的。

两机如何通讯,一般取决于下位机。

下位机一般处于底层控制,上位机可以编程后,传入下位机或者集中管理下位机,下位机在有存储控制程序的情况下,可脱离上位机工作。

在本设计中,上位机安装有用LabVIEW 开发的具有良好人机交互的信号源面板,可以完成任意波形的数据编辑、参数设置和波形数据的下载。

下位机通过串口与上位PC机构成波形产生系统。

3 上位机部分
3.1 LabVIEW软件设计
LabVIEW部分软件设计是采用图形化的方法设计的。

在前面板上控件主要有:波形选择,频率旋钮,频段调节,幅度调节。

这四部分的调节直接影响波形信号的改变,在程序框图中,每一种调节都对应一种波形参数,当前面板中相应的控件值改变时,参数也随之改变,并把这些调节参数连接起来通过串口发送出去。

其软件流程图如图3.1所示。

图3.1 LabVIEW软件设计流程图
3.2前面板设计
如图3.2所示,前面板可以操作界面:波形选择,频率控制,占空比调节,幅度调节。

图3.2 LabVIEW软件前面板图
3.3 程序框图设计
3.3.1 程序设计
如图3.3所示,程序框图提供VI 的图形化源程序。

图3.3 LabVIEW软件程序框图
在程序框图中对VI 编程,以控制和操纵定义在前面板上的输入和输出功能。

可以看到程序框图中包括了前面板上的开关、旋钮、数值显示等控件的连线端子,还有一些CIN节点,if循环结构及程序的循环结构。

整个程序框图设置了一个While Loop 循环,使它持续工作下去。

由电源开关控制这一循环的结束。

整个程序主要有以下几个模块:波形类型模块;频率选择模块;频段选择模块;幅值选择模块;串口发送模块设计。

3.3.2波形类型设计
波形类型模块如图3.4所示。

图3.4 波形类型设计图
波形类型模块的主要功能是得到波形参数当前面板中的三角控件按下时,参数为0,正弦控件按下时参数为1,方波控件按下时参数为2。

首先,由于三角,方波,正弦都是输入控件,在程序框图中相当于普通编程语言的输入参数,只有输出端子,没有输入端子,且输出值为布尔量,通过布尔转(0,1)VI,可以把输出值转换为0 或1,分别送到一CIN节点,对其编程如图三角输入量设为 a;方波输入量设为 b;正弦输入量设为 c;输出为d。

CIN节点功能就是当a=1时,输出d=0,表示三角波;当b=1时,输出d=2,表示方波;当c=1时,输出d=1,表示正弦波。

之后把d的值送至一数值转十进制字符VI,等待打包发送。

CIN节点程序如下:
if(a==1)
d=0;
else
if(b==1)
d=2;
else
if(c==1)
d=1;
3.3.3频率选择模块设计
频率选择模块如图3.5所示。

图3.5 频率选择模块设计图
频率选择模块的主要功能是由频段按钮与频率调节选钮的的值作为输入计算出频率值并且得到频率系数和频段参数。

频率旋钮调节输出是一0~359之间的数值假设为a,频段的判断方法与波形选择模块相似,可分别用0~6七个数字来分别表示2M~2Hz这七个频段,则频率的值为pinlv=205+a*5/(10^n)Khz。

这些数值转换也在一个CIN公式接点内完成。

3.3.4峰峰值调节设计
如图3.6所示,峰峰值的调节是由幅侄调节旋钮完成的,主要功能是调节信号的峰峰值大小,峰峰值的调节输出直接送到峰峰值的显示控件,范围为0~8.5V,步进为0.1v。

但其参数为真实值的十倍,以0~85代表0~8.5v之间的数值。

图3.6 峰峰值调节设计图
3.3.5 串口发送设计
串口的发送是很重要的一部分,主要功能是完成把波形指令发送到串口上。

如图3.7所示,串口采用的是LabVIEW自带的串口发送模块VISA,可以很方便的调用。

在LabVIEW的VISA面板中有VISA配置、VISA读取、VISA写入、VISA关闭、VISA打开等关于VISA串口操作的模块。

图3.7 串口配置与发送设计图 首先要先调用一个VISA 配置VI ,此VI 的功能是完成串口的配置,如波特率,数据位数,有无奇偶校验等,在这里设置的是波特率为9600,一位起始位,八位数据位,一位停止位,无奇偶校验,无握手协议。

其次,调用一VISA 写入VI ,此VI 是将连接
好的一包数据按指定格式,速率发送的串口上。

最后,调用VISA 关闭VI ,关闭串口。

4 下位机部分
4.1 DDS原理
直接数字频率合成即DDS,是目前最新的产生频率源的频率合成技术。

目前用的最多的是查表法。

这种合成技术具有相对带宽很宽,频率切换时问短(ns级),分辨率高(uHz),相位变化连续,低相位噪声和低漂移,数字调制功能,可编程及数字化易于集成,易于调整等一系列性能指标,远远超过了传统频率合成技术所能达到的水平,为各种电子系统提供了优于模拟信号源性能的高质量的频率源。

目前它正朝着系统化、小型化、模块化和工程化的方向发展,性能越来越好,使用越来越方便,是目前应用最广泛的频率合成器之一。

其基本结构主要由相位累加器、波形ROM、D/A转换器和低通滤波器四个部分构成,如图4.1所示。

图4.1 DDS的结构原理图
DDS的结构表明:DDS输出信号的频率分辨率是由相位累加器的位数决定;相位分辨率由ROM的寻址位数决定;幅值分辨率由D/A的位数决定。

DDS的核心就是相位累加器,利用它来产生信号递增的相位信息,整个DDS系统在统一的参考时钟下工作,每个时钟周期相位累加器作加法运算一次。

加法运算的步进越大,相应合成的相位值变化越快,输出信号的频率也就越高。

对于幅值归一化的正弦波信号的瞬时幅值完全由瞬时相位来决定,相位变化越快,信号的频率越高。

ROM 表完成将累加器相位信息转换为幅值信息的功能。

再由D/A完成数字抽样信号到连续时域信号的转换,D/A输出的台阶信号再经低通滤波器平滑可以得到精确的连续正弦信号波形。

用相位累加器输出的数据作为波形存储器的相位取样地址,这样就可以把存储在波形存储器内的波形抽样值(二进制编码)经查找表查出,完成相位到幅值转换。

波形存储器的输出送到D/A转换器,D/A转换器将数字量形式的波形幅值转换成所要求合
成频率的模拟量形式信号。

低通滤波器用于滤除不需要的取样分量,以便输出频谱纯净的正弦波信号。

直接数字频率合成技术是根据奈奎斯特取样,从连续信号的相位驴出发将一个正弦信号取样、量化、编码,形成一个正弦函数表,存于ROM中。

合成时,通过改变相位累加器的频率控制字,来改变相位增量,而相位增量的不同将导致一个周期内取样点的不同,改变频率。

在采样频率不变的情况下,通过改变相位累加器的频率控制字,将这种变化的相位/幅值量化的数字信号通过D/A变换及低通滤波器(LPF)即可得到合成的相位变化的模拟信号频率。

根据奈奎斯特采样定理,对于任意一个频率带宽为f的连续信号f(t),可以用一系列离散的取样值f(t),f(t+T),f(t+2T)、…表示,只要这些取样点的时间间隔T小于1/2f,则这样的表示是完整的,包含了连续信号f(t)的全部信息。

因此,对于一个周期的正弦波连续信号,可以沿其相位轴方向,以等量的相位间隔对其进行相位/幅值取样,得到一个周期的正弦波信号的离散相位幅值序列。

由于这个取样过程所得到的取样幅值是随正弦波信号幅度连续变化的,仍然是一个模拟量,根据合成波形的精度要求,可以采用最接近的整数值来表示,即对模拟幅值进行量化,量化后的幅值采用相应的二进制数据进行编码。

这样就把一个周期的正弦波连续信号转换成为一系列离散的二进制表示的数字量,然后通过一定的手段固化在ROM中,每一个存储单元的地址即是相位取样地址,存储单元的内容就是已经量化的正弦波形幅值。

这样的ROM 就构成了一个与幼周期内相位取样相对应的正弦函数功能表,因它存储的是正弦波形幅值,所以又称作正弦波形存储器。

在直接数字合成器中,正弦波形存储器的字节数决定了相位量化误差。

DDS频率合成器具有以下优点:(1)频率分辨率高,输出频点多,可达2N个频点(假设DDS相位累加器的字长是N);(2)频率切换速度快,可达US量级;(3)频率切换时相位连续;(4)可以输出宽带正交信号;(5)输出相位噪声低,对参考频率源的相位噪声有改善作用;(6)可以产生任意波形;(7)全数字化实现,偏于集成,体积小,重量轻。

4.1.1 相位累加器
如图4.2所示,相位累加器由一个N位的加法器和N位的寄存器构成,通过把上一个时钟的累加结果反馈回加法器的输入端实现累加功能,从而使输出结果每一个时钟周期递增频率控制字K。

图4.2 相位累加器结构
4.1.2 波形ROM
如图4.3所示,当ROM地址线上的地址(相位)改变时,数据线上输出相应的量化值(幅度量化序列)。

需要指出的是因为波形ROM的存储容量有限,相位累加器的字长一般不等于ROM地址线的位数。

图4.3 波形ROM示意图
4.1.3 D/A转换器
D/A转换器将波形ROM输出的幅度量化序列转化成对应的电平输出。

将数字信号转换成模拟信号。

4.1.4 低通滤波器
由于输出波形是一个阶梯波形,必须经过抗镜像滤波,滤除输出波形中的镜像才能得到一个平滑的波形。

抗镜像滤波器一般是一个低通滤波器,它要求在输出信号的带宽内有较平坦的幅频特性,在输出镜像频率处有足够的抑止。

4.2 基于FPGA的DDS模块
早期的DDS系统使用分离的数字器件搭接,随着整个电路系统运行频率的升高,采用分离器件构建的DDS电路有其自身无法克服的缺点,主要表现在电磁兼容和系统工作频率上。

后来出现的专用DDS芯片极大的推动了DDS技术的发展,但专用DDS芯片价格昂贵,且无法实现任意波形输出,近来,CPLD及FPGA的发展为实现DDS提供了更好的技术手段。

FPGA的应用不仅使得数字电路系统的设计非常方便,并且还大大缩短了系统研制
的周期,缩小了数字电路系统的体积和所用芯片的品种。

而且它的时钟频率已可达到几百兆赫兹,加上它的灵活性和高可靠性,非常适合用于实现波形发生器的数字电路部分。

用FPGA设计DDS电路比采用专用DDS芯片更为灵活。

因为,只要改变FPGA中的ROM 数据,DDS就可以产生任意波形,因而具有相当大的灵活性。

相比之下FPGA的功能完全取决于设计需求,可以复杂也可以简单,而且FPGA芯片还支持在系统现场升级,虽然在精度和速度上略有不足,但也能基本满足绝大多数系统的使用要求。

用FPGA可以非常方便的实现DDS系统的数字电路环节,且可现场编程进行电路的修改。

在DDS系统中,FPGA的主要完成:(1)保存频率字;(2)保存相位字;(3)构成相位累加器,产生波形RAM的地址;(4)形成波形RAM。

图4.4 FPGA设计框图
系统可实现常规固定波形输出和任意波形输出。

其中相位累加器是一个带有累加功能的32位加法器,它以设定的频率控制字K作为步长来进行加法运算,当其和满时清零,并进行重新运算。

相位寄存器是一个8位寄存器,它接受相位控制字数据并进行寄存,当下一个时钟到来时,输入寄存的数据,对输出波形的频率和相位进行控制。

波形查找表ROM是DDS的关键部分,设计时首先需对时域波形进行采样,将采样的波形数据储存到波形查找表ROM中,每一位地址对应一个波形点的数值,任意波形数据寄存器接受任意波形数据。

整个系统各模块是在同步时钟信号CLK的控制下协调工作的。

4.3 任意波形发生器的FPGA实现
为了实现任意波功能,我们可以用FPGA按照DDS的基本原理和结构设计来实现一个任意波形发生器。

用FPGA实现的任意波形发生器还是基于DDS的基本原理,所以DDS 的几个基本部分都是应当具备的。

4.3.1 串口接收
串口接收正确与否决定了以后产生波形是否正确,作用是把串口上的串行数据接收并转换成并行数据,串口接收模块如图4.5所示。

图4.5 串口接收图
串口接收输入有两个,一个为时钟输入,另一个为串行数据输入;输出也有两个一个是转换好的并行数据,一个是转换结束标志。

数据在串口的发送中先发送低位时先接受到的就是低位,在发送8位比特的过程中还会出现高四位与低四位的互换。

在本设计中实现方法是每当有8个时钟输入clk,且接收数据rx全为0时,再计16个clk,把串口值rx存入一个9位寄存器tmpreg8的低位,并此后每接一个二进制数据就tmpreg8的数据左移一位,一直接够八位后,sig信号为一个下降沿,并把tmpreg8的低八位给输出q。

4.3.2 寄存器设计
输入寄存器模块主要是为了接收单片机写入的频率控制字和相位控制字。

在设计中DDS采用了32位的相位累加器和16位的相位控制器。

当使能为高,异步清零也为高的时候,CLK的上升沿将数据线上的8bit数据锁存进该模块中,当锁存完4个字节的数据后,自动将这四个字节按照先写入的在高位的顺序组合成一个32bit的数输出在DOUT[31..O]上。

该模块的VHDL语言描述如下:
library ieee;
use ieee.std_logic_l164.all;
use ieee.std_logic_unsigned.all;
entity 1nputregaaa is
port(din:in std logic_vector(7 downto 0);
dout:out std_logic_vectoF(31 downto 0);
clr:in std_logic;
en:in std_logic;
clk:in std_logic);
end entity;
architecture behav of inputregaaa is
signal temp:std_logic_vector(23 downto O);
type nature is range 0 to 3;
begin
process(clk,en)
variable step:nature:=O;
begin
if(clr=’0’ then
dout<=’00000000000000000000000000000000’;
elsif(clk’event and clk=’l’)then
if(en=’l’)then
case step is
when O=>temp(23 downto 16)<=din;
step:=step十l;
when l=>temp(15 downto 8)<=din;
step:=step十l;
when 2=>temp(7 downto 0)<=din;
when 2=>temp(7 downto O)<=din;
step:=step十l;
when 3=>dout<=temp&din;
step:=step十l;
end case:
else
step:=O;
end if;
end if;
end process;
end behave;
4.3.3 地址发生器设计
地址发生器模块包含相位累加器和相位控制器,其中相位累加器是一个带有累加功能的32位加法器。

该模块有三个输入一个输出, 共有12位地址线,如图4.6所示。

根据频率系数n的不同,产生不同步进的地址间隔。

图4.6 地址发生器模块
累加器采用流水线结构来实现,简单而言,就是把一个位数很长的加法,拆成N 个位数较短的加法,在N个时钟周期内做完,然后输出结果,N就是流水线的级数。

采用流水线结构以后,由于加法器的字长变短了,对于FPGA来讲,加法器字长变短,对于提高工作频率是十分有帮助的。

当然,流水线结构的使用,并不能无限制地提高电路的工作速度,这是因为,流水线结构是一种用电路规模换取工作速度的设计方法,提高工作速度的代价是电路设计的复杂化。

流水线结构累加器要比普通的累加器结构复杂得多,由于累加不在一个时钟周期内完成,内部需要大量的寄存器保存中间变量。

随着流水级数的提高,电路复杂程度将大大增加,当电路的复杂程度达到一定量级的时候,流水线所带来的性能改进,和电路本身由于结构复杂所带来的性能下降相抵消的时候,流水线结构就不再具有提高电路工作频率的作用了。

采用基于流水线技术的加法器与寄存器结合在一起的相位累加器设计。

八位相位累加器的四级流水线设计,加法器采用5级锁存,4级加法,最前的一级实现2位数的相加,后面3级加法器实现2位数与一个进位的相加,整个加法器的速度由2位加法器决定。

4.3.4 波形数据存储器设计
波形数据ROM就是存放波形数据的存储器,如图4.7所示。

图4.7 ROM模块
大多波形发生器产品都将波形数据存放在外部的ROM中,这样使得各部分结构清晰,测试、维护更加方便,但由于ROM本身读取速度慢的缺点,使得整个系统性能下降,工作频率F降,为了解决以上问题,本设计使用的是用FPGA设计出ROM,在FPGA中存放波形数据。

当在波形ROM中固化所需波形的一个周期的幅度值后,由地址发生器产生的地址对波形ROM寻址,依次可取出送至D/A转换及滤波后即可得到所需的模拟波形输出。

4.3.5 D/A转换器电路的设计
从波形ROM中读出的幅度量化数据还只是一个数字信号,要得到最后的输出信号必须经过数模转换器。

因此在波形ROM之后要设计一个D/A转换电路。

将数据用时钟的上升沿打入输入锁存器,相应的模拟数据就会立即更新。

DDS输出的幅度量化序列经过波形量化序列转化成了差分信号。

再经过一个低通滤波器,就可以得到一个光滑的波形。

相关文档
最新文档