Verilog HDL に入門してみた

スポンサーリンク

基本

組み合わせ回路の記述方法は

assign 信号 = (論理回路)

倫理回路は

  • AND → &
  • OR → |
  • NOT → ~

で記述する。

4bit 加算器

まず 4bit 加算器を作ってみる。

module FourBitAdder(A, B, X, C);
input [3:0] A, B;
output [3:0] X;
output C;
 
wire [3:0] A, B, X;
wire C;
 
assign {C,X} = A + B;
endmodule

コードの説明

module は

module モジュール名(信号1, 信号2, …);

endmodule

で囲まれたブロックに記述する。
なお、endmodule の後にセミコロンはつかないので注意。

最初に記述するのが入出力の宣言。入出力宣言には

  • input
  • output
  • inout

を使用する。
複数ビットの場合は

input[MSB:LSB] 信号名;

と表現する事ができる。

wire 信号名;

はその名の通り、信号線を定義するもの。ネットタイプとか呼ばれている。
多分最初のうちはよくわからないと思うけど使っているうちに理解できてくると思う。
wire宣言でも 入出力宣言と同様に [MSB:LSB] を使ったビット幅の指定ができる。

assign 式のようなもの;

は”接続”である。式のようなものはあくまでも”ようなもの”であって式ではない。
だから “=” を見ても代入であると考えてはいけない。
ここを勘違いすると不合理な接合を行う原因になるので注意。ちなみに不合理な接合をしてもエラーは出してくれない。
{} は 信号を繋げる。つまり、{C,X} とすることで、 A + B の桁あがりビットが C に、下位のビットが X へと納まる事になる。

スポンサーリンク

フォローする