Hardware Reference
In-Depth Information
6.3 VHDL im Detail
6.3.1 Imperative Beschreibungsmittel
Lösung zu Aufgabe 3.1
A1: Nicht zulässig. Addition einer Variablen vom Typ real mit einer ganz-
zahligen Konstante.
A2: Zulässig, Wert false.
A3: Nicht zulässig. Vergleich einer Variablen vom Typ real mit einer ganz-
zahligen Konstanten.
A4: Zulässig. Zuerst wird der Wert von r mit dem ganzzahligen Wert von i
potenziert und dann mit 0,5 multipliziert. Das an r zugewiesene Ergebnis
ist 32.0 und hat den Typ real.
Lösung zu Aufgabe 3.2
Für den Anweisungsteil genügt eine Fallunterscheidung, in der für jeden Einga-
bewert der Bitvektorwert für das darzustellende Zeichen zurückgegeben wird:
function
seg7(x:std_logic_vector(
2
downto
0
))
return
std_logic_vector
is
begin
case
x
is
when
"000"
=>
return
"0111111"
;
when
"001"
=>
return
"1110011"
;
when
"010"
=>
return
"0111110"
;
when
"011"
=>
return
"1110001"
;
when others
=>
return
"0000000"
;
end case
;
end function
;
)
WEB-Projekt:P3.1/Lsg_pack.vhdl
Lösung zu Aufgabe 3.3
Die Funktion benötigt eine lokale Zählvariable mit dem Rückgabetyp na-
tural und dem Anfangswert »0«, die in einer Schleife über den gesamten
Indexbereich des Bitvektors, wenn das Bit »1« ist, um eins hochgezählt wird:
function
count1(x:std_logic_vector)
return
natural
is
variable
i:natural:=
0
;
begin
for
idx
in
x'range
loop
if
x(idx)=
'1'
then
i := i+
1
;
end if
;
end loop
;
return
i;
end function
;
)
WEB-Projekt:P3.1/Lsg_pack.vhdl