2017-03-26 1 views
0

Ich habe den folgenden Code:Array Zuordnung Aktualisierung nicht in Verilog

reg [7:0]data[0:7]; 
always @(posedge clk) begin 
    data[var1]<=var2; 
    $write("%d:%d:%d", var1, var2, data[var1]); 
end 

3: 100: x gedruckt wird, so dass die Datenzuordnung nicht korrekt funktioniert. Warum ist das?

+0

Können Sie bitte Ihre Testbench und Ausgabe auch zur Verfügung stellen? –

Antwort

0

Da Sie eine nicht blockierende Zuweisung zu data verwenden, wird der aktuelle Wert data nicht als zu aktualisierender Wert angezeigt. Verwenden Sie $ strobe anstelle von $ display, oder noch besser, setzen Sie die $ write in einem anderen Block immer die Drucke auf der negativen Kante.

+0

Das funktioniert für die Variable, danke !! Hätten Sie eine Idee, warum das für ein reg-Array nicht funktioniert? –

+0

Wenn 'var1' und' var2' auch mit nicht-blockierenden Zuweisungen zugewiesen werden, wird der aktuelle Wert von 'var' verwendet, um in'data' zu indizieren –