基于VHDL语言的多波形信号发生器的设计电子 课程设计 毕业论文.docx
- 文档编号:1073740
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:22
- 大小:929.61KB
基于VHDL语言的多波形信号发生器的设计电子 课程设计 毕业论文.docx
《基于VHDL语言的多波形信号发生器的设计电子 课程设计 毕业论文.docx》由会员分享,可在线阅读,更多相关《基于VHDL语言的多波形信号发生器的设计电子 课程设计 毕业论文.docx(22页珍藏版)》请在冰点文库上搜索。
基于VHDL语言的多波形信号发生器的设计电子课程设计毕业论文
摘要:
硬件描述语言HDL是EDA技术中的重要组成部分,VHDL是当前最流行的硬件描述语言之一,此语言具有良好的可读性、可移植性等特点。
本设计主要是利用VHDL语言设计一个多功能信号发生器,根据输入信号的选择可以输出方波、三角波、正弦波和阶梯波4种信号,主要使用了Altera公司的QuartusII软件。
本设计利用VHDL语言使用文本输入法,新建工程,通过设计输入、编译、仿真完成各种信号的设计,然后生成元器件,再使用原理图输入法完成各部分的整合,从而形成一个完整的多波形信号发生器,而后经过锁定引脚下载数模转换可以在示波器上观察到波形。
关键词:
VHDL,文本输入法,原理图输入法,数模转换
Abstract:
HardwaredescribelanguageHDLisanimportantpartofEDAtechnology,VHDLisoneofthecurrentmostpopularhardwaredescribelanguage,thislanguagehasanicereadabilityandportability.Thisdesignprimarilyusesvhdllanguagetodesignaversatilesignalgenerator.Accordingtothechoiceoftheinputsignalwave,thegeneratorcanexporttheonewaveofthefourwavesincludingsquare-wave、triangular-wave、sine-wave、ladder-wave.ThisdesignprimarilyusestheQuartusIIsoftwareofAlteracompany.
ThedesignusestextinputmethodbyVHDLlanguagetocreatnewprojects,designtheinput,compile,simulatevariouskindssignals.Anditgeneratenewcomponent,thenitformacompletedvariouskindssignalsgeneratorbyschematicdiagrammethod,thenyoucanobservethewaveformsontheoscillographafterlockingthepins,downloading,digital-analogueconversion.
Keywords:
VHDL,textinputmethod,schematicdiagrammethod,digital-to-analogueconversion
目录
1.绪论4
1.1EDA概述4
1.2QuartusII概述4
1.3信号发生器概述5
2.VHDL语言介绍5
3.主要功能6
3.1功能模块的划分7
3.2主要功能的实现7
3.2.1方波的实现7
3.2.2三角波的实现9
3.2.3正弦波的实现10
3.2.4阶梯波的实现13
3.2.5四选一输出波形选择模块14
3.3多波形信号发生器15
4.外围电路设计17
4.1基于EPM1270T144C5芯片的开发板介绍17
4.2D/A转换器17
4.3示波器观察图形19
结论21
参考文献22
致谢23
1.绪论
1.1EDA概述
EDA技术是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关开发软件,自动完成用软件的方式设计的电子系统到硬件系统实现,最终形成集成电子系统或专用集成芯片的一门新技术。
1.2QuartusII概述
QuartusII是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。
具有运行速度快,界面统一,功能集中,易学易用等特点。
QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。
对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。
此外,QuartusII通过和DSPBuilder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。
MaxplusII作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。
目前Altera已经停止了对MaxplusII的更新支持,QuartusII与之相比不仅仅是支持器件类型的丰富和图形界面的改变。
Altera在QuartusII中包含了许多诸如SignalTapII、ChipEditor和RTLViewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了MaxplusII友好的图形界面及简便的使用方法。
AlteraQuartusII作为一种可编程逻辑的设计环境,由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。
Altera的QuartusII可编程逻辑软件属于第四代PLD开发平台。
该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。
Quartus平台与Cadence、ExemplarLogic、MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。
改进了软件的LogicLock模块设计功能,增添了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。
支持MAX7000/MAX3000等乘积项器件[1]。
1.3信号发生器概述
信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。
各种波形曲线均可以用三角函数方程式来表示。
能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波的电路被称为函数信号发生器。
函数信号发生器在电路实验和设备检测中具有十分广泛的用途。
例如在通信、广播、电视系统中,都需要射频(高频)发射,这里的射频波就是载波,把音频(低频)、视频信号或脉冲信号运载出去,就需要能够产生高频的振荡器。
在工业、农业、生物医学等领域内,如高频感应加热、熔炼、淬火、超声诊断、核磁共振成像等,都需要功率或大或小、频率或高或低的振荡器。
2.VHDL语言介绍
硬件描述语言HDL是EDA技术的重要组成部分,常见的HDL语言有VHDL、VerilogHDL、ABEL、AHDL、SystemVerilog和SystemC。
其中VHDL,Verilog在现在的EDA设计中使用最多,也拥有几乎所有主流EDA工具的支持。
而SystemVerilog和SystemC这两种HDL语言还处于完善过程中。
VHDL是作为电子设计主流硬件的描述语言之一,这里我们将重点介绍它。
VHDL的英文全名是VHSIC(VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage),于1983年由美国国防部(DOD发起创建),由IEEE(TheInstituteofElectricalandElectronicsEngineers)进一步发展,并在1987年作为“IEEE标准1076”发布。
从此,VHDL成为硬件描述语言的业界标准之一。
自IEEE公布了标准版本(IEEEStd1076)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具支持VHDL。
从此VHDL在电子设计领域得到广泛应用,并逐步取代了原有的非标准硬件描述语言[2]。
VHDL作为一个规范语言和建模语言,随着它的标准化,出现了一些支持该语言的行为仿真器。
由于创建VHDL的最初目标是用于标准文档的建立和电路功能模拟,其基本想法是在高层次上描述系统和元件的行为。
但到了20世纪90年代初,人们发现,VHDL不仅可以作为系统模拟的建模工具,而且可以作为电路系统的设计工具:
可以利用软件工具将VHDL源码自动地转化为文本方式表达的基本逻辑元件连接图,即网表文件。
这种方法显然对于电路自动设计是一个极大的推进。
很快,电子设计领域出现了第一个软件设计工具,即VHDL逻辑综合器,它可以标准地将VHDL的部分语句描述转化为具体电路实现的网表文件。
1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展了VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本。
现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言[3]。
VHDL语言具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化了硬件设计任务,提高了设计效率和可靠性。
VHDL允许以下三种描述方式:
(1)结构描述:
描述该设计单元的硬件结构,即该硬件是如何构成的。
主要使用配置指定语句及元件例化语句描述元件的类型及元件的互连关系。
(2)行为描述:
描述该设计单元的功能,即该硬件能做些什么。
主要使用进程语句,以算法形式描述数据的变换和传送。
(3)数据流方式:
以类似于寄存器传输级的方式描述数据的传输和变换。
主要使用并行的信号赋值语句,既显式表示了设计单元的行为,也隐式表示了设计单元的结构。
VHDL具有与具体硬件电路无关和与设计平台无关的特性,并具有良好的电路行为描述和系统描述能力,并在语言易读性和层次化结构化设计方面,表现了强大的生命力和应用潜力。
因此,VHDL在支持各种模式的设计方法、自项向下与自底向上或混合方法方面,在面对当今许多电子产品生命周期的缩短,需要多次重新设计以融入最新技术,改变工艺等方面都表现了良好的适应性。
用VHDL进行电子系统设计的一个很大的优点是设计者可以专心致力于其功能的实现,而不需要对不影响功能的工艺有关的因素花费过多的时间和精力。
此外,它支持大规模设计的分解和己有设计的再利用,一个大规模设计不可能一个人独立完成,它将由多个人甚至多个项目组共同完成。
VHDL中设计实体(designentity)的概念、程序包(package)的概念、设计库(library)的概念为设计的分解和设计的再利用提供了有力的支持[4]。
3.主要功能
本设计主要是利用VHDL语言设计一个多功能信号发生器,根据输入信号的选择可以输出方波、三角波、正弦波和阶梯波4种信号,并且可以通过示波器观察到所选择的波形。
3.1功能模块的划分
信号发生器的结构框图如图1所示:
图1信号发生器的结构框图
其中信号产生模块将产生所需的各种信号,信号发生器的控制模块可以用数据选择器实现,用4选1数据选择器实现对4种信号的选择。
最后将波形数据送入D/A转换器,将数字信号转换为模拟信号输出。
用示波器测试D/A转换器的输出,可以观测到4种信号的输出。
3.2主要功能的实现
3.2.1方波的实现
产生方波,是通过交替送出全0和全1实现,每32个时钟翻转一次。
其VHDL代码如下:
libraryieee;
useieee.std_logic_1164.all;
entitysquareis
port(clk,clr:
instd_logic;
q:
outintegerrange0to255);
endsquare;
architectureoneofsquareis
signala:
bit;
begin
process(clk,clr)
variablecnt:
integer;
begin
ifclr='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;
endone;
其仿真波形如图2所示:
图2方波仿真图
其生成元器件如图3所示:
图3方波元器件生成图
3.2.2三角波的实现
该模块产生的三角波以64个时钟为一个周期,输出q每次加减8。
其VHDL代码如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitydeltais
port(clk,reset:
instd_logic;
q:
outstd_logic_vector(7downto0));
enddelta;
architecturedelta_arcofdeltais
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="11111000"then
tmp:
="11111111";
a:
='1';
else
tmp:
=tmp+8;
endif;
else
iftmp="00000111"then
tmp:
="00000000";
a:
='0';
else
tmp:
=tmp-8;
endif;
endif;
endif;
q<=tmp;
endprocess;
enddelta_arc;
其仿真波形如图4所示:
图4三角波仿真图
其生成元器件如图5所示:
图5三角波元器件生成图
3.2.3正弦波的实现
该模块产生以64个时钟为一个周期的正弦波。
其VHDL代码如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitysinis
port(clk,clr:
instd_logic;
d:
outintegerrange0to255);
endsin;
architecturesin_arcofsinis
begin
process(clk,clr)
variabletmp:
integerrange0to63;
begin
ifclr='0'then
d<=0;
elsifclk'eventandclk='1'then
iftmp=63then
tmp:
=0;
else
tmp:
=tmp+1;
endif;
casetmpis
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;when23=>d<=43;
when24=>d<=34;when25=>d<=26;when26=>d<=19;
when27=>d<=13;when28=>d<=8;when29=>d<=4;
when30=>d<=1;when31=>d<=0;when32=>d<=0;
when33=>d<=1;when34=>d<=4;when35=>d<=8;
when36=>d<=13;when37=>d<=19;when38=>d<=26;
when39=>d<=34;when40=>d<=43;when41=>d<=53;
when42=>d<=64;when43=>d<=75;when44=>d<=87;
when45=>d<=99;when46=>d<=112;when47=>d<=124;
when48=>d<=137;when49=>d<=150;when50=>d<=162;
when51=>d<=174;when52=>d<=186;when53=>d<=197;
when54=>d<=207;when55=>d<=217;when56=>d<=225;
when57=>d<=233;when58=>d<=239;when59=>d<=245;
when60=>d<=249;when61=>d<=252;when62=>d<=254;
when63=>d<=255;
whenothers=>null;
endcase;
endif;
endprocess;
endsin_arc;
其仿真波形如图6所示:
图6正弦波仿真图
其生成元器件如图7所示:
图7正弦波元器件生成图
3.2.4阶梯波的实现
改变该模块递增的常数,可以改变阶梯的个数。
其VHDL代码如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityladderis
port(clk,reset:
instd_logic;
q:
outstd_logic_vector(7downto0));
endladder;
architectureladder_arcofladderis
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="11111111"then
tmp:
="00000000";
a:
='1';
else
tmp:
=tmp+16;--阶梯常数为16,可修改
a:
='1';
endif;
else
a:
='0';--循环计数
endif;
endif;
q<=tmp;
endprocess;
endladder_arc[5];
其仿真波形如图8所示:
图8阶梯波仿真图
其生成元器件如图9所示:
图9阶梯波元器件生成图
3.2.5四选一输出波形选择模块
根据外部的开关状态可以选择输出的波形。
其VHDL代码如下:
libraryieee;
useieee.std_logic_1164.all;
entityselect4_1is
port(sel:
instd_logic_vector(1downto0);
d0,d1,d2,d3:
instd_logic_vector(7downto0);
q:
outstd_logic_vector(7downto0));
endselect4_1;
architectureoneofselect4_1is
begin
process(sel)
begin
caseselis
when"00"=>q<=d0;
when"01"=>q<=d1;
when"10"=>q<=d2;
when"11"=>q<=d3;
endcase;
endprocess;
endone;
其波形仿真如图10所示:
图10四选一信号选择仿真图
其生成元器件如图11所示:
图114选1信号选择元器件生成图
3.3多波形信号发生器
新建一工程,加载上述模块,利用原理图输入法生成整体多波形信号发生器。
整体RTL图如图12所示:
图12整体多波形信号发生器RTL图
整体多波形信号发生器仿真如图13所示:
图13整体多波形信号发生器仿真图
4.外围电路设计
4.1基于EPM1270T144C5芯片的开发板介绍
开发板具体功能如图14所示
图14基于EPM1270T144C5芯片的开发板
4.2D/A转换器
在整体系统中,波形的幅度值被量化成数字值存储在ROM中,通过一组数据线输出代表二进制编码的电平信号。
为了将数字信号转换成模拟信号,需要用到数一模转换器,简称DAC(Digital-AnalogConverter)。
为了数据处理结果的准确性,DAC转换器必须有足够的转换精度,同时为了能够在较高频率下工作,它必须有足够快的转换速度。
因此,转换精度和转换速度是衡量DAC转换器性能优劣的主要标志。
目前常见的D/A转换器中,有权电阻网络D/A转换器,倒梯形电阻网络D/A转换器,权电阻网络D/A转换器,倒梯形电阻网络D/A转换器、权电流型D/A转换器、权电容型网络D/A转换器以及开关树型D/A转换
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于VHDL语言的多波形信号发生器的设计 电子 课程设计 毕业论文 基于 VHDL 语言 波形 信号发生器 设计