EDA实验Word文件下载.docx
《EDA实验Word文件下载.docx》由会员分享,可在线阅读,更多相关《EDA实验Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。
(2)输入信号节点。
(3)设置仿真参数。
一般首先选择菜单option\snaptogrid取消前面的“√”,以便能任意设置输入电平或设置输入时钟信号的周期。
(4)设定仿真时间。
(5)设置输入信号波形。
(6)保存波形文件。
(7)运行仿真器。
选择主菜单Qaurtus\simulator,单击start按钮。
(8)观察波形。
(9)延时精确测量。
若要精确测量电路的输入与输出的延时,可选择主菜单Qaurtus\timinganalyzer。
在仿真通过后,可以对器件进行编程和硬件测试。
在编程前要完成目标芯片的引脚锁定,并重新编译。
引脚锁定的方法是选择菜单assign\pin\location/chip。
编程时要用下载电缆线把计算机并行口(打印口)与目标板(实验板)连接起来,选择主菜单Qaurtus\programmer,再选择菜单options\hardwaresetup,选择byteblaster(mv)编程方式。
在编程器窗口中单击configure按钮,如果没有故障会出现配置完成的信息提示,表明编程(配置)完毕,之后就可以进行硬件测试了。
本实验的电路方案可参考下图:
四、
实验内容、步骤与结果
1、建立文件夹:
E:
\2005045101XX。
2、启动Qaurtus,打开图形编辑器输入设计并存盘。
3、项目编译
1)将设计文件设成项目。
2)选择目标器件:
ACEX-EP1K10TC100-3。
3)参数设置:
取默认值。
4)编译。
4、时序仿真
1)建立波形文件:
*.SCF。
2)参数设置。
3)打开仿真窗口并”START”。
4)查看仿真结果
请记录仿真波形,并添加到实验报告中。
5、器件编程
1)连好电缆,锁定引脚并重新编译。
2)打开“PROGRAMER”窗口。
3)选择编程/配置目标文件(*.POF/SOF)。
4)点击“PROGRAM”或”CONFIGURE”。
6、硬件测试。
请说明测试方法并记录测试结果,在实验报告中写出。
五、实验结果分析与结论
1、Qaurtus的基本功能和一般操作步骤。
2、原理图文件的建立方法。
3、仿真的方法。
4、其它。
实验二
内容参考课本P291的(实验3)
实验三
实验三VHDL的并行语句
一、实验目的
掌握VHDL中并行语句的特点、功能和使用方法;
进一步熟悉QuartusII的使用方法。
二、实验要求
用选择信号赋值语句或条件信号赋值语句设计一个2线-4线译码器,并完成设计输入、编译、仿真等过程。
三、实验原理与方案
VHDL的基本描述语句分成顺序语句和并行语句两大类。
顺序语句只能包含在进程中,并行语句直接出现在结构体中。
在结构体中的并行语句的执行是同步的,与书写顺序无关。
选择信号赋值语句和条件信号赋值语句属于并行语句,它们的格式如下:
选择信号赋值语句:
WITH选择表达式SELECT
赋值目标信号<
=表达式1WHEN选择值1,
表达式2WHEN选择值2,
…
表达式nWHEN选择值n;
选择信号赋值语句不能在进程中应用,但其功能与进程中的CASE语句相似。
选择信号语句中也有敏感量,即关键词WITH后的选择表达式,每当选择表达式的值发生变化时,就将自动对各子句的选择值进行测试对比,并将满足条件的子句对应的表达式的值赋给目标信号。
选择信号赋值语句对各子句中选择值的测试具有同期性,因此,不允许有条件重叠或条件覆盖不全的情况。
条件信号赋值语句:
=表达式1WHEN赋值条件1ELSE
表达式2WHEN赋值条件2ELSE
表达式n;
在结构体中的条件信号赋值语句的功能类似进程中的IF语句,在执行条件信号语句时,每一赋值条件是按书写的先后关系逐项测定的,一旦发现赋值条件为真,立即将对应的表达式的值赋给目标信号。
由此可知,条件信号语句的赋值条件允许有重叠现象,这与CASE语句有很大的不同。
注意选择信号赋值语句的每一子句结尾都是逗号,最后一句是分号;
而条件赋值语句每一子句的结尾没有任何标点,只有最后一句有分号。
2线-4线译码器是2个输入、4个输出的组合电路,假设输入信号为b、a,输出信号为y0-y3,则其真值表如表3-1所示:
表3-12线-4线译码器的真值表
ba
y0y1y2y3
00
0111
01
1011
10
1101
11
1110
下面是使用选择信号赋值语句的示例程序,可供实验参考。
libraryieee;
useieee.std_logic_1164.all;
entitydecode24is
port(a,b:
instd_logic;
y:
outstd_logic_vector(0to3));
enddecode24;
architecturertlofdecode24is
signalindata:
std_logic_vector(1downto0);
begin
indata<
=b&
a;
WITHindataSELECT
y<
=”0111”when“00”,
”1011”when“01”,
”1101”when“10”,
”1110”when“11”,
”XXXX”whenothers;
endrtl;
四、实验内容、步骤与结果
(一)使用选择信号赋值语句实现实验要求
1、建立文件夹:
2、启动QuartusII,打开文本编辑器输入设计并存盘。
3、项目编译
1)将设计文件设成项目。
2)选择目标器件:
3)参数设置:
4)编译。
4、时序仿真
1)建立波形文件:
2)参数设置。
3)打开仿真窗口并”START”。
4)查看仿真结果
5、器件编程
1)锁定引脚并重新编译。
2)打开“PROGRAMER”窗口。
4)点击“PROGRAM”或”CONFIGURE”。
6、硬件测试
(二)使用条件信号赋值语句实现实验要求
步骤同上。
五、实验结果分析与实验结论
1、根据仿真及硬件测试结果说明实验是否达到了要求。
2、并行语句的特点。
3、选择信号赋值语句和条件信号赋值语句的异同。
4、其它。
实验四数字系统的层次化设计
了解并掌握QuartusII环境下数字系统的层次化设计方法。
采用层次化的设计方法,设计一个十进制计数器-译码器电路,使计数器的输出用数码管显示,并完成设计输入、编译、仿真、硬件测试等过程;
当设计一个结构较为复杂的系统时,通常采用层次化的设计方法。
层次化设计是分层次、分模块进行设计描述。
描述器件总功能的模块放在最上层,称为顶层设计;
描述器件的某一部分功能的模块放在下层,称为底层设计。
根据图形和硬件描述语言的特点,一般在顶层中用电路图说明各模块的连接和I/O关系,在底层用VHDL语言描述模块的逻辑功能。
本实验中的电路结构可参考下图:
如果顶层文件采用原理图方式,则需要在底层设计时创建各模块元件的图形符号,供顶层设计时调用。
方法是在底层设计编译仿真无误后,选择菜单file\createdefaultsymbol。
顶层设计也可以采用文本方式,一般采用结构化描述方式,元件例化语句是结构化描述的典型语句。
下面的程序可供实验中参考:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYcounter10IS
PORT(clk,:
INSTD_LOGIC;
q:
BUFFERSTD_LOGIC_VECTOR(3DOWNTO0));
ENDcounter10;
ARCHITECTURErtlOFcounter10IS
BEGIN
PROCESS(clk,)
BEGIN
IF(clk’EVENTANDclk=’1’)THEN
IFQ=”1001”THEN
Q<
=”0000”
ELSE
Q<
=q+1;
ENDIF;
ENDIF;
ENDPROCESS;
ENDrtl;
ENTITYSEG7IS
PORT(in_data,:
INSTD_LOGIC_VECTOR(3DOWN0);
out_data:
OUTSTD_LOGIC_VECTOR(0TO6));
ENDSEG7;
ARCHITECTUREouviewOFSEG7IS
PROCESS(in_data)
CASEin_dataIS
WHEN“0000”=>
out_data<
=”1111110”;
WHEN“0001”=>
=”0110000”;
WHEN“0010”=>
=”1101101”;
WHEN“0011”=>
=”1111001”;
WHEN“0100”=>
=”0110011”;
WHEN“0101”=>
=”1011011”;
WHEN“0110”=>
=”1011111”;
WHEN“0111”=>
=”1110000”;
WHEN“1000”=>
=”1111111”;
WHEN“1001”=>
=”1111011”;
WHENothers=>
=”0110001”;
ENDCASE;
ENDouview;
ENTITYcounter_segIS
PORT(clk:
out_seg:
ENDcounter_seg;
ARCHITECTUREstructureOFcounter_segIS
COMPONENTcounter10IS
q:
ENDCOMPONENT;
COMPONENTSEG7IS
PORT(in_data:
out_data:
SIGNALout_q:
STD_LOGIC_VECTOR(3DOWNTO0);
u0:
counter10PORTMAP(clk,out_q);
u1:
SEG7PORTMAP(out_q,out_seg);
ENDstructure;
1、用VHDL完成底层电路的设计
1)用VHDL设计十进制计数器并保存默认符号(*.SYM);
2)用VHDL设计七段译码器并保存默认符号;
2、用图形输入法连接前面设计得到的两个默认符号,并添加输入输出端口等符号,完成顶层电路的设计(在实验报告中给出设计出的电路图);
1、设计的电路是否实现了要求的功能。
2、层次化设计的方法。
3、其它。
实验五七段译码器的设计
掌握CASE语句的功能和应用方法,进一步熟悉VHDL的程序设计方法及FPGA的编程方法。
1、设计一个对1位BCD码译码的七段译码器,并完成设计输入、编译、仿真、硬件测试等过程;
2、修改设计,使得当译码器输入非法BCD码时显示器显示“E”;
3、修改设计,实现1位十六进制代码到七段码的译码电路。
1位BCD码由4位二进制代码构成,有效的代码范围为0000-1001。
七段码是用于控制七段LED数码显示器的代码,包含7(8)位二进制代码。
十进制字符、BCD码、七段码的对应关系如下表所示:
表6-1BCD码对应的七段码表
十进制字符
BCD码
七段码(a-g)
0000
1111110
1
0001
0110000
2
0010
1101101
3
0011
1111001
4
0100
0110011
5
0101
1011011
6
0110
1011111
7
0111
1110000
8
1000
1111111
9
1001
1111011
七段译码器就是将输入的BCD码翻译成对应的七段码的电路,为纯组合电路。
由于输入输出之间有明确的对应关系,所以可以采用CASE语句设计。
使用CASE语句时要注意语句中的条件表达式的值必须列举穷尽,但不能重复,如果无法穷举表达式的值,则要用OTHERS来表达。
CASE语句为顺序语句,要包含在进程中。
本实验可参考如下程序:
ENTITYviewIS
INSTD_LOGIC_VECTOR(3TO0);
OUTSTD_LOGIC;
ENDview_1;
ARCHITECTUREouviewOFviewIS
PROCESS
ENDhst;
在进行硬件测试时,可以利用实验箱中的拨动开关提供BCD码输入,利用8位数码管中的任何1位观察显示结果。
8位数码管为共阴极类型,连线时只要将电路的a-g输出端连接到数码管的对应的接线端,再将数码管的位选端SEL0-SEL2接固定的电平即可。
2、启动Qaurtus,打开文本编辑器输入设计并存盘。
1、所设计的电路是否实现了要求的功能;
2、CASE语句的功能和使用方法;
实验六
1、下面程序是n输入与门的VHDL描述,试补充完整。
__________ieee;
use_____________________.all;
entityandnis
________(n:
integer:
=N);
--类属参数声明(注:
仿真时N应该为一个具体的整数值)
port(a:
instd_logic_vector(______downto0);
c:
outstd_logic);
end;
________________behavof________is--结构体声明
process(____)
_____________int:
std_logic;
--变量声明
begin
int:
=_____;
--变量赋初值
forIina'
length–1downto0loop--循环判断(注:
a'
length表示取端口a的长度)
ifa(i)='
0'
then
int:
='
;
endif;
endloop;
c<
=________;
--输出判断结果
endprocess;
endbehav;
2、设计一数据选择器MUX,其系统模块图和功能表如下图所示。
试描述该数据选择器MUX的结构体。
a)用if语句、b)case语句语句编程。
Libraryieee;
Useieee.std_logic_1164.all;
Entitymymuxis
Port(sel:
instd_logic_vector(1downto0);
--选择信号输入
Ain,Bin:
--数据输入
Cout:
outstd_logic_vector(1downto0));
Endmymux;