智能函数发生器++EDA+MAX 设计 PLUS++毕业.docx
《智能函数发生器++EDA+MAX 设计 PLUS++毕业.docx》由会员分享,可在线阅读,更多相关《智能函数发生器++EDA+MAX 设计 PLUS++毕业.docx(32页珍藏版)》请在冰豆网上搜索。
智能函数发生器++EDA+MAX设计PLUS++毕业
编号:
2009019
本科生毕业设计论文
题目:
智能函数发生器的设计
学号:
200591212231
姓名:
系别:
计算机与电子信息工程系
专业:
电子信息工程专业
班级:
2005级本科乙班
指导教师:
教师职称:
教授
完成时间:
2009年3月
内容摘要
应用EDA技术完成一个电子产品的设计,以FPGA芯片中集成一个在电子生产或检测中通常用到波形发生器。
在Max+plusⅡ软件开发平台,输入原理图或硬件描述语言VHDL完成的设计文件,系统将自动地完成逻辑编译、综合、仿真、目标芯片的适配编译、下载等的工作。
设计的工作是利用编程的方式来进行对系统的功能的描述,在EDA工具的帮助下,应用相应的可编程器件,实现设计的最终结果。
使常用到的波形发生器微型化,设计简单化,使用简单化。
关键词:
FPGAEDA六种波形
Abstract
EDAapplicationoftechnologytocompleteanelectronicproductdesigntoFPGAchipintegratedinaproductionorelectronicdetectionfunctioninusuallyusedinsignalgenerator.MAX+PLUSⅡinthesoftwaredevelopmentplatformfortheimportationofschematicorhardwaredescriptionlanguageHDLdesigndocumentcompleted,thesystemwillautomaticallycompilethecompletionoflogic,integrated,simulation,thegoalofthechipsfittocompile,download,andsoon.DesignworkistouseprogrammingonthewaytocarryoutthefunctionofthesystemdescribedintheEDAtoolswiththehelpoftheappropriateapplicationoftheprogrammabledevices,designedtoachievethefinalresult.Usedtomakethemicro-functionsignalgenerator,simpledesign,simpletouse.
Keywords:
FPGAEDASixkindsofwaveform.
引言………………………………………………………………………………………………1
1.EDA和Max+plusⅡ软件介绍…………………………………………………………………2
1.1EDA技术的简介…………………………………………………………………………2
1.2Max+plusⅡ软件的介绍…………………………………………………………………3
2.设计要求………………………………………………………………………………………4
3.设计思路………………………………………………………………………………………4
3.1波形函数发生方案对比选择……………………………………………………………4
3.2波形函数输出控制方式选择……………………………………………………………5
3.3系统细化框图…………………………………………………………………………6
3.4系统的整体原理框图……………………………………………………………………6
4.各模块程序设计及仿真………………………………………………………………………7
4.1递增斜波模块……………………………………………………………………………7
4.2递减斜波模块……………………………………………………………………………8
4.3三角波模块………………………………………………………………………………8
4.4阶梯波模块……………………………………………………………………………10
4.5正弦波模块……………………………………………………………………………11
4.6方波模块………………………………………………………………………………11
4.7输出波形选择模块……………………………………………………………………12
4.8系统联调测试分析……………………………………………………………………13
5.编译…………………………………………………………………………………………13
6.引脚锁定……………………………………………………………………………………14
7.编程下载……………………………………………………………………………………15
8.硬件验证……………………………………………………………………………………15
9.结论…………………………………………………………………………………………15
致谢………………………………………………………………………………………17
参考文献……………………………………………………………………………………18
附录…………………………………………………………………………………………19
智能函数发生器的设计
学生姓名:
杨力强指导老师:
徐守堂
引言
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和Max+plusⅡ软件介绍
1.1EDA技术的简介
EDA(Electronicdesignautomation)即电子设计自动化,它是近几年来迅速发展起来的将计算机软件、硬件、微电子技术交叉运用的现代电子学科,是20世纪90年代从CAD、CAM、CAT和CAE的概念发展而来的。
EDA技术就是以计算机为工作平台,以EDA软件工具为开发环境,以硬件描述语言为设计语言,以ASIC为实现载体的电子产品自动化设计过程。
在EDA软件平台上,根据原理图或硬件描述语言HDL完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化,布局布线、仿真、目标芯片的适配编译,逻辑映射和编程下载等工作。
设计者的工作只限于软件的方式来完成对就的硬件功能的描述了,要EDA工具的帮助下,就应用相应的FPGA器件就可以得到最后的设计结果。
尽管目标系统是硬件,但整个设计和修改过程如同完成软件设计一样方便和高效。
当然我们这说的是EDA是狭义的EDA,主要是指数字系统的自动化设计。
1.2Max+plusⅡ软件介绍
在这设计中是基于Max+plusⅡ为EDA的开发工具,用这两者作为我们的桥梁,满足开发的需求,在一切工作开始之前先了解下我们的工具FPGA芯片和Max+plusⅡ软件。
Max+plusⅡ是美国Altera公司的一种EDA软件,用于开发CPLD和FPGA进行数字系统的设计。
用图形输入方式和文本输入方式设计了一个模60计数器,介绍了数字系统设计的一般方法和过程,揭示了其在数字系统中的重要作用。
Max+plusⅡ开发系统具有强大的处理能力和高度的灵活性。
其主要优点:
与结构无关、多平台、丰富的设计库、开放的界面、全集成化、支持多种硬件描述语言(HDL)等。
Max+plusⅡ开发系统的特点:
1、开放的界面
Max+plusⅡ支持与Cadence,Exemplarlogic,MentorGraphics,Synplicty,Viewlogic和其它公司所提供的EDA工具接口。
2、与结构无关
Max+plusⅡ系统的核心Complier支持Altera公司的FLEX10K、FLEX8000、FLEX6000、MAX9000、MAX7000、MAX5000和Classic可编程逻辑器件,提供了世界上唯一真正与结构无关的可编程逻辑设计环境。
3、完全集成化
Max+plusⅡ的设计输入、处理与较验功能全部集成在统一的开发环境下,这样可以加快动态调试、缩短开发周期。
4、丰富的设计库
Max+plusⅡ提供丰富的库单元供设计者调用,其中包括74系列的全部器件和多种特殊的逻辑功能(Macro-Function)以及新型的参数化的兆功能(Mage-Function)。
5、模块化工具
设计人员可以从各种设计输入、处理和较验选项中进行选择从而使设计环境用户化。
6、硬件描述语言(HDL)
Max+plusⅡ软件支持各种HDL设计输入选项,包括VHDL、VerilogHDL和Altera自己的硬件描述语言AHDL。
7、Opencore特征
Max+plusⅡ软件具有开放核的特点,允许设计人员添加自己认为有价值的宏函数。
2.设计要求
要求设计一个函数发生器,该函数发生器能够产生递增斜波、递减斜波、方波、三角波、正弦波、及阶梯波,并且可以通过选择开关选择相应的波形输出;系统具有复位的功能;通过按键确定输出的波形及确定是否输出波形。
FPGA是整个系统的核心,构成系统控制器,波形数据生成器,加法器,运算/译码等功能。
通过以上分析设计要求完成的功能,确定函数发生器可由递增斜波产生模块、递减斜波产生模块、三角波产生模块、阶梯波产生模块、正弦波产生模块、方波产生模块和输出波形选择模块组成,以及按键复位控制和时钟输入。
由此可确定系统的总体原理框图为:
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递增斜波模块
递增斜波icrs的VHDL程序如附录所示,其中clk是输入时钟端口,sel0、sel1、sel2为选择波形按键值,reset为输入复位端口,q为八位二进制输出端口。
图1递增斜波模块仿真图
程序设计的当复位信号为0时,输出为0,无对应的波形产生。
当复位信号为1时,每当检测到时钟上升沿时,计数器值加1,当增加到最大后清零。
计数值增加呈现线性关系,因此输出的波形是递增的斜波。
从仿真波形图也能看出这种变化规律。
VHDL描述为:
IFreset='0'THEN
tmp:
="00000000";--复位信号清零
ELSIFclk'EVENTANDclk='1'THEN
IFtmp="11111111"THEN
tmp:
="00000000";--递增到最大值清零
ELSE
tmp:
=tmp+1;--递增运算
4.2递减斜波模块
递减斜波dcrs的VHDL程序如附录所示,其中clk是输入时钟端口,sel0、sel1、sel2为选择波形按键值,reset为输入复位端口,q为八位二进制输出端口。
图2递减斜波模块仿真图
程序设计的是复位信号为0时输出为0,无对应的波形产生。
当复位信号为1时,当每当检测到时钟上升沿时,计数值减1,当减到0后赋值到最大。
计数值减少呈现线性关系,因此输出的波形是递减的斜波。
从仿真波形图也能看出这种变化规律。
VHDL描述为:
IFreset='0'THEN
tmp:
="11111111";--复位信号置最大值
ELSIFclk'EVENTANDclk='1'THEN--检测时钟上升沿
IFtmp="00000000"THEN
tmp:
="11111111";--递减到0置最大值
ELSE
tmp:
=tmp-1;--递减运算
4.3三角波模块
三角波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.4阶梯波模块
阶梯波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.5正弦波模块
正弦波sin的VHDL程序如附录所示,其中clk是输入时钟端口,sel0、sel1、sel2为选择波形按键值,reset为输入复位端口,q为八位二进制输出端口。
图5正弦波模块仿真图
正弦波产生原理:
通过循环不断地从波形数据ROM文件中依次读取正弦波一个周期在时域上64个采样点的波形数据送入波形DAC,从而产生正弦波。
4.6方波模块
方波模块的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.7输出波形选择模块
波形选择模块是一个设计位6选1的数据选择器,其中sel为波形数据选择端口,d0~d5为8位二进制输入端口,q为8位二进制输出端口。
该模块可以根据外部开关的状态选择相应的波形输出。
其选择VHDL程序如下:
CASEselIS
WHEN"000"=>q<=d0;--递增波形输出,十进制0
WHEN"001"=>q<=d1;--递减波形输出,十进制1
WHEN"010"=>q<=d2;--三角波形输出,十进制2
WHEN"011"=>q<=d3;--阶梯波形输出,十进制3
WHEN"100"=>q<=d4;--正弦波形输出,十进制4
WHEN"101"=>q<=d5;--方波输出,十进制5
WHENOTHERS=>NULL;
4.8系