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