Verilog 错误:超出模块边界的意外模块实例化

Verilog 错误:超出模块边界的意外模块实例化,verilog,hdl,Verilog,Hdl,我试图创建一个32位计数器,将32个输入分成4组,每组8个,然后将这4组输入到mux中。 这就是我所拥有的: modules Bit32 ( clk, reset, load, D, Q); input clk, reset, load, D, Q; input [7:0] D; input [15:8] D; input [23:16] D; input [31:24] D; output [7:0] Q; output [15:8] Q; output [23:16] Q; output [

我试图创建一个32位计数器,将32个输入分成4组,每组8个,然后将这4组输入到mux中。 这就是我所拥有的:

modules Bit32 ( clk, reset, load, D, Q);
input clk, reset, load, D, Q;
input [7:0] D;
input [15:8] D;
input [23:16] D;
input [31:24] D;
output [7:0] Q;
output [15:8] Q;
output [23:16] Q;
output [31:24] Q;
reg [7:0] Q;
reg [15:8] Q;
reg [23:16] Q;
reg [31:24] Q;
always @(posedge clk)
    if(reset) Q <=32'b0; else 
    if (load) Q <=D;
    else Q <=Q + 32'b1
endmodule

Bit32.v
文件的错误和警告是由于键入错误造成的:关键字是
module
,而不是
modules
(请注意“s”)。更改:

modules Bit32 ( clk, reset, load, D, Q);
致:

编译器认为您正在放置名为
modules
的模块实例。做出这样的改变可以消除你显示的信息


但是,
Bit32.v
文件中还有其他错误。不应使用相同的名称声明多个端口。您分别声明了
D
Q
5次,但每次只能声明一次。例如:

module Bit32 ( clk, reset, load, D, Q);
input clk, reset, load;
input [31:0] D;
output [31:0] Q;
reg [31:0] Q;
always @(posedge clk)
    if (reset) Q <= 32'b0;
    else if (load) Q <= D;
    else Q <= Q + 32'b1;
endmodule
模块位32(时钟、复位、加载、D、Q);
输入时钟、复位、负载;
输入[31:0]D;
输出[31:0]Q;
reg[31:0]Q;
始终@(posedge clk)

如果(重置)Q则
Bit32.v
文件的错误和警告是由于键入错误造成的:关键字是
module
,而不是
modules
(请注意“s”)。更改:

modules Bit32 ( clk, reset, load, D, Q);
致:

编译器认为您正在放置名为
modules
的模块实例。做出这样的改变可以消除你显示的信息


但是,
Bit32.v
文件中还有其他错误。不应使用相同的名称声明多个端口。您分别声明了
D
Q
5次,但每次只能声明一次。例如:

module Bit32 ( clk, reset, load, D, Q);
input clk, reset, load;
input [31:0] D;
output [31:0] Q;
reg [31:0] Q;
always @(posedge clk)
    if (reset) Q <= 32'b0;
    else if (load) Q <= D;
    else Q <= Q + 32'b1;
endmodule
模块位32(时钟、复位、加载、D、Q);
输入时钟、复位、负载;
输入[31:0]D;
输出[31:0]Q;
reg[31:0]Q;
始终@(posedge clk)

如果在
Bit32
中(重置)Q,您声明了
D
Q
5次(1为单位,4为8位)。在
CounterMux
中有一个明显的打字错误。我建议您学习并使用ANSI标题样式。它的代码行数更少,更易于阅读,并且不容易出错。非ANSI样式if用于向后可比性支持。@Greg Im使用verilog hdl,我不确定什么是ANSI?我只是一个初学者,大多数答案都有IEEE1364(Verilog)和IEEE1800(SystemVerilog)的直接引用和链接,它们位于
Bit32
中,您声明了
D
Q
5次(1次为单位,4次为8位)。在
CounterMux
中有一个明显的打字错误。我建议您学习并使用ANSI标题样式。它的代码行数更少,更易于阅读,并且不容易出错。非ANSI样式if用于向后可比性支持。@Greg Im使用verilog hdl,我不确定什么是ANSI?我只是一个初学者,大多数答案都有来自IEEE1364(Verilog)和IEEE1800(SystemVerilog)的直接引用和链接