生成機能を使用して、複数のフリップフロップをレジスタとして使用しようとしています。各ビットを同等のフリップフロップへの 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;
どこが間違っているのかわかりませんが、フリップフロップの出力は変化していません。
ありがとう