的代碼基本上如下:值計數時鐘週期150,然後重置爲0,VOutReg計算值多少次跑到150,當VOutReg獲取到50倍,它重置爲0.就是這樣。但是,當我寫一個測試夾具,只有下面的代碼:永遠#20時鐘=時鐘不都是我在結果得到的是時鐘改變,而不是ValueOut。找不到我的錯誤在很簡單的Verilog模塊
代碼:
module Asd(
input CLK,
output [8:0] ValueOut
);
reg [9:0] Value;
reg [8:0] VOutReg;
initial Value = 0;
initial VOutReg = 0;
[email protected](posedge CLK) begin
if (Value == 150)
Value <= 0;
else
Value <= Value + 1;
end
[email protected](posedge CLK) begin
if (VOutReg == 50)
VOutReg <= 0;
else begin
if (Value == 150)
VOutReg <= VOutReg + 1;
end
end
assign ValueOut = VOutReg;
endmodule
你看到價值或VOutReg改變你的模擬都還是他們停留在零?也許在你的總是和@符號之間留出一個空格? – Russell
的解決方案是增加初始語句對所有寄存器又名 初始值= 0; initial VOutReg = 0; 這就是它。它在 – user2909337
@ user2809337之前沒有給我任何值。是的,您需要將計數器信號初始化爲重置信號或初始分配。否則,他們將永遠是未知的。 – Russell