64クロックパルスごとにキャリー信号を送信するカウンタを作成しようとしています。下記のコードを合成しようとすると(Vivadoで)、次のエラーが発生します。VHDLコーディングエラー「クロックがチェックされていないためにElse句がサポートされていません」
クロックのチェック後のElse節はサポートされていません。
(ライン上で合図「!!」)
私は別のプロジェクトに非常によく似た何かをしたと私はそこにすべてのエラーを取得していないので、私は本当に何を得ることはありません違う。どんな助け?
entity refresh_counter is
port(CLK : in STD_LOGIC;
CLR : in STD_LOGIC;
CARRY : out STD_LOGIC);
end refresh_counter;
architecture Behavioral of refresh_counter is
begin
process(CLK)
variable tel : integer;
begin
if (CLK'event and CLK = '1') then
if CLR = '1' then
tel := 0;
end if;
else
if (tel < 63) then !!
tel := tel + 1;
else
CARRY <= '1';
tel := 0;
end if;
end if;
end process;
end Behavioral;
あなたの 'else'は' clk'の立ち上がりエッジでないことが何時に起こるかを記述しようとします。実際のハードウェアでこれがどのように実装されていると思いますか? –
正直なところ、これは実際のハードウェアにどのように実装されているのか分かりませんし、問題かもしれません。しかし、私はポイントを得ると思う。 elseループを 'if CLR = '1' then thenループの中に移動して、今合成します。 – TheAlPaca02
「elsif(tel <63)then」と書いたければ、 'if' CLK部分に最初の' else'を持つよりも意味があります。 Btw。あなたはまた、ある時に 'CARRY'をクリアしたいと思っています。最後に、 'tel 'を代わりにシグナルにすると、シミュレーションデバッグが容易になるからです。 –