Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
同步寄存器设计VHDL_Vhdl_Quartus - Fatal编程技术网

同步寄存器设计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我知道它是,但有些人还是喜欢它在那里