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
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...
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
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.
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
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.