Hardware Reference
In-Depth Information
Die beiden standardisierten Bitvektortypen für die Zahlendarstellung un-
signed und signed haben den Elementtyp bit und können damit keine Gül-
tigkeitsinformationen darstellen. Damit die Gültigkeitsinformation bei der Si-
mulation nicht verloren geht, verwenden die Beispiele im Buch die zwei selbst
definierten, mit std_logic_vector eng verwandten Typen
type tUnsigned is array (natural range <>) of std_logic;
type tSigned is array (natural range <>) of std_logic;
Damit die Synthese die Unterprogramm- und Operatorfunktionsaufrufe zur
Beschreibung von Hardware-Bausteinen für diese Typen als solche erkennt,
müssen diese über Konvertierungsfunktionen mit den Unterprogramm- und
Operatoraufrufen der standardisierten Typen nachgebildet werden.
Die logischen Operatorfunktionen sind so definiert, dass die Operanden
nach std_logic_vector konvertiert werden, mit diesem Typ die jeweili-
ge Operatorfunktion aufrufen und das Ergebnis zurückkonvertiert wird. Da
beide Typen mit std_logic_vector eng verwandt sind, erfolgt die Kon-
vertierung mit dem Typbezeichner und verursacht bei der Simulation kei-
nen Rechenaufwand. Die Funktionsdefinition des UND-Operators für den Typ
»tUnsigned« lautet z.B. wie folgt:
function "and"(a, b: tUnsigned) return tUnsigned is
begin
return tUnsigned(std_logic_vector(a) and std_logic_vector(b));
end function ;
Die arithmetischen Operatorfunktionen und die Konvertierungsfunktionen
zwischen Zahlen- und Bitvektortypen müssen in einer synthesefähigen Be-
schreibung auf die entsprechenden Funktionsaufrufe der Typen unsigned und
signed zurückgeführt werden. Die Konvertierung von std_logic_vector
nach bit_vector und umgekehrt erfolgt mit den beiden Funktionen
function to_bitvector(x:std_logic_vector) return bit_vector;
function to_stdlogicvector(x:bit_vector) return std_logic_vector;
aus dem Package ieee.std_logic_1164, die auch in synthesefähigen Be-
schreibungen zugelassen sind. Bei der Konvertierung nach bit_vector wer-
den »L« und »0« durch »0«, »H« und »1« durch »1« und alle übrigen Pseudo-
Werte durch den Wert der package-internen Konstante »xmap«, die »0« oder
»1« sein kann, ersetzt. Die Zurückführung von Funktionsaufrufen für die Ty-
pen »tUnsigned« und »tSigned« auf die von unsigned und signed erfor-
dert zwei weitere Konvertierschritte, zum einen zwischen den miteinander eng
verwandten Typen »t[Un]signed« und std_logic_vector und zum an-
deren zwischen den miteinander eng verwandten Typen bit_vector und
»[un]signed« (Abb. 3.14).
In den Packages »Tuc.Numeric_...« sind diese dreistufigen Konvertierun-
gen jeweils zu einer Funktion zusammengefasst. Für die Konvertierung zwi-
schen »tUnsigned« und unsigned lauten diese:
Search WWH ::




Custom Search