【数字电路与逻辑设计】实验三 8 位寄存器 74374

发布于:2024-12-09 ⋅ 阅读:(161) ⋅ 点赞:(0)

文章总览:YuanDaiMa2048博客文章总览


一、实验内容

根据 74374 的逻辑框图和真值表,用 VHDL 语言实现 74374 的功能。并使用波形图进行仿真。

二、设计过程

D 为寄存器的 8 位数据输入,Q 为寄存器的 8 位数据输出端,CLK 为时钟信号,OE 为控制信号。从功能表可以看出 OE 为低电平时,在时钟上升沿输入端信号从输出端输出,其它时刻输出保持;而 OE 为高电平时,输出一直保持为高阻。

在这里插入图片描述

在这里插入图片描述

三、源代码

(一)代码说明:

① clk:cp时钟脉冲信号,上升沿触发。

② OE:输入,控制信号。

③ D:输入,寄存器的 8 位数据输入。

④ Q:输出,寄存器的 8 位数据输出。

⑤ 设置一个内部信号temp,利用if-else语句来分情况讨论控制信号OE的不同状态;再利用if来在cp上升沿到来时,接受输入信号,最后将temp值赋给Q输出。

(二)代码内容:

library ieee;
use ieee.std_logic_1164.all;
entity reg74374 is
port(OE,CLK:in std_logic;
     D:in std_logic_vector(7 downto 0);
	  Q:out std_logic_vector(7 downto 0));
end entity;
architecture behave of reg74374 is
  signal temp:std_logic_vector(7 downto 0);
begin
  process(OE,CLK)
  begin
  if(OE='0')then
    if(clk'event and clk='1')then
	    temp<=D;
	 end if;
  else
	  temp<="11111111";
  end if;
  Q<=temp;
  end process;
end behave;

四、仿真验证与实验结果

(一)波形图

在这里插入图片描述

(二)波形图说明

① CLK:表示cp时钟脉冲,上升沿有效,周期为10.0ns,起始值为0。

② D:寄存器的8位输入,D0-D3周期分别设置为10.0ns、20.0ns、40.0ns、80.0ns,D4-D7周期分别设置为10.0ns、20.0ns、40.0ns、80.0ns,起始值均为0。

③ OE:控制信号,周期为80.0ns,起始值为0。

④ Q:寄存器的 8 位数据输出端。

(三)实验结果

如图所示,在控制端OE为0时,在CP上升沿,寄存器输入存入并且能够输出,当上升沿过去后输出始终保持,等待下一次上升沿到来;在OE为1时,寄存器输出Q始终全部为1。由此证明,可以实现要求的8位寄存器功能。

五、全部实验

第一部分 组合逻辑

第二部分 时序逻辑


网站公告

今日签到

点亮在社区的每一天
去签到