私は学校のプロジェクトに取り組んでおり、次のフリップフロップ エンティティがあります。
-- define the width-bit flip flop entity
entity flopr is
generic (width: integer);
port (clk, reset: in STD_LOGIC;
d: in STD_LOGIC_VECTOR(width-1 downto 0);
q: out STD_LOGIC_VECTOR(width-1 downto 0));
end flopr;
-- define the width-bit flip flop architecture
architecture asynchronous of flopr is
begin
process(clk, reset)
begin
if reset ='1' then
q <= (others => '0');
elsif rising_edge(clk) then
q <= d;
end if;
end process;
end;
(ベクトル)の代わりにSTD_LOGIC
信号 (ビット)を渡す必要があります。d
q
STD_LOGIC_VECTOR
ただし、変換せずに単純に渡すと、サイズが 1 であっても、渡される型 ( ) がエンティティSTD_LOGIC
内の型 ( ) と同じではないため、コンパイル エラーが発生します。flopr
STD_LOGIC_VECTOR
STD_LOGIC_VECTOR
ちょっとしたグーグルと実験から、私はこれを思いつきました:
zeroMFlopr: entity work.flopr generic map(1) port map(clk => clk, reset => reset, d => (0=>zeroE), q(0) => zeroM);
とzeroE
はzeroM
型STD_LOGIC
です。
それはコンパイルされますが、これはこれを行う正しい方法ですか?
編集: Quartus でコンパイルしようとしましたが、正常に動作したと言いましたが、modelsim でコンパイルしようとすると、次のエラーが表示されます。
正式な "d" の実際の式 (集計) は、グローバルに静的ではありません。
エラーは、私が上に投稿した行を参照しています。