www.mikrocontroller.net

Forum: FPGA, VHDL & Co. [VHDL] physical types


Autor: -daniel- (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wenn ich recht verstande habe, kann man nur integrale typen
für die deklaration von physikalischen typen verwenden.

type X is range 0 to 100
units
  a;
  aa = 2 a;
  aaa = 3 a;
end units;

signal z: x;

dabei darf an z in der summe nur werte aus dem range
zugewiesen werden, sprich

z <= 50 aa;  -- noch ok
z <= 51 aa;  -- schon überlauf => runtime error

ich habe für die zeitangabe 3.5 ns sehen stehen

ich habe in einem quellcode für zeit 3.5 ns stehen sehen
also eine fliesskommazahl, ich war überrascht dass es erlaubt ist

ich habe es ausprobiert und es geht tatsächlich
allerdings wird dann bei
z <= 3.5 a;
auf 4 a aufgerundet, zumindest bei mir.
Ist das implementation defined oder verhalten sich
auch eure/alle? simulatoren genauso?

Grüsse, Daniel

Autor: dima (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
library ieee;
use ieee.std_logic_1164.all;
entity main is end;

architecture main of main is
        type temperature is range 0 to 10e10
                units
                        a;
                        b = 10 a;
                        c = 10 b;
                        d = 10 c;
                        e = 10 d;
                end units;
        procedure print(constant t: in temperature) is
                use std.textio.all;
                variable l: line;
        begin
                write(l, temperature'image(t));
                writeline(output, l);
        end;
        signal temp: temperature := 3.3 b;      -- 33 a
        signal temp1: temperature := 3.3 a;
        signal temp2: temperature := 3.5 a;

begin
        print(temp);
        print(temp1);
        print(temp2);
end;

printet bei mir
33 a
3 a
4 a

wie man sieht macht komma bei physikalischen typen durchaus sinn
ob es alle simulator so handhaben kann ich leider dir nicht sagen

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.