Forum: FPGA, VHDL & Co. Überlauf std_logic_vector Synthese


von Gast (Gast)


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?

von Mathi (Gast)


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.

von Gast (Gast)


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!

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
Noch kein Account? Hier anmelden.