NUMERIC_STD: Kontrollierter Überlauf?

Gast #3181342
Lesenswert?

Hallo zusammen,

ich hab mal eine Frage zur Verwendung in NUMERIC_STD:
Ich hab in meinen Projekten viele Zähler, die "ganz normal" überlaufen 
sollen. In der Vergangenheit hab ich das immer durch die Verwendung 
STD_LOGIC_UNSIGNED und das rechnen mit std_logic_vector realisiert.

Beispiel: ein 8-Bit-Register soll inkrementiert werden und dabei von 255 
auf 0 zurückspringen.
Mit STD_LOGIC_UNSIGNED:
1
signal x : std_logic_vector(7 downto 0);
2
...
3
x <= x + 1; -- Überlauf implizit von 255 auf 0

Kann ich das mit NUMERIC_STD einfach ganz genauso machen?
1
signal x : integer range 0 to 255;
2
...
3
x <= x + 1; -- Was passiert bei 255 + 1?
Moderator (Firma: Titel) Persönliche Seite #3181344
Lesenswert?

Jens Langecker schrieb:
> Kann ich das mit NUMERIC_STD einfach ganz genauso machen?
Ja:
1
signal x : unsigned(7 downto 0);
2
...
3
x <= x + 1; -- Überlauf implizit von 255 auf 0
Mit einem Integer geht das natürlich nicht. Du musst den Überlauf dort 
manuell machen. Die Synthese erkennt die Sache mit dem Überlauf und 
macht trotzdem nur 8 Flipflops draus...

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