智能函数发生器论文.docx
- 文档编号:6948918
- 上传时间:2023-01-13
- 格式:DOCX
- 页数:19
- 大小:140.22KB
智能函数发生器论文.docx
《智能函数发生器论文.docx》由会员分享,可在线阅读,更多相关《智能函数发生器论文.docx(19页珍藏版)》请在冰豆网上搜索。
智能函数发生器论文
广西工学院
课程设计(论文)说明书
课题名称智能函数发生器设计
系别
专业
班级
学号
姓名
指导教师
2011年月日
摘要
函数发生器是一种很常用的器件,在很多情况下,最常用的波形是正弦波,方波,三角波,递增,递减斜波和梯形波六种。
虽然用模拟电子线路很容易得到这些波形,但是这种方法会使硬件线路较为繁琐,而且模拟线路会受到干扰。
本设计采用综合设计方法使用FPGA来实现智能函数发生器,它由六个波形产生模块及波形选择输出模块组成,波形选择模块的输出q接在D/A转换的数据端,就可以在D/A输出端得到想要的其中之一的任一种光滑的波形。
关键字:
函数发生器,正弦波,方波,三角波,选择器
Abstract
Thefunctiongeneratorisonekindofverycommonlyusedcomponent,Inverymanysituations,Themostcommonlyusedprofileisasinewave,Square-wave,Trianglewave,Increasesprogressively,Decreasesprogressivelythewavetiltandthestepsandladderswavesixkinds.Althoughisveryeasywiththesimulationelectroniccircuittoobtaintheseprofiles,Butthismethodcancausethehardwarelinetobetedious,Moreovertheartificiallinecanreceivethedisturbance.ThisdesignusesFPGAtorealizetheintelligencefunctiongenerator,Ithasthemoduleandtheprofilechoiceoutputmodulebysixprofilesiscomposed,ProfilechoicemoduleoutputqmeetsinD/Atransformsdataend,MayintheD/Aout-portobtainsoneofthemwhichwantsnomatterwhatonekindofsmoothprofile.
目录
引言………………………………………………………………………………………………1
1.EDA技术的简介………………………………………………………………………2
2.设计要求………………………………………………………………………………………2
3.设计思路………………………………………………………………………………………3
3.1波形函数发生方案对比选择……………………………………………………………3
3.2波形函数输出控制方式选择……………………………………………………………3
3.3系统细化框图…………………………………………………………………………4
3.4系统的整体原理框图……………………………………………………………………5
4.各模块程序设计及仿真………………………………………………………………………5
4.1三角波模块………………………………………………………………………………5
4.2梯形波模块……………………………………………………………………………7
4.2正弦波模块……………………………………………………………………………8
4.4方波模块………………………………………………………………………………8
4.5输出波形选择模块……………………………………………………………………10
4.6系统联调测试分析……………………………………………………………………10
结论…………………………………………………………………………………………11
致谢……………………………………………………………………………………………12
参考文献………………………………………………………………………………………13
附录……………………………………………………………………………………………14
引言
EDA(electronicdesignautomation,电子设计自动化)技术是现代电子工程领域的一门新技术。
它提供了基于计算机和信息技术的电路系统设计方法。
EDA技术的发展和推广应用极大地推动了电子工业的发展,随着EDA技术的发展,硬件电子电路的设计几乎全部可以依靠计算机来完成。
这样就大大缩短了硬件电子电路设计的周期从而使制造商可以快速开发出品种多批量小的产品,以满足市的众多需求。
EDA技术的推广是当今世界的一个技术热点。
EDA技术是现代电子工业中不可缺少的一项技术。
传统设计应用分立元件或通用数字电路芯片,设计周期长,花费大,而且往往局部功能优化,而整体功能较差。
EDA以计算机为平台,根据硬件描述语言,如VHDL自动地完成逻辑编译、化简分割、综合及优化,布局布线,仿真直至对特定目标芯片的适配编译,逻辑映射和编程下载等工作。
以自顶向下的设计方法,使硬件设计软件化,摆脱了传统手工设计的众多缺点。
其方法简单,频率稳定度高,易于程控。
随着EDA技术的深入发展,基于硬件描述语言的方法将有取代传统手工设计方法的趋势。
尝试用VHDL设计来产生正弦波,其频率切换非常便捷,调试、修改也非常节省时间。
FPGA是英文FieldProgrammableGateArray的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个新概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。
它与分立元件相比,具有速度快、容量大、功耗小和可靠性高等优点。
由于集成度高,设计方法先进、现场可编程,可以设计各种数字电路,因此,在通信、数据处理、网络、仪器、工业控制、军事和航空航天等众多领域内得到了广泛应用。
不久的将来将全部取代分立数字元件,目前一些数字集成电路生产厂商已经停止了分立数字集成电路的生产。
此外,FPGA还具有静态可重复编程和动态在系统重构的特性,使得硬件的功能可以像软件一样通过编程来修改。
因此,FPGA技术的应用前景非常广阔。
VHDL(VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage,超高速集成电路硬件描述语言)诞生于1982年,是由美国国防部开发的一种快速设计电路的工具,目前已经成为IEEE(TheInstituteofElectricalandElectronicsEngineers)的一种工业标准硬件描述语言。
相比传统的电路系统的设计方法,VHDL具有多层次描述系统硬件功能的能力,支持自顶向下(ToptoDown)和基于库(LibraryBased)的设计的特点,因此设计者可以不必了解硬件结构。
从系统设计入手,在顶层进行系统方框图的划分和结构设计,在方框图一级用VHDL对电路的行为进行描述,并进行仿真和纠错,然后在系统一级进行验证,最后再用逻辑综合优化工具生成具体的门级逻辑电路的网表,下载到具体的FPGA器件中去,从而实现可编程的专用集成电路(ASIC)的设计。
波形发生器在生产实践和科技领域中有着广泛的应用。
例如在通信、广播、电视系统中,都需要射频(高频)发射,这里的射频波就是载波,把音频(低频)、视频信号或脉冲信号运载出去,就需要能够产生高频的振荡器。
在工业、农业、生物医学等领域内,如高频感应加热、熔炼、淬火、超声诊断、核磁共振成像等,都需要功率或大或小、频率或高或低的振荡器。
1.EDA技术的简介
EDA(Electronicdesignautomation)即电子设计自动化,它是近几年来迅速发展起来的将计算机软件、硬件、微电子技术交叉运用的现代电子学科,是20世纪90年代从CAD、CAM、CAT和CAE的概念发展而来的。
EDA技术就是以计算机为工作平台,以EDA软件工具为开发环境,以硬件描述语言为设计语言,以ASIC为实现载体的电子产品自动化设计过程。
在EDA软件平台上,根据原理图或硬件描述语言HDL完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化,布局布线、仿真、目标芯片的适配编译,逻辑映射和编程下载等工作。
设计者的工作只限于软件的方式来完成对就的硬件功能的描述了,要EDA工具的帮助下,就应用相应的FPGA器件就可以得到最后的设计结果。
尽管目标系统是硬件,但整个设计和修改过程如同完成软件设计一样方便和高效。
当然我们这说的是EDA是狭义的EDA,主要是指数字系统的自动化设计。
2.设计要求
要求设计一个函数发生器,该函数发生器能够产生方波、三角波、正弦波、及梯形波,并且可以通过选择开关选择相应的波形输出;系统具有复位的功能;通过按键确定输出的波形及确定是否输出波形。
FPGA是整个系统的核心,构成系统控制器,波形数据生成器,加法器,运算/译码等功能。
通过以上分析设计要求完成的功能,确定函数发生器可由三角波产生模块、梯形波产生模块、正弦波产生模块、方波产生模块和输出波形选择模块组成,以及按键复位控制和时钟输入。
由此可确定系统的总体原理框图为:
时钟
clk
波形输出选择模块
波形发生模块
波
复位
reset
形
3.设计思路
3.1波形函数发生方案对比选择
波形函数发生是本设计的最重要的部分,实现函数发生的途径也有很多,因此必须选择一种易于实现且精度高的方案,以此来提高本设计的实用性。
方案一:
通过单片机控制D/A,输出三种波形。
此方案输出的波形不够稳定,抗干扰能力弱,不易调节,而且达不到题目要求的六种波形。
方案二:
使用传统的锁相频率合成方法。
通过芯片IC145152,压控振荡器搭接的锁相环电路输出稳定性极好的正弦波,再利用过零比较器转换成方波,积分电路转换成三角波。
此方案,电路复杂,干扰因素多,不易实现。
方案三:
利用MAX038芯片组成的电路输出波形。
MAX038是精密高频波形产生电路,能够产生准确的三角波、方波和正弦波三种周期性波形,但无法实现梯形波和递增递减斜波的产生。
方案四:
利用在系统编程技术和FPGA芯片产生。
用VHDL语言编写程序,调试成功后下载至实验装置的芯片上,再利用外接D/A转换电路实现以上设计功能。
此种方案完全可以生成设计要求的6种波形,而且通过软件仿真可以直观的观测的输出的波形参数,方便调试和更改波形参数,外围电路简单,减少器件损耗,精度高。
基于方案四的外围电路简单容易实现、波形产生精度高、易于仿真观测调试的优点,因此本设计的函数发生器选择方案四完成波形发生的全部功能。
3.2波形函数输出控制方式选择
方案一:
控制多路D/A开关输出方式
此种方案为每一路输出的波形函数使用一路D/A转换后输出,通过控制开关控制每一路D/A是否工作,决定输出的波形。
此种方案可以同时输出多路波形,但是需要路D/A转化器,外围电路复杂,制作成本较高而且控制复杂。
方案二:
采用数据选择器方式
此种方案可以利用VHDL语言写出数据选择器,然后每种函数发生器的输出和数据选择器输入相连接,通过控制开关选择对应的波形输出。
方案二完全可以得到方案一的设计要求,而且只需一个D/A转换器就可以。
电路不需要外部搭建,节约成本且控制简单方便。
方案三:
采用数据分配器方式
此种方案利用数据分配器的功能,通过控制开关选择相应的函数发生器模块,使之产生相应的波形输出,并通过数据分配器的使能复位控制决定是否输出波形,此种方案和方案二很相似,也能够实现设计的功能也具有方案二的优点。
基于方案二的设计简便、节约制作元件和成本、控制简便等优点,选择方案二作为波形函数输出控制方式。
3.3系统细化框图
通过以上各个模块的分析最终确定函数信号发生器的自顶向下的细化框图为:
3.4系统的整体原理框图:
系统时钟输入后,通过复位开关选择是否产生波形,当各个模块产生相应的信号波形后,通过波形选择模块波形选择开关选泽输出不同的波形,再通过D/A转换器转换,就可以把数字信号(由FPGA输出)变成了相应模拟的信号波形。
整个系统设计的核心就是FPGA部分。
4.各模块程序设计及仿真
根据自上而下的思路进行项目设计。
明确每个模块的功能以后,开始编写各个模块的程序。
4.1三角波模块
三角波delat的VHDL程序如附录所示,其中clk是输入时钟端口,sel0、sel1、sel2为选择波形按键值,reset为输入复位端口,q为八位二进制输出端口。
三角波波形是对称的,每边呈线形变化,所以可以根据数据做简单运算,就可以得到三角波。
图3三角波模块仿真图
程序设计的是reset复位信号为0时输出为0,无对应的波形产生。
当复位信号为1时,当每当检测到时钟上升沿时,当计数的数据不是最大值时,数值做递增运算,当增大到最大时,然后再做递减运算,因此输出的波形便呈现出三角波的形状。
从仿真波形图也能看出这种变化规律。
VHDL描述如下:
IFreset='0'THEN
tmp:
="00000000";--复位信号为0,置最小值
ELSIFclk'EVENTANDclk='1'THEN--检测时钟上升沿
IFa='0'THEN
IFtmp="11111110"THEN
tmp:
="11111111";--置最大值
a:
='1';
ELSE--不是最大值时递增
tmp:
=tmp+1;--递增运算
ENDIF;
ELSE
IFtmp="00000001"THEN
tmp:
="00000000";--置最小值
a:
='0';
ELSE--a为1时,执行递减运算
tmp:
=tmp-1;--递减运算
4.2梯形波模块
梯形波ladder的VHDL程序如附录所示,其中clk是输入时钟端口,sel0、sel1、sel2为选择波形按键值,reset为输入复位端口,q为八位二进制输出端口。
图4梯形波模块仿真图
梯形波设计的是数据的递增是以一定的梯形常数向上增加,所以输出的波形呈现是成梯形状的,而不是,完全呈现是直线增长。
从仿真波形图也能看出这种变化规律。
VHDL描述如下:
IFreset='0'THEN
tmp:
="00000000";--复位信号为0,置最小值
ELSIFclk'EVENTANDclk='1'THEN--检测时钟上升沿
IFa='0'THEN--判断a数值,计数。
IFtmp="11111111"THEN
tmp:
="00000000";--计数到最大清零
a:
='1';
ELSE
tmp:
=tmp+16;--梯形常数为16,可修改
a:
='1';
ENDIF;
ELSE
a:
='0';--循环计数标志
ENDIF;
ENDIF;
q<=tmp;
ENDPROCESS;
ENDbehave;
4.3正弦波模块
正弦波sin的VHDL程序如附录所示,其中clk是输入时钟端口,sel0、sel1、sel2为选择波形按键值,reset为输入复位端口,q为八位二进制输出端口。
图5正弦波模块仿真图
正弦波产生原理:
通过循环不断地从波形数据ROM文件中依次读取正弦波一个周期在时域上64个采样点的波形数据送入波形DAC,从而产生正弦波。
4.4方波模块
方波模块的square的VHDL程序描述如下:
其中clk为输入时钟端口,sel0、sel1、sel2为选择波形按键值,reset为输入复位端口,q为整数输出端口。
图6方波模块仿真图
方波模块的设计是当内部计数cnt达到64时,根据输出标志a的数值输出对应的数值,当a=0输出0,也即是方波周期中的低电平,当a=1,输出255,也即是方波周期中的高电平。
连续的输出便成了观测到的方波波形。
其VHDL描述如下:
IFclr='0'THEN
a<='0';
ELSIFclk'EVENTANDclk='1'THEN--检测时钟上升沿
IFcnt<63THEN--计数64个点
cnt:
=cnt+1;--计数
ELSE
cnt:
=0;--当计数的值大于64时,清零。
a<=NOTa;--对内部a变量取反,a变化启动进程ENDPROCESS;
...............
PROCESS(clk,a)
BEGIN
IFclk'EVENTANDclk='1'THEN
IFa='1'THEN
q<=255;--a=1,输出一个波形周期内的高电平
ELSE
q<=0;--a=0,输出一个波形周期的低电平。
4.5输出波形选择模块
波形选择模块是一个设计位6选1的数据选择器,其中sel为波形数据选择端口,d0~d5为8位二进制输入端口,q为8位二进制输出端口。
该模块可以根据外部开关的状态选择相应的波形输出。
其选择VHDL程序如下:
CASEselIS
WHEN"001"=>q<=d2;--三角波形输出
WHEN"010"=>q<=d3;--梯形波形输出
WHEN"011"=>q<=d4;--正弦波形输出
WHEN"100"=>q<=d5;--方波输出
WHENOTHERS=>NULL;
4.6系统联调测试分析
通过以上各个模块的细化和分析,最终完成了整个系统的联合调试,并通过示波器读输出信号的波形符合设计的要求。
调试整个系统了原理图如下图所示:
结论
应用EDA技术用FPGA完成波形发生器,通过选择波形的按钮,实现6种波形的互相转换。
利用示波器可以验证波形发生器与原定的设计的理论是相一致。
用FPGA完成波形发生器的方法与传统的方法相比较,硬件结构是相当简单的。
大大减小了它的体积和重量。
可以节去传统的烦琐的硬件设计和硬件组合。
易于使用,按下选择波形的选择按钮,即可选出你所需的波形。
PFGA里面有的是有待连接的逻辑门、D触发器等器件,它的外围还要有EEPROM、SDRAM、FLASH与之相配合才可以正常工作,这一点可能会广泛应用FPGA来比较麻烦。
随着技术的发展,如果把EEPROM、SDRAM、FLASH都集成要在FPGA中去,组成它的最小系统,这样的话将会,节去芯片外的线路设计,会得到更加广泛地的应用。
应用EDA技术完成波形发生器的设计,设计简单。
可以看到利用EDA技术完成一个电子设计,可以节省我们开发时间,从而提高大大地了我们的效率。
采用新技术就是为了提高效率,快速完成设计任务。
我们做一个项目时,所在追求的也是快且高效率。
不断地去快速掌握并能快速地应用新技术是我们做技术的人的基本素质。
我们要注重自己在这方面的能力。
当然我们不能废弃我们基本的东西—学科基础,全面发展自己,这需要我不断去追求。
致谢
非常感谢我系韦艳霞老师在完成本设计期间不厌其烦地指导,并提出了许多相当有意义的建议和见解,他乐于帮助学生和工作上兢兢业业精神促使我更快地完成此项设计。
在此,对韦艳霞老师和许多在我遇到困难时给予指引和帮助的老师和朋友一并表示深深的敬意和感谢。
参考文献
潘松,黄继业.EDA技术实用教程(第二版).科学出版社,2007.9
【2】刘艳惠,李娜,孔旭梅.EDA技术教程.西北师范大学知行学院—计算机与电子信息科学系
【3】潭会生,张昌凡.EDA技术及应用.西安电子科技大学出版社,2001.9
【4】李洋.EDA技术使用教程.机械工业出版社,2002.3
附录
1、三角波形源程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYsanjiaoboIS
PORT(clk,reset:
INSTD_LOGIC;
q:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
endsanjiaobo;
ARCHITECTUREbehaveOFsanjiaoboIS
BEGIN
PROCESS(clk,reset)
VARIABLEtmp:
STD_LOGIC_VECTOR(7DOWNTO0);
VARIABLEa:
STD_LOGIC;
BEGIN
IFreset='1'THEN
tmp:
="00000000";--复位信号为0,置最小值
ELSIFclk'EVENTANDclk='1'THEN--检测时钟上升沿
IFa='0'THEN
IFtmp="11111110"THEN
tmp:
="11111111";--置最大值
a:
='1';
ELSE--不是最大值时递增
tmp:
=tmp+1;--递增运算
ENDIF;
ELSE
IFtmp="00000001"THEN
tmp:
="00000000";--置最小值
a:
='0';
ELSE--a为1时,执行递减运算
tmp:
=tmp-1;--递减运算
ENDIF;
ENDIF;
ENDIF;
q<=tmp;
ENDPROCESS;
ENDbehave;
2、梯形波形程序源程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYtixingboIS
PORT(clk,reset:
INSTD_LOGIC;
q:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDtixingbo;
ARCHITECTUREbehaveOFtixingboIS
BEGIN
PROCESS(clk,reset)
VARIABLEtmp:
STD_LOGIC_VECTOR(7DOWNTO0);--定义内部变量
VARIABLEa:
STD_LOGIC;
BEGIN
IFreset='1'THEN
tmp:
="00000000";--复位信号为0,置最小值
ELSIFclk'EVENTANDclk='1'THEN--检测时钟上升沿
IFa='0'THEN--判断a数值,计数。
IFtmp="11111111"THEN
tmp:
="00000000";--计数到最大清零
a:
='1';
ELSE
tmp:
=tmp+16;--梯形常数为16,可修改
a:
='1';
ENDIF;
ELSE
a:
='0';--循环计数
EN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能 函数 发生器 论文