Hardware Reference
In-Depth Information
variable
idx2:natural;
begin
for
idx
in
x'range
loop
if
x(idx)=
'1'
then
z(idx2) := (
0
=>
'1'
,
others
=>
'0'
);
else
z(idx2) := (
others
=>
'0'
);
end if
; idx2 := idx2+
1
;
end loop
;
for
idx
in
0
to
xl-2
loop
z(idx+xl) := z(
2
*idx)+z(
2
*idx+
1
);
end loop
;
return
z(z'high);
end function
;
)WEB-Projekt:P3.4/AfgCount1_pack.vhdl
c) Datenflussgraphen für N = 7:
Kettenstrukturzu BaumstrukturzurAufgabenteilb
Aufgabenteila
z
0
z
1
x
0
x
1
x
2
x
3
x
4
x
5
x
6
z
7
z
10
x
0
x
1
x
2
x
3
2
2
z
2
2
z
12
z
8
y
2
z
3
3
z
11
2
3
z
4
z
9
3
z
5
3
2
dreiBit
3
z
6
x
4
x
5
x
6
x
i
z
i
lokaleVariable
R¨uckgabewert
Eingabewerte
3
3
einBit
y
2
zweiBit
y
Die erforderlichen Bitbreiten der Zwischenergebnisse resultieren aus der
Regel, dass 2
N
- das ist die Anzahl der darstellbaren Werte - größer oder
gleich der Anzahl der aufsummierten Bits sein muss.
Lösung zu Aufgabe 3.15
Die Suchmethode wird durch eine Schleife simuliert, in der mit der kleinsten
Adresse beginnend die Inhalte aller Speicherplätze nacheinander mit dem ge-
suchten Wert verglichen werden. Bei der ersten Übereinstimmung erfolgt ein
Rücksprung mit der aktuellen Adresse und hit = 1. Wenn das Schleifenende
erreicht wird, erfolgt der Rücksprung mit hit = 0 und dem Adresswert null:
function
Suche(Mem: tMem; x: tDaten)
return
tSuchergebnis
is
begin
for
idx
in
Mem'low
to
Mem'high
loop
if
Mem(idx)=x
then
return
(hit=>
'1'
, adr=>to_tUnsigned(idx, tAdr'length));
end if
;
end loop
;
return
(hit=>
'0'
, adr=>(
others
=>
'0'
);
end function
;