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
条件驱动的终端的值相同。它应该与终端
具有不同的值