函数波形发生器

2024-06-03

函数波形发生器(共8篇)

函数波形发生器 篇1

泰克公司推出更易于使用的新系列任意波形/函数发生器AFG3000C,并增加了两种50MHz新机型。AFG3000C系列的所有机型现都支持有源LCD显示器,可让用户能够更轻松地查看波形参数和波形。

通过增加50MHz机型,泰克公司现在具有业内广泛和全面的任意波形/函数发生器产品,带宽范围10~240MHz,采样率最高2GS/s,电压幅度最高20Vp-p。AFG3000C系列在AFG3000B系列的易用性和灵活性基础上,提供了大尺寸和色彩明亮的显示屏、针对关键参数的专用前面板按钮以及双输出功能。

AFG3000C机型的双输出功能不仅相当于两个信号发生器,而且能够轻松进行同步。为帮助生成任意波形,AFG3000C系列在出厂时预装了ArbExpress软件,使用该PC软件可以无缝导入来自任意泰克示波器或者由标准函数、公式编辑器和波形数学运算定义的波形。

更多信息,请关注泰克官方微博:@泰克科技

函数波形发生器 篇2

湖北轻工职业技术学院 2011年3月4日 湖北轻工职业技术学院 电子设计与制作综合实训

目录

第一章 概述..............................................................................................................................2 第二章 万用表组装与调试的目的与意义..............................................................................5 第三章 电路调试与制作..........................................................................................................7

3.1万用表的种类............................................................................错误!未定义书签。3.2万用表的结构特征....................................................................错误!未定义书签。第四章 指针式万用表最基本的的工作原理..........................................................................7

4.1MF47型万用表的工作原理...............................................错误!未定义书签。4.2MF47万用表电阻档工作原理.............................................................................9 第五章 总结与体会..................................................................................................................9 第六章 附录............................................................................................................................10

第一章 概述

1.1 引言

电子设计的必由之路是数字化,这已成为共识。在数字化的道路上,我国的电子技术经历了一系列重大的变革。从应用小规模集成电路构成电路系统,到广泛地应用微控制器或单片机(MCU),在电子系统设计上发生了具有里程碑意义的飞跃。电子产品正在以前所未有的速度进行着革新,主要表现在大规模可编程逻辑器件的广泛应用。在可编程芯片CPLD(复杂可编程逻辑器件)和FPGA(现场可编程门阵列)上实现电子系统的设计,必将成为今后电子 湖北轻工职业技术学院 电子设计与制作综合实训

系统设计的一个发展方向。所以电子设计技术发展到今天,又将面临另一次更大意义的突破,即CPLD/FPGA在EDA(电子设计自动化)基础上的广泛应用。本设计将采用基于VHDL的EDA设计来实现波形发生器的各种功能。

1.2

EDA技术的涵义EDA是电子设计自动化(Electronic Design Automation)的缩写。它是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计电子系统到硬件系统的一门新技术。EDA技术可以实现逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化,逻辑布局布线、逻辑仿真。完成对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片。

EDA的工程设计流程电子设计的全过程分为物理级、电路级和系统级三个设计层次,涉及的电子系统从低频、高频到微波,从线性到非线性,从模拟到数字,从通用集成电路到专用集成电路构造的电子系统。EDA技术采用系统级的设计方法,其设计流程如图1所示。

图1 EDA的工程设计流程图

①源程序的编辑:利用文本编辑器或图形编辑器,将设计用文本方式或图形方式表达出来。常用的源程序输入方式有原理图输入、HDL文本输入和状态图输入。

②逻辑综合和优化:逻辑综合的功能是将软件描述与给定硬件结构联系起来,也就是HDL、原理图或状态图的描述,针对给定硬件结构组件进行编译、优化、转换和综合,最终获得门级电路甚至更底层的电路描述文件。

③目标器件的布线/适配:适配器的功能是将逻辑综合后产生的网表文件配置到指定的目标器件中,并产生最终的下载文件。

④目标器件的编程/下载:如果编译、综合、布线/适配和行为仿真、功能仿真、时序仿真等过程都没有发现问题,也就是说满足原设计的要求,这时就可以通过编程器或下载电缆将布线/适配器产生的配置/下载文件载入目标芯片FPGA或CPLD中。湖北轻工职业技术学院 电子设计与制作综合实训 多功能波形发生器的设计

2.1多功能波形发生器多功能波形发生器采用FPGA器件作为核心控制部件,精度高稳定性好,得到波形平滑,特别是由于FPGA的高速度,能实现较高频率的波形。控制上更方便,可得到较宽频率范围的波形输出,步进小。波形数据使用Matlab计算,Matlab能对数据进行四舍五入,得到的数据误差较小,且编程简单,修改容易,调用方便。计算正弦波及指定函数波的N点采样值,然后写入到ROM中待用。通过预置FPGA的分频系数以及改变相位进步实现对输出频率的调节,并可以等步进调频。幅度调节采用高精度的电位器调节。湖北轻工职业技术学院 电子设计与制作综合实训

第二章 单元电路分析与设计

输出信号频率的产生。输出信号的频率由触发信号的频率决定,触发信号的频率由50MHZ的信号分频率得到,分频率系数由选择模块产生。本文设计的波形频率xfo从100-1000Hz,步进为100Hz,因此,有IOOHz、200Hz、300Hz …

900Hz、1000Hz等10种频率。每种频率的波形的一个周期都要输出64个离散点,故时钟触发信号的频率fc=64xfo。该模块将频率选择模块的输出信号送到一个分频程序(FANA)进行分频,就得到分频时钟信号。

幅度调节的原理及实现。直接对数模转换芯片的电阻网络的基准电压进行调节,DAC0832的基准电压为+(-)15V,理论上输出波形的幅度范围+(-)15V。通过在ADC0832的8脚(基准电压输入脚)接一个精密电位器便可实现。

波形输出控制模块与键盘控制模块设计。波形选择用于按键选择输出的波形类型,因为波形发生器要求输出正弦波、三角波、方波以及它们两两或三种线性组合,所以采用三个按键,分别控制了三种波形的任意一种,或任意两种波形的叠加,又或者三种波形的叠加输出,同时还设计了一个清零按钮,随时可以将输出清零,使操作简单。

D/A转换电路设计。该电路是将波形输出控制模块输出的二进制信号值转换成模拟信号输出。由8位D/A转换器DAC0832及运算放大器等组成,织成电路如图2所示。

图2 D/A转换电路图

