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
endgenerateparameter 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.
Thử thách
Trung bìnhDù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;
endmoduleBà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
1RTL tổ hợp đáng tin cậy
Giá trị mặc định ngăn chốtBộ mã hóa ưu tiênKiểm tra one-hotGiải mã case an toànÔn tập: Bộ định tuyến yêu cầu2Độ rộng bit và số học có dấu
Bảo toàn các bit nhớPhép so sánh có dấuDịch phải số họcTràn số và bão hòaÔn tập: hiệu có dấu3RTL có thể tái sử dụng
Hàm tổ hợpTham số an toàn về độ rộngVòng lặp generateGenerate có điều kiệnÔn tập: mặt nạ bit có thể tái sử dụngTự luyện tập: Trình biên dịch Verilog online