SIGNAL

Deklarations-Anweisungen – SIGNAL

SIGNAL a, b       : boolean;

SIGNAL c, d, e, f : bit;

SIGNAL g : std_ulogic;

SIGNAL h, i : time;
Dies ist die Deklaration von Signalen verschiedenen Typs. Mehrere Signale gleichen Typs können dabei in einer Anweisung deklariert werden. Die Initialisierung erfolgt hier mit dem am weitesten links stehenden Wert aus der Typdeklaration (type'LEFT), also mit false (Typ boolean), '0' (Typ bit), 'U' (Typ std_ulogic) und integer'LEFT fs (Typ time).
SIGNAL a, b       : boolean     := true;

SIGNAL c, d : bit := '1';
SIGNAL e, f : bit := '0';

SIGNAL g : std_ulogic := 'Z';

SIGNAL h : time := 0 fs;
SIGNAL i : time := 2.3 ns;
Hier erfolgt die Signaldeklaration mit expliziter Initialisierung. Sollen verschiedene Signale gleichen Typs mit verschiedenen initialen Werten versehen werden, müssen getrennte Deklarationsanweisungen vorgesehen werden.
SIGNAL a : bit_vector (7 DOWNTO 0)   := "10010011";
SIGNAL b : bit_vector := "11100110";

SIGNAL c : std_logic_vector (1 TO 8) :=
(1 TO 4 => '1', 5 | 8 => '0', OTHERS => 'Z');

SIGNAL d : complex :=
(real_part => 0.5, imag_part => -1.5);
Dieses Beispiel zeigt die Deklaration von Vektor- bzw. Feldtypen mit Initialisierung. Ohne Indexangabe (Signal b) erfolgt die Indizierung von 0 TO 7. Signal c und d werden mit einem Aggregat-Ausdruck initialisiert.
SIGNAL a : std_logic_vector (1 TO 8)  BUS := "10010011";

SIGNAL resolved_b : my_res_function my_type REGISTER;
Mit Hilfe der Schlüsselwörter BUS und REGISTER werden hier sog. kontrollierte Signale deklariert. Sie müssen einen aufgelösten Typ besitzen (z.B. std_logic) oder mit einer sog. resolution function aufgelöst werden (2. Beispiel).