Menu
CoddyTech

复位与使能优先级

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

时钟块可以通过在禁用的时钟边沿省略赋值来保持寄存器的值。这种有意的存储不同于意外产生的组合锁存器。请明确规定复位、加载和使能之间的优先级。这里的复位是同步的:只有在时钟上升沿才会生效。

相关摘录;挑战中提供了周边声明和连接。

always @(posedge clk) begin
    if(rst) q <= 0;
    else if(en) q <= data;
end

两个控制信号同时有效时,复位优先;未复位且禁用时,时钟边沿不会改变 q。

使用一条时钟控制的优先级链,并精确定义复位、加载、使能和保持行为。

challenge icon

挑战

中等

实现一个 8 位寄存器 q,带有高电平有效的同步复位 rst 和使能 en。在上升沿,复位优先并清零 q;否则,在使能有效的时钟沿加载 a;使能无效时,q 保持不变。输出列:q。所有控制信号和数据在每个时钟上升沿之前都保持稳定;之后读取结果。

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

亲手试试

module dut (input clk, input rst, input en, input [7:0] a, output reg [7:0] q);
    // 用你的设计替换这里的占位内容。
    initial q = 0;
endmodule
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

RTL 设计与验证中的所有课

自己练习: Verilog 在线编译器