Überlauf std_logic_vector Synthese

Gast #797444
Lesenswert?
• ▲
▼
Hab von jemanden folgenden Code Erhalten:

signal A,B,C,D : std_logic_vector(9 downto 0);

if (A + B > C + D) then
 ...

Die Werte können ja nur Werte von 0 bis 1023 annehmen.
Was passiert wenn z.b. A=1000d und B=33 ist?
Die Addition beider müsste doch erstmal einen Überlauf sowie 9 ergeben?

Hat da mein Vorgänger Mist gebaut oder erkennt der Synth. das er da 1 
Bit mehr braucht?
Gast #797455
Lesenswert?
• ▲
▼
Ja, es kann zu einem Überlauf kommen. Ob das allerdings schlimm ist, 
kann man ohne kenntnis der Daten nicht sagen.

Nein, die Synthese erkennt das nicht. Kann sie auch nicht. Schließlich 
kann das ja beabsichtigt sein.
Gast #797465
Lesenswert?
• ▲
▼
Es ist ein Zwischen Speicher.
A und C wachsen immer weiter an.
B und D sind Burstlängen

C und D sind Daten die bereits rausgeschrieben sind.
A und B sind Daten die noch drinnen sind.
Es sollten immer mehr Daten im Speicher sein als bereits rausgeschrieben 
worden.
Es sollte ja nicht möglich sein daß der Code etwas rausschreibt, was 
noch gar nicht drinnen ist.
Hab das ganze jetzt mal mit hübschen unsigned( ... ) eingewickelt, mal 
sehen was passiert!

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