Forum: FPGA, VHDL & Co. Zeitbasis VHDL


von Johannes (Gast)


Lesenswert?

In VHDL gibt es ja den Datentyp time

kleinste Einheit ist hier 1fs.

Was würde eine zuweisung von x = 2,7fs + 2,7fs bewirken.

Wird vor dem rechnen oder danach gerundet? Wird überhaupt gerundet oder 
einfach Stellen abgeschnitten.

Ich würde ja rechnen und dann runden als richtig empfinden.

x = 2,7fs+2,7fs = 5fs.

richtig?

von M. K. (sylaina)


Lesenswert?

Ja, du würdest erst rechnen und dann runden aber bedenke, du kennst 
keine Zahlen kleiner als 1fs, d.h. du kennst die erste Nachkommastelle 
von fs nicht. Damit siehst du bei 2.7 fs auch nicht die .7. Somit kannst 
du hier nur 2+2 rechnen. Vorstellen kannst du dir das etwa so:
Die kleinste Stelle, die du kennst ist also 10^-15. .7 ist die Stelle 
10^-16, die kennst du aber nicht mehr, bei dir ist ja bei -15 Schluss 
;).

Fazit: Runden durch abschneiden wird hier der Fall sein.

von Duke Scarring (Gast)


Lesenswert?

Versuch macht kluch:
1
entity fs_test is
2
end entity fs_test;
3
4
architecture test of fs_test is
5
6
    constant short_time_1 : time := 2.7 fs;
7
    constant short_time_2 : time := 2.7 fs;
8
9
    constant long_time    : time := short_time_1 + short_time_2;
10
11
begin
12
13
    process
14
    begin
15
        report "short_time_1 : " & time'image( short_time_1) severity note;
16
        report "short_time_2 : " & time'image( short_time_2) severity note;
17
        report "long_time    : " & time'image( long_time   ) severity note;
18
        wait;
19
    end process;
20
21
end;
1
vlib work
2
vcom fs_test.vhd
3
Model Technology ModelSim PE vcom 10.0b Compiler 2011.05 May  5 2011
4
-- Loading package STANDARD
5
-- Compiling entity fs_test
6
-- Compiling architecture test of fs_test
Da hätte ich ja gedacht, das die Zeit in fs was ganzzahliges sein muß, 
aber gut.
1
vsim fs_test
2
[...]
3
# Loading std.standard
4
# Loading work.fs_test(test)
5
# ** Warning: (vsim-3479) Time unit 'fs' is less than the simulator resolution (1ps).
6
#    Time: 0 ps  Iteration: 0  Instance: /fs_test File: fs_test.vhd
7
#
8
run
9
run
10
# ** Note: short_time_1 : 0 ps
11
#    Time: 0 ps  Iteration: 0  Instance: /fs_test
12
# ** Note: short_time_2 : 0 ps
13
#    Time: 0 ps  Iteration: 0  Instance: /fs_test
14
# ** Note: long_time    : 0 ps
15
#    Time: 0 ps  Iteration: 0  Instance: /fs_test
16
exit
17
exit
Versuch 2, mit feinerer Zeitauflösung:
1
vsim -t fs fs_test
2
[...]
3
# Loading std.standard
4
# Loading work.fs_test(test)
5
#
6
run
7
run
8
# ** Note: short_time_1 : 3 fs
9
#    Time: 0 fs  Iteration: 0  Instance: /fs_test
10
# ** Note: short_time_2 : 3 fs
11
#    Time: 0 fs  Iteration: 0  Instance: /fs_test
12
# ** Note: long_time    : 6 fs
13
#    Time: 0 fs  Iteration: 0  Instance: /fs_test
14
exit
15
exit
Bei Modelsim wird also aufgerundet.

Duke

von Andreas U. (Gast)


Lesenswert?

was kein wunder ist, da Modelsim mit Real rechnet.

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
Noch kein Account? Hier anmelden.