Menu
CoddyTech

Kích hoạt cảnh báo ngưỡ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 35 trên 38.

challenge icon

Thử thách

Khó

Hãy xây dựng một Bộ giám sát mẫu qua năm bước. Điều khiển tín hiệu báo động tổ hợp lên mức cao mỗi khi tổng lớn hơn hoặc bằng giới hạn không dấu, kể cả khi hai giá trị bằng nhau. Tín hiệu báo động phản ánh tổng đã cập nhật sau mỗi cạnh và thay đổi theo giới hạn. limit=0 khiến tín hiệu báo động ở mức cao ngay cả khi total=0. Giữ nguyên mọi hành vi cộng dồn, bật, xóa và đếm. Giữ lại mọi thứ từ các bước trước, bao gồm testbench và hành vi đầ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 tổng vừa trong 16 bit. Testbench cố định in total cho các kịch bản từ 1 đến 9, total và count cho các kịch bản từ 10 đến 12, và total, count cùng alarm cho các kịch bản từ 13 đến 15. Chỉ chấm điểm các kịch bản được bật cho bước này.

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 đầ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 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ỗi quan sát một hàng giá trị thập phân, 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(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 || clear)begin total<=0;count<=0;end
        else if(en)begin
            total<=total+data;
            if(count!=15)count<=count+4'd1;
        end
    end
    assign alarm=0;
endmodule

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