if - else 文
CoddyのVerilogジャーニー「基礎」セクションの一部 — レッスン 53/90。
if-else statementを使用すると、conditionに基づいて2つの異なるアクションから選択できるようになります。conditionが真の場合、一方のブロックが実行されます。偽の場合、もう一方のブロックが実行されます。
if-else ステートメントはコードに分岐点を与えます。条件が true の場合は 1 つの処理を実行し、条件が false の場合は別の処理を実行します。
構文:
if (condition) begin
// condition が true (1) のときに実行される
end else begin
// condition が false (0) のときに実行される
endシンプルな例
if (reset) begin
count = 0;
end else begin
count = count + 1;
endresetが 1 の場合 →countは 0 になりますresetが 0 の場合 →countは 1 増加します
複数の文
複数のステートメントを実行する場合は、begin と end を使用します:
if (enable) begin
out = data_in;
valid = 1;
end else begin
out = 0;
valid = 0;
end複数の条件を持つ If-Else
if-else ステートメントは連鎖させることができます:
if (a > b) begin
max = a;
end else if (b > a) begin
max = b;
end else begin
max = a; // a と b は等しい
end重要なルール
| ルール | 説明 |
|---|---|
else は任意です | else なしの if を使用できます |
else は最も近い if に属します | ネストに注意してください |
複数の文には begin/end を使用します | 2行以上の場合に必要です |
チャレンジ
行うこと:
- 不足している
if-elseステートメントを追加して動作させてください。 enableが 1 のとき、outはa & bと等しくなる必要があります。enableが 0 のとき、outはa | bと等しくなる必要があります。
自分で試してみよう
module ifelse_challenge;
reg a, b, enable;
reg out;
initial begin
a = 1;
b = 0;
enable = 1;
// TODO: if-else文を追加
// enableが1の場合: out = a & b
// それ以外: out = a | b
$display("out = %d (should be 0 because 1&0=0)", out);
$finish;
end
endmoduleこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。