波形合成器的设计。对幅度为1的正弦波的一个周期进行64点采样,用Matlab计算得到每一点对应的幅度值,然后量化成8位二进制数据存放在ROM中。理论上,采样点数及量化位数越多,合成波形精确度越高。D/ACO832的位数为8位,量化等级最高为256,其量化误差已能达到要求,对于查正弦表的舍入误差也可忽略,故不采用更高位数的数模转换器。这里采用64个采样点,是为了在从高到低各个频段都能得到较好波形。在分频器输出脉冲驱动下,依次取出ROM中数据,即可得到幅度上离散正弦波,再经过D/A转换,便可得到连续正弦波。而三角波的产生是从某点起,使幅度逐次增加一个相位步进,一直到最大值后变为逐次减小一个相位步进,到最小值后又变为逐次增加相位步进,如此循环便产生周期性三角波形,方波的产生,只需根据占空比,调节一个周期内输出高、低电平时间即可。湖北轻工职业技术学院 电子设计与制作综合实训

FPGA器件内部结构多功能波形发生器由初值模块、分频模块、方波产生模块、三角波产生模块、正弦波产生模块、波形输出控制模块等部分组成。其中初值模块CHUZHl提供初值,供下一个模块FANA分频时用,通过不同的初值,在波形产生模块得到不同的工作频率,从而实现调节波形频率的目的。送不同的初值,是由输入A决定的,4位矢量产生的16种组合中的10种对应了10种不同的频率:分频模块FANA的功能是将前一模块CHUZHI送来的初值对时钟进行分频,得到不同的工作频率,从而调节波形频率;方波产生模块SQUARE的功能是产生方波,每32个时钟翻转一次,每64个时钟为一个周期(为了与正弦波相同);三角波产生模块DELTA的功能是产生三角波,为了得到64个时钟为一个周期的三角波,对于8位D/A转换芯片,输出Q每次加/减8;正弦波产生模块SIN的功能产生正弦波,一个周期取64点,所以64个时钟为一个周期;波形输出控制模块CHPR031设置了三个按键,分别控制三种波形任意一种,或任意两种波形的叠加,又或者三种波形叠加输出。输出的是信号的二进制值,同时还设计了一个清零按键,可以将输出清零。

管脚封装与EDA实验箱设置管脚封装如表1所示。

ASl:(3)(4)设为“ON”,其余所有档均设为“OFF”。

表1管脚封装表

JSl:(1)、(5)、(8)设置为“ON”。

在TP6、TP7两处用示波器观察输出信号的波形。湖北轻工职业技术学院 电子设计与制作综合实训

第三章 电路调试与制作

第四章 指针式万用表最基本的的工作原理

指针式万用表最基本的的工作原理(见图5)。

由表头、电阻测量档、电流测量档、直流电压测量档和交流电压测量档几个部分组成,图中“-”为黑表棒插孔,“+”为红表棒插孔。

测电压和电流时,外部有电流通入表头,因此不须内接电池。

当我们把档位开关旋钮SA打到交流电压档时,通过二极管VD整流,电阻R3限流,由表头显示出来;

当打到直流电压档时不须二极管整流,仅须电阻R2限流,表头即可显示; 打到直流电档档时既不须二极管整流,也不须电阻R2限流,表头即可显示; 测电阻时将转换开关SA拨到“Ω”档,这时外部没有电流通入,因此必须使用内部电池作为电源,设外接的被测电阻为Rx,表内的总电阻为R,形成的电流为I,由Rx、电池E、可调电位器RP、固定电阻R1和表头部分组成闭合电路,形成的电流I使表头的指针偏转。红表棒与电池的负极相连,通过电池的正极与电位器RP及固定电阻R1相连,经过表头接到黑表棒与被测电阻Rx形成回路产生电流使表头显示。回路中的电流为:

E I =

Rx+R 湖北轻工职业技术学院 电子设计与制作综合实训

从上式可知:I和被测电阻Rx不成线性关系,所以表盘上电阻标度尺的刻度是不均匀的。当电阻越小时,回路中的电流越大,指针的摆动越大,因此电阻档的标度尺刻度是反向分度。

当万用表红黑两表棒直接连接时,相当于外接电阻最小Rx=0,那么:

E I =

Rx+R

此时通过表头的电流最大,表头摆动最大,因此指针指向满刻度处,向右偏转最大,显示阻值为0Ω。请看电阻档的零位是在左边还是在右边,其余档的零位与它一致吗?

反之,当万用表红黑两表棒开路时Rx→∞,R可以忽略不计,那么:

此时通过表头的电流最小,因此指针指向0刻度处,显示阻值为∞。

看今天要安装的MF47型万用表的原理图(见图6),测量线路板线路板(见图7)。它的显示表头是一个直流μA表,WH2是电位器用于调节表头回路中的电流大小,D3、D4两个二极管反向并联并与电容并联,用于保护限制表头两端的电压起保护表头的作用,使表头不至电压、电流过大而烧坏。电阻档分为×1Ω、×10Ω、×100Ω、×1kΩ、×10kΩ、几个量程,当转换开关打到某一个量程时,与某一个电阻形成回路,使表头偏转,测出阻值的大小。

E =

R 湖北轻工职业技术学院 电子设计与制作综合实训

4.2MF47万用表电阻档工作原理

第五章 总结与体会

由于VHDL语言具有支持大规模设计和再利用已有设计等优点,因此使用VHDL语言来设计数字系统已成为一种潮流。采用EDA技术,实现了各种波形的产生,且波形平滑,无毛刺,质量高,输出波形的频率可调范围宽,可等步进调节且步进小。人机界面经过精简,按键少且操作方便。湖北轻工职业技术学院 电子设计与制作综合实训

第六章 附录

1、电阻27只,阻值如下:

R1 =0.47 R6=4.99k R2 =4.99 R7=40.2k R3= 51 R4 =560 R5 =15k R10=4.02k R33=6.25M R34=6.25M R8=150k R9=806k R11=84.5M R12=360k R13=1.8

R14=2.26M

R15=4.3M M R16=0.025(分R17=15 R18=165 R19=1.78K R20=54.9k 流器)R21=17.4k R22=140k R23=21k R24 =20k(5%)R25 =20k R26=750(5%)R27=6.5

R28=180 R29=4.12K

R30=54.9K

2、元器件

1.电位器

10k 5% WH161

1只 2.二极管

1N4001

3只、1N4007

1只 3.保险丝座

2只

4.点解电容 10uF

16V

1只 5.保险丝

5x20

250V/0.5A

1只

3、塑料件

1.面板

1只

2.大旋钮

1只

3.小旋钮

1只

4.表箱5.电池盖板

1只

6.晶体插座管

1只

7.提拔 1只

8.电刷架 1只

多功能波形发生器设计 篇3

关键词:波形发生器,MAX038,C8051F040单片机,I2C

0 引言

在现代电子技术的研究及应用领域中,常常需要价格便宜、简单易用、高精度且频率可调的信号源。而信号源的核心是波形发生器,因此设计实用的波形发生器是很有必要的[1]。

