2d数组声明的Verilog错误
我在verilog中为注册文件编写了这段代码2d数组声明的Verilog错误,verilog,multidimensional-array,Verilog,Multidimensional Array,我在verilog中为注册文件编写了这段代码 数据的2d数组声明中存在未声明的错误 我使用的是ModelSim Altera 10.1d model RegFile(clk,reset,ReadReg1,ReadReg2,WriteData,WriteReg,RegWrite,ReadData1,ReadData2); input clk,reset,RegWrite; input [1:0] ReadReg1,ReadReg2,WriteReg; input [31:0] WriteData
model RegFile(clk,reset,ReadReg1,ReadReg2,WriteData,WriteReg,RegWrite,ReadData1,ReadData2);
input clk,reset,RegWrite;
input [1:0] ReadReg1,ReadReg2,WriteReg;
input [31:0] WriteData;
output [31:0] ReadData1,ReadData2;
reg [31:0] d,q1,q2,q3,q4,q;
reg [3:0] decoutp;
reg clkwrite,
reg [31:0] data [3:0];
reg [31:0] ReadData1,ReadData2;
initial
begin
d = 32'h00000000;
data[0] = 32'd101;
data[1] = 32'd234;
data[2] = 32'd260;
data[3] = 32'd120;
end
always@(posedge clk)
begin
if(reset)
begin
reg32bit(q1,d,clk,reset);
reg32bit(q2,d,clk,reset);
reg32bit(q3,d,clk,reset);
reg32bit(q4,d,clk,reset);
end
else
begin
//Write
decoder2_4(decoutp,WriteReg);
clockgate(clkwrite,RegWrite,clk,decoutp);
reg32bit(q,WriteData,clkwrite,reset);
//Read
if(ReadReg1 == 2'b00) ReadData1 = data[0];
else if(ReadReg1 == 2'b01) ReadData1 = data[1];
else if(ReadReg1 == 2'b10) ReadData1 = data[2];
else ReadData1 = data[3];
if(ReadReg2 == 2'b00) ReadData2 = data[0];
else if(ReadReg2 == 2'b01) ReadData2 = data[1];
else if(ReadReg2 == 2'b10) ReadData2 = data[2];
else ReadData2 = data[3];
end
end
endmodule
类型标识符 (2) v(15):(vlog-2730)未定义变量:“数据”
看起来你有打字错误。clkwrite声明后有一个逗号。在
clkwrite
后插入分号。
像这样
reg clkwrite;
reg [31:0] data [3:0];
并删除always块中的子模块实例化SystemVerilog.sv支持给定的数组语法
reg[31:0]数据[3:0] 单独错误:模块不能在always块内实例化
reg32bit
、decoder2\u4
和clockgate
看起来不像函数或0次任务。