ENTITY xy_tb IS END;
|
Dies ist eine einfache ENTITY ohne PORTs und GENERICs, wie sie z.B. bei Testbenches vorkommen könnte. |
ENTITY ab IS
PORT (s1 : IN bit_vector(3 DOWNTO 0); s2 : OUT bit); END ab;
|
Diese ENTITY besitzt einen 4 bit breiten Bus als Eingangs-PORT und ein einzelnes bit-Signal als Auspags-PORT. Dies könnte z.B. ein Modell zur Paritätsprüfung darstellen. |
ENTITY n_bit_register IS
GENERIC (n : positive := 4); PORT (clk, reset : IN bit; d1 : IN bit_vector(n-1 DOWNTO 0); q1 : OUT bit_vector(n-1 DOWNTO 0)); END n_bit_register;
|
In diesem Beispiel wird die Schnittstelle eines Registers mit beliebiger Bitbreite beschrieben. Das GENERIC dient dazu, um die Breite des Eingangs- und Ausgangsbusses zu parametrisieren. Der Defaultwert hierfür ist 4, d.h. ohne explizite Angabe wird eine Busbreite von 4 Bit angenommen. |
ENTITY something_else IS
GENERIC (n : IN positive); PORT (c : IN bit; q1 : OUT bit_vector(n-1 DOWNTO 0));
TYPE byte IS ARRAY (1 TO 8) OF bit; USE work.timing_package.delay;
PROCEDURE initialize (SIGNAL y : byte) IS BEGIN y <= (OTHERS => '1') AFTER delay; END initialize; BEGIN
ASSERT c'DELAYED'STABLE(5 ns) REPORT "c is not stable!" SEVERITY error; passive: proc_delay (c, q1, delay); END something_else;
|
Hier werden im Deklarationsteil der ENTITY (vor BEGIN) neben den üblichen PORTS und GENERICS auch eine USE-Anweisung und eine PROCEDURE-Deklaration verwendet. Alle Vereinbarungen gelten somit fü ENTITY und ARCHITECTUREs; das timing_package ist somit also auch in der zugehöhrenden ARCHITECTURE bekannt. Nach dem BEGIN tritt eine sog. passive Anweisung (PROCEDURE-Aufruf oder PROCESS-Anweisung, die keine Signalzuweisungen enthalten) und eine ASSERTION auf. |