ハードウェア記述言語と検証
Verilogのwire型とreg型の違いとして正しいものはどれか。
- Aregは必ずフリップフロップになり、wireは必ず組み合わせ回路になる
- Bwireはassign文などでつながれる配線を表し、regはalwaysブロックの中で値を代入する信号を表すが、regが必ずフリップフロップになるわけではない
- Cwireは数値を、regは文字を入れるための型である
答えと解説を見る
正解:B. wireはassign文などでつながれる配線を表し、regはalwaysブロックの中で値を代入する信号を表すが、regが必ずフリップフロップになるわけではない
Verilogでは、assign文やmoduleの出力で駆動される信号はwire、alwaysブロックの中で代入される信号はregと宣言する決まりです。regは「レジスタ」の略に見えますが、always @(*)の中で代入すれば組み合わせ回路になり、フリップフロップにはなりません。フリップフロップになるかどうかは、クロックのエッジで値を更新する書き方かどうかで決まります。SystemVerilogでは両方をlogic型で書けます。
- A. regという名前でも、組み合わせ回路になることがあります。
- B. 正しい。regはalways @(*)で組み合わせ回路にもなります。
- C. 文字の型ではありません。