Hardware Reference
In-Depth Information
type
tVektortyp
is
(natural
range
<>)
of
tTyp;
variable
x: tVektortyp(n-
1
downto
0
);
variable
z: tVektortyp(
2
*n-
2
downt
o
0
);
...
z(x'range) := x;
for
idx
in
0
to
n-
2
loop
z(idx+n) := z(
2
*idx)
z(
2
*idx+
1
);
end loop
;
z
0
z
1
z
2
z
3
z
4
z
5
z
6
x
0
x
1
x
2
x
3
x
4
x
5
x
6
z
i
Variable,inderderWertgespeichertwird
z
7
z
10
z
12
z
8
z
9
z
11
R¨uckgabewert
Abb. 3.22. Schleife zur Beschreibung der Schaltung aus Abb. 3.20 mit einer Baum-
struktur
sung ein normaler Addierer erforderlich ist (vgl. Abschnitt 2.5.5). Die Einga-
bewerte werden auch hier in ein initialisiertes Feld geschrieben. Nur entnimmt
danach jeder Iterationsschritt drei Werte aus dem Feld und schreibt zwei Er-
gebniswerte in die nächsten freien Feldelemente (Abb. 3.23).
x
0
x
1
x
2
x
3
x
4
x
5
x
6
x
7
x
8
x
9
z
0
z
1
z
2
z
3
z
4
z
5
z
6
z
7
z
8
z
9
z
24
z
25
s
c
s
c
s
c
s
c
s
c
CSA
z
10
CSA
z
16
z
17
z
18
z
19
CSA
CSA
z
22
z
23
CSA
z
11
z
20
z
12
z
21
s
s
CSA
z
13
CSA
c
z
14
c
z
15
s
c
CSACarry-Save-Addierer
Pfadmitderl¨angstenVerz¨ogerung
Variable,inderderWertgespeichertwird
CSA
z
i
Abb. 3.23. Reduktionsschema für einen Carry-Save-Addierer
3.4.3 Blockspeicher
Digitale Schaltungen benötigen in der Regel größere Speicherblöcke zur Auf-
bewahrung von Daten. Das Modell eines adressierbaren Speichers ist ein adres-
sierbares Feld von Bitvektoren:
subtype
tDaten
is
std_logic_vector(...
downto
0
);
type
tMem
is array
(natural
range
<>)
of
tDaten;
Die Adresse ist ein Bitvektor zur Darstellung vorzeichenfreier Zahlen:
subtype
tAdr
is
tUnsigned(...
downto
0
);
Die weiteren Details hängen vom Modellierungsstil, bzw. davon ab, wofür
das Speichermodell zu entwickeln ist. Dieser Abschnitt beschreibt beispielhaft
Modellschablonen für:
• die objektorientierte Modellierung von Schreib-Lese-Speichern in Register-
Transfer- und Synthesebeschreibungen,