Hardware Reference
In-Depth Information
Zur Umwandlung eines ganzzahligen Wertes in eine Ziffernfolge wird der
Wert solange durch die Basis des Zahlensystems geteilt, bis der Quotient null
ist. Der Ziffernwert der niederwertigsten Stelle ist der Divisionsrest der ersten
Division. Der Ziffernwert der nächsthöheren Stelle ist der nächste Divisionsrest
etc. Zuletzt wird die höchstwertigste Ziffer berechnet, die in der Zahlendar-
stellung ganz links steht. Abbildung 2.65 zeigt als Beispiel die Berechnung
der Ziffernfolgen, mit denen der Wert 75 im Binär-, im Hexadezimal- und im
Oktalsystem dargestellt wird.
UmwandlungineineBin¨arzahl UmwandlungineineHexadezimalzahl
75:16=4
0
75 37
:2=
:2=
:2=
:2=
:2=
:2=
:2=
Rest: b 0 =1
Rest:11=(B) 16
Rest:4=(4) 16
UmwandlungineineOktalzahl
9
37 Rest: b 1 =1
18
9
4
2
1
0
4:16=
18
9
4
2
1
Rest: b 2 =0
Rest: b 3 =1
Rest: b 4 =0
Rest: b 5 =0
Rest: b 6 =1
75
:8=
:8=
:8=
Rest:3
Rest:1
Rest:1
9
1
0
1
Ergebnis:(1001011) 2 =(4B) 16 =(113) 8
Abb. 2.65. Berechnung der Ziffernfolgen zur Darstellung des Wertes 75 im Binär-,
im Oktal- und im Hexadezimalsystem
Die schrittweise Division ist umkehrbar und liefert wie auch Gleichung 2.2
den Wert der Ziffernfolge. Zu Beginn wird eine Akkumulatorvariable mit dem
Wert null initialisiert. Dann wird für jede Ziffer beginnend mit der höchst-
wertigsten der akkumulierte Wert mit der Basis multipliziert und dazu der
Ziffernwert addiert. Im nachfolgenden Code-Beispiel stehen die n Ziffern ei-
ner Binärzahl in absteigender Reihenfolge im Bitvektor
. Die Akkumulation
erfolgt in der mit null initialisierten natural-Variablen Z. Im Schleifenkörper
wird der Wert in jedem Iterationsschritt verdoppelt und, wenn das zugehöri-
ge Bit »1« ist, zusätzlich um »1« erhöht. Eine direkte Addition des Bitwertes
zum Zahlenwert wäre nur möglich, wenn der Bitwert zuvor in einen zu einem
natural-Wert addierbaren Zahlenwert konvertiert wird
b
9
:
variable Z:natural;
variable b:bit_vector(n- 1 downto 0 );
...
Z := 0 ;
for idx in b'high downto b'low loop
Z := 2 *Z;
if b(idx)= '1' then Z := Z+ 1 ; end if ;
end loop ;
9 Die VHDL-Details - Schleifen, Datentypen etc. - werden später in Kapitel 3 aus-
führlich behandelt. Den skizzierten Algorithmus gibt es als vordefinierte Funktion
im Package ieee.numeric_bit für die Umwandlung von Bitvektoren in Zahlen-
werte.
 
Search WWH ::




Custom Search