我做的Verilog的計數器,並在硬件中實現它。但我無法解釋行爲的代碼是:Verilog的計數器實現意外的行爲
module clock_test(clk_in,led,rst);
input wire clk_in;
input wire rst;
output wire [7:0] led;
reg [23:0] counter = 24'b0;
assign led = counter[23:16];
always @(posedge clk_int) begin
if(rst) begin
counter <= 0;
end
else begin
counter <= counter +1;
end
end
endmodule // clock_test
在硬件上,當我打rst
,LED的凍結在它被計數點。它並不完全是零。斷言rst
,並且您可以看到除零之外的一些隨機模式,除非我發佈rst
,否則這些隨機模式不會更改。
我的問題是:當if(rst) begin
塊執行時,counter
設置爲0.由於LED從counter
分配爲組合邏輯,應該不會立即反映嗎?
當'rst'爲低電平時計數器是否正常工作? always塊上的時鐘不正確。應該是'clk_in',而不是'clk_int'。 – Greg
該代碼不適合我編譯。 'clk_int'真的應該是'clk_in'嗎? – toolic
是啊,這是一個錯字,我實際上可以得到它的工作,並和我關心的是在硬件已經:) –