私は以下のステートメントを頻繁に使用しました。しかし、私たちは本当に上記の文でclock'eventを記述する必要がイベントの必要性
if (clock'event and clock = '1') then
[do something]
をだろうか? はいの場合、なぜですか?
私は以下のステートメントを頻繁に使用しました。しかし、私たちは本当に上記の文でclock'eventを記述する必要がイベントの必要性
if (clock'event and clock = '1') then
[do something]
をだろうか? はいの場合、なぜですか?
clock'event
の条件がなくてもシミュレーションが完璧に動作しますが、合成が間違っています。
合成可能なVHDLのIEEE規格には、clock'event
を追加するが必要です。 代わりにif rising_edge(clock)
を書くのが一般的に受け入れられています。これはあなたの意図をより良く伝えます。 rising_edge
とfalling_edge
の両方の関数が合成可能なVHDL構造として使用できます。シミュレーションのために
:
clock
はちょうど(ノーメタ値)バック「0」から「1」に切り替わると、
行動は、あなたが取得したいものに同一であると仮定すると
process (clock) is
-- stuff
begin
if clock='1' then -- EVIL! don't do this
-- do things
end if;
end process;
clock'event
の状態。繰り返しますが、これはあなたが望むものに合成されません!おそらくDフリップフロップではなく、ラッチを得るでしょう。
(これを合成しようとすると、結果を取り戻す誰のためのボーナスポイント!)
はい、それ以外の場合、次のコードは、クロックの立ち上がりエッジだけでなく、クロック信号がハイの時間全体を実行します。
ない真の感度リストの信号のいずれかが変更されたときに、プロセスにのみトリガされます。 – Philippe