波形发生器可以由晶体管、运算放大器等通用器件构成,但更多的则是用专门的函数信号发生器集成电路实现。早期的波形发生器集成芯片,如L8038、BA205、XR2207/2209等,它们的功能较少、精度不高,频率上限只有300 kHz,无法产生更高频率的信号,调节方式也不够灵活,频率和占空比不能独立调节,二者互相影响[2]。目前市场上主要的波形发生芯片有美国Harris公司的ICL8038和美国MAXIM公司的MAX038。ICL8038只能产生300 kHz以下的频段波形,而且频率调节与占空比调节不能独立进行,无法满足信号源频率的高精度要求。相比而言MAX038芯片有着ICL8038芯片无法实现的优点。因此本设计使用高精度波形发生芯片MAX038,该芯片电路连接简单,只需很少的外部电路就可以产生频率在0.1~40 MHz的高精度、高稳定度的宽频带波形[3]。同时结合Silicon Labs公司的C8051F040单片机,使其可以满足多任务、实时性要求。

1 波形发生器总体设计

采用C8051F040单片机为核心,设计制作可以调节频率的多功能波形信号发生器[4]。芯片MAX038产生信号的频率可以通过调整电流和外接电容的大小来控制,因此本设计主要采用控制电流的方法来控制MAX038所产生的频率。该信号发生器能同时产生3路输出可调的正弦波、方波和三角波,并且占空比可以连续调节。

系统可以检测外部电路模拟信号,通过一个电压跟随器对检测的信号进行缓冲和隔离后,再经过单片机C8051F040内集成的A/D将信号转换为数字信号并存入AT24C02中。当需要输出时再通过D/A转换,转换成模拟信号,由D/A0端口输出,经MAX038芯片产生波形,并由液晶显示器1602显示其频率。也可以通过USB串口接受从电脑中下载的数据,并存入AT24C02中,同样可以再通过D/A转换,转换成模拟信号,由D/A0端口输出,经MAX038产生波形,通过液晶显示器显示频率[5]。系统可以通过4×4键盘输入频率值,从而达到直接控制MAX038产生波形的目的,并能够用1602液晶显示器显示波形的频率。系统还可以在单片机中存入波形信号,然后通过功率放大器,直接产生波形。波形发生器框图如图1所示。

2 波形发生器硬件设计

2.1 波形发生模块

将C8051F040单片机的D/A0端口通过一个电阻直接与芯片MAX038的IN管脚相连,通过控制D/A0端口的电压值的变化来控制IN管脚的电流产生变化,从而达到控制波形频率的目的。本信号发生器通过3路MAX038芯片能同时产生3路输出可调的正弦波、方波、三角波波形,输出的波形稳定性好、精度高,占空比可以连续调节。信号输出部分再采用低损耗电流反馈型宽带运放MAX477作电压放大,很好地解决了带宽和带负载能力的要求。

MAX038所产生的波形的频率是由COSC引脚的电容量和IN引脚的电流所决定的。假设C8051F040单片机的D/A0端口的输出电压为VIN,D/A0端口与IN管脚相连的电阻大小为RIN,COSC引脚所接的电容的大小为CF,则MAX038所产生的波形的频率(单位:MHz)为:

当在FADJ引脚施加一个±2.4 V范围的电压时,可使输出频率有±70%的变化,此时可以实现对频率进行精确的调整[4]。

MAX038所产生的波形的占空比是由DADJ引脚的电压变化来控制的,当DADJ引脚的电压在±2.4 V范围内变化时,输出波形的占空比将在15%~85%之间变化。

MAX038产生的正弦波、方波或三角波,具体的输出波形由地址A0和A1的输入数据进行设置,如表2所示(其中X表示无关)。波形发生器能同时3路输出3种波形,所以将3路MAX038的输出波形的选择地址分别设置成为表1所示的3种固定状态。

图2为MAX038的基本电路连接(此图中A0和A1选择为输出矩形波)。

2.2 功放模块

波形发生器对输出波形具有一定的功率要求,因此要对MAX038的输出信号进行功率放大。MAX477是MAXIM公司开发的一款低噪声、低微分增益和阶段误差、高转换速率、高精度、高输出电流的高频运算放大器,其-3 dB带宽可达到300 MHz,最小输出电流为100 mA。因此选用MAX477对输出信号进行功率放大。图3为功放模块的原理图,通过调节反馈电阻值可以改变输出电压的放大倍数,其中电压最大可放大10倍左右,整个系统的输出功率可达到数瓦。

2.3 USB接口模块

采用CH372芯片来接收由串口传来的数据。CH372是一个USB总线的通用设备接口芯片,遵守USB1.1协议。在本地端,CH372具有8位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机、DSP等控制器的系统总线上。

2.4 数据存储

数据存储主要用于存储外测电压的信号数据以及从USB串口接收到的数据,采用的存储芯片为AT24C02。AT24C02的特点是支持I2C总线数据传送协议,相应的存储器电路如图4所示。采用由主器件控制传送数据的模式,通过器件地址输入端A0、A1和A2可以实现将最多8个AT24C02器件连接到总线上。

2.5 键盘模块

为了减少I/O口的占用,波形发生器的键盘采用矩阵式键盘。图5为键盘原理图。

2.6 液晶显示模块

波形发生器采用1602液晶显示屏。1602液晶显示屏具有外接电路简单,操作方便等特点,能够同时显示16×2,即32个字符。1602液晶显示器具体电路如图6所示。

3 软件设计

3.1 软件总设计与总流程图

系统采用C8051F040单片机。C8051F040单片机是完全集成的混合信号片上系统型MCU,具有64个数字I/O引脚,片内集成了一个CAN 2.0B控制器,并集成有ADC和DAC。其中ADC为真正12位、100 KSPS的ADC,并带有PGA和8通道模拟多路开关;DAC有两组,为12位DAC,且具有可编程数据更新方式[6]。程序采用C语言编写,操作C8051F040对外围器件进行控制[7],总流程图如图7所示。

3.2 波形发生程序

产生波形时对MAX038的控制只需控制其IN脚所输入的电流。该电流应由C8051F040提供,而电流是一个模拟量。因此,在这里需要用到C8051F040中的D A转换器,将数字量转换成模拟量。

C8051F040中的D/A转换器有两组,每组D/A转换器的输出摆幅均为0 V到VREE-1LSB,对应的输入码范围是0x000~0xFFF。由于三路MAX038所输出的信号为同一频率,所以在此将只用到第一组D/A转换器。

输入给D/A转换器的数据来源有3种:第一种是从键盘获得的需要产生的波形的频率;第二种是单片机内部存储的波形数据;第三种是来自于外部信号存储于AT24C02存储器中的波形数据。本程序均可将其完好的转换成模拟信号。

3.3 外测电压采集程序

外测电压为模拟量,要将其进行存储与处理,应当对其进行数字化,在此就需要用到A/D转化器。C8051F040中的12位A/D转换器中需要转换的12 b数据存储于2 B存储器中,2 B存储器分别为高字节存储器ADC0H和低字节存储器ADC0L。

3.4 USB串口程序

串口程序是由写入命令与读出数据来组成的。在此将根据CH372芯片的写入、读出时序图来编写具体程序。命令写入程序的步骤如下:

