累积样本
本课属于 Coddy Verilog 学习旅程的“RTL 设计与验证”单元。第 31 课,共 38 课。
为一串无符号样本构建一个可复用的监视器。你将累加数值、遵循使能和清除控制、统计已接受的样本,并报告是否达到阈值。全部 5 个步骤都使用相同的模块接口和锁定的测试平台。保留的输出会在后续步骤中获得相应行为。
挑战
困难分 5 步构建一个 Sample Monitor。在每个上升沿,如果同步 rst 有效,就清零 total;否则将无符号 data 加到 total。使用 16 位的 total 寄存器。在这第一步中,en 和 clear 未使用,并且各场景中 en=1、clear=0。count 和 alarm 是保留输出,始终为零。所有输入值都是已知的。各场景最多包含 40 个边沿,因此 total 可以用 16 位表示。固定的 testbench 会在场景 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);
initial begin total=0;count=0;end
assign alarm=0;
endmoduleRTL 设计与验证中的所有课
自己练习: Verilog 在线编译器