リムナンテスは愉快な気分

徒然なるままに、言語、数学、音楽、プログラミング、時々人生についての記事を書きます

Adder(足し算器)を作る

Verilogでマイクロプロセッサ設計第1回

f:id:frecafloros:20171112203614p:plain

32bitの入力2つを足し合わせて、32bitの結果を出力する回路を作ります。 後々のことを考えて、ここではとりあえず桁溢れは考えないことにします。面倒なので。

f:id:frecafloros:20171112203712p:plain

もう少し丁寧に図示するとこうなります。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が出力されるはず。

次回はシミュレーションについて書く予定です。