Verilog 不支持除always块的第一条语句之外的事件控件
我的代码在这里: ///////////////////////////////Verilog 不支持除always块的第一条语句之外的事件控件,verilog,Verilog,我的代码在这里: /////////////////////////////// module edge_wait( input wire enable, input wire clk, output reg trigger ); always @(posedge enable) begin trigger <=0; repeat (10) begin @ (posed
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
模块边缘\u等待(
输入线启用,
输入线时钟,
输出寄存器触发器
);
始终@(posedge启用)
开始
触发器Haii
您必须注意,RTL编码中不支持延迟(常规或基于时间的)。
(RTL表示可合成,即代码可在硬件上实现)
您的代码将模拟,但不会合成。(将给出您指定的错误)
尝试删除块中的@(posedge clk)。您不会得到错误。您需要将其转换为状态机/计数器
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
模块边缘\u等待(
输入线启用,
输入线时钟,
输出寄存器触发器
);
整数计数器
始终@(posedge clk)
如果(启用)开始
触发