统计已接受的样本
本课属于 Coddy Verilog 学习旅程的“RTL 设计与验证”单元。第 34 课,共 38 课。
挑战
困难分 5 步构建一个 Sample Monitor。用 count 跟踪已接受的样本:每次在未复位或清除时遇到 en 边沿,就递增 count,最多到 15。rst 或 clear 会同时重置 count 和 total。值为 0 的已接受样本也会递增 count。保留前面步骤中的所有内容,包括其测试平台和之前的输出行为。所有输入值都是已知的。每个场景最多包含 40 个边沿,因此 total 可以用 16 位表示。固定的测试平台会在场景 1-9 中输出 total,在场景 10-12 中输出 total 和 count,在场景 13-15 中输出 total、count 和 alarm。只会对本步骤启用的场景评分。
完成 design.v,并保留其模块名称和端口。已锁定的 testbench.v 会提供输入变化,并在信号稳定后输出结果。它会使用模拟器参数(例如 +CASE=1)选择场景;不需要标准输入。不要在设计中添加输出语句、延迟或仿真终止语句。预期输出是每次观察对应一行十进制值,值之间用一个空格分隔,行尾带换行符。
亲手试试
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;
endmoduleRTL 设计与验证中的所有课
自己练习: Verilog 在线编译器