2016-03-23 18 views
0
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 

機能を評価して値を配列に格納しようとしています。これは私が書いたコードですが、19行目にエラーが表示されます。助けてください。機能評価でエラーが発生しました

+1

エラーが発生しました。 –

+0

あなたのコードは非常に不明瞭です。コードを更新し、実際に何をしたいかを教えてください –

+0

**エラー:E:/ Softwares/installed/New folder/modelsim_ase/examples/Fun_prac.v(19): "="に近い:構文エラー、予期しない '=' "IDENTIFIER"または "TYPE_IDENTIFIER"または "# 'または'( '私はこのエラーを19行目で受け取っています; y = x [i];" –

答えて

1

y = x[i];は手順書です。 は、の中にあり、initialまたはalwaysブロックに属します。あなたはそれを外に持っています。さらに、yregです。 initialまたはalwaysブロックの外側からregに割り当てることはできません。

+0

あなたのおかげで問題は解決しましたが、コードはまだ動作していません。配列内のエラーです。x –

+0

への不正な参照新しい質問を投稿する必要があると思います。それは続行するには不十分です。[最小限で完全で検証可能な例](http://stackoverflow.com/help)/mcve)ので、簡単にエラーを再現することができます。 –

2

forループの生成は、コンパイル時に解読されます。割り当ては手続きブロックまたは代入文の内部になければなりません。 generate文のbegin - endは手続きブロックとして数えられません。したがって、y = x[i];は不正な構文です。 regタイプは、合成するために1つのalwaysブロックでのみ更新する必要があります.Verilogのassignステートメント(SystemVerilogでは大丈夫)で割り当てることはできません。

すべてを1つのブロックに置いてみてください。

integer i; 
always @* begin 
    for (i=0; i<10; i=i+1) begin 
    np[i] = fitf(x[i],a,b,c); 
    end 
end 
+0

よくできました - このコードを_unravel_できました。 –

関連する問題