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