EDAVHDL实验Word文档下载推荐.docx
《EDAVHDL实验Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《EDAVHDL实验Word文档下载推荐.docx(30页珍藏版)》请在冰点文库上搜索。
3.最后在实验系统上进行硬件测试,验证本项设计的功能。
四.参考程序12
1.设计一个半加器12
2.设计一个或门12
3.设计一个全加器12
4.利用例化语句设计一个两位全加器。
13
5.利用例化语句设计一个四位全加器。
五.提高内容13
1.直接编写一位全加器的VHDL程序,利用获得的1位全加器构成2位全加器,并完成编译、综合、适配、仿真和硬件测试。
2.不用例化语句直接设计一个4位全加器,修改程序并验证。
六.实验报告13
1.详细叙述4位加法器的设计流程;
给出各层次的原理图及其对应的仿真波形图;
给出加法器的时序分析情况;
最后给出硬件测试流程和结果。
2.写出提高内容和参考程序不同的部分。
实验三用原理图输入法设计4位全加器14
一.实验目的14
1.熟悉利用ispLEVER的原理图输入方法设计简单组合电路,掌握利用原理图设计的硬件的方法。
14
2.通过一个1位全加器的设计。
比较利用原理图的方法设计和利用VHDL语言文本设计的优缺点。
二.实验原理14
1.半加器14
2.一位全加器14
3.两位全加器15
4.四位全加器15
三.实验步骤15
1.设计一个半加器并仿真。
15
2.设计一个1位全加器,分别仿真和下载,验证逻辑关系16
3.设计一个2位全加器,分别仿真和下载,验证逻辑关系16
4.设计一个4位全加器,分别仿真和下载,验证逻辑关系16
四.提高内容16
1.利用前面介绍的方法与流程,完成半加器和全加器的设计,包括原理图输入、编译、综合、适配、仿真、实验板上的硬件测试,并将此全加器电路设置成一个硬件符号入库。
17
2.设计一个8位全加器。
五.实验报告17
1.将实验原理、设计过程、编译仿真波形和分析结果、硬件测试实验结果写进实验报告。
18
2.写出仿真图形,根据仿真图中的输入和输出和硬件测试结果比较。
实验四6位八段数码扫描显示电路设计19
一.实验目的19
1.学习7段数码显示译码器设计;
了解教学系统中6位八段数码管显示电路的工作原理,设计标准扫描驱动电路模块,以备下一个实验用。
19
2.学习VHDL的select语句应用及多层次设计方法。
二.实验原理19
三.参考程序19
1.19
四.实验内容20
1.说明参考程序中各语句的含义,以及该例的整体功能。
在计算机上对该例进行编辑、编译、综合、适配、仿真,给出其所有信号的时序仿真波形。
20
2.引脚锁定及硬件测试。
硬件验证译码器的工作性能。
五.提高内容:
1.轮换显示A,B,C,D,E,F,H,P,L字母。
21
设计程序、程序分析报告、仿真波形图及其分析报告。
实验五6位计时器的设计(设计型)22
一.实验目的:
22
1.学习十进制计数器的设计;
2.学习数码显示数字的设计方法。
3.学习时序电路的设计、仿真和硬件测试,进一步熟悉VHDL设计技术。
二.实验原理22
三.参考程序22
四.实验内容26
1.设计六进制、十进制、六十进制和百进制计数器26
2.用六进制计数器,实现六个数码管轮流显示。
26
3.用百进制计数器实现百分之一秒和十分之一秒的数值的产生26
4.用六十进制计数器实现十秒和秒数值的产生。
5.用六十进制计数器实现十分和分数值的产生。
6.设计7段数码显示译码器。
五.提高内容26
1.实现分和秒具有预置和复位功能。
2.画出实验设计的完整电路图,详细说明其各部分的工作原理。
第二章软件使用参考27
实验一实验软件安装27
一.安装ispLEVER5.127
二.添加许可文件28
1.在crack文件中破解文件MentorKG拷贝MentorKG.exe到电脑上,点击它,产生一个license.txt.28
2.打开license.txt,把里面的内容全部拷贝到license_lattice.dat里面去(注意,要保留原来license_lattice.dat里面的文件,在顶部或者最底部粘贴上licese.txt里面内容。
另存到D:
\ispTOOLS5_1\license\license.dat。
28
三.添加ispLSI1032E28
实验二ispLEVER简介29
1.软件主要特征:
29
二.ispLSI系列介绍30
1.Synplify31
2.ispEXPERTCompiler32
实验三ispLEVER开发工具的FPGA设计输入方法32
一.创建一个新的设计项目32
2.VHDL设计输入的操作步骤33
3.编译35
二.功能仿真35
1.建立波形仿真文件36
2.使用BUS(总线)输入、输出37
3.看仿真结果38
三.下载39
1.ConstraintEditor约束编辑器(引脚对应)39
2.FitDesign(生成熔丝文件)40
3.下载到芯片内41
实验四原理图输入42
一.新建原理图文件42
1.建立原理图42
2.设计半加器命名成h_adder43
3.添加门电路43
4.加NetName45
5.加I/OMarker项。
45
6.保存46
二.设计的编译与仿真46
1.更新所有原理图文件(UpdateAllSchematicFiles)46
2.编译工程(MergedEDIFNetlist)46
3.建立波形仿真文件(WaveformStimulus)47
4.生成半加器原理图47
5.设计全加器47
6.设计一个两位全加器48
第一章实验指导
实验一简单组合电路设计
一.实验目的
1.熟悉QuartusII9.1的VHDL文本设计流程全过程,学习简单组合电路的设计。
2.初步了解可编程器件设计的软件仿真和硬件下载测试全过程。
3.设计并实现一个8选1多路数据选择器。
二.实验原理
在VHDL语言中描述一个2选一的多路选择器的方法有多种,例如:
在一个进程中使if-when-else语句;
在一个进程中case语句;
使用withselect构造或使用结构VHDL。
推荐的使用方法是使用whenelse构造,这样在VHDL代码中只用1行就可以描述2选1多路选择器。
例如:
libraryieee;
useieee.std_logic_1164.all;
entitymux2is
port(a,b,sel:
instd_logic;
q:
outstd_logic);
end;
architectureaofmux2is
begin
q<
=awhensel=’0’elseb;
但我们在描述一个8选1的多路选择器时,若采用同样的方法,则就需要许多行VHDL代码,此时我们可以在进程中使用case语句会很清晰,但无论使用哪一种描述方法,综合
得到的结果是一样的。
三、实验连线
输入信号DATA0~DATA7对应IO1—IO8接地或者3.3V;
S0~S3对应IO9—IO12接拨码开关;
输出信号Z对应IO13接发光二极管。
改变拨码开关S0~S3的状态,观察实验结果。
1.编写二选一多路选择器的源代码,编译完成后,新建波形仿真文件,进行功能仿真,验证真值关系是否满足。
2.引脚指定后,下载到芯片中,测试逻辑关系。
3.修改源程序设计成四选一选择器,最后在实验系统上进行硬件测试,验证本项设计的功能。
三.提高内容
1.如要设计一个8选1的选择器,如何修改程序。
四.实验报告:
1.根据以上的实验内容写出实验报告,包括程序设计、软件编译、仿真分析、硬件测试和实验过程;
2.程序源代码、程序分析报告、仿真波形图及其分析报告。
3.写出提高内容和参考程序不同的部分。
实验二用VHDL语言设计4位全加器
1.熟悉QuartusII的CycloneIIIEP3C25F324C8N芯片的引脚锁定以及硬件下载测试全过程。
2.掌握利用VHDL设计全加器的基本方法,设计并实现一个一位全加器。
计算机中的加法器一般就是全加器,它实现多位带进位加法。
下面以一位全加器介绍。
一位全加器有三个输入、两个输出,见图3-1。
图3-1一位全加器示意图
图中的“进位入”Ci-1指的是低位的进位输出,“进位出”Ci即是本位的进位输出。
一位全加器的真值表见表3-1。
表3-1:
输入
输出
Ci-1
Bi
Ai
Si
Ci
1
根据表3-1便可写出逻辑函数表达式:
全加功能的硬件实现方法有多种,例如:
可以把全加和看作是Ai与Bi的半加和Hi与进位输入Ci-1的半加和来实现。
多位全加器就是在一位的原理上扩展而成的。
集成电路全加器有7480、7481、7483等。
实验源程序文件名是fulladder.vhd。
全加器的三个输入所对应IO1—IO3同三位拨码开关相连,三个输入端子是a、b、cin,分别代表Ai、Bi、Ci-1;
;
两个输出所对应IO4,IO5同两位发光二极管相连,两个输出端子是co、sum,分别代表Ci、Si。
三.参考程序
1.设计一个半加器
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYh_adderIS
PORT(a,b:
INSTD_LOGIC;
co,so:
OUTSTD_LOGIC);
ENDENTITY;
ARCHITECTUREfh1OFh_adderIS
BEGIN
so<
=aXORb;
co<
=aANDb;
ENDARCHITECTUREfh1;
2.设计一个或门
ENTITYor2aIS
c:
ENDENTITY;
ARCHITECTUREONEOFor2aIS
C<
=aORb;
ENDARCHITECTUREONE;
3.设计一个全加器
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYf_adderIS
PORT(ain,bin,cin:
INSTD_LOGIC;
cout,sum:
OUTSTD_LOGIC);
ENDENTITYf_adder;
ARCHITECTUREfd1OFf_adderIS
COMPONENTh_adder
PORT(a,b:
co,so:
OUTSTD_LOGIC);
ENDCOMPONENT;
COMPONENTor2a
PORT(a,b:
c:
ENDCOMPONENT;
SIGNALd,e,f:
STD_LOGIC;
BEGIN
u1:
h_adderPORTMAP(a=>
ain,b=>
bin,co=>
d,so=>
e);
u2:
e,b=>
cin,co=>
f,so=>
sum);
u3:
or2aPORTMAP(a=>
d,b=>
f,c=>
cout);
ENDARCHITECTUREfd1;
4.利用例化语句设计一个两位全加器。
程序自编。
5.利用例化语句设计一个四位全加器。
四.提高内容
1.直接编写一位全加器的VHDL程序,利用获得的1位全加器构成2位全加器,并完成编译、综合、适配、仿真和硬件测试。
2.不用例化语句直接设计一个4位全加器,修改程序并验证。
五.实验报告
1.详细叙述4位加法器的设计流程;
2.写出提高内容和参考程序不同的部分。
实验三用原理图输入法设计4位全加器
1.熟悉利用ispLEVER的原理图输入方法设计简单组合电路,掌握利用原理图设计的硬件的方法。
2.通过一个1位全加器的设计。
1.半加器
根据真值表得到逻辑关系,然后生成半加器原理图
图一-三-1半加器原理图
2.一位全加器
图一-三-1一位全加器原理图
3.两位全加器
图一-三-1二位全加器原理图
4.四位全加器
图一-三-1四位全加器原理图
三.实验步骤
1.设计一个半加器并仿真。
图一-三-1半加器功能仿真波形图
2.设计一个1位全加器,分别仿真和下载,验证逻辑关系
图一-三-1一位全加器功能仿真波形图
3.设计一个2位全加器,分别仿真和下载,验证逻辑关系
(1)验证CI='
1'
A[1:
0]="
11"
、B[1:
10"
则COUT='
和S[1:
图一-三-1二位全加器功能仿真波形图
(2)利用总线输入信号
参考功能仿真中的使用BUS(总线)输入、输出
4.设计一个4位全加器,分别仿真和下载,验证逻辑关系
1.利用前面介绍的方法与流程,完成半加器和全加器的设计,包括原理图输入、编译、综合、适配、仿真、实验板上的硬件测试,并将此全加器电路设置成一个硬件符号入库。
2.设计一个8位全加器。
图一-三-1用4位全加器原理图设计8位全加器原理图
图一-三-2设计8位全加器功能仿真图
图一-三-38位全加器功能仿真结果
1.将实验原理、设计过程、编译仿真波形和分析结果、硬件测试实验结果写进实验报告。
2.写出仿真图形,根据仿真图中的输入和输出和硬件测试结果比较。
六.
实验四8位八段数码扫描显示电路设计
一.实验目的
1.学习8段数码显示译码器设计;
了解教学系统中8位八段数码管显示电路的工作原理,设计标准扫描驱动电路模块,掌握数码管显示的基本方法。
2.学习VHDL的BLOCK、SELECT和WHEN_LESE语句;
PROCEE语句的使用方法。
二.实验步骤
7段数码是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示,最方便的方法就是利用译码程序在FPGA/CPLD中来实现。
作为7段译码器,输出信号LED7S的7位分别接如图5-18数码管的7个段,高位在左,低位在右。
例如当LED7S输出为“1101101”时,数码管的7个段:
g、f、e、d、c、b、a分别接1、1、0、1、1、0、1;
接有高电平的段发亮,于是数码管显示“5”。
如果要考虑小数点的发光管,需要增加段h。
1、设计一个分频器;
2、设计一个译码器;
3、8个数码管显示相同内容(0~F任一数字);
4、8个数码管显示从0~F显示相同内容;
5、8个数码管显示01234567。
三.实验任务
1、完成编译、综合、配置、仿真、下载和硬件测试。
2、用手机记录个过程的图像
四.参考程序
--IO1--IO3分别连接SEL_A,SEL_B,SEL_C
--IO4--IO11分别连接数码管的A-Dp
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYSeg7_Dspis
PORT(
CP:
--CLOCK
SEGOUT:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
--SEG7DisplayO/P
SELOUT:
OUTSTD_LOGIC_VECTOR(2DOWNTO0)--SelectSEG7O/P);
ENDSeg7_Dsp;
ARCHITECTUREaOFSeg7_DspIS
SIGNALNUM:
STD_LOGIC_VECTOR(3DOWNTO0);
--NumberDisplaySignalSIGNALSEG:
STD_LOGIC_VECTOR(7DOWNTO0);
--SEG7DisplaySignal
SIGNALSEL:
STD_LOGIC_VECTOR(2DOWNTO0);
--SelectSEG7Signal
Connection:
Block
Begin
SELOUT<
=SEL;
--Seg7DispSelection
SEGOUT(7DOWNTO0)<
=SEG;
--SevenSegmentDisplay
EndBlockConnection;
Free_Counter:
Block--计数器--产生扫描信号
SignalQ:
STD_LOGIC_VECTOR(29DOWNTO0);
SignalS:
STD_LOGIC_VECTOR(2DOWNTO0);
PROCESS(CP)--计数器计数
Begin
IFCP'
EventANDCP='
then
Q<
=Q+1;
ENDIF;
ENDPROCESS;
--NUM<
=Q(29DOWNTO26);
--about1Hz
S<
=Q(10DOWNTO8);
--about300Hz扫描信号
SEL<
="
000"
WHENS=0ELSE
"
001"
WHENS=1ELSE
010"
WHENS=2ELSE
011"
WHENS=3ELSE
100"
WHENS=4ELSE
101"
WHENS=5ELSE
110"
WHENS=6ELSE
111"
WHENS=7ELSE
;
EndBlockFree_Counter;
NUM1:
BLOCK
NUM<
="
0000"
WHENSEL="
ELSE
0001"
0010"
0011"
0100"
0101"
0110"
0111"
1111"
ENDBLOCKNUM1;
SEVEN_SEGMENT:
Block--BinaryCode->
Segment7Code
SEG<
00111111"
WHENNUM=0ELSE
00000110"
WHENNU