您的负载(WriteShift ='1'和en ='1')也不起作用。
有一个设计缺陷,您使用4个输入与非门,您需要一个2:1多路复用器来为移位寄存器中的四个LSB在Din和q位之间进行选择。
通过使用三个2个输入NOR门创建2:1多路复用器,可以解决此问题:
architecture behavioral of shiftregis is
component notgate
port (
in0: in std_logic;
out0: out std_logic
);
end component;
-- component nand4gate
-- port (
-- i0: in std_logic;
-- i1: in std_logic;
-- i2: in std_logic;
-- i3: in std_logic;
-- bitout: out std_logic
-- );
-- end component;
component nor2gate
port (
i0: in std_logic;
i1: in std_logic;
bitout: out std_logic
);
end component;
component d_flipflop
port (
din: in std_logic;
en: in std_logic;
q: out std_logic;
reset: in std_logic;
clk: in std_logic
);
end component;
signal q4, q3, q2, q1, i