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。愚蠢地再现你的错误。