(1)将A0置1,使芯片可以写命令;

(2)将命令值写到P3端口,用空函数延时一次;

(3)将WR拉到低电平0,用空函数延时一次;

(4)将WR拉到高电平1,用空函数延时一次。

以下为命令写入程序的代码:

数据读出程序的步骤如下:

(1)将A0置0,使芯片可以读取数据,用空函数延时一次;

(2)将RD拉为低电平0,用空函数延时一次;

(3)读出P3端口的数据,用空函数延时一次;

(4)将RD拉为高电平0,用空函数延时一次;

(5)把接收到的数据返回给主程序。

以下为数据写入程序的代码:

当选择USB串口传输模式后,应先将中断打开,以获取CH372的中断请求。进入中断时应向CH372写入GET_STATUS命令,命令代码为0x22,作用是获取CH372的中断状态并通知CH372取消中断请求,否则单片机会不停的响应CH372的中断命令。然后再向CH372中写入RD_USB_DATA命令,命令代码是0x28,作用是从当前USB中断的端点缓冲区中读取数据块并释放当前缓冲区。

3.5 存储程序

从外测电压采集到的数据以及从USB串口接收的数据都必须存储到数据存储器当中。本多功能波形发生器的数据存储器采用AT24C02芯片,存储方法采用I2C总线方式存储。I2C总线在传送数据过程中共有3种类型信号是:开始信号、结束信号和应答信号。

开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。存储程序开始代码如下:

结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。存储程序结束伪代码如下:

应答信号:接收数据的器件在接收到8 b数据后,向发送数据的器件发出低电平脉冲,表示已收到数据。若未收到低电平脉冲,为保证程序的正常运行,将在一段时间后认定器件已经收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。应答信号的代码如下:

3.6 矩阵键盘

确定矩阵式键盘上何键被按下时采用“行扫描法”。在实际应用中,由于电压存在抖动现象,所以在程序设计时要设计一个消抖程序。由于抖动现象为小概率事件,所以检测两次便可消除抖动现象的影响。

在检测完后,还要有一个松手程序,用于检测是否已经松手,否则按下一次将会产生很多键盘信号。第一行键盘扫描的代码如下:

3.7 液晶显示程序

由于波形发生器的显示部分只用于写,故只考虑写入部分的程序。在此主要依据1602的时序图来完成对液晶显示的程序编写。液晶显示程序分为写入数据与写入命令两部分,且写入方法大体相同。写入数据的程序步骤为:

(1)将数据/命令选择端RS设置成为高电平,即为写入数据;

(2)将数据写入输入P0端口,然后延时5 ms;

(3)将使能信号置为高,再次延时5 ms;

(4)将使能信号置为低。

液晶显示程序代码为:

4 结语

本系统以C8051F040为核心,使用键盘操作,通过控制MAX038可以实现正弦波、方波、三角波的输出,并通过液晶显示屏可以显示波形的频率,可以通过键盘调整频率,操作方便简单。通过键盘选择不同的模式,还可以使用A/D转换器实现外来信号的采集,应用CH372芯片接收USB串口传输来的信号,并将这些数据通过I2C总线方式存储到存储芯片之中,再通过D/A转换器可以将其波形再现。另在单片机内部储存有波形信号,同样可以通过D/A转换器直接将其波形再现。

参考文献

[1]张吉林,张晴.MAX038及函数信号发生器[J].南昌大学学报:理科版,2000,24(4):350-355.

[2]金斗焕,王少军.采用MAX038制作的函数信号发生器[J].电子元器件应用,2001(1):33-35.

[3]MAXIN公司.MAX038技术资料[EB/OL].[2011-04-17].http://wenku.baidu.com.

[4]潘琢金.C8051F040混合信号ISP FLASH微控制器数据手册[M].深圳:新华龙电子有限公司,2004.

[5]李朝青.单片机原理及串行外设接口技术[M].北京:北京航空航天大学出版社,2008.

[6]王为青,程国钢.单片机Keil Cx51应用开发技术[M].北京:人民邮电出版社,2007.

基于FPGA的DDS波形发生器 篇4

关键词:直接数字合成,现场可编程门阵列,QuartusII,波形发生器

0 引言

波形发生器是一种广泛应用于电子电路、自动控制和科学试验等领域的信号源。比如电参量的测量、雷达、通信、电子对抗和电子系统、宇航和遥控遥测技术等等,从某种意义上说高品质信号源更是实现高性能指标的关键,很多现代电子设备和系统的功能都直接依赖于所用信号源的性能,因此高品质信号源被喻为电子系统的“大脑”。目前设计波形发生器主要有以下三种途径[1]:

(1)传统的直接合成频率技术(DS:Direct Synthesizer)这种技术能实现高速频率转换,具有低相位噪声以及较高的工作频率。但由于采用大量的分频、倍频、混频和滤波环节,导致其结构复杂、体积庞大、成本昂贵且容易产生较多的杂散分量。

(2)锁相环式频率合成器(PLL:Phase Locked Loop)这种技术具有良好窄带跟踪特征,可选择所需频率信号,抑制杂散分量,且省去大量滤波器,有利于集成化和小型化。但由于锁相环本身是个惰性环节,锁定时间较长,因而频率转换时间较长,且由模拟量合成的正弦波参数(幅度、频率和相位等)都难以定量控制。

(3)直接数字式频率合成(DDS:Direct Digital Synthesizer)这种技术具有高频率稳定度、高频率分辨率以及极短的频率转换时间。此外,全数字化结构便于集成,输出相位连续,频率、相位、幅度均可实现控制,而且理论上可实现任意波形。

鉴于DDS技术的优点,本文采用Altera公司的CycloneII EP2C35芯片,设计基于FPGA的DDS波形发生器。

1 DDS的基本原理

传统的生成标准波形的数字方法的核心由一片ROM和一片DAC以及地址发生器、寄存器组成。在ROM中,每个地址对应的单元的内容都相应于正弦波的离散采样值,ROM中必须包含完整的正弦波采样值,而且还要注意避免在按地址读取ROM内容是可能引起的不连续点,避免量化噪音集中于基频谐波上。时钟频率输入地址发生器和寄存器,地址计数器所选中的ROM地址的内容被锁入寄存器,寄存器的输出经DAC恢复成连续信号,即由各个台阶重构的波形,若相位精度N足够大,则波形平滑度较好,当输入时钟信号频率改变时,则输出的波形频率相应改变。

为了控制输出频率更加方便,DDS采用了相位累加器,使输出频率正比于时钟频率和相位增量之积。图1所示为采用了相位累加方法的直接数字合成系统,把正弦波在相位上的精度定位n位,于是分辨率相当于1/2n。用时钟频率fp依次读取数字相位圆周上各点,数字值作为地址,读出相应的ROM中的值,然后经DAC重构波形。相位累加器的作用是在读取数字圆周上各点时可以每隔M个点读一个数值,M即为图1中的频率字。这样,DAC输出的正弦波频率fSIN就等于“基频”fclk/2n的M倍,即DAC输出的正弦波的频率满足下式[2]:

