複数のフリップフロップをレジスタとして使用するためにgenerate関数を使用しようとしています。私は信号ビットベクトルを持っています。これは、各ビットが等価なフリップフロップへのD入力であることを望みますが、コンパイル後、出力Qにはドライバがないという警告が表示されます。VHDL BIT_VECTORをD入力として使用するために複数のフリップフロップエンティティを生成する方法
ここで私はその後、32フリップフロップを生成し、フリップフロップのD入力のそれぞれにbit_vector信号和の各ビットを設定しようとするフリップフロップ
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;
の動作を定義します。
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;
私は間違っているとは思うが、フリップフロップの出力は変わらない。
おかげ
'if(CLK = '1'とCLK'EVENT)'の代わりに 'if(rising_edge(CLK))'を使用してください。 –
申し訳ありませんが、私の間違いです、私はあなたのコードを誤解しました。私は一般的にbit_vectorが使われているのを見ていませんが、すべて – gsm
です。コンパイル後に*書くと出力Qにドライバがないという警告が出ます*あなたはシミュレーションのためのコンパイルについて話しています。最初に 'flipflop'をコンパイルし、次に他のデザインをコンパイルしてもよろしいですか?そして、それはあなたがシミュレートしようとした他のデザインですか? –