32bitの入力2つを足し合わせて、32bitの結果を出力する回路を作ります。 後々のことを考えて、ここではとりあえず桁溢れは考えないことにします。面倒なので。
もう少し丁寧に図示するとこうなります。in1+in2がresultになるように作ります。
module adder( input[31:0] in1, in2, output[31:0] result ); assign result = in1 + in2; endmodule
「モジュール」とは、回路の部品のようなものです。 ここでは、2入力の和を出力する部品「adder」を作っています。
そして、各モジュール(部品)を組み合わせて、1つの大きな回路として制御するのが「トップモジュール」になります。
トップモジュール
module top(); wire[31:0] in1, in2, result; assign in1 = 32'd1; assign in2 = 32'd2; adder adder_body(in1, in2, result); endmodule
まだ部品がadder1つしかないのでトップモジュールの存在意義が感じられないとは思いますが、そのうち中身が増えます。 トップモジュールでは、in1に1、in2に2を入力しました。これがadderを経由して計算され、resultに3が出力されるはず。
次回はシミュレーションについて書く予定です。