【发布时间】:2023-03-29 17:26:01
【问题描述】:
module container(x1, x2, x3, NUMBER);
input x1, x2, x3;
output NUMBER;
wire w0, w1;
dec_counter U1 (x1, x2, x3, w0, w1);
doz_counter U2 (w1, w0, NUMBER);
endmodule
module dec_counter(clk, reset, clk_enable, counter, terminal);
input clk;
input reset;
input clk_enable;
output reg [3:0] counter;
output reg terminal;
always @(posedge clk, posedge clk_enable, posedge reset)
if(reset)
begin
terminal <= 1;
counter <= 0;
end
else if(clk && clk_enable)
if(counter < 9)
begin
terminal <= 1;
counter <= counter + 1;
end
else
begin
terminal <= 1;
counter <= 0;
end
endmodule
module doz_counter(dozens, unity, number);
input dozens;
input unity;
output reg [7:0] number;
initial begin
number = 8'd0;
end
always @(posedge dozens)
if(dozens)
number <= number + 1;
endmodule
你好!我是verilog的新手,我遇到了第一个问题。我有从 0 到 9 计数的模块 dec_counter。当它达到 9+1 时,它显示 0 并将“输出终端”设置为 1。现在我想将该值作为“输入数十”传递给我的下一个模块 doz_counter。我试过接线,正如你在模块容器中看到的那样,但在我的模拟中,几十个总是 X,即使终端是 1。
我觉得我犯了一些严重的设计错误。
【问题讨论】: