Menu
CoddyTech

Generate có điều kiện

Thuộc phần Thiết kế và xác minh RTL trong hành trình Verilog của Coddy. Bài học 14 trên 38.

Câu lệnh if tạo cấu trúc (generate-if) chọn cấu trúc phần cứng bằng một parameter hằng số. Chỉ một nhánh được triển khai cho mỗi instance. Câu lệnh if trong thủ tục hoặc biểu thức điều kiện dùng tín hiệu để chọn hành vi khi chạy; chúng không thay thế cấu hình generate.

Đoạn trích liên quan; các khai báo và kết nối xung quanh được cung cấp trong thử thách.

generate
    if(INVERT) begin: inverted
        assign y = ~a;
    end else begin: direct
        assign y = a;
    end
endgenerate

parameter chọn bộ điều khiển nào được tạo cho instance này.

Dùng generate-if cho cấu hình hằng số và lựa chọn RTL thông thường cho các điều khiển trong thời gian chạy.

challenge icon

Thử thách

Trung bình

Dùng generate có điều kiện: MODE=0 truyền nguyên vẹn a; MODE=1 đảo cả tám bit của a. Đầu vào b không được sử dụng. MODE nhận giá trị 0 hoặc 1. Testbench khởi tạo cả hai cấu hình và in y0 rồi đến y1.

Hoàn thiện design.v và giữ nguyên tên module cùng các cổng của nó. testbench.v bị khóa sẽ cung cấp các thay đổi đầu vào và in các đầu ra sau khi chúng ổn định. Testbench chọn một kịch bản bằng đối số của trình mô phỏng, chẳng hạn như +CASE=1; không cần đầu vào tiêu chuẩn. Không thêm lệnh in, độ trễ hoặc lệnh kết thúc mô phỏng vào thiết kế. Đầu ra dự kiến gồm một hàng giá trị thập phân cho mỗi lần quan sát, các giá trị cách nhau một dấu cách và kết thúc bằng ký tự xuống dòng.

Tự làm thử

module dut #(parameter MODE=0) (input [7:0] a,b, output [7:0] y);
    assign y=0;
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 Thiết kế và xác minh RTL

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