VHDL/Przykłady kodu
< VHDL
Przykłady kodu pokazujące wykorzystanie VHDL.
Bramka NAND
edytujZawartość pliku opisującego dwu wejściową bramkę NAND:
library ieee;
use ieee.std_logic_1164.all;
entity nand2 is
port (
a,b : in std_logic;
c : out std_logic
);
end nand2;
architecture logic of nand2 is
begin
c <= not (a and b);
end logic;
Bramka XOR
edytujZawartość pliku opisującego dwu wejściową bramkę XOR:
library ieee;
use ieee.std_logic_1164.all;
entity xor2 is
port (
a,b : in std_logic;
c : out std_logic
);
end xor2;
architecture behavioral of nand2 is
begin
c <= not (a and b);
end behavioral;
architecture logic of xor2 is
component nand2
port (
a, b : in std_logic;
c : out std_logic
);
end component nand2;
signal wew1,wew2,wew3 : std_logic;
begin
bramka1 : nand2 port map (a=>a, b=>b, c=>wew1 );
bramka2 : nand2 port map (a=>a, b=>wew1, c=>wew2 );
bramka3 : nand2 port map (a=>wew1, b=>b, c=>wew3 );
bramka4 : nand2 port map (a=>wew2, b=>wew3, c=>c );
end logic;
Przerzutnik typu D
edytujZawartość pliku opisującego gotowy do symulacji i syntezy logicznej, przerzutnik typu D z Resetowaniem synchronicznym.
library IEEE; -- dołączenie standardowej biblioteki IEEE
use IEEE.STD_LOGIC_1164.all; -- dołączenie pakietu 'STD_LOGIC_1164' z biblioteki IEEE
-- definiującego popularne stany logiczne
entity dffr is -- opis interfejsu przerzutnika (połączeń z otoczeniem)
port(
CLK : in STD_LOGIC; -- wejście zegarowe
RESET : in STD_LOGIC; -- wejście kasowania
DIN : in STD_LOGIC; -- wejście danych
DOUT : out STD_LOGIC -- wyjście danych
);
end dffr;
architecture behavior of dffr is -- opis wnętrza przerzutnika (w tym przypadku
begin -- jest to opis behawioralny)
dffar: process (CLK, RESET) -- proces z listą czułości (sensitivity list)
begin
if rising_edge(CLK) then -- wykrywanie narastającego zbocza zegara
if RESET='1' then -- kasowanie stanem wysokim wejścia RESET
DOUT <= '0'; -- przypisanie stałej to sygnału wyjściowego
else
DOUT <= DIN; -- przypisanie stanu wejścia do sygnału wyjściowego
end if;
end if;
end process;
end behavior;