Keine Konvertierung in std_logic_vector möglich

Gast #930711
Lesenswert?

data_in wird als natural in einer Schleife hochgezählt.
Also 0,1,2,3 usw.

signal data_in, data_out : natural range 0 to 2 ** 
data_width_testbench-1;

data_in_cam welches eine Zeile tiefer ebenfalls in der Schleife steht 
wird auch hochgezählt, allerdings stehen anstelle von einsen X im 
std_logic_vector.
Also hier mal binär: 00000000, 0000000X, 000000X0
Warum das ? Ich komme nicht dahinter !
Warum funktioniert die Umwandelung in std_logic_vector nicht ?
Ich erhalte keinen Error und kein Warning.

signal data_in_cam : std_logic_vector(data_width_testbench-1 downto 0) 
:= (others => '0');

Innerhalb der Schleife:

data_in <= data_in + 1;
data_in_cam <= 
std_logic_vector(to_unsigned(data_in,data_width_testbench));

Hilfe ich bin zu blöd !
Gast #930741
Lesenswert?

Schau mal durch den restlichen Code, ob es irgendwo eine weitere 
Zuweisung zu data_in_cam gibt, die parallel unter denselben bedingungen 
ausgeführt wird. Ich tippe auf sowas:
1
data_in_cam <= (others => '0');
Könnte ein Fehler in der Reset-Bedingung sein.
Gast #931125
Lesenswert?

Oh, grosser Meister du hattest recht.
Es erfolgte eine weitere Initialisierung in einem anderen Prozess der 
statt zu einem späterem Zeitpunkt, zum gleichen Zeitpunkt ausgeführt 
wurde.
Fragt sich jetzt warum ?
Hilfreich wäre eine Möglichkeit sich in einer Übersicht die parallele 
Ausführung einzelner Prozesse anschauen zu können. Sowas wie eine 
Timeline.
Ist das in der Vollversion ISE Foundation möglich ?
Welche Debugmöglichkeiten bietet ISE Webpack ?
So wie in anderen Entwicklungsumgebungen ?
Ich kann Breakpoints setzen und das Programm schrittweise ausführen.
Wie kann ich zwischendurch Signale setzen und abfragen ?
Oder wie kann ich abfragen von welchen Prozessen ein Signal verändert 
wird ?

Danke

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren