Testbenchfrage

OP #1991386
Lesenswert?
• ▲
▼
Ich hab hier in der Testbench ne komische Meldung und die Testbench 
macht nicht was sie soll. Könnt ihr mir das Verhalten mal aufklären ?
Letztlich ist es ein simpler Zähler, dessen korrektes Zählen ich prüfen 
will.
Ich hab mal beide Dateien abgespeckt und beigefügt, die das Verhalten 
erzeugen. Ansich müsste ja der Ausganz Q ständig wechseln..zumindest in 
der Testbench tut er das nicht :-( Warum ??

Hier die Fehlermeldung:
"Instance /zaehlertestbench/uut/ : Warning: There is an 
'U'|'X'|'W'|'Z'|'-' in an arithmetic operand, the result will be 
'X'(es)"

Vielen Dank Euch !
Angehängte Dateien:
Moderator (Firma: Titel) Persönliche Seite #1991444
Lesenswert?
• ▲
▼
Ralph H. schrieb:
> Hier die Fehlermeldung:
Mal ohne den VHDL-Code angeschaut zu haben:
ein nicht initialisierter Zähler.

So, und jetzt den Code angeschaut:
So ist es. Schreib da mal besser:
1
  signal QZaPZei  :  std_logic_vector(2 downto 0) := "000";  --3bit Zähler

Denn den Wert des Zählers ist ohne Initialisierung erst mal unbekannt 
und damit "UUU". Und "UUU"+'1' gibt wieder "UUU". Und "UUU"+'1' gibt 
wieder "UUU"....

BTW:
Mit Vektoren rechnet man nicht.
Beitrag "Re: Mittelwertberechnung aus vier 8-Bit Zahlen"
Moderator (Firma: Titel) Persönliche Seite #1991460
Lesenswert?
• ▲
▼
Ralph H. schrieb:
> Sollte ich also besser Signale IMMER mit nem Startwert versehen oder ?
Ich habe ein Problem mit solchen Vereinfachungen wie immer oder nie. 
Also: Initialisieren nur dort, wo es Sinn macht. Das gilt für alle 
Speicherglieder. Ein Signal, das nicht speichert, kann auch nicht 
initialisiert werden, weil es seinen Wert ja erst zur Laufzeit 
bekommt...
#1991536
Lesenswert?
• ▲
▼
Lothar Miller schrieb:
> Also: Initialisieren nur dort, wo es Sinn macht. Das gilt für alle
> Speicherglieder. Ein Signal, das nicht speichert, kann auch nicht
> initialisiert werden, weil es seinen Wert ja erst zur Laufzeit
> bekommt...
Man muss immer im Hinterkopf haben, dass ein FF beim Start des FPGA auf 
'0' ist, wenn man es nicht explizit auf '1' initialisiert. Nicht 
initialisierte FFs gibt es nicht. Die Init-Werte kommen aus dem 
Bitstream und kosten keine Zusatzressourcen.
Gast #1992648
Lesenswert?
• ▲
▼
>Die Init-Werte kommen aus dem
>Bitstream und kosten keine Zusatzressourcen.

widersprecht das nicht Lothars aussage ?

>Also: Initialisieren nur dort, wo es Sinn macht.

Also ich würde das so interpretieren, dass es niemals schaden kann, ein 
Signal mit "0" zu initialisieren.
Moderator (Firma: Titel) Persönliche Seite #1992907
Lesenswert?
• ▲
▼
Julia schrieb:
>> Die Init-Werte kommen aus dem
>> Bitstream und kosten keine Zusatzressourcen.
> widersprecht das nicht Lothars aussage ?
Ob ein Speicherglied auf eine '0' oder eine '1' initialisiert wird, ist 
egal. Wenn es nicht explizit auf einen Wert ('0' oder '1') gesetzt wird, 
dann macht das die Toolchain implizit mit dem Wert '0'.

>>Also: Initialisieren nur dort, wo es Sinn macht.
> Also ich würde das so interpretieren, dass es niemals schaden kann, ein
> Signal mit "0" zu initialisieren.
Es kann schaden, wenn es kein speicherndes Signal ist. Denn der 
simulator wird dem Signal erst mal den gewünschten Init-Wert zuweisen, 
die reale Hardware wird das aber nicht tun (können).

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