Đếm mẫu được chấp nhậ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 34 trên 38.
Thử thách
KhóTrong năm bước, hãy xây dựng một bộ giám sát mẫu. Theo dõi các mẫu được chấp nhận trong biến count: tăng biến này lên 1 ở mỗi cạnh en không đặt lại hoặc xóa, đến tối đa là 15. rst hoặc clear đặt lại cả count lẫn total. Các mẫu được chấp nhận có giá trị bằng 0 vẫn làm tăng count. Giữ lại mọi thứ từ các bước trước, bao gồm testbench và cách hoạt động đầu ra trước đó. Tất cả giá trị đầu vào đều xác định. Mỗi kịch bản có tối đa 40 cạnh, vì vậy total nằm vừa trong 16 bit. Testbench cố định in total cho các kịch bản từ 1 đến 9, in total và count cho các kịch bản từ 10 đến 12, và in total, count cùng alarm cho các kịch bản từ 13 đến 15. Chỉ chấm điểm những kịch bản được bật cho bước này.
Hoàn thiện design.v và giữ nguyên tên các module cùng các cổng. testbench.v bị khóa sẽ cung cấp các thay đổi đầu vào và in đầu ra sau khi chúng ổn định. Testbench chọn một kịch bản bằng đối số mô phỏng 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 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(input clk,rst,en,clear, input [7:0] data, input [15:0] limit, output reg [15:0] total, output reg [3:0] count, output alarm);
always @(posedge clk)begin
if(rst)total<=0;else if(clear)total<=0;else if(en)total<=total+data;
count<=0;
end
assign alarm=0;
endmoduleTấ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ầu4RTL tuần tự có điều khiển
Ưu tiên reset và enableBộ đếm bão hòaPipeline dữ liệu và validPhát hiện cạnh tín hiệu đã lấy mẫuÔn tập: bộ đếm sự kiện7Dự án: Bộ theo dõi mẫu
Tích lũy mẫuChấp nhận mẫu đã bậtTự luyện tập: Trình biên dịch Verilog online