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)
如果(启用)开始
触发