Syntax iverilog:赋值语句l-value中的语法错误
为什么我的Verilog代码中会出现语法错误 代码:Syntax iverilog:赋值语句l-value中的语法错误,syntax,verilog,Syntax,Verilog,为什么我的Verilog代码中会出现语法错误 代码: module RegFile ( input clk, input [4:0] rs1, input [4:0] rs2, input [4:0] wr, input reg[31:0] wd, input RegWrite, output reg[31:0] rd1, output reg[31:0] rd2); reg [31:0] file[31:0];
module RegFile (
input clk,
input [4:0] rs1,
input [4:0] rs2,
input [4:0] wr,
input reg[31:0] wd,
input RegWrite,
output reg[31:0] rd1,
output reg[31:0] rd2);
reg [31:0] file[31:0];
integer i;
initial begin
i=0;
while(i<32)
begin
file[i]=32'b0;
i=i+1;
end
assign rd1=file[rs1];
assign rd2=file[rs2];
always @(posedge clk) begin
if(RegWrite)
file[wr]=wd;
end
always@(file[0])
file[0]=32'b0;
endmodule
“l值”语法错误的发生是因为您对声明为reg
的信号进行了连续赋值(使用assign
关键字)。在这种情况下,您不应该使用reg
关键字。更改:
output reg[31:0] rd1,
output reg[31:0] rd2);
致:
我在下面的行中还得到一个编译错误:
input reg[31:0] wd,
对于输入
端口,不应使用reg
关键字。将其更改为:
input [31:0] wd,
最后,您在开始
时丢失了与匹配的结束
关键字:
initial begin
i=0;
while(i<32)
begin
file[i]=32'b0;
i=i+1;
end // <----- add this
end
初始开始
i=0;
而
input [31:0] wd,
initial begin
i=0;
while(i<32)
begin
file[i]=32'b0;
i=i+1;
end // <----- add this
end