library IEEE; -- Do?aczenie bibliotek use IEEE.STD_LOGIC_1164.ALL; entity GatesAndFlipFlop is -- Definicja projektowanego komponentu Port ( -- Definicja portów clk: in std_logic; -- Wejscie zegarowe rstn: in std_logic; -- Wej?cie resetuju?ce SelectInput: in std_logic_vector(1 downto 0); -- Deklaraceje wej?? Input1 : in STD_LOGIC; Input2A : in STD_LOGIC; Input2B : in STD_LOGIC; Input3A : in STD_LOGIC; Input3B : in STD_LOGIC; Input4A : in STD_LOGIC; Input4B : in STD_LOGIC; Output1 : out STD_LOGIC -- Deklaracja wyj?cia ); end GatesAndFlipFlop; -- Zako?czenie deklaracji projektowanego komponentu architecture Behavioral of GatesAndFlipFlop is -- Opis architektury signal InternalSignal1: std_logic; -- Definicje sygna?ów wewn?trznych signal InternalSignal2: std_logic; signal InternalSignal3: std_logic; signal InternalSignal4: std_logic; signal MuxOutput: std_logic; begin -- Pocz?tek opisu konstukcji InternalSignal1 <= not Input1; -- Bramka NOT InternalSignal2 <= Input2A and Input2B; -- Bramka AND InternalSignal3 <= Input3A or Input3B; -- Bramka OR InternalSignal4 <= Input4A xor Input4B; -- Bramka XOR with SelectInput select MuxOutput <= -- Wybór wyj?cia multipleksera na podstawie sygna?u steruj?cego InternalSignal1 when "00", -- Powi?zanie wejs? z warto?ci? sygna?u steruj?cego InternalSignal2 when "01", InternalSignal3 when "10", InternalSignal4 when "11", '0' when others; process(clk, rstn) -- Opis procesu i lista czu?o?ci begin -- Konstrukcja przerzutnika typu D if rstn = '0' then -- Warunek definiuj?cy reset stanem niskim Output1 <= '0'; -- Stan wyj?cia podczas resetu elsif rising_edge(clk) then -- Warunek definiuj?cy pod??czenie sygna?u clk do wej?cia zegarowego Output1 <= MuxOutput; -- Przypisanie sygna?ów do wej?cia i wyj?cia end if; end process; -- Zako?czenie procesu end Behavioral; -- Zako?czenie architektury