Menu
CoddyTech

挑战:有界求和

本课属于 Coddy Verilog 学习旅程的“RTL 设计与验证”单元。第 38 课,共 38 课。

challenge icon

挑战

中等

在使能的上升沿,将有符号的 8 位采样值累加到有符号的 q,并将结果限制在 -128 到 127 之间。每当发生饱和时,将 clipped 置位;置位后,它会一直保持,直到 rst 或 clear 清除它。两个同步控制信号都会清除 q 和 clipped,且优先级高于 en。禁用时,上升沿会保持两个值不变。输出列:q、clipped。所有控制信号和数据在每个时钟上升沿之前都保持稳定;之后观察结果。

完成 design.v,并保留其模块名称和端口。锁定的 testbench.v 会提供输入变化,并在输入稳定后输出结果。它会使用模拟器参数(例如 +CASE=1)选择一个场景;无需标准输入。不要在设计中添加打印语句、延迟或模拟终止语句。预期输出为每次观察对应一行十进制值,值之间以一个空格分隔,并以换行符结尾。

亲手试试

module dut (input clk, input rst, input clear, input en, input signed [7:0] sample, output reg signed [7:0] q, output reg clipped);
    // 用你的设计替换这里的占位代码。
    initial q = 0;
    initial clipped = 0;
endmodule

RTL 设计与验证中的所有课

自己练习: Verilog 在线编译器