我正在尝试使用 generate 函数使多个触发器用作寄存器。我有一个信号位向量,我希望每个位都成为其等效触发器的 D 输入,但编译后我收到输出 Q 没有驱动程序的警告。
在这里,我定义了触发器的行为
entity flipflop is
port(
D,CLK,RST: in BIT;
Q: out BIT
);
end entity;
architecture behavioral of flipflop is
begin
P1: process(RST,CLK)
begin
if(RST='1')then
Q <= '0';
elsif(CLK='1' and CLK'EVENT) then
Q <= D;
end if;
end process;
end behavioral;
然后我生成 32 个触发器并尝试将 bit_vector 信号和的每一位设置为触发器的每个 D 输入。
SIGNAL Q,D: BIT_VECTOR (31 DOWNTO 0);
SIGNAL SUM: BIT_VECTOR (31 DOWNTO 0);
BEGIN
register_maker : for i in 0 to 31 generate
BEGIN
flipflop_inst : ENTITY work.flipflop port map
(Q => Q(i),
CLK => CLK,
RST => RST,
D => D(i)
);
end generate register_maker;
process (D,SUM)
begin
for i in 0 to 31 loop
D(i) <= SUM(i);
end loop;
end process;
我不确定我哪里出错了,但触发器的输出没有改变。
谢谢