ERROR 32位计数器Verilog HDL

时间:2017-11-03 00:10:11

标签: verilog hdl

我正在尝试创建一个32位计数器,将32个输入分成4组8个。然后将这4个组送入多路复用器 这就是我所拥有的:

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

我正在接受这些错误: 错误:HDLCompiler:944 - “C:/Users/Skyla/Documents/csulb/Fall17/201/assign5/Bit32.v”第1行:模块边界外的意外模块实例化。

警告:HDLCompiler:1591 - “C:/Users/Skyla/Documents/csulb/Fall17/201/assign5/Bit32.v”第1行:在verilog 95 / 2K模式下不允许根范围声明

错误:HDLCompiler:806 - “C:/Users/Skyla/Documents/csulb/Fall17/201/assign5/Bit32.v”第2行:“输入”附近的语法错误。

我的多兄弟:

module CounterMux(select, D, Q);
input[1:0] select;
input[3:0] D:
output Q;

wire Q;
wire [1:0] select;
wire [3:0] D;

assign Q=D[select];

endmodule

1 个答案:

答案 0 :(得分:0)

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

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

收件人:

module Bit32 ( clk, reset, load, D, Q);

编译器认为您正在放置名为modules的模块的实例。进行更改会摆脱您显示的消息。


但是Bit32.v文件中还有其他错误。您不应声明多个具有相同名称的端口。您分别声明了DQ 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

我也遇到了编译错误,因为else Q <=Q + 32'b1之后缺少分号。我相信IEEE标准在每个声明之后都需要使用分号。尽管某些编译器显然不需要它,但最好具有可移植性。