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.