0

生成機能を使用して、複数のフリップフロップをレジスタとして使用しようとしています。各ビットを同等のフリップフロップへの 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;

どこが間違っているのかわかりませんが、フリップフロップの出力は変化していません。

ありがとう

4

1 に答える 1