2 DDS模块设计

为兼顾波形的平滑度和硬件需求的平衡性,在设计中采用10位地址存储和12位波形数据输出宽度,即在波形生成过程中拥有10位的横向精度(1024个采样点)和12位的纵向精度。频率控制字为16位,相位控制位为10位,幅度控制字为5位。

2.1 PLL锁相环

输入时钟频率由一个高速数字锁相环提供稳定的时钟频率,并给寄存器、ROM和其他模块提供同步触发。FPGA核心板提供的有源晶振为50MHz,通过锁相环能倍频至100MHz输出,根据DDS频率计算公式可知,16位精度的控制字控制的波形输出频率的理论可变范围为1500Hz~100MHz。

2.2 寄存器和累加器

本设计中拥有10位累加器和16位累加器寄存器,前者用于相位字累加,后者用于频率字累加,而16位累加器寄存器中输出至ROM的只截取其高10位作为地址输入。两者都是通过累加来实现频率和相位输出地址的改变。

2.3 ROM

本设计中拥有3个ROM,分别对应于存储原始正弦波的ROM,存储相位变化正弦波的ROM和存储三角波的ROM,而两个正弦波内部其MIF文件值均相同,通过不同的相位差地址可产生一对复合图形。而正弦波和三角波的MIF文件则可由C语言或MATLAB等计算工具得出,本文采用C语言计算。

2.4 方波

由于方波的特殊性以及对占空比要求的可变性,这里没有采用和正弦波三角波相同的ROM查表模式进行输出,而采用根据地址判定法来确定此时的高低电平值来达到实现不同占空比的方波生成方法。根据输入占空比选择字的大小可以对其进行任意占空比的选择和切换。

2.5 幅度控制模块

在三个ROM和方波生成模块后都会加上一个幅度控制模块,以达到调幅的功能。在实际设计中常采用的是乘法器作为控幅模块,然后进行高位总线截取达到波形幅度放大的目的,这时的幅度控制字位数应与ROM输出总线为数一致,然后经行高为截取输出至DAC。而这里采用和常用方法相反的除法形式来进行等比例缩小,来实现控幅。

除法与乘法相比优势在于小比例缩放时的波形完整性和平滑度,但由于数字电路对于除法的算法远没有乘法方便,常采用移位法进行缩减,即只能进行2的整数倍缩小,不能进行任意比例的缩小,所以在验证阶段用此方法可以实现良好的波形输出,而在实施阶段则会采用乘法器进行使用。

由于采用移位法此处的幅度控制字为5位,而如果采用乘法器则为12位。

3 硬件仿真结果

仿真软件采用Altera公司的Quartus II 9.0,EP2C35F672C8拥有200万门、3.3万个LE,片内RAM为484Kbit,35个片内乘法器,4个时钟管理单元。其丰富的片内逻辑单元和较大的片内RAM,可以进行相对完整的嵌入式逻辑分析而不用担心硬件资源的不足。图2为利用嵌入式逻辑分析仪仿真得到的各输出波形。其中,第一行为地址累加器波形图,第二、三行为正弦波相移波形图,第四行为三角波,第五行为可变占空比方波,最后两行为幅度控制波形。

4 结语

本设计基本实现正弦波、三角波、方波的正确输出,并实现了一定的调制功能。考虑到成本,并未直接采用DDS专用芯片。而FPGA设计具有灵活性好、针对性强的特点,可随时修改各个模块。

参考文献

[1]彭成文.快速宽带直接频率合成器[J].电子对抗技术,2001,16,(3):41-45.

函数波形发生器 篇5

方案一:直接数字合成

它的工作过程是:振荡器产生高频脉冲波形, 经分频器得地址计数器的计数频率, 若地址计数器为Ⅳ位 (模值=2) , 则把波形的一个周期分为2个等间隔数据点 (抽样点) 存入数据存储器, 地址计数器不断地循环计数, 存储器内数据被逐个读出, 经D/A转换器和低通滤波器, 可得所需波形。该方法的特点是每一周期波形的点数是固定的, 每一周期内点与点的相位间隔相同。但两个相邻周期波形之间的两个点的时间间隔与其他点之间的相位间隔有可能不同。当计数器的位数增加时, 这种相邻间隔的误差可以忽略。

用该方法产生波形, 其波形频率由两方面决定: (1) 波形的频率由地址计数器的计数时钟决定, 当波形存储的点数一定时, 计数器的计数时钟频率越快, 读出一周期波形数据的时间就越短, 输出波形的频率就越高, 反之则波形频率低; (2) 波形的频率也由组成一周期波形的点数来确定, 当地址计数器的时钟频率一定时, 一周期波形的点数越多, 读完一周期波形所需的时间越长, 波形频率就低, 反之则高。

方案二:基于LabVIEW的信号发生器

任意函数发生器可以输出基本波形、手动绘制的任意波形。其中, 基本波形函数库中存放了正弦波、三角波、方波等常用的函数波形, 我们只要从中选取修改函数、设置波形频率、幅值等参数, 就可以产生波形;此外还可以绘制任意波形, 先将鼠标移到画图区的移动光标上, 然后按住鼠标左键拖动鼠标, 鼠标的移动轨迹即形成任意波形。

仪器控制程序包括仪器初始化模块、仪器管理模块、波形调制选取、设置模块和波形输出模块。

1.初始化模块:执行仪器的初始化, 自检, 清零功能。

2.仪器管理模块:执行仪器运行模式, 锁定与解锁通道, 是否恢复出厂设置等仪器管理操作。

3.波形调制模块:设置SWP、FM、AM、FSK等各种调制参数及调制波形。

4.波形输出模块:由于仪器硬件只能识别ASCII字符, 所以本模块将用户交互操作产生的任意波形通过转换, 下载到任意波形发生器的内部存储器, 并打到仪器输出通道, 输出所需波形。

在这两个方案中, 因为我们并没有硬件, 只是做软件方面的仿真, 所以我们采用方案二, 同样LabWindows/CVI (C for Virtual Instrumentation) 也可以实现.因为它是为C程序员开发的环境, 它有着交互的编程环境和可用于创建数据采集、分析的函数库和仪器控制驱动程序。而Labview则使用了G (图形化) 的数据流编程模式, 它有别于基于文本语言的线性结构。在Labview中执行程序的顺序是由块之间的数据流决定的, 而不是传统文本语言的按命令行次序连续执行的方式。考虑到我们对C语言不是很熟悉, 而Labview的G (图形化) 的数据流编程比较简单和清楚, 最后我们决定使用方案二。

初始化通道模块:

该程序主要是用来对通道0、1行初始化的, 也就是在运行程序之前先对两个通道清0.使用了顺序结构。

通道选择模块:

