VHDL/Przykłady kodu

Z Wikibooks, biblioteki wolnych podręczników.

Przykłady kodu pokazujące wykorzystanie VHDL.

[edytuj] Bramka NAND

Zawartość pliku opisującego dwu wejściową bramkę NAND:

 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;

[edytuj] Bramka XOR

Zawartość pliku opisującego dwu wejściową bramkę XOR:

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;

[edytuj] Przerzutnik typu D

Zawartość 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 aktywnego 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;