現在我打算按照下面的方式實現時鐘門控。 但我不明白爲什麼以及如何處理De信號?我是否需要在順序總是塊中的else語句?
module ClockGating(
input wire rst_n,
input wire clk,
input wire De,
input wire InReg,
output reg OutReg
);
always @(posedge clk or negedge rst_n)
begin
if (!rst_n) begin
OutReg <= 0;
end
else begin
if (De) begin
OutReg <= InReg;
end
else
OutReg <= OutReg;
end
end
endmodule
但我想知道如果我沒有使用else語句那麼會發生什麼? 我可以使用沒有else語句嗎?
module ClockGating(
input wire rst_n,
input wire clk,
input wire De,
input wire InReg,
output reg OutReg
);
always @(posedge clk or negedge rst_n)
begin
if (!rst_n) begin
OutReg <= 0;
end
else begin
if (De) begin
OutReg <= InReg;
end
end
endmodule
這是我的學生經常遇到的問題。 –
是的,您可以刪除'else'語句,並且'OutReg'將保留它的值,因爲它是一個'reg' –