Module 如何连接模块并传递值 模块容器(x1、x2、x3、编号); 输入x1、x2、x3; 输出数; 导线w0,w1; dec_计数器U1(x1,x2,x3,w0,w1); doz_计数器U2(w1,w0,编号); 端模 模块dec_计数器(时钟、复位、时钟启用、计数器、终端); 输入时钟; 输入复位; 输入时钟使能; 输出寄存器[3:0]计数器; 输出端; 始终@(posedge clk、posedge clk_启用、posedge重置) 如果(重置) 开始 终端

Module 如何连接模块并传递值 模块容器(x1、x2、x3、编号); 输入x1、x2、x3; 输出数; 导线w0,w1; dec_计数器U1(x1,x2,x3,w0,w1); doz_计数器U2(w1,w0,编号); 端模 模块dec_计数器(时钟、复位、时钟启用、计数器、终端); 输入时钟; 输入复位; 输入时钟使能; 输出寄存器[3:0]计数器; 输出端; 始终@(posedge clk、posedge clk_启用、posedge重置) 如果(重置) 开始 终端,module,verilog,vivado,Module,Verilog,Vivado,您发布的代码工作正常。有关端口连接规则,请参阅下图。输出端口可以是reg或wire中的任何一个,但输入端口始终是wire 一对错误如下所示: 您已连接一个4位端口,reg[3:0]计数器模块到单位端口,在容器中的w0模块。这将导致端口连接宽度不匹配 module container(x1, x2, x3, NUMBER); input x1, x2, x3; output NUMBER; wire w0, w1; dec_counter U1 (x1, x2, x3, w0, w1); d

您发布的代码工作正常。有关端口连接规则,请参阅下图。输出端口可以是
reg
wire
中的任何一个,但输入端口始终是
wire

一对错误如下所示:

您已连接一个4位端口
reg[3:0]计数器dec_计数器中的code>模块到单位端口,在
容器中的
w0
模块。这将导致端口连接宽度不匹配

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
wire [3:0] w0;
wire w1;
// ...
类似地,
容器
模块中的单位端口
编号
连接到
doz_计数器
模块中的8位端口
编号
。这将导致端口连接宽度不匹配

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
wire [3:0] w0;
wire w1;
// ...
另外,重置
终端的值可能为零。
if
-
else
条件驱动的
终端的值相同。它应该有不同的
terminal
值,因为
terminal您发布的代码工作正常。有关端口连接规则,请参阅下图。输出端口可以是
reg
wire
中的任何一个,但输入端口始终是
wire

一对错误如下所示:

您已连接一个4位端口
reg[3:0]计数器dec_计数器中的code>模块到单位端口,在
容器中的
w0
模块。这将导致端口连接宽度不匹配

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
wire [3:0] w0;
wire w1;
// ...
类似地,
容器
模块中的单位端口
编号
连接到
doz_计数器
模块中的8位端口
编号
。这将导致端口连接宽度不匹配

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
wire [3:0] w0;
wire w1;
// ...
另外,重置
终端的值可能为零。
if
-
else
条件驱动的
终端的值相同。它应该与
终端
具有不同的