【发布时间】:2017-11-03 00:10:10
【问题描述】:
我正在尝试创建一个 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
我收到以下错误:
错误:HDL编译器:944 - “C:/Users/Skyla/Documents/csulb/Fall17/201/assign5/Bit32.v”第 1 行: 模块边界之外的意外模块实例化。
警告:HDL编译器:1591 - “C:/Users/Skyla/Documents/csulb/Fall17/201/assign5/Bit32.v”第 1 行: verilog 95/2K 模式下不允许根范围声明
错误:HDL编译器: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
【问题讨论】:
-
在
Bit32中,您声明了D和Q5 次(1 次为单个位,4 次为8 位)。在CounterMux中有一个明显的错字。我建议您学习并实现 ANSI 标头样式。它的代码行数更少,更易于阅读,并且不易出错。如果用于向后可比性支持,则为非 ANSI 样式。 -
@Greg 我正在使用verilog hdl,我不确定什么是ANSI?我只是一个初学者
-
stackoverflow.com/search?q=%5Bverilog%5D+ANSI 大多数答案都有来自 IEEE1364 (Verilog) 和 IEEE1800 (SystemVerilog) 的直接引用和链接