Menu
CoddyTech

If-Else 条件语句

本课属于 Coddy Verilog 学习旅程的“基础知识”单元。第 53 课,共 90 课。

if-else 语句可以让你根据条件在两种不同的操作中进行选择。如果条件为 true,就执行一个代码块。如果条件为 false,就执行另一个代码块。

if-else 语句为你的代码提供了一个决策点:如果条件为真,就执行一项操作;如果条件为假,就执行另一项操作。

语法:

if (condition) begin
  // 当 condition 为 true(1)时执行
end else begin
  // 当 condition 为 false(0)时执行
end

简单示例

if (reset) begin
  count = 0;
end else begin
  count = count + 1;
end
  • 如果 reset 是 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 是可选的可以只写 if,不写 else
else 属于最近的 if嵌套时要小心
多条语句要使用 begin/end超过一行时必须使用
challenge icon

挑战

要做什么:

  1. 添加缺少的 if-else 语句,让代码正常运行。
  2. 当 enable 为 1 时,out 应等于 a & b。
  3. 当 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
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: Verilog 在线编译器