2016-03-23 14 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 

Bir dizide işlevi ve değerlerini depolamaya çalışıyorum. Bu yazdığım kodudur ama hiçbir 19.İşlev değerlendirmede hata

+1

Ok, hangi hata? –

+0

Kodunuz çok belirsiz görünüyor. Kodu güncelleyin ve ne istediğinizi bize bildirin –

+0

** Hata: E:/Yazılımlar/kurulu/Yeni klasör/modelsim_ase/örnekler/Fun_prac.v (19): near "=": sözdizimi hatası, beklenmedik '=', bekliyor " IDENTIFIER" veya 'TYPE_IDENTIFIER' veya '#' veya '(' i çizgisinde bu hatayı çalışıyor ne de 19 'y = x [i];' –

cevap

1

y = x[i]; bir usul ifadedir bana yardım edin doğrultusunda bir hata alıyorum. , ve initial veya always bloklarına aittir. Dışarıda var. Dahası, y bir reg; initial veya always bloğunun dışından bir reg'a atayamazsınız. döngüler için-derleme zamanında sökülmüş olan

+0

sayesinde sorun ikinizin de çözüldü ama kod hala ben karşı karşıyayım şimdi çalışmıyor dizinde hata var x –

+0

için yasa dışı referans Yeni bir soru göndermelisiniz - devam etmek için yeterli değil. Lütfen [Minimal, Tam ve Doğrulanabilir bir örnek verin] (http://stackoverflow.com/help/mcve) böylece hatalarınızı kolayca yeniden oluşturabiliriz –

2

oluşturun. Atamalar prosedürel bir blok veya atama cümlesi içinde olmalıdır; Oluşturma ifadesinin begin - end, prosedürel bir blok olarak sayılmaz. Bu nedenle y = x[i]; geçersiz sözdizimi. reg türleri yalnızca sentezlenecek her zaman bir blokta güncellenmelidir, Verilog'da assign ifadeleriyle atanamazlar (Tamam SistemVerilog'da).

hep bloke biri üzerine her şeyi koyarak deneyin.

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

İyi işte - bu kodu _unravel_ ve yönetebildiğimden çok daha yararlı bir yanıt üretebildiniz. –

İlgili konular