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 | 超过一行时必须使用 |
挑战
要做什么:
- 添加缺少的
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这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: Verilog 在线编译器