Vòng lặp generate
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 13 trên 38.
Một vòng lặp generate-for tạo ra phần cứng lặp lại trong giai đoạn elaboration. Chỉ số genvar của vòng lặp không phải là thanh ghi thay đổi trong lúc chạy. Các khối generate có tên giúp tạo tên phân cấp nhất quán cho các instance hoặc phép gán được tạo ra. Giới hạn vòng lặp phải là hằng số tại thời điểm elaboration.
Đ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.
genvar i;
generate
for(i=0;i<WIDTH;i=i+1) begin: bitcell
assign y[i] = a[i] ^ b[i];
end
endgenerateMỗi lần lặp tạo ra một thao tác riêng ở cấp độ bit thay vì tiêu tốn một chu kỳ xung nhịp.
Dùng genvar với các giới hạn hằng số để mô tả cấu trúc lặp lại trong quá trình khai triển.
Thử thách
Trung bìnhDùng vòng lặp generate-for có tên cùng với genvar i để tạo một phép gán liên tục cho mỗi bit, tạo ra y[i] = a[i] XOR b[i]. WIDTH là số dương. Testbench bị khóa khởi tạo các giá trị WIDTH là 1, 4 và 8, dùng các bit thấp của a và b cho những phiên bản có độ rộng nhỏ hơn. Các cột đầu ra lần lượt là y1, y4 và y8 ở dạng thập phân.
Hoàn thành design.v và giữ nguyên tên module cùng các cổng của nó. testbench.v bị khóa cung cấp các thay đổi đầu vào và in ra 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. Đừ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 là 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 WIDTH=4) (input [WIDTH-1:0] a,b, output [WIDTH-1:0] y);
// Triển khai mạch có tham số (parameter).
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