数字逻辑实验 6_触发器的仿真
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;