1

初始化数组sbox时,出现语法错误。请帮帮我。

  reg  [7:0] sbox[15:0];
sbox = '{
 8'h63, 8'h7c, 8'h77, 8'h7b,
 8'hf2, 8'h6b, 8'h6f, 8'hc5,
 8'h30, 8'h01, 8'h67, 8'h2b,
 8'hfe, 8'hd7, 8'hab, 8'h76
};

这实际上是 sbox。它显示的错误:

“=”附近:语法错误,意外的“=”,需要 IDENTIFIER 或 TYPE_IDENTIFIER

我正在使用modelsim模拟器

4

2 回答 2

5

您用于数组赋值的语法仅在 中有效,在SystemVerilog中无效Verilog

所以你的编译器需要支持这个,你需要告诉编译器这个文件是SystemVerilog。大多数编译器(包括modelsim)将假定基于扩展名的文件类型,例如.v == Verilogand .sv == SystemVerilog,而其他编译器则需要一个开关。

另外,正如toolic的回答中所指出的,您需要将赋值放在一个initial块中,或者您可以将声明与赋值结合起来,如下所示:

reg [7:0] sbox[15:0] = '{
        8'h63, 8'h7c, 8'h77, 8'h7b,
        8'hf2, 8'h6b, 8'h6f, 8'hc5,
        8'h30, 8'h01, 8'h67, 8'h2b,
        8'hfe, 8'hd7, 8'hab, 8'h76
};
于 2012-10-26T14:50:37.403 回答
0

分配应该在initialoralways块内:

module tb;

reg [7:0] sbox[15:0];

initial begin
    sbox = '{
        8'h63, 8'h7c, 8'h77, 8'h7b,
        8'hf2, 8'h6b, 8'h6f, 8'hc5,
        8'h30, 8'h01, 8'h67, 8'h2b,
        8'hfe, 8'hd7, 8'hab, 8'h76
    };
end

endmodule
于 2012-10-26T14:27:32.180 回答