我是 Verilog 语言的新手,想做一些练习来熟悉它。我在HDLbits上遇到了这个问题:DFF8ar
这个问题要求我创建 8 个具有高电平有效异步复位功能的 D 触发器。我使用一个case语句来处理areset信号:
module top_module (
input clk,
input areset, // active high asynchronous reset
input [7:0] d,
output reg[7:0] q
);
always @(posedge clk or posedge areset) begin
case (areset)
1'b1: q <= 8'b0;
default: q <= d;
endcase
end
endmodule
Run Code Online (Sandbox Code Playgroud)
但是,如果我将case语句切换为if-else语句,结果将是正确的:
always @(posedge clk or posedge areset) begin
if (areset)
q <= 8'b0;
else q <= d;
end
Run Code Online (Sandbox Code Playgroud)
即使进行了一些研究后,我也不知道其背后的原因。if-else陈述和 …