我想运行以下代码:
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
未正确显示。事实上,我将k2out
作为 xxxxx 。有没有办法在这两个实例之间提供延迟,以便它们按顺序执行,我可以正确获得输出?
答案 0 :(得分:0)
您描述的硬件,这两个实例并行存在。
您可以控制每个块的时钟,以便顺序执行,或者构建一个状态机来对它们进行排序。
使用时钟门控(密钥内部):
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