VHDL でループと終了を使用する方法
前のチュートリアルでは、 wait for
を使用して時間を遅らせる方法を学びました 声明。また、プロセス ループについても学びました。そのままにしておくと、プロセス「スレッド」がプロセス内で永久にループすることがわかりました。
しかし、プロセスの最初に一度だけ何かをしたい場合はどうすればよいでしょうか?そして、最後に他のコードをループしますか? loop
を使用して、VHDL の最も単純な種類のループを作成できます。
このブログ投稿は、基本的な VHDL チュートリアル シリーズの一部です。
単純なループの構文は次のとおりです:
loop
end loop;
このようなループは無期限に、または exit;
まで続きます。 遭遇します。 exit
ステートメントは、任意のループから抜け出すために使用できます。
エクササイズ
このビデオ チュートリアルでは、単純なループの作成方法とループから抜け出す方法について説明します。
このチュートリアルで作成した最終的なコード:
entity T03_LoopTb is end entity; architecture sim of T03_LoopTb is begin process is begin report "Hello!"; loop report "Peekaboo!"; exit; end loop; report "Goodbye!"; wait; end process; end architecture;
ModelSim で実行ボタンを押したときのシミュレータ コンソールへの出力:
VSIM 2> run # ** Note: Hello! # Time: 0 ns Iteration: 0 Instance: /t03_looptb # ** Note: Peekaboo! # Time: 0 ns Iteration: 0 Instance: /t03_looptb # ** Note: Goodbye! # Time: 0 ns Iteration: 0 Instance: /t03_looptb
分析
シミュレーターで最終的なコードを実行すると、最初の「Hello!」 ModelSim コンソールに出力されました。そして、「ピーカブー!」 loop;
の間 および end loop;
印刷されました。次の行で、プログラムは exit;
をヒットしました これにより、プログラムはループから抜け出します。最後に「さようなら!」印刷されました。 wait;
でプログラムが永久に一時停止されるため、この後は何も起こりません。
プリントアウトのタイムスタンプから、すべてが 0 ns のシミュレーション時間で発生したことがわかります。前のチュートリアルで学んだように、wait
以外はすべて ステートメントはゼロ時間を消費します。
テイクアウト
loop
ステートメントは無限ループを実装していますexit
ステートメントは any から抜け出します ループ
次のチュートリアルに進む »
VHDL