该Boolean控件主要用来在0, 1两个通道进行选择, 通过数据通道传递数据给Case结构, 当它为当为False时选中0通道, 为True时选中1通道。

通道编辑模块:

在这模块上有8个Boolean控件, 分别为标准波形、手绘波形、编辑波形、0+1->0、0+1->1、读入波形文件、保存波形文件、清空通道.这8个控件用以选择不同的功能, 它们组成一个簇。当任意的一个控件按下后, 其值会变成True, 然后通过Cluster To Array、Search 1D Array函数选择被按下的控件.这个模块采用Case结构, 控件与Case结构对应的框图略。

退出模块:

功能是退出程序。由于采用的是WHILE结构, 所以只需要在QUIT控件为真也就是控件按下去的时候退出即可。

软件设计流程框图:

主要程序流程图使用的是WHILE结构, 只要退出控件没按下, 程序就将一直运行下去, 当按下退出控件时, 程序停止运行。设计流程框图如图。

手绘任意波形:

在通道编辑模板中单击手绘波形控件, 会弹出手绘波形窗口如图, 拖动光标画出需要的任意波形.按下DONE键, 绘制的波形会显示在Waveforms中。系统调试和保存和读取波形等过程省略。

这次虚拟仪的器设计是实现基于LabVIEW的任意波形发生器。设计要求该发生器能生成两路标准的波形 (包括正弦波、方波、三角波、锯齿波) , 而且其频率、幅值、相位、电压偏置等参数可以手动设置。同时能生成两路手工绘制的任意波形。此外, 可对当前的两路波形进行手工编辑以及能将两路信号相加输出后输出。还可以将当前生成的两路波形数据存为文件保存在盘上, 并能将其重新读出生成对应的波形。

参考文献

[1]杨乐平, 李海涛等.LabVIEW高级程序设计[M].清华大学出版社.2003.4.

[2]杨乐平, 李海涛, 宵相生等.LABVIEW程序设计与应用[M].北京:电子工业出版社.2001.

[3]邓焱, 王磊。LabVIEW7.1测试技术与仪器应用[M].机械工业出版社.2004.8.

[4]王洪波, 张彦斌等.在LabVIEW中对Access数据库访问研究[J].微计算机信息.2003.12.

函数波形发生器 篇6

本文提出了一种基于FPGA的信号波形发生器,实现产生任意波形信号的设计。利用累加器对所需频率按照所需的步进对其增量进行设置,得到的值就为设计所需的地址码,同时获取提前设计好的ROM中设计好的波形数据,经过相应的D/A进行转换,再进行平滑滤波得到所需的波形。通过硬件平台实现了不同要求的波形。通过结果分析,设计波形效果较好,有一定的工程实际意义。

1 系统的设计基本原理

DDS进行频率合成是直接从“相位”的概念出发。所需要的是相位累加,可以通过寄存器和相应的加法器来实现。实现的原理为当有时钟脉冲fc时,加法器对寄存器的输出和频率控制字进行相加。得到数据通过反馈给倒寄存器的相应输入端。等到需要改变频率再进行相加。可以看出当有一个钟脉冲输是,相位累加起就累加一次,得到的信号的相位是由累加器输出结果产生的,DDS的信号输出相应的频率为累加其输出的频率。

也就是相位累加器的溢出频率。一种全数字的频率合成方基本结构由四个部分构成,主要有相位累加器、波形ROM、D/A转换器和低通滤波器,如图1所示。

2 系统模块设计

系统框图由FPGA存储数据及DDS实现、DAC数字波形转换得到模拟波形、程控增益,实现电压伏值控制、信号调理,滤波这四个模块组成,整体系统框图如图2所示。

3 单元模块系统设计

3.1 寄存器和相位累加器的设计原理

设计中对所需的累加器和寄存器作用是实现累加功能,从而来得到可调的波形频率。用VHDL进行设计。相位累加与相位寄存器的框图如图3所示。

3.2 波形ROM的设计

ROM设计不同波形所需的ROM是不一样的,设计方法是相同的,首先要确定所需波形ROM的数据子长,同时要知道所需地址的位数。通过实际设计可以得到一般情况下ROM的子长是小于地址位数的,设计中选择的DA转换的位数是10,可以得到ROM字长应该也为10。同理可以得到地址位数为8。波形的存储器是通过相位累加到的高8位数据作为地址线来寻址。设计中以正弦信号数据的产生来进行设计可以直接在Quartus II下设计也可以通过:MATLAB编辑程进行相应的编辑。得到所需二进制数据通过VHDL程序来实现对应波形ROM的设计。

3.3 频率控制模块设计

实际中要输出的信号频率大小可通过键盘进行设置。实际中所需信号的频率一般跨度很大,大小频率变化实现需要很长的时间通过控制步进得到,这样设计控制模块就要以最简方法设计,设计中使用四个按键实现直接输入所需频率。

4 系统的软件设计

实现这个设计的方法由公式f0=k∙fc/2N可以看出,当fc2N确定后f0和K的值有一定的比例关系,通过其线性比例关系可以得到频率f0=1HZ时对应的所需K的值,计算得到的K就是步进1HZ对应的K变化的大小,步进就是利用此原理进行设计,设计中如果步进要整数倍的进行增加,设计中只需要按照倍数增加ΔK的值就能实现任意整数倍的信号步进变化。系统的整体控制频率流程图如图4所示。

5 仿真结果与分析

5.1 锯齿波仿真结果

由于幅度和频率调节在设计结果中不好表示以,设计中可以设计给定频率和幅度恒定的波形,设计锯齿波数据如图5所示。

5.2 正弦波仿真结果

同样的条件下实现了频率和幅度恒定的正弦波如图7所示。

5.3 三角波仿真结果

下图设计出了相应的三角波如图7所示。

5.4 方波仿真结果与分析

相应的方波的设计结果如图8所示。

图7三角波信号仿真

6 结论

本文实现了一种任意波形发生器系统,各模块利用硬件描述语言进行设计,最终利用FPGA硬件平台对其进行硬件测试,通过硬件平台实现了不同要求的波形。通过结果分析,设计波形效果较好,这种波形发生器同时可以根据工程实际需要实现不同的调制功能。输出信号的频率稳定度较高,有一定的工程实际意义。

摘要:针对传统设计信号发生器需要庞大的电路的问题。该文提出了一种基于FPGA的信号波形发生器,实现产生任意波形信号的设计。设计中利用硬件语言VHDL设计了所需的各个硬件模块。通过硬件平台QuartusⅡ实现了方波,锯齿波,三角波,正弦波等波形。通过结果分析,设计波形效果较好,有一定的工程实际意义。

关键词:FPGA,QuartusⅡ,信号发生器

参考文献

[1]徐彬,谭征,袁蕾,等.基于DDS技术的任意波形发生器[J].电子世界,2002(1):58-61.

