Xilinx Vivado Synthese von integer ohne range

Gast #5156898
Lesenswert?
• ▲
▼
Hallo Leute,
ich suche folgende Information:
Was macht die Synthese in Vivado (2014.3) mit einem integer Signal, wenn 
kein range x to y angegeben ist?
Ist es dann 16, 32 bit breit, signed oder unsigned? Oder "je nach 
Bedarf"? Es geht darum, wann ein Zähler ohne Begrenzung "überläuft".

Ich finde darüber leider keine Informationen.
Ich habe jetzt in vorhandenen Code einfach den erwarteten und 
gewünschten range eingebaut, und bei erreichen des Limits einen reset 
eingebaut. Aber mich interessiert was ohne passiert.
Gruß,
Thomas
Gast #5156923
Lesenswert?
• ▲
▼
Zu erst:
Probiere es doch aus ;)

Wenn ich mich nicht täusche, kann es bei integer-Signalen Probleme mit 
dem "automatischen Überlauf" geben.
In solchen Fällen verwende ich für "überlaufende" Signale immer 
unsigned. Da funktioniert das auch :)

Gruß
derLars
Gast #5156949
Lesenswert?
• ▲
▼
Ich gehe mal davon aus, dass Du in VHDL schreibst:

Ohne eine Begrenzung mit range sind Integer 32 Bit breit und signed. 
Zählt man einen Integer von 0 hoch, dann wird bei Überlauf von 2^31-1 
auf -2^31 inkrementiert (hab es nie in Hardware ausprobiert, aber in 
Simulation verhält es sich so)

Mit range-Begrezung wird die Anzahl der Bits so gewählt, dass der zu 
zählende Betrag reinpasst. Wenn man z.B. auf range 0 to 16 begrenzt, 
werden 5 Bit reserviert. Zählt man von 0 hoch, wird in Hardware von 16 
auf 17 inkrementiert (dann auf 18, 19...). Von 31 kippt der Zähler dann 
auf 0 um.
Ich bin mir nicht mehr 100 %ig sicher mit welcher Vivado-Version ich das 
vor einiger Zeit ausprobiert habe (dürfte eher eine 2015.x gewesen 
sein), aber ich konnte das Verhalten so mit Logic Analyzer im Chip 
nachvollziehen.
Die Simulation sieht da anders aus. Soweit ich mich erinern kann, hält 
der XSim die Simulation mit einer Error-Message an, zu dem Zeitpunkt an 
dem man die definierte range verlässt.

Meine Empfehlung: Immer eine Range angeben, weil man in der Simulation 
(sofern diese vollständig ist, also auch mal versuchen mögliche Fehler 
zu provozieren) auf Überläufe aufmerksam gemacht wird.
Moderator (Firma: Titel) Persönliche Seite #5157158
Lesenswert?
• ▲
▼
Thomas schrieb:
> Vielen dank! Habe jetzt eine range angegeben und per if-Bedingung den
> Überlauf fest eingebaut.
Das musst du sowieso. Denn es gibt keinen automatischen von 'right nach 
'left und zurück...

eddy schrieb:
> Mit range-Begrezung wird die Anzahl der Bits so gewählt, dass der zu
> zählende Betrag reinpasst
Auch ohne range wird das optimiert. Nur eben später. Dann kommen zigfach 
Meldungen zu "unused signals"...
Gast #5161043
Lesenswert?
• ▲
▼
Gäbe es eine einfache Strategie, dies zu vermeiden?

Ich meine, man kann das einschränken, ok, aber gerade bei komplizierten 
Rechnungen muss man immer erst mal durchsimulieren, wie gross die 
Zwischenergebnisse werden, um die range so einzuschränken, dass keine 
ungenutzten Bits entstehen aber ja kein Abschneiden erfolgt.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.