• 締切済み

カウントダウン VHDL記述に困っています。

入力側には、4Bit入力データバス、Clock、Reset 出力側には、4Bit出力データバス のカウントダウン回路のVHDLの記述にトライしているのですが、シミュレーションを行うと、期待通りの動作が得られません。 イネーブルは入れません。 参考に下記に記述を記載します。 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity CNT_DOWN is port(D_IN : in std_logic_vector(3 downto 0); CLK, RST : in std_logic; D_OUT : out std_logic_vector(3 downto 0) ); end CNT_DOWN; architecture RTL of CNT_DOWN is D_OUT_TMP <= D_OUT; begin process(RST,CLK) begin if(RST='0') then D_OUT_TMP<=(others=>'0'); elsif(CLK'event and CLK='1') then if(D_OUT_TMP=D_IN) then D_OUT_TMP <= D_OUT_TMP - '1'; end if; end if; end process; end RTL; なのですが、きちんと動きません。 アドバイス下さい。

みんなの回答

  • macky_
  • ベストアンサー率60% (3/5)
回答No.2

#1 です。 カウンタ回路のリセット部分を入力データに置き換えただけですが、 こんな感じでしょうか? architecture RTL of CNT_DOWN is signal D_OUT_TMP : std_logic_vector(3 downto 0); begin D_OUT <= D_OUT_TMP; process(RST,CLK) begin if(RST='0') then D_OUT_TMP <= D_IN; elsif(CLK'event and CLK='1') then D_OUT_TMP <= D_OUT_TMP - '1'; end if; end process; end RTL;

  • macky_
  • ベストアンサー率60% (3/5)
回答No.1

この文章だけでは読み取れなかったので教えてください、 どういった動作を期待しているのでしょうか? 仕様はともかく、D_OUT に出力する記述が無いのは大丈夫ですか?

tsugurin
質問者

補足

期待している動作は、例えば、入力データが"1001"のデータがレジスタに入ると、その値からカウントダウンと値が出力したいのです。 D_OUTの記述は、ちょっと一部間違っておりますが、下記に示しています。 よろしくお願いします。 architecture RTL of CNT_DOWN is begin D_OUT_TMP <= D_OUT; process(RST,CLK) begin if(RST='0') then D_OUT_TMP<=(others=>'0'); elsif(CLK'event and CLK='1') then if(D_OUT_TMP=D_IN) then D_OUT_TMP <= D_OUT_TMP - '1'; end if; end if; end process; end RTL;

関連するQ&A