Aufrufe
vor 4 Jahren

Hardware-Entwurf mit VHDL

Hardware-Entwurf mit VHDL

Hardware-Entwurf mit VHDL Prof. Dr.-Ing. Stefan Wolter Elektrotechnik und Informatik - Syntax für die Deklaration einer Funktion: FUNCTION function_name [ ( { [arg_class_m] arg_name_m {, arg_name_n} : [IN] arg_type_m [:= def_value_m] ; } [arg_class_o] arg_name_o {, arg_name_p} : [IN] arg_type_o [:= def_value_o] ) ] RETURN result_type ; - Der Funktionsname kann ein bereits definierter Name einer Funktion oder eines Operators sein. Dann dient die zugehörige Deklaration zur Überladung der Funktion. - Erlaubt sind auch Funktionen ohne jegliches Argument. - Als Argumentklasse (arg_class) können Signale und Konstanten angegeben werden. Der Defaultwert ist CONSTANT. - Die Typen der Argumente (arg_type) können alle in VHDL definierten Typen sein, auch unbeschränkte Typen. - Syntax für die Definition einer Funktion: FUNCTION function_name [ ( { [arg_class_m] arg_name_m {, arg_name_n} : [IN] arg_type_m [:= def_value_m] ; } [arg_class_o] arg_name_o {, arg_name_p} : [IN] arg_type_o [:= def_value_o] ) ] RETURN result_type IS . . . . . . -- Deklarationsanweisungen . . . BEGIN . . . . . . -- sequentielle Anweisungen . . . -- obligatorische RETURN-Anweisung . . . -- keine WAIT-Anweisung in Funktionen! . . . END [FUNCTION] [function_name]; - Im Kopf der Funktionsdefinition muß die Funktionsdeklaration wiederholt werden. - Die Angabe des Schlüsselwortes FUNCTION in der letzten Zeile ist erst ab dem Standard von 1993 möglich. VHDL-GRUNDLAGEN 83

Hardware-Entwurf mit VHDL Prof. Dr.-Ing. Stefan Wolter Elektrotechnik und Informatik - Im Deklarationsteil können lokale Typen, Untertypen, Variablen, Files, Aliases, Attribute und ab dem Standard von 1993 auch Gruppen deklariert werden. Ebenso können Attribute definiert, USE-Anweisungen angegeben und andere Funktionen und Prozeduren deklariert und definiert werden. - Der Funktionsteil besteht aus sequentiellen Anweisungen und kann weitere Unterprogrammaufrufe enthalten. - Die übergebenen Argumente können innerhalb der Funktion nur gelesen werden (Modus IN). - Eine Funktion muß an mindestens einer Stelle mit der RETURN-Anweisung verlassen werden. - Der Typ des Rückgabewertes in der Funktionsdefinition muß mit dem in der Funktionsdeklaration konform sein. - Beispiel für eine Funktion: -- Funktion zur Umwandlung eines Bitvektors beliebiger Länge in einen Integerwert FUNCTION vector_to_int (input_vector : bit_vector) RETURN integer IS VARIABLE int_val : integer := 0 ; BEGIN FOR i IN input_vector’RANGE LOOP -- Attribut ’Range liefert Indexbereich IF input_vector (i) = ’1’ THEN int_val := int_val + (2 ** i) ; -- Exponentiation für Stellenwertberechnung END IF ; END LOOP ; RETURN int_val ; END FUNCTION vector_to_int ; - Der Aufruf einer Funktion geschieht unter Angabe der aktuellen Argumentwerte. Für die Übergabe der Argumente ist (wie bei einer PORT MAP) die Zuordnung über eine „positional association“ oder eine „named association“ möglich. - Wird beim Aufruf kein Aufrufwert angegeben, dann gilt der in der Funktionsdeklaration festgelegte Defaultwert. VHDL-GRUNDLAGEN 84

Verification.pdf
VHDL Kompakt - CES
Schaltungsdesign mit VHDL
VHDL Einführung
VHDL Design Guidelines