2

モジュールは本質的にC++関数のようなものだと理解しています。ただし、これらの関数を呼び出すmain()セクションのようなものは見つかりませんでした。main()セクションがないとどのように機能しますか?

4

3 に答える 3

7

HDL で同等の main() を見つけようとする (または概念的に強制しようとする) ことは、HDL を学習する上で間違った方法です。進歩を妨げることになります。合成可能な記述の場合、逐次的思考 (1 つの命令が次々と実行される) から「並列」思考 (すべてが常に実行れている) に飛躍する必要があります。コードを上から下ではなく左から右に見てみると、main() の概念があまり意味がないことに気付くかもしれません。

HDL では、関数を「呼び出す」のではなく、モジュールをインスタンス化し、それらのポートをネットに接続します。繰り返しになりますが、プロセスに対する精神的な見方を変える必要があります。

一度手に入れると、すべてがはるかにスムーズになります...

于 2011-02-27T10:22:04.140 に答える
2

Verilogの通常の使用は、回路のモデリング/記述であることに注意してください。電源を入れると、すべての回路が動作を開始するため、各部分を安定して使用可能な動作状態にするために、リセットロジックを作成する必要があります。通常、リセットラインを含め、それに応じて初期化を行います。

于 2011-02-27T04:36:00.960 に答える
2

Veriloginitialのブロックはmain()C のようなものです。これらは、時間 0 から実行するようにスケジュールされたステートメントのリストです。Verilog には、initial同時に実行される複数のブロックを含めることができます。

alwaysブロックはmain()、空の機密リストがあるかのように機能します。

always begin // no sensitivity list
   s = 4;
   #10;      // delay statements, or sim will infinite loop
   s = 8;
   #10;
end
于 2011-02-27T07:30:21.727 に答える