2d数组声明的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

我在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;
    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
    
  • 错误-

    (1) v(9):靠近“reg”:语法错误、意外的reg、预期的标识符或
    类型标识符

    (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次任务。