一、实验目的
1.熟悉译码器的工作原理。
2.熟悉 Quartus II 软件的基本操作,了解各种设计方法(原理图设计、文本
设计、波形设计)。
二、实验内容
使用原理图和(/或) VHDL 语言两种方式,完成以下内容,并验证其功
能的正确性。
1.用逻辑图和 VHDL 语言设计一个异或门。
2.用逻辑图和 VHDL 语言设计一个 3-8 译码器。
3.用 VHDL 语言设计模型机指令译码器。
三、实验方法
完成原理图后使用Quartus II软件完成VHDL程序。
用逻辑图和VHDL语言设计一个异或门
四、实验步骤和实验过程
① 先画出异或门的逻辑图。
② 打开Quartus II,新建工程,编写源代码。
a.新建工程。【Create A New Project】->【Next】->设置文件路径为全英路径+设置project name为yi_huo ->【Next】->【Next】->Family 框处选择【Cyclone】->【Next】->【Next】->【Finish】。工程创建完毕。
b.新建编程文件。【File】->【New】->【VHDL File】,编程文件创建完毕。
③ 写好源代码,保存文件。(如图为源代码,VHDL实现)
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity yi_huo is
port(x,y:in std_logic;
z:out std_logic);
end entity yi_huo;
architecture a of yi_huo is
begin
z<= x xor y;
end architecture a;
④ 编译与调试。确保顶层实现的命名和工程名一致。点击【processing】-【star compilation】或者
,进行文件编译,编译成功。
⑤ 查看RTL视图。【Tools】->【Netlist Viewer】->【RTL Viewer】
⑥ 结果分析及结论。如RTL图所示,X、Y为异或门的输入,Z为异或门输出,完成了异或门的设计,初步判断设计正确。
⑦ 功能仿真的波形及验证。新建一个vector waveform file,按照程序所述插入X、Y、Z三个节点(X、Y为输入节点,Z为输出节点)。
a.新建波形文件。【File】->【New】->【Vector Waveform File】->【OK】->双击->【Node Finder】->pins=all;【list】->【>>】->【OK】->【OK】->设置X、Y的波形图->保存文件)
b.生成网表,功能仿真。【Processing】->【Simulation Tool】->【Simulation mode】框选择【Functional】->【Generate Functional Simulation Netlist】。生成网表成功。
网表生成后才可以功能仿真。【Processing】->【Start Simulation】
功能仿真波形如下图:
c.结果分析及结论
0-10.0ns,z=0⊕0=0,仿真无误。
10.0-20.0ns,z=0⊕1=1,仿真无误。
20.0-30.0ns,z=1⊕0=1,仿真无误。
30.0-40.0ns,z=1⊕1=0,仿真无误。
⑧ 实现时序仿真。【Processing】->【Simulation Tool】->【Simulation mode】框选择【Timing】->【Start】。
a.时序仿真成功。
时序仿真波形图如图所示:
b.结果分析及结论
0-10.0ns,z=0⊕0=0,仿真无误。
10.0-17.6ns,0⊕1=1,由于有延时,显示的仍是0⊕0=0的情况。
17.6-20.0ns,z=0⊕1=1,仿真无误。
20.0-27.4ns,z=1⊕0=1,仿真无误。
27.4-28.2ns,1⊕0=1,由于有延时,显示的是1⊕1=0或者0⊕0=0的情况,出现冒险。
28.2-30.0ns,1⊕0=1,仿真无误。
30.0-37.4ns,1⊕1=0,由于有延时,显示的是1⊕0=1的情况。
37.4-40.0ns,1⊕1=0,仿真无误。
47.2-48.4ns,0⊕0=0,由于有延时,显示的是0⊕1=1或1⊕0=1的情况,出现冒险。