[2]Nashaatdm,Elsadekha,Ghalih.Single feed compact quad-band PIFA antenna for wireless communication applications[J].IEEETrans Antennas Propagat Lett,2005,53(8):2631-2635.

[3]范秋华,张冬梅.基于VHDL的可编程分频器在波形发生器中的应用[J].清华大学学报,2003(4):68-71.

[4]于鸿洲,宋立新,徐吉吉.基于DDS技术的函数波形发生器[J].哈尔滨理工大学学报,2006,11(5):7-13.

[5]范秋华,张冬梅.基于VHDL的可编程分频器在波形发生器中的应用[J].青岛大学学报,2003,16(4):68-71.

[6]赵曙光.可编程逻辑器件原理开发与应用[M].西安:西安电子科技大学出版社,2000..

单片机波形发生器的硬件系统设计 篇7

1. 硬件系统框图

该波形发生器的硬件系统是由单片机、存储器和D/A转换器构成,通过编程设定频率、脉宽及任意波形数据,并将数据以表格的形式存放在程序存储器中。在单片机的控制下,利用AD7545完成D/A转换,从而得到所需的任意波形信号。硬件系统结构框图如图1所示。图中分频电路和地址发生器由CPLD实现。

2. 电路设计及实现

2.1 单片机控制电路

系统采用AT89C51单片机,通过编程产生所需控制信号。主要的控制参数包括:信号周期、脉宽、分频电路的开始信号、地址发生器的复位信号、E2PROM的选通信号、D/A转换电路的选通信号。在具体电路中,端口P1.0控制分频电路的启动、P1.1控制地址发生器的清零,P2.0控制28C256和AD7545的选通信号。单片机工作在定时器方式1,软件设计利用C语言实现。控制流程图如图2所示。

2.2 波形数据生成

MATLAB作为一款优秀的数学工具软件,具有强大的运算功能,可以方便地产生各种信号波形,在软件中实现波形信号的产生、抽样和模数转换。设计的任意波形发生器,数据存储器选用28C256芯片,信号波形通过MATLAB仿真产生,得到的波形数据存放在数据存储器28C256中。具体设计中,我们要求产生周期为200ms,脉宽为5ms的单/调频混合信号,其中单频信号的脉宽为4ms,频率为30kHz,调频信号的脉宽为1ms,频率为30—35kHz。在MATLAB中设定抽样率为500kHz,得到了2500个波形数据。这些混合波形数据在烧录入到程序存储器的过程中,由于波形数据较多,直接用手工录入数据存储器中不仅费时且容易出错。为克服这一弊端,通过MATLAB编程的方法将产生的波形数据按照HEX文件的INTEL格式存放,然后将这些波形数据整批次烧录入程序存储器的表格中。采用上述方法,波形数据生成简单、快捷,可根据需要在软件程序中方便地修改信号参数,无需改动硬件电路即可实现信号参数的功能扩展。

2.3 CPLD逻辑设计

分频电路采用两片74HC163实现。通过分频电路,将12MHz的晶振标准频率分频后,得到500KHz的抽样频率,作为地址发生器的时钟。分频电路的工作由单片机控制。

地址发生器电路由3片74HC163组成,时钟频率为500kHz,由分频电路提供,其输出频率与存入程序存储器表格中的波形数据抽样频率相一致,以实现数据的无失真读出。

电路设计中,采用ALTRA公司的EPM7128AETC100-10芯片,在MAX+PLUSⅡ开发环境中完成分频器的电路设计,可以省去大部分的中小规模集成电路和分离元件,使得电路具有集成度高、工作速度快、编程方便、价格低廉的显著优点。通过CPLD和数据预生成的信号实现方法,无需改变硬件电路,即可实现信号参数的任意调整,同时外围电路十分简单,为工程调试和应用带来了方便。

2.4 D/A转换电路

D/A转换电路的实现如图3所示。电路中AD7545将波形数据转换为模拟信号,然后采用LF353进行信号滤波和整形。

3. 结语

采用上述方法设计的波形发生器,通过软件和硬件结合,充分发挥了MATLAB强大的仿真功能,尽可能减少了硬件开销。根据实际需要,可产生正弦波、三角波、锯齿波、方波等多种波形,可以产生线性调频信号(LFM)、单频脉冲信号(CW)、余弦包络信号,以及他们之间的组合信号等多种波形参数,满足了工程需要。该波形发生器用于非周期波形信号的发生效果良好。

参考文献

[1]刘光斌, 刘冬.单片机系数实用抗干扰技术[M].北京, 人民邮电出版社, 2008.

[2]胡汉才.单片机原理及其接口技术[M].北京:清华大学出版社, 2010.

[3]张善德.微型计算机系统的设计方法和接口技术[M]北京, 人民邮电出版社, 2008.

函数波形发生器 篇8

在腐蚀领域和电镀行业,常常需要使用任意波形的电流电压信号进行生产和测试。任意波形是指频率可变、幅值可变、相位可变的正弦波形和其他波形,如三角波形、锯齿波、特殊波形等。目前任意波形发生器大多采用直接数字频率合成(DDS)技术,即将波形的数字量信号存储于存储器中,嵌入式主机以一定的速率依次将存储器单元中的波形数据逐个发送给D/A转换器,合成为需要的波形[2]。

随着微处理器日益广泛的应用和大规模集成电路技术的发展,出现了大量能够产生多种波形且性能稳定的任意波形发生器,但大多数方案都是基于串行或并行总线进行数据的传输,这种方案虽然成本较低,但系统的实时性较差,难以满足复杂波形的大数据量的传输要求[2]。我们设计了一种基于FPGA芯片的任意波形发生器,充分利用了FPGA强大的逻辑功能,实现了利用单片FPGA芯片控制整个系统的方案。同时选择USB2.0接口芯片CY7C68013,它能较好地与FPGA芯片合作,完成系统预先设计的功能,使总体电路简单,成本低廉,产生的波形信号精度较高。数字波形数据从上位机通过USB总线直接存储在SRAM数据存储器中,通过FPGA控制,将波形数据读出,送入后向通道进行D/A转换和放大处理后得到所需的模拟信号波形。与传统的发生器在ROM或FLASH存储波形数据的方法相比,具有更大的灵活性。

1 系统总体结构及工作过程

波形发生器以FPGA为核心,它控制着整个系统的读、写、输出等操作,系统框图如图1所示[3]。上位机将数字波形数据通过USB2.0总线送到数据存储器中,数据存储器循环地将波形数据发送到DAC电路,由DDS电路产生相应的DAC刷新时钟(0~1MHz,步进0.02Hz),DAC输出波形经缓冲放大、低通滤波、放大输出。输出的波形频率为0.1Hz(DC)~1MHz(-3d B),频率分辨率为0.01Hz。

图1系统基本框架(参见右栏)

本系统主要由五部分组成:

(1)上位机。主要功能是利用仿真软件(如CVI、MATLAB、VB等)产生所需波形数据,并通过USB接口下载到波形发生器中,其次就是存储USB2.0接口芯片的驱动程序。

