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 !
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"
Danke Lothar.. genauso ist es ! Wieder etwas gelernt ! Stimmt ist ja auch logisch, aber da muss der Anfänger erstmal drauf kommen..und ich zerbrech mir die Birne hier ;-).. Sollte ich also besser Signale IMMER mit nem Startwert versehen oder ?
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...
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.
Anguel S. schrieb: > Man muss immer im Hinterkopf haben, dass ein FF beim Start des FPGA auf > '0' ist, wenn man es nicht explizit auf '1' initialisiert. Und dann muß man wissen, dass der Simulator das nicht weiß, und deshalb solche Signale mit 'U' (undefined) initialisiert... ;-)
Jo Männer.. das hab ich nun hoffentlich gelernt ;-) Bis jetzt macht meine Schaltung auch was sie soll :-), aber bestimmt muss ich noch ganz viele Erfahrungen machen und hoffe schonmal auf Eure Hilfe :-) Danke sagt Ralph!
>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.
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).
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.