数字逻辑实验 6_触发器的仿真

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验六触发器的仿真

一、实验要求

1.用VHDL语言设计D锁存器,并进行仿真与分析;

2.参看Maxplus中器件7474(边沿D触发器)的逻辑功能,用VHDL语言设计边沿触发式D触发器,并进行仿真与分析。

3.参看Maxplus中器件7476(边沿JK触发器)的逻辑功能,用VHDL语言设计边沿触发式JK触发器,并进行仿真与分析。

二、实验内容

通过quartus2 参照芯片的电路结构,只使用VHDL语言实现D锁存器、边沿D触发器(参照7474)和边沿JK触发器(参考7476)。并通过仿真波形验证设计的功能是否正确。

三、实验过程

由于在报告1中已经详尽描述了如何使用Quartus 2建立逻辑原理图和使用VHDL语言实现元件功能,所以本次的实验报告中便不再赘述上述内容,报告将主要就VHDL 语言描述实现元件的功能的过程进行阐述。

1.D锁存器

选择File→New,弹出新建文本对话框,在该对话框中选择VHDL File并单击OK按钮,进入文本编辑窗口,输入VHDL代码。

library IEEE;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity d_lock is

port(

en,d:in std_logic;

q,notq:out std_logic);

end d_lock;

architecture d_lock_arc of d_lock is

signal q1,notq1 :std_logic;

begin

process(en,d)

begin

if(en/='0') then

if(d='0') then

q1<='0';

notq1<=not q1;

else

q1<='1';

notq1<=not q1;

end if;

else

q1<= q1;

notq1<= notq1;

end if;

end process;

q<= q1;

notq<= notq1;

end d_lock_arc;

保存文件并编译,选择菜单File→New,选择Vector Waveform File新建波形图,添加节点,参数设置为:End Time=2us, Grip size=100ns。所完成的波形图如下图:

保存波形文件,并在settings中选择functional功能仿真,绘制网格,仿真可得出如图波形:

在仿真中,只摘取了部分重要部分进行仿真验证,测试了使能端G的功能从仿真波形的信息可以得出:

据仿真波形信息,当使能端en为1时,d端数据输入为0时,q端输出0,notq输出1;

当使能端en为1时,d端数据输入为1时,q端输出1,notq输出0;

当使能端en为0时,无论d端数据输入什么,q端保持输出原输出,notq保持原输出;

根据输入输出的对应关系,可以得出它的真值表和D锁存器相同,设计成功。

2.边沿D触发器

选择File→New,弹出新建文本对话框,在该对话框中选择VHDL File并单击OK按钮,进入文本编辑窗口,输入VHDL代码。

library IEEE;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity d_chufa is

port( pr,clr,clk,d:in std_logic;

q,notq:out std_logic);

end d_chufa;

architecture arc of d_chufa is

signal q1,nq1: std_logic;

begin

process(pr,clk,d,clr)

begin

if(pr='0' and clr='1') then

q1<='1';

nq1<= not q1;

elsif(pr='0' and clr='0') then

q1<='1';

nq1<='1';

elsif(pr='1' and clr='0') then

q1<='0';

nq1<= not q1;

elsif(clk'event and clk='1') then

q1<=d;

nq1<=not d;

else q1<=q1;

nq1<=nq1;

end if;

end process;

q<=q1;

notq<=nq1;

end arc;

保存文件并编译,选择菜单File→New,选择Vector Waveform File新建波形图,添加节点,参数设置为:End Time=2us, Grip size=50ns。所完成的波形图如下图:波形解释:pr为复位端,低电平有效,q输出0;clk为时钟信号输入端口;clr为清零端,低电平有效,q输出1;d为数据输入端口。

保存波形文件,并在settings中选择functional功能仿真,绘制网格,仿真可得出如图波形:

根据仿真波形可验证D触发器功能表中功能,当pr=‘0’,clr=‘1’时;D触发器复位,q端输出1,易得notq输出0;当pr=‘1’,clr=‘0’时,D触发器清零,q端输出0;当pr、clr=‘0’时,q和notq输出都为‘1’,无效。当pr=‘1’,clr=‘1’时,当到达clk时钟上升沿并且数据输入端d=‘1’时,q端输出1,当数据输入端d=‘0’时,q端输出0;波形最后验证了D触发器保持功能,当clk=‘0’时,无论d端输入如何,q和notq端保持原输出。

已知D触发器逻辑功能表为:

从波形分析与D触发器功能表相比,可知实现D触发器所有功能,设计成功。

3.边沿JK触发器

选择File→New,弹出新建文本对话框,在该对话框中选择VHDL File并单击OK按钮,进入文本编辑窗口,输入VHDL代码。

library IEEE;

相关文档
最新文档