case task is
when 1 => task <= 2;
when 2 => task <= 3;
when other =>...
end case
ケース内のスイッチ変数を変更しようとしましたが、ケース句が渡された後の値には影響しません。それを行う適切な方法は何ですか?
case task is
when 1 => task <= 2;
when 2 => task <= 3;
when other =>...
end case
ケース内のスイッチ変数を変更しようとしましたが、ケース句が渡された後の値には影響しません。それを行う適切な方法は何ですか?
シグナル割り当てを使用しているため、変数ではなくシグナルである<=
と想定しています。task
タスクの新しい値は、次のシミュレーション サイクル (デルタ サイクル) で使用できます。これは通常、プロセスが再度実行されたとき、または「待機」ステートメントの後に新しい値が表示されることを意味します (ただし、コードを合成する場合は、おそらく待機ステートメントは必要ありません)。
別の方法として、 に変数をtask
使用し、変数代入演算子を使用できます。task := 2;
シグナルではなく変数を使用してください。これにより、期待どおりに更新されます。
シグナルは、更新が適切に制御されるため、複数のプロセス間の通信に役立ちます。通常の変数はプロセススコープに限定されていないため、エラーが発生しやすいプロセス間通信に誤って使用されることはありません。