VHDL/Przykłady kodu

Przykłady kodu pokazujące wykorzystanie VHDL.

Bramka NAND

edytuj

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

edytuj

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

edytuj

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 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;