Verilog 同一模块的两个实例化之间的延迟

Verilog 同一模块的两个实例化之间的延迟,verilog,Verilog,我想运行以下代码: module a (input a1 ,clock, reset, output aout); ---- ---- ---- key k1(a1,clock,reset,k1out); // it takes around 40 cycles to complete key k2(k1out,clock,reset,k2out); endmodule k1out显示正确,但k2out显示不正确。事实上,我得到了作为xxxxx的k2out。有没有办法在这两个实例化之

我想运行以下代码:

module a (input a1 ,clock, reset, output aout);

----
----
----

key k1(a1,clock,reset,k1out); // it takes around 40 cycles to complete 

key k2(k1out,clock,reset,k2out);

endmodule

k1out
显示正确,但
k2out
显示不正确。事实上,我得到了作为xxxxx的
k2out
。有没有办法在这两个实例化之间提供延迟,以便它们按顺序执行,并且我可以正确地获得输出

在描述硬件时,这两个实例并行存在

您可以控制每个块的时钟,以便按顺序执行,也可以构建一个状态机来对它们进行排序

带时钟选通(键内部):

模块a(输入a1、时钟、复位、输出aout);
----
----
----
逻辑[6:0]状态;
始终@(posedge时钟或posedge重置)开始
如果(重置)开始

state@Morgan感谢您的回复。请你详细说明一下如何控制时钟好吗?
module a (input a1 ,clock, reset, output aout);

----
----
----

logic [6:0] state;
always @(posedge clock or posedge reset) begin
  if (reset) begin
    state <= 'b0;
  end
  else begin
    if (state >= 7'd80) begin
      state <= 'b0 ;
    end else 
      state <= state + 1'b1;
  end
end

wire k1_enable = (state <  7'd40 );
wire k2_enable = (state >= 7'd40);


key k1(a1,   clock,reset,k1out, k1_enable); 
key k2(k1out,clock,reset,k2out, k2_enable);

endmodule
always @(posedge clock or posedge reset) begin
  if (reset) begin
    data <= 1'b0;
  end
  else begin
    if (enable) begin
      data <= ; //next value
    end
    //else hold data
  end
end