2017-06-14 3 views
0

Ich versuche, ein Programm auf xilinx vivado Suite zu simulieren, die das Quadrat einer bestimmten Ganzzahl finden will. Teil meines Programmsformale Größe hat keinen tatsächlichen oder Standardwert vhdl

for j in (num_of_bits-1) downto 0 loop 
    res <=res+to_integer(unsigned(dvandha(shln(std_logic_vector(to_unsigned(num)),j)))); -- I get error here 
    report "The resulting square is " & integer'image(res); 
    res <= to_integer(unsigned(shln(std_logic_vector(to_unsigned(res)),1))); --I get error here 
end loop ; 

Hier 'res' ist Inout des Integer-Typs. Dvandha ist eine Funktion, die ich geschrieben habe. Die Eingabeparameter sind std_logic_vector und integer. Shln ist Shift-links-Funktion mit 'n' Verschiebungen. num ist meine ganzzahlige Eingabe. Ich erhalte die folgenden Fehler -

„formale Größe hat keinen tatsächlichen oder Standardwert“

ich keine Ahnung bekommen, was der Fehler ist und wie dies loszuwerden. Ich habe keine Variable/Signal mit dem Namen "Größe" in meinem Programm verwendet. Wie groß ist die Größe, auf die es hinweist? Ich nehme an, es ist der Fehler bei der Typkonvertierung. Ich habe die 'numeric_std'-Bibliothek für die Typumwandlung verwendet. Bitte helfen Sie! Danke im Voraus.

+2

Tipp: Beim nächsten Mal nicht alles inline. A) das macht es schwer zu lesen, B) es macht es einfacher, einen Fehler zu machen. – JHBonarius

Antwort

1

Sie müssen size Parameter to_unsigned Funktion hinzuzufügen, wahrscheinlich wie folgt aus:

for j in (num_of_bits-1) downto 0 loop 
    res <=res+to_integer(unsigned(dvandha(shln(std_logic_vector(to_unsigned(num,j)),j)))); 
    report "The resulting square is " & integer'image(res); 
    res <= to_integer(unsigned(shln(std_logic_vector(to_unsigned(res,1)),1))); 
end loop ; 

size bezieht sich auf die Größe des Vektors in to_unsigned Funktion.

+0

Hoppla! Vielen Dank! das hat meinen "diesen" Fehler beseitigt. Aber jetzt bekomme ich einen anderen Fehler zur Laufzeit. Er sagt FEHLER: Index -2147483640 out of 7 downto 0 Zeit: 0 ps Iteration: 0 Prozess:/strt_sqr/line__121 Zeile 121 ist Prozess (num) wo num ist ganzzahlige Eingabe wie zuvor gesagt wurde. Bitte entschuldige mich! Ich bin ein Neuling in vhdl – Veena

+0

Schwer zu sagen, ohne [mcve], aber Sie müssen wahrscheinlich etwas initiieren. – Staszek

Verwandte Themen