我使用ISE 14.7编写简单代码来生成时钟信号,但iSim中的输出始终为1,直到我改变=< =然后时钟工作,你能告诉我为什么吗?
module nonblocking( clk );
output reg clk;
initial
#10 clk =0;
always @ (clk)
#10 clk = ~ clk; // change to <= to work
endmodule
答案 0 :(得分:0)
这段代码老实说没有任何意义。
您当前的代码指出,基于clk
,clk
的值应为~clk
。
当您使用<=
时,您至少指定了非阻止分配,这更有意义,但仍然没有。
如果您需要时钟发生器进行仿真,请在初始块中使用以下内容(给出10ns周期):
forever begin
#5 clk <= ~clk;
end
如果您需要用于FPGA合成的时钟发生器,请将物理振荡器连接到设备的时钟输入引脚,或使用内置振荡器(如果您的设备上有)。您始终可以使用DCM / PLL / CMT / MMCM / FPGA调用它来调整时钟频率。