工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> VHDL

VHDL で時間を遅らせる方法:Wait For

前のチュートリアルでは、プロセスをプログラム スレッドと見なすことができることを学びました。また、wait; ステートメントは、プログラムを無期限に一時停止させます。しかし、プログラムを永久以外の時間値まで待機させる方法はありますか?

wait; を削除すると 完全にプログラムをコンパイルしようとすると、コンパイラは無限ループについて文句を言います。コンパイラが参照しているループは プロセス ループ です . VHDL のプロセス スレッドは決して終了せず、begin 間で継続的にループします。 と end process; ステートメント。 wait が必要です プロセス ループ内のどこかのステートメント。

このブログ投稿は、基本的な VHDL チュートリアル シリーズの一部です。

wait; の間 wait for の場合、プログラムは永久に一時停止します。 ステートメントを使用して、プログラムを任意の時間遅らせることができます。

wait for の構文 ステートメントは次のとおりです:
wait for <time_value> <time_unit>;
ここで <time_value> は数字で、<time_unit> 次の時間単位のいずれかです:

fs フェムト秒
ps ピコ秒
ns ナノ秒
私たち マイクロ秒
ミリ秒 ミリ秒
時間 時間

エクササイズ

このチュートリアル ビデオでは、wait for の使用方法を紹介します。 一定時間プロセスを一時停止するステートメント。

このチュートリアルで作成したコード:

entity T02_WaitForTb is
end entity;

architecture sim of T02_WaitForTb is
begin

    process is
    begin
        -- This is the start of the process "thread"
 
        report "Peekaboo!";
        
        wait for 10 ns;
        
        -- The process will loop back to the start from here
    end process;

end architecture;

ModelSim で実行ボタンを押したときのシミュレータ コンソールへの出力:

VSIM 2> run
# ** Note: Peekaboo!
#    Time: 0 ns  Iteration: 0  Instance: /t02_waitfortb
# ** Note: Peekaboo!
#    Time: 10 ns  Iteration: 0  Instance: /t02_waitfortb
# ** Note: Peekaboo!
#    Time: 20 ns  Iteration: 0  Instance: /t02_waitfortb
...

分析

この例では、10 ns を使用しました 、10 ナノ秒を意味します。 MHz クロック周波数で動作するデジタル ロジックを使用する場合、通常はナノ秒単位で作業します。

シミュレーターでコードを実行すると、「Peekaboo!」と出力されました。 10 ns ごとにコンソールに送信します。これはシミュレーションなので、report ステートメントは時間がかからず、ループにも時間がかかりません。

テイクアウト

次のチュートリアルに進む »


VHDL

  1. 未知の時間を解く
  2. VHDL で文字列のリストを作成する方法
  3. VHDL コード ロック モジュール用の Tcl 駆動型テストベンチを作成する方法
  4. VHDL のプロセスでプロシージャを使用する方法
  5. VHDL で関数を使用する方法
  6. VHDL シミュレーターとエディターを無料でインストールする方法
  7. 仕事の計画の詳細はどれくらいですか?
  8. クレーンブレーキのメンテナンスの時間を伝える方法
  9. ロボット溶接のトレーニング時間を短縮する方法
  10. 初めて自動車保険に加入するには?
  11. 製造プロセスにかかる時間は?