(2)USB2.0接口控制器芯片。本设计使用的是Cypress Semiconductor公司的EZ-USB FX2系列芯片CY7C68013AE。

(3)数据存储芯片SRAM。考虑到成本的因素,本系统采用ISSI公司的IS61LV25616-10T。

(4)D/A转换芯片。本设计使用的是AD9726,该芯片控制信号简单,D/A转换速度快,因此将系统的硬件设计大为简化,也减轻了系统软件设计的工作量。

(5)FPGA控制芯片。本设计使用的是Altera公司的Cyclone II系列型号为EP2C20F484的FPGA。EP2C20F484以90nm工艺技术为基础,提供了18,752个逻辑单元(LE),并具有一整套最佳的功能,包括嵌入式18位×18位乘法器、专用外部存储器接口电路、4kbit嵌入式存储器块、锁相环(PLL)和高速差分I/O能力等。

2 系统功能及硬件实现

2.1 USB传输模块

CY7C68013有2种接口方式:Slave FIFOs和可编程接口GPIF。当FPGA与其相连时,只需要利用CY7C68013作为一个USB2.0数据通道来实现与主机的高速通信。Slave FIFOs方式是从机方式,外部控制器可像普通FIFO一样对CY7C68013的多层缓冲FIFO进行读写。CY7C68013的Slave FIFOs工作方式可设为同步或异步;工作时钟可选为内部产生或外部输入,其它控制信号也可灵活地设置为高有效或低有效[1]。电路连接图如图2所示。

IFCLK是同步时钟信号,FLAGA、FLAGB和FLAGC是CY7C68013内部FIFO的状态标志,EP2C20F484通过通用I/O口获得CY7C68013内部FIFO的空、半满(由用户设定半满阈值)和满这三个状态信号,ISLCS、SLOE、S L R D、S LW R对C Y 7 C 6 8 0 1 3进行读写操作控制,FD[15:0]是数据线,ADD[1:0]是选择4个FIFO的地址线。其工作过程为:PC机通过USB向FPGAP发送波形数据时,USB通过请求方式通知FPGA读取波形数据,FPGA首先查看空、半满和满这三个状态信号,选择一个FIFO,然后控制USB接收适当大小的数据,以保证数据不会溢出,并存入SRAM中。

2.2 DAC功能模块

从总体工作过程分析可知,从USB接口下载的波形数据存储在SRAM中,SRAM循环输出数据到DAC芯片,根据DDS原理产生模拟波形。具体电路如图3所示。

IS61LV25616是256k×l6高速CMOS工艺3.3V单电源供电的静态随机存储器(SRAM),在FPGA控制下存储从USB下载的数据,并将数据循环输出到DAC芯片。AD9726是一款16位高性能LVDS DAC,具有出色的噪声与杂散性能以及真16位直流线性度。它采用CMOS工艺制造,并利用专有开关技术来增强动态性能。该器件具有较宽的满量程电流调节范围(2m A至20m A),能够以较低功耗水平工作。其电流输出配置简便,可以用于各种单端或差分电路拓扑结构。

3 系统软件设计与实现

3.1 固件程序设计

CY7C68013内嵌有8051微处理器,用于控制芯片的工作状态设置,写入微处理器的程序文件称为固件程序(Firmware),为了便于维护和移植,一般采用单片机的C语言编写[1]。主要有以下几种功能:a.初始化工作,包括设置一些特殊功能寄存器的初值以实现所需的设备属性或者功能,例如开中断、使能端点、配置端口等。b.辅助硬件完成设备的重新列举过程,包括模拟设备的断开与重新连接,对接收到的设置包进行分析判断,从而对主机的设备请求作出适当的响应,完成主机对设备的配置任务。c.对中断的处理。d.数据的接收和发送。e.外围电路的控制。固件程序的流程如图4所示。

3.2 FPGA程序设计

在本系统中FPGA作为主控制器,提供USB控制、DA控制、SRAM控制、I2C控制及全局时钟控制等功能模块[5]。这里重点介绍USB接口控制模块。

固化程序将CY7C68013A设置为Slave FIFO工作模式,需要FPGA提供FIFO端口的读写操作控制时序。CY7C68013A为每个端口提供了"空"标志、"满"标志和"可编程级"标志。FPGA检测这些信号,用于控制读写的过程,FPGA再完成这些端口FIFO的操作时序控制。USB控制器的状态转移如图5所示,控制器工作在五个状态中,上电复位后工作在IDLE状态,当读/写事件发生时进入状态1;在状态1中根据读/写事件使能FIFOADR[1:0]指向相应FIFO并进入状态2;在状态2,如果FIFO空/满,在当前状态等待,否则进入状态3;在状态3中,驱动数据总线,完成读/写操作,进入状态4;在状态4中,如需传输更多数据,进入状态2,否则进入状态IDLE。本系统采用Verilog HDL硬件描述语言实现了FIFO的读写时序,并在ALTERA公司提供的Quartus II8.0开发工具中综合编译并映射到FPGA中运行[5]。

4 结果及分析

在设计结果中,最后的波形图是使用泰克公司的TDS1012型示波器得到的[4]。经过实际的测试,该信号发生器产生的波形精度高、失真小,完全满足设计的要求。图6是产生的正弦波、锯齿波的波形结果。

5 结束语

本系统的设计基于FPGA和USB技术,不仅满足任意波形系统高速、精确的要求,而且具有体积小、功耗低、成本低、使用灵活方便、硬件电路简单、可在线更新等特点,充分利用了微机的资源,因而易开发且扩展性好。经测试,系统能够生成正弦波、方波、三角波、锯齿波、TTL、白噪声、高斯噪声、梯形、指数、AM、FM、扫频等常规波形,可设置波形的幅度、频率、偏置量等参数,可广泛用于个人实验室和自动测试系统。

摘要:本文提出了一种基于可编程逻辑器件(FPGA)芯片EP2C20F484的任意波形发生器的设计方法。完成了在FPGA的控制下,USB接口控制模块、SRAM控制模块、DA转换模块等协同工作的硬件设计、固件设计以及软件设计,并给出了实验结果。实验结果表明,此任意波形发生器能够按照要求输出相应波形,达到了设计要求。

关键词:EP2C20F484,AD9726,任意波形发生器,USB2.0

参考文献

[1]付华杰,等.嵌入式高速USB设备接口结构设计[J].现代电子技术,2008,31(4):150-152.

[2]张树团,等.基于TMS320F2812的任意波形发生器设计[J].电子测量技术,2009,32(4):87-90.

[3]张庆玲.频率和幅度可控制的信号发生器[J].仪表技术,2008(6):35-37.

[4]鲁哨廷.多波形数字信号发生器的设计与实现[J].微处理机,2008,29(2):149-151.

上一篇:车辆状况下一篇:瓦斯监测联网