mikrocontroller.net

Forum: FPGA, VHDL & Co. Wertebereich NATURAL vs. INTEGER,.


Autor: berndl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi allerseits,

wenn man schon mit breiten Datenbussen arbeitet (>32bit), dann ist es ja 
vor allem in einer Testbench recht angenehm, wenn man da mal auf andere 
Datenformate ausweichen kann, z.B. integer, natural, positive

Aber sehe ich das richtig: integer, natural, positive sind im VHDL 
Standard nur auf >=32bit definiert?

Bei Pseudo-Random Zahlengenerierung kann ich mir ja noch leicht mit 
einer loop ueber einen std_logic_vector behelfen, aber zum abtesten von 
Ergebnissen waere ja ein groesserer Zahlenbereich nicht schlecht.

Ich habe bzgl. 'natural' mal Tante Google angeworfen, es scheint also 
wirklich nur bis 32bit definiert zu sein?

Oder andersrum: Wie macht ihr das?

Gruss,
- berndl

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
berndl schrieb:
> Aber sehe ich das richtig: integer, natural, positive sind im VHDL
> Standard nur auf >=32bit definiert?
Eher wohl <=32 Bit...  :-o
Weil natural und positive von integer abgeleitete Typen sind:
positive: 1 to integer'high
natural:  0 to integer'high
haben die effektiv sogar noch 1 Bit weniger...

> Oder andersrum: Wie macht ihr das?
Nimm einen Vektor vom Datentyp signed(127 downto 0) oder unsigned(127 
downto 0), dann hast du schon 4 mal die Breite eines integers. Und 
zusammen mit der numeric_std lässt sich damit gut rechnen...

Autor: Marcus Harnisch (mharnisch) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller schrieb:
> berndl schrieb:
>> Aber sehe ich das richtig: integer, natural, positive sind im VHDL
>> Standard nur auf >=32bit definiert?
> Eher wohl <=32 Bit...  :-o

Der Standard definiert den Wertebereich des Typs integer nur als 
Minimum. Konkret wird garantiert, dass integer mindestens den Bereich 
von -2^32-1 bis 2^32-1 abdeckt. Darüber hinaus ist es 
implementierungsabhängig.

Bei den meisten EDA Herstellern wird der Bereich nach unten auf -2^32 
erweitert, damit er mit den üblichen C Konventionen übereinstimmt.

Gruß
Marcus

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marcus Harnisch schrieb:
> Der Standard definiert den Wertebereich des Typs integer nur als
> Minimum.
Verpennt... :-(

> Bei den meisten EDA Herstellern wird der Bereich nach unten auf -2^32
> erweitert, damit er mit den üblichen C Konventionen übereinstimmt.
Das ist aber unüblich, denn genau dieses 33. Bit gibt es in einem C 
long und einen daraus resultierenden 32-Bit-Integer nicht...
Dort ist ein long integer von -2147483648 bis 2147483647.

Autor: Marcus Harnisch (mharnisch) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller schrieb:
>> Bei den meisten EDA Herstellern wird der Bereich nach unten auf -2^32
>> erweitert, damit er mit den üblichen C Konventionen übereinstimmt.
> Das ist aber unüblich, denn genau dieses 33. Bit gibt es in einem C
> long und einen daraus resultierenden 32-Bit-Integer nicht...
> Dort ist ein long integer von -2147483648 bis 2147483647.

Ich habe mich um ein Bit vertippt. Das sollte natürlich heißen
-2^31-1 bis 2^31-1 (in VHDL). Beim C integer (auf 32 bit Architekturen) 
hätte man aber -2^31 als kleinsten Wert. Entschuldige die Verwirrung.

Gruß
Marcus

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.