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