Hallo, was passiert bei einem integer range of 0 to 1234, wenn der Wertebereich überschritten wird? In der Simulation hatte ich mal merkwürdige Sachen ... Aber es wird vermutlich keinen Überlauf geben, dass er von 1234 auf 0 springt, oder? Wird er einfach als integer range of 0 to 2047 synthetisiert? Verhält sich das in der Simulation anders? Grüße Gast
> was passiert bei einem integer range of 0 to 1234, wenn der Wertebereich > überschritten wird? > In der Simulation hatte ich mal merkwürdige Sachen Vermutlich Fehlermeldungen... > Wird er einfach als integer range of 0 to 2047 synthetisiert? Jain, er wird nicht als Integer, sondern als Vektor mit 11 Bits realisiert, weil es "halbe" Bits nicht gibt. Wenn du nur integer schreibst (ohne range), werden 32 Bits verwendet.
Vorsicht beim Überlauf von Integers! Am Besten nicht darauf verlassen, dass sie wieder bei 0 anfangen, wenn sie die Grenze des angegebenen Wertebereiches überschreiten. Sowas hatte ich schonmal, stundenlang nach dem Fehler gesucht, am Ende habe ich an der entsprechenden Stelle das Integersignal wieder auf 0 gesetzt und es ging wieder alles.
Kann sein dass verschiedene Simulatoren anders reagieren, aber bei ModelSim bekommt man beim Überlauf des Bereich einen Abbruch mit Fehlermeldung. Das passiert auch, wenn man den Bereich z.B. von 0 bis 99 definiert und dann schreibt : i <= i+1; if (i = 99) i <= 0; Man darf die Simulation nicht mit der synthetisierten Schaltung verwechseln, dort erzeugt ein 8 Bit Zähler bei 255 natürlich einen Überlauf und beginnt bei 0. Bei der Simulation will ich ja gerade wissen, ob meine Variable immer im definierten Bereich bleibt. Etwas anderes ist die Verwendung der unsigned oder signed Typen aus dem Numeric_std Package. Dort hat man definierte Überläufe an den Bereichsgrenzen, die Simulation rechnet korrekt weiter.
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.