返回verilog中重置时的初始语句
我正在学习Verilog,我想知道,如果重置,是否有返回初始语句的方法?类似于下面的伪代码:返回verilog中重置时的初始语句,verilog,Verilog,我正在学习Verilog,我想知道,如果重置,是否有返回初始语句的方法?类似于下面的伪代码: initial begin do initial stuff end always @(posedge clock) begin if(reset) go back to initial else do stuff end end 如果可能的话,键入的次数会少很多。我能想到的一种方法是使用ROM,并在重置时再次使用存储的值 您可以使用
initial begin
do initial stuff
end
always @(posedge clock) begin
if(reset)
go back to initial
else
do stuff
end
end
如果可能的话,键入的次数会少很多。我能想到的一种方法是使用ROM,并在重置时再次使用存储的值 您可以使用任务:
task init_stuff;
begin
/* do initial stuff */
end
endtask
initial begin
init_stuff;
end
always @(posedge clock) begin
if(reset) begin
init_stuff;
end else begin
/* do stuff */
end
end
然而,对于可合成代码,您应该非常小心使用“initial”。根据您的目标体系结构,它只能用于初始化ROM(ASIC)或可能创建具有非常敏感的上电复位行为和其他奇怪特性(FPGA)的电路。您是在寻找可合成的东西,还是仅用于一般建模?您好,dave_59。是的,它必须是可合成的。你能不能补充一下,为什么你只想重设首字母。嗨,@Morgan。这只是一种好奇,因为很多时候,我的初始状态等于重置状态,然后我认为如果我可以返回初始状态,而不是在重置过程中重复大量代码,那么可以节省一些输入。@wdinize,我发现有一个或另一个更常见,以前从未见过两者同时使用,虽然两者都在FPGA上并没有什么错
initial
适用于FPGA初始状态,ASIC上使用异步复位,连接到上电复位电路。好的,我知道了。我试试这个。我需要的是初始化一些寄存器的值,如果请求重置,则返回该值。我所做的是键入与初始值完全相同的重置块,然后我认为必须有一些命令返回初始值。