Tham số an toàn về độ rộng
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 12 trên 38.
Phần cơ bản đã giới thiệu độ rộng có thể cấu hình. RTL có thể tái sử dụng cũng cần xử lý độ rộng hợp lệ nhỏ nhất, xác định kích thước cho các biểu thức trung gian một cách có chủ đích và tránh cố định vị trí bit. Phép nhân bản {WIDTH{1'b1}} tạo mặt nạ có độ rộng tương ứng. Tham số là hằng số khi khai triển, không phải điều khiển lúc chạy.
Đ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.
wire [WIDTH:0] sum;
assign sum = {1'b0,a} + {1'b0,b};
assign y = sum[WIDTH] ? {WIDTH{1'b1}} : sum[WIDTH-1:0];Cả vị trí bit nhớ và giá trị bão hòa đều thay đổi theo độ rộng đã cấu hình.
Kiểm tra chiều rộng hợp lệ nhỏ nhất và tính mọi lát cắt cùng hằng số phụ thuộc vào chiều rộng từ các tham số.
Thử thách
Trung bìnhHãy tạo một bộ tăng (incrementer) WIDTH bit, trả về WIDTH bit thấp của a+1. Đầu vào b không được sử dụng. Cùng một module phải hoạt động với WIDTH=1 cũng như các độ rộng lớn hơn. WIDTH là số dương. Testbench bị khóa khởi tạo các giá trị WIDTH là 1, 4 và 8, đồng thời dùng các bit thấp của a và b cho những instance 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 thiện design.v và giữ nguyên tên module cùng các cổng của module. testbench.v bị khóa cung cấp các thay đổi đầu vào và in ra đầu ra sau khi chúng ổn định. Testbench chọn một kịch bản bằng một đố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 mong đợi 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 bằng 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ố.
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