Hardware Reference
In-Depth Information
Tabelle 3.3. Feldattribute
Attribut
Ergebnis
F'left[(n)], F'right[(n)],
F'low[(n)], F'high[(n)]
linker, rechter, kleinster bzw. größter
Indexwert
F'range[(n)],
F'reverse_range[(n)]
Indexbereich, umgekehrt geordneter
Indexbereich
F'length[(n)] Anzahl der Elemente
F'ascending[(n)] true für einen aufsteigenden und false für
einen absteigenden Indexbereich
(F - Feldobjekt oder Feldtyp; n - Nummer des Indexbereichs)
und 'ascending liefern integer bzw. boolean-Werte, die sich auch als Tex-
te ausgeben lassen. Die mit 'range und 'reverse_range abgefragten Be-
reiche können als Iterationsbereiche für Schleifen und in Vereinbarungen von
Feldtypen und Feldobjekten verwendet werden.
Beispiel 3.5:
Was geben die nachfolgenden Write-Anweisungen aus?
type
tTab
is array
(
1
to
5
,
6
downto
4
)
of natural
;
variable
Tab: tTab;
...
A1: write(
"Tab'left(1)="
& str(Tab'left(
1
)));
A2: write(
"Tab'ascending(2)="
& str(Tab'ascending(2)));
A3:
for
idx
in
Tab'reverse_range(
2
)
loop
write(
"idx="
& str(idx));
end loop
;
)WEB-Projekt:P3.2/Test_Feld.vhdl
A1: Die linke Indexgrenze des ersten Indexbereichs ist
Tab'left(1)=1
A2: Der zweite Indexbereich ist nicht aufsteigend definiert:
Tab'ascending(2)=false
A3: Die For-Schleife gibt die Indexwerte des zweiten Indexbereichs in umge-
kehrter Reihenfolge, d.h. aufsteigend, aus:
idx=4
idx=5
idx=6
Operationen und eng verwandte Feldtypen
Für Felder gibt es nur wenige vordefinierte Operationen. Typgleiche Felder
können einander zugewiesen, zugeordnet oder miteinander verglichen wer-