我的代码在这里: /////////////////////////////
module edge_wait(
input wire enable,
input wire clk,
output reg trigger
);
always @(posedge enable)
begin
trigger <=0;
repeat (10)
begin
@ (posedge clk);
end
trigger <=1;
end
endmodule
//////////////////////////// 当我运行综合时,出现错误“事件控制,但不支持始终阻止的第一条语句”。我怎么解决这个问题。
答案 0 :(得分:0)
海伊!
您必须注意,RTL编码不支持延迟(基于常规或定时)。 (RTL表示可合成,即代码可以在硬件上实现)
您的代码将模拟但不会综合。(会给出您指定的错误)
尝试删除块中的@(posedge clk)。您不会收到错误。
答案 1 :(得分:0)
您需要将其转换为状态机/计数器
module edge_wait(
input wire enable,
input wire clk,
output reg trigger
);
integer counter
always @(posedge clk)
if (enable) begin
trigger <= 0;
counter <=0;
end
else if (counter == 10)
trigger <= 1;
else
counter <= counter + 1;
endmodule
这假设enable
被视为同步重置。您将需要对其进行修改以处理未指定的行为,例如,当计数器计数时,如果使能多次变为高电平会发生什么。