基于VHDL的智能函数发生器的设计.docx
- 文档编号:17547025
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:33
- 大小:451.84KB
基于VHDL的智能函数发生器的设计.docx
《基于VHDL的智能函数发生器的设计.docx》由会员分享,可在线阅读,更多相关《基于VHDL的智能函数发生器的设计.docx(33页珍藏版)》请在冰点文库上搜索。
基于VHDL的智能函数发生器的设计
基于VHDL的智能函数发生器的设计
摘要系统使用EDA技术设计了智能函数发生器,采用硬件描述语言VHDL进行设计,然后进行编程,时序仿真等。
在Max+plusⅡ软件开发平台,输入原理图或硬件描述语言VHDL完成的设计文件,系统将自动地完成逻辑编译、综合、仿真、目标芯片的适配编译、下载等的工作。
设计的工作是利用编程的方式来进行对系统的功能的描述,在EDA工具的帮助下,应用相应的可编程器件,实现设计的最终结果。
使常用到的波形发生器微型化,设计简单化,使用简单化。
关键词:
EDA;VHDL;函数发生器
ThedesignofIntelligentfunctiongenerator
basedonVHDL
Abstract:
SystemusingEDAtechnologytodesignofintelligentfunctionsignalgenerator,usinghardwaredescriptionlanguageVHDLdesign,andprogramming,timingsimulation.IntheMax+plussoftwaredevelopmentplatform,inputschematicorhardwaredescriptionlanguageVHDLcompletedthedesigndocuments,thesystemwillautomaticallycompletethelogiccompilation,comprehensive,simulation,thetargetchipadaptationcompile,Downloadwork.Designoftheworkistheuseofprogrammingwaytocarryonthefunctionofthesystemaredescribed,withthehelpofEDAtool,theapplicationofappropriateprogrammabledevicedesign,implementationofthefinalresult.Thecommontothewaveformgeneratorminiaturization,simpledesign,easytouse。
Keywords:
EDA;VHDL;Functiongenerator
1引言
VHDL(VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage,超高速集成电路硬件描述语言)诞生于1982年,是由美国国防部开发的一种快速设计电路的工具,目前已经成为IEEE(TheInstituteofElectricalandElectronicsEngineers)的一种工业标准硬件描述语言。
相比传统的电路系统的设计方法,VHDL有多层次描述系统硬件功能的能力,支持自顶向下(ToptoDown)和基于库(LibraryBased)的设计的特点,因此设计者可以不必了解硬件结构。
从系统设计入手,在顶层进行系统方框图的划分和结构设计,在方框图一级用VHDL对电路的行为进行描述,并进行仿真和纠错,然后在系统一级进行验证,最后再用逻辑综合优化工具生成具体的门级逻辑电路的网表,下载到具体的FPGA器件中去,从而实现可编程的专用集成电路(ASIC)的设计。
智能函数发生器在生产实践和科技领域中有着广泛的应用。
例如在通信、广播、电视系统中,都需要射频(高频)发射,这里的射频波就是载波,把音频(低频)、视频信号或脉冲信号运载出去,就需要能够产生高频的振荡器。
在工业、农业、生物医学等领域内,如高频感应加热、熔炼、淬火、超声诊断、核磁共振成像等,都需要功率或大或小、频率或高或低的振荡器。
1.1课程设计的目的
波形发生器在生产实践和科技领域有着和广泛的应用,只要用到波形传输的技术和产业,都与波形发生器有着密不可分的关系。
因此,波形发生器的设计是必要的。
本次设计的目的就是利用计算机组成原理中硬件和处理机的相关知识,通过课程设计更加深入的了解计算机处理及相关知识。
了解EDA技术,并掌握VHDL硬件描述语言的设计方法和思想,通过学习的VHDL语言结合计算机组成原理中的相关知识理论联系实际,掌握所学的课程知识。
通过对智能函数发生器的设计,巩固和综合运用所学知识,提高对计算机组成原理的理解。
1.2课程设计的内容
要求设计一个函数发生器,该函数发生器能够产生递增斜波、递减斜波、方波、三角波、正弦波、及阶梯波,并且可以通过选择开关选择相应的波形输出;系统具有复位的功能;通过按键确定输出的波形及确定是否输出波形。
FPGA是整个系统的核心,构成系统控制器,波形数据生成器,加法器,运算/译码等功能。
2EDA和VHDL简介
2.1EDA简介
EDA是电子设计自动化(ElectronicDesignAutomation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。
EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
EDA技术的出现,极大地提高了电路设计的效率和可*性,减轻了设计者的劳动强度。
图2.1EDA的设计流程
2.2VHDL
1VHDL的简介
VHDL(Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage),翻译成中文就是超高速集成电路硬件描述语言。
因此它的应用主要是应用在数字电路的设计中。
诞生于1982年。
自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。
此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。
1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。
现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。
有专家认为,在新的世纪中,VHDL于Verilog语言将承担起大部分的数字系统设计任务。
2VHDL语言的特点
(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。
强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。
(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。
(3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。
符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。
(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。
(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。
3VHDL的设计流程
1.设计规范的定义
明确设计的目的,进行设计的总体规划。
分析设计要求,以及自己要达到的设计目的和目标。
2.采用VHDL进行设计描述
这部分包括设计规划和程序的编写。
设计规划主要包括设计方式的选择及是否进行模块划分。
设计方式一般包括直接设计,自顶向下和自底向下设计。
3.VHDL程序仿真
对于某些人而言,仿真这一步似乎是可有可无的。
但是对于一个可靠的设计而言,任何设计最好都进行仿真,以保证设计的可靠性。
另外,对于作为一个独立的设计项目而言,仿真文件的提供足可以证明你设计的完整性。
4.综合、优化和布局布线
综合指的是将设计描述转化成底层电路的表示形式,其结果是一个网表或者是一组逻辑方程;优化,这个主要是为了提高程序的执行效率及减少资源的利用;布局布线,指的是将逻辑关系转化成电路连接的方式。
5.仿真
这一步主要是为了确定你的设计在经过布局布线之后,是不是还满足你的设计要求。
图2.2VHDL设计流程
2.3MAXPLUSII简介
MaxPlusII是美国Altera公司开发的软件,它具有操作系统的程序界面,采用全菜单操作和鼠标操作方式,是一个完全集成化,易学易用的可编程逻辑设计环境。
它提供了功能强大,直观便捷和操作灵活的原理图输入设计功能,同时还配备了适用于各种需要的元件库,其中包含基本逻辑元件库(如与非门、反向器、触发器等),宏功能元件(包含了几乎所有74系列的器件)以及功能强大、性能良好的类似于核的兆功能块库,但更为重要的是它提供了使用方便,精度良好的时序仿真器,能够对系统中任一元件的功能进行精确的时序仿真,精度达0.1ns,非常准确。
MaxPlusII开发系统是一个完全集成化、易学易用的可编程逻辑器件设计和开发系统,它提供了一种真正与结构无关的可编程逻辑设计环境。
它所提供的灵活性和高效性是无可比拟的,其丰富的图形界面,辅之以完整的、可即时访问的在线文档,使设计人员能够轻松、愉快地掌握和使用MaxPlusII软件。
MaxPlusII支持灵活多样的输入方式:
原理图输入、硬件描述语言输入、波形输入,以及层次设计输入。
MaxPlusII的设计输入、处理和校验功能全部集成在统一的开发环境下,这样可以加快动态调试进程。
它提供丰富的库单元供设计者使用,包括74系列的全部器件、多种特殊的逻辑宏功能(macro-function)和参数化功能模块(LPM:
LibraryofParameterizedModules),但更为重要的是MaxPlusII还提供了原理图输入多层次设计功能,使得用户能设计更大规模的电路系统,以及使用方便、精度良好的时序仿真器。
与传统的数字电路实验相比,MaxPlusII提供灵活多样的层次化输入设计功能,具有显著的优势:
1.能进行任意层次的数字系统设计。
传统的数字电路实验只能完成单一层次的设计,使设计者无法了解和实现多层次的硬件数字系统设计。
2.对系统中的任一层次或任一元件的功能进行精确的时序仿真,精度达0.1ns,因此能发现对系统可能产生不良影响的竞争冒险现象。
3.通过时序仿真,能迅速定位电路系统的错误所在,并随时纠正。
4.能对设计方案进行随时更改,并储存设计过程中所有的电路和测试文件入档。
5.通过编译和下载,能在FPGA或CPLD上对设计项目随时进行硬件测试验证。
6.如果使用FPGA和配置编程方式,将不会有器件损坏和损耗问题。
7.符合现代电子设计技术规范。
传统的数字电路实验利用手工连线的方法完成元件连接,容易对学习者产生误导,以为只要将元件间的引脚用引线按电路图连上即可,而不必顾及引线长短,粗细弯曲方式,可能产生的分布电感和电容效应,以及电磁兼容性等等十分重要的问题。
MaxPlusII还提供设计校验的仿真器,其中包括功能仿真和时序仿真。
仿真器的灵活性很强电路设计完成后,需要验证电路设计的逻辑功能是否正确。
这是一项简单的逻辑检查,可采用功能仿真,这对于初步的逻辑功能检测非常方便。
功能检查完成后,可进行时序仿真。
MaxPlusII的时序分析程序可以计算点到点的器件延时,确定器件引脚上的建立时间和保持时间要求,还可计算最高时钟频率。
用MaxPlusII软件进行逻辑设计的步骤包括:
1.根据所选课题的任务和设计指标要求,确定总体设计方案,画出总体方案的系统框图(亦称预设计阶段)。
2.进行底层单元电路分析及输入设计、编译、仿真。
3.利用已编译正确的底层单元电路模块,画出顶层电路的原理图,进行编译调试和仿真测试。
4.撰写设计报告。
图2.3MaxPlusII设计流程图
3智能函数发生器设计过程
3.1设计规划
本设计是基于VHDL语言设计的智能函数发生器,函数发生器是一种很常用的器件,在很多情况下,最常用的波形是正弦波,方波,三角波,递增,递减斜波和阶梯波六种。
虽然用模拟电子线路很容易得到这些波形,但是这种方法会使硬件线路较为繁琐,而且模拟线路会受到干扰。
本设计采用综合设计方法使用FPGA来实现智能函数发生器,它由六个波形产生模块及波形选择输出模块组成,波形选择模块的输出q接在D/A转换的数据端,就可以在D/A输出端得到想要的其中之一的任一种光滑的波形。
3.2各模块工作原理及设计
(1)智能函数发生器的工作原理
智能函数发生器主要由七大模块组成,其中六大模块是用来产生常用的波形图,包括正弦波,方波,三角波,递增,递减谐波和阶梯波六种波。
在这六个模块中,每个都有两个输入端口,分别是时钟信号端口CLK,CLK输入时钟脉冲,时钟上升沿有效,和复位清零信号RESET,当高电平有效时,系统恢复初始状态;每个模块还有一个输出端口,输出对应的波形函数。
另一大模块就是波形选择模块,SEL【2..0】为输出选择信号,该信号的不同取值对应递增斜波、递减斜波、方波、三角波、正弦波、阶梯波六种不同的输出;Q【7..0】为输出信号,根据输出函数选择信号SEL【2..0】的取值输出相应的波形。
其完整电路原理图如图3.2.1所示。
图3.2.1完整电路原理图
(2)三角波函数模块的设计
电路符号:
三角波函数工作原理框图。
如图3.2.2所示。
图3.2.2三角波函数工作原理框图
图中CLK为时钟输入信号,CLR为复位清零信号,Q【7..0】为输出波形函数。
三角波函数发生器由VHDL程序实现,下面是其VHDL代码:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYjcbIS
PORT(clk,reset:
INSTD_LOGIC;
q:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDjcb;
ARCHITECTUREbehaveOFjcbIS
BEGIN
PROCESS(clk,reset)
VARIABLEtmp:
STD_LOGIC_VECTOR(7DOWNTO0);
VARIABLEa:
STD_LOGIC;
BEGIN
IFreset='0'THEN
tmp:
="00000000";
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
tmp:
=tmp-1;
ENDIF;
ENDIF;
ENDIF;
q<=tmp;
ENDPROCESS;
ENDbehave;
(3)递减谐波模块的设计
电路符号:
递减谐波函数发生器工作原理框图。
如图3.2.3所示。
图3.2.3递减谐波发生器原理框图
其实现VHDL代码如下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYdjIS
PORT(clk,reset:
INSTD_LOGIC;
q:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDdj;
ARCHITECTUREbehaveOFdjIS
BEGIN
PROCESS(clk,reset)
VARIABLEtmp:
STD_LOGIC_VECTOR(7DOWNTO0);
BEGIN
IFreset='0'THEN
tmp:
="11111111";
ELSIFclk'EVENTANDclk='1'THEN
IFtmp="00000000"THEN
Tmp:
="11111111";
ELSE
tmp:
=tmp-1;
ENDIF;
ENDIF;
q<=tmp;
ENDPROCESS;
ENDbehave;
(4)递增谐波模块设计
电路符号:
递增谐波发生器工作原理框图。
如图3.2.4所示。
图3.2.4递增谐波发生器工作原理图
其实现VHDL代码如下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYdzIS
PORT(clk,reset:
INSTD_LOGIC;
q:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDdz;
ARCHITECTUREbehaveOFdzIS
BEGIN
PROCESS(clk,reset)
VARIABLEtmp:
STD_LOGIC_VECTOR(7DOWNTO0);
BEGIN
IFreset='0'THEN
tmp:
="00000000";
ELSIFclk'EVENTANDclk='1'THEN
IFtmp="11111111"THEN
tmp:
="00000000";
ELSE
tmp:
=tmp+1;
ENDIF;
ENDIF;
q<=tmp;
ENDPROCESS;
ENDbehave;
(5)阶梯波函数发生器模块的设计
电路符号:
阶梯波函数发生器的原理框图,如图3.2.5所示。
图3.2.5阶梯波函数发生器原理框图
其实现代码如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityjtbis
port(clk,reset:
instd_logic;
q:
outstd_logic_vector(7downto0));
endjtb;
architectureaofjtbis
begin
process(clk,reset)
variabletmp:
std_logic_vector(7downto0);
begin
ifreset='0'then
tmp:
="00000000";
elseifclk'eventandclk='1'then
iftmp="11111111"then
tmp:
="00000000";
else
tmp:
=tmp+16;
endif;
endif;
endif;
q<=tmp;
endprocess;
enda;
(6)方波函数发生器模块的设计
电路符号:
方波函数发生器的原理框图,如图3.2.6所示。
图3.2.6方波函数发生器原理框图
其实现代码如下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYfbIS
PORT(clk,reset:
INSTD_LOGIC;
q:
OUTINTEGERRANGE0TO255);
ENDfb;
ARCHITECTUREbehaveOFfbIS
SIGNALa:
BIT;
BEGIN
PROCESS(clk,reset)
VARIABLEcnt:
INTEGERrange0to31;
BEGIN
IFreset='0'THEN
A<='0';
ELSIFclk'EVENTANDclk='1'THEN
IFcnt<31THEN
Cnt:
=cnt+1;
ELSE
cnt:
=0;
a<=NOTa;
ENDIF;
ENDIF;
ENDPROCESS;
Process(clk,a)
BEGIN
IFclk'EVENTANDclk='1'THEN
IFa='1'THEN
Q<=255;
ELSE
Q<=0;
ENDIF;
ENDIF;
ENDPROCESS;
ENDbehave;
(7)正弦波函数发生器模块的设计
电路符号:
正弦波函数发生器的原理框图,如图3.2.7所示。
图3.2.7正弦波函数发生器原理框图
其实现代码如下:
libraryieee;
useieee.std_logic_arith.all;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityzxis
port(clk:
instd_logic;
reset:
instd_logic;
q:
outstd_logic_vector(7downto0));
endzx;
architecturebehaveofzxis
signalb:
integerrange0to63;
signald:
integerrange0to255;
begin
process(clk)
begin
ifreset='0'thenb<=0;
elsifclk'eventandclk='1'then
ifb=63thenb<=0;
elseb<=b+1;
endif;
endif;
endprocess;
process(b)
begin
casebis
when00=>d<=255;when01=>d<=254;when02=>d<=252;when03=>d<=249;
when04=>d<=245;when05=>d<=239;when06=>d<=233;when07=>d<=225;
when08=>d<=217;when09=>d<=207;when10=>d<=197;when11=>d<=186;
when12=>d<=174;when13=>d<=162;when14=>d<=150;when15=>d<=137;
when16=>d<=124;when17=>d<=112;when18=>d<=99;when19=>d<=87;
when20=>d<=75;when21=>d<=64;when22=>d<=53
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VHDL 智能 函数 发生器 设计