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,
Search WWH ::




Custom Search