Hardware Reference
In-Depth Information
elsif
rising_edge(T)
then
y <= x+y;
end if
;
end procedure
;
)
WEB-Projekt:P3.1/Lsg_pack.vhdl
6.3.2 Anwendungsspezifische Datentypen
Lösung zu Aufgabe 3.5
A1: Der Term in der Klammer hat wieder den Typ time. Dazu wird ein Wert
vom Typ time addiert. Das Ergebnis ist auch vom Typ time. Die Anweisung
ist zulässig.
A2: Die Konstante »5« darf mit jedem ganzzahligen Typ, d.h. auch mit »int8«,
multipliziert werden. Das Produkt hat den Typ »int8« und darf nicht mit einer
Gleitkommakonstanten addiert werden. Die Anweisung ist unzulässig.
A3: Die Maximalwerte der beiden Datentypen sind beides Zahlen, aber von
unterschiedlichem Typ. Sie dürfen nicht miteinander verglichen werden. Die
Anweisung ist unzulässig.
Lösung zu Aufgabe 3.6
Typvereinbarungen:
type
tZeichenwert
is range
1
to
9
;
type
tZeichen
is
(
'1'
,
'2'
,
'3'
,
'4'
,
'5'
,
'6'
,
'7'
,
'8'
,
'9'
);
Konvertierungsfunktionen:
function
to_Zeichenwert(x: tZeichen)
return
tZeichenwert
is
begin
return
tZeichen'pos(x)+
1
;
end function
;
function
to_Zeichen(x: tZeichenwert)
return
tZeichen
is
begin
return
tZeichen'val(x-
1
);
end function
;
)
WEB-Projekt:P3.2/Afg_ZB_Enum.vhdl
Lösung zu Aufgabe 3.7
Die Wertebereichsgrenzen sind ganzzahlige Vielfache der kleinsten Maßeinheit
»mV«. Ein Volt ist gleich 1000 mV:
type tSpannung is range
-10000
to
10000
units
mV
;
V
=
1000 mV
;
end units;