Verilog 功能评估中的错误 模块ff(fv、a、b、c); 输出[9:0]fv; 输入[4:0]a、b、c; reg[4:0]x[9:0]; reg[9:0]np[9:0]; reg[4:0]新流行音乐; reg[4:0]y; genvar i; 最初的 开始 x={4,7,2,5,4,5,9,3,0,2}; 结束 //赋值fv=((a*x*x)-(b*x)+c); for(i=0;i

Verilog 功能评估中的错误 模块ff(fv、a、b、c); 输出[9:0]fv; 输入[4:0]a、b、c; reg[4:0]x[9:0]; reg[9:0]np[9:0]; reg[4:0]新流行音乐; reg[4:0]y; genvar i; 最初的 开始 x={4,7,2,5,4,5,9,3,0,2}; 结束 //赋值fv=((a*x*x)-(b*x)+c); for(i=0;i,verilog,Verilog,y=x[i];是一个程序语句。它属于首字母或始终块内部。它位于块外部。此外,y是一个reg;不能从首字母或始终块外部分配给reg/code>reg。y=x[i];是一个过程语句。它属于初始或始终块内部。它位于块外部。此外,y是一个reg;不能从初始或始终块外部分配给reg。生成for循环在编译时被解开。Assignments必须位于过程块或assign语句内部;generate语句的begin-end不算作过程块。因此y=x[i]是非法语法。reg类型只能在一个要合成的always块中用更新,不

y=x[i];
是一个程序语句。它属于
首字母
始终
块内部。它位于块外部。此外,
y
是一个
reg
;不能从
首字母
始终
块外部分配给
reg/code>reg

y=x[i];
是一个过程语句。它属于
初始
始终
块内部。它位于块外部。此外,
y
是一个
reg
;不能从
初始
始终
块外部分配给
reg

生成for循环在编译时被解开。Assignments必须位于过程块或assign语句内部;generate语句的
begin
-
end
不算作过程块。因此
y=x[i]
是非法语法。
reg
类型只能在一个要合成的always块中用更新,不能在Verilog中用
assign
语句分配它们(在SystemVerilog中可以)

试着把所有的东西都放在一个总是块上

module ff(fv,a,b,c);
output [9:0]fv;
input [4 : 0] a,b,c;  
reg [4 : 0] x[9 : 0];
reg [9 : 0] np[9 : 0];
reg [4:0] newpop;
reg [4 : 0] y;

genvar i;

initial
begin
   x = { 4, 7, 2, 5, 4, 5, 9, 3, 0, 2 };  
end

  //assign fv = ((a*x*x)-(b*x)+c);

for (i=0; i<10; i=i+1)
begin
  y = x[i];
  always @ (y)
  newpop <= fitf(y,a,b,c);
  assign np[i] = newpop;
end
function automatic integer fitf;     
input [4:0] Y,A,B,C;
begin
  fitf = ((A*Y*Y)-(B*Y)-C);
end
endfunction
endmodule
整数i;
总是开始

for(i=0;iGenerate for循环在编译时展开。赋值必须在过程块或assign语句内;Generate语句的
begin
-
end
不算作过程块。因此
y=x[i]
是非法语法。
reg
类型只能在一个要合成的always块中用更新,不能在Verilog中用
assign
语句分配它们(在SystemVerilog中可以)

试着把所有的东西都放在一个总是块上

module ff(fv,a,b,c);
output [9:0]fv;
input [4 : 0] a,b,c;  
reg [4 : 0] x[9 : 0];
reg [9 : 0] np[9 : 0];
reg [4:0] newpop;
reg [4 : 0] y;

genvar i;

initial
begin
   x = { 4, 7, 2, 5, 4, 5, 9, 3, 0, 2 };  
end

  //assign fv = ((a*x*x)-(b*x)+c);

for (i=0; i<10; i=i+1)
begin
  y = x[i];
  always @ (y)
  newpop <= fitf(y,a,b,c);
  assign np[i] = newpop;
end
function automatic integer fitf;     
input [4:0] Y,A,B,C;
begin
  fitf = ((A*Y*Y)-(B*Y)-C);
end
endfunction
endmodule
整数i;
总是开始

对于(i=0;i)您的代码似乎非常不清楚。请更新代码并告诉我们您实际需要什么**错误:E:/Softwares/installed/New folder/modelsim_ase/examples/Fun_prac.v(19):接近“=”:语法错误,意外的“=”,应为“IDENTIFIER”或“TYPE_IDENTIFIER”或“#”或“(“我在第19行得到此错误”y=x[i]”)您的代码似乎很不清楚。请更新代码并告诉我们您实际需要什么**错误:E:/Softwares/installed/New folder/modelsim\u ase/examples/Fun\u prac.v(19):接近“=”:语法错误,意外的“=”,应为“IDENTIFIER”或“TYPE\u IDENTIFIER”或“#”或“(“我在第19行得到此错误”y=x[i]”)做得好-你已经设法解开了这个代码,并产生了比我能解决的更有用的答案。做得很好-你已经设法解开这个代码,并产生了比我能管理的更有帮助的答案。谢谢你们,问题已经解决了,但是代码现在仍然不起作用。我在数组中面临错误。非法引用席思维。你需要发布一个新的问题,这是不够的。请给出一个我们可以很容易地复制您的错误。谢谢你们两个问题已经解决,但代码现在仍然不工作,我现在面临数组错误。非法引用席西认为你需要张贴一个新问题-这是不够的继续下去。请给我们,让我们可以EA。愚蠢地再现你的错误。