同步寄存器设计VHDL
如何使此同步寄存器设计VHDL,vhdl,quartus,Vhdl,Quartus,如何使此寄存器设计同步 LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_arith.ALL; ENTITY register1 IS PORT ( d_in : IN std_logic_vector(7 DOWNTO 0); load : IN std_logic; clear : IN std_logic; reg1 : INOUT std_logic_vector(7 DOWN
寄存器
设计同步
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_arith.ALL;
ENTITY register1 IS
PORT (
d_in : IN std_logic_vector(7 DOWNTO 0);
load : IN std_logic;
clear : IN std_logic;
reg1 : INOUT std_logic_vector(7 DOWNTO 0)
);
END register1;
ARCHITECTURE toplevel OF register1 IS
BEGIN
PROCESS (load, clear)
BEGIN
IF clear = '1' THEN
reg1 <= "00000000";
ELSIF load = '1' THEN
reg1 <= d_in;
ELSIF load = '0' THEN
reg1 <= reg1;
END IF;
END PROCESS;
END ARCHITECTURE toplevel;
ieee库;
使用ieee.std_logic_1164.ALL;
使用ieee.std_logic_arith.ALL;
实体注册表1是
港口(
d_in:标准逻辑向量(7到0);
负载:在标准逻辑中;
清除:在标准逻辑中;
reg1:INOUT标准逻辑向量(7到0)
);
末端寄存器1;
寄存器1的体系结构顶层为
开始
过程(加载、清除)
开始
如果清除='1',则
reg1要进行同步设计,您需要添加一个要同步的时钟,然后在上升沿上执行逻辑
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_arith.ALL;
ENTITY register1 IS
PORT (
clk_i : IN std_logic;
d_in : IN std_logic_vector(7 DOWNTO 0);
load : IN std_logic;
clear : IN std_logic;
reg1 : INOUT std_logic_vector(7 DOWNTO 0)
);
END register1;
ARCHITECTURE toplevel OF register1 IS
BEGIN
PROCESS (clk_i, clear) -- Note the change of the sensitivity list
BEGIN
IF clear = '1' THEN
reg1 <= "00000000";
ELSIF rising_edge(clk_i) THEN
IF load = '1' THEN
reg1 <= d_in;
ELSE
reg1 <= reg1;
END IF;
END IF;
END PROCESS;
END ARCHITECTURE toplevel;
ieee库;
使用ieee.std_logic_1164.ALL;
使用ieee.std_logic_arith.ALL;
实体注册表1是
港口(
clk_i:标准逻辑中;
d_in:标准逻辑向量(7到0);
负载:在标准逻辑中;
清除:在标准逻辑中;
reg1:INOUT标准逻辑向量(7到0)
);
末端寄存器1;
寄存器1的体系结构顶层为
开始
过程(clk_i,清除)——注意灵敏度列表的变化
开始
如果清除='1',则
reg1请参阅。您的代码在灵敏度列表中的
中缺少d_。它还描述了一个latchYou时钟It…ELSE reg1我知道它是,但有些人还是喜欢它在那里