- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数字逻辑实验6触发器的仿真
实验六 触发器的仿真
实验要求
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语言描述实现元件的功能的过程进行阐述。
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的功能从仿真波形的信息可以得出:
endqnotq100111100×保持q保持notq据仿真波形信息,当使能端en为1时,d端数据输入为0时,q端输出0,notq输出1;
当使能端en为1时,d端数据输入为1时,q端输出1,notq输出0;
当使能端en为0时,无???d端数据输入什么,q端保持输出原输出,notq保持原输出;
根据输入输出的对应关系,可以得出它的真值表和D锁存器相同,设计成功。
边沿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(clkevent and clk=1) then
q1=d;
nq1=not d;
else q1=q1;
nq1=nq1;
end if;
end process;
q=q1;
notq=nq
文档评论(0)