Menu
CoddyTech

If và else

Thuộc phần Kiến thức nền tảng trong hành trình Verilog của Coddy. Bài học 53 trên 90.

Câu lệnh if-else cho phép bạn chọn giữa hai hành động khác nhau dựa trên một điều kiện. Nếu điều kiện đúng, một khối lệnh sẽ chạy. Nếu điều kiện sai, khối lệnh còn lại sẽ chạy.

Câu lệnh if-else tạo điểm ra quyết định trong code: thực hiện một việc nếu điều kiện đúng, thực hiện việc khác nếu điều kiện sai.

Cú pháp:

if (condition) begin
  // Chạy khi condition là true (1)
end else begin
  // Chạy khi condition là false (0)
end

Ví dụ đơn giản

if (reset) begin
  count = 0;
end else begin
  count = count + 1;
end
  • Nếu reset là 1 → count trở thành 0
  • Nếu reset là 0 → count tăng thêm 1

Nhiều câu lệnh

Dùng begin và end khi bạn có nhiều hơn một câu lệnh:

if (enable) begin
  out = data_in;
  valid = 1;
end else begin
  out = 0;
  valid = 0;
end

If-Else với nhiều điều kiện

Bạn có thể nối chuỗi các câu lệnh if-else:

if (a > b) begin
  max = a;
end else if (b > a) begin
  max = b;
end else begin
  max = a;  // a và b bằng nhau
end

Quy tắc quan trọng

Quy tắcGiải thích
else là tùy chọnBạn có thể dùng if mà không cần else
else thuộc về if gần nhấtHãy cẩn thận khi lồng nhau
Dùng begin/end cho nhiều câu lệnhBắt buộc khi có nhiều hơn một dòng
challenge icon

Thử thách

Cần làm gì:

  1. Thêm câu lệnh if-else còn thiếu để đoạn này hoạt động.
  2. Khi enable bằng 1, out phải bằng a & b.
  3. Khi enable bằng 0, out phải bằng a | b.

Tự làm thử

module ifelse_challenge;
  reg a, b, enable;
  reg out;
  
  initial begin
    a = 1;
    b = 0;
    enable = 1;
    
    // TODO: Thêm câu lệnh if-else
    // Nếu enable bằng 1: out = a & b
    // Ngược lại: out = a | b
    
    $display("out = %d (should be 0 because 1&0=0)", out);
    $finish;
  end
endmodule
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức nền tảng

Tự luyện tập: Trình biên dịch Verilog online