文章总览:YuanDaiMa2048博客文章总览
【数字电路与逻辑设计】实验三 8 位寄存器 74374
一、实验内容
根据 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位寄存器功能。