mikrocontroller.net

Forum: FPGA, VHDL & Co. Simulation von integer


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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.

Autor: Satt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.