Entiteiten en architecturen

De VHDL code van elk bouwblok bevat een

  • een lijst van de gebruikte bibliotheken,
  • interface beschrijving: entity,
  • functie beschrijving: architecture.

Voorbeeld

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity and_or_poort is
    port(
        A: IN STD_LOGIC;
        B: IN STD_LOGIC;
        D: IN STD_LOGIC;
        E: OUT STD_LOGIC
    );
end entity and_or_poort;

architecture Behavioural of and_gate is
    signal c: STD_LOGIC;
begin
    c <= a and b;
    e <= c or d;
end Behavioural;

Entity

De entity bevat de beschrijving van de interface.

entity and_or_poort is
port(   a, b, d: in STD_LOGIC;
        e: out STD_LOGIC);
end and_or_poort;

De entity

Entity ports

Elke poort heeft:

  • een naam
    • in dit voorbeeld: a,b,d,e
  • een mode
    • in dit voorbeeld: in, out
  • een type
    • in dit voorbeeld: STD_LOGIC

Namen in VHDL

Namen voldoen aan de volgende eisen:

  • bestaan uit letters, cijfers en _
  • beginnen met een letter
  • niet eindigen met een _
  • geen twee _ na elkaar
  • geen gereserveerde woorden zoals bv. “entity”

Namen zijn niet case sensitive.

Modes van ports

Belangrijkste modes, of richtingen:

  • in: ingang
  • out: uitgang
  • inout: in- en uitgang
  • buffer: uitgang die intern ook gebruikt wordt
    • voorbeeld: and_or_poort waarbij we c ook als uitgang willen
entity and_or_poort is
port(   a, b, d: in STD_LOGIC;
        c: buffer STD_LOGIC;
        e: out STD_LOGIC);
end and_or_poort;

architecture arch of and_or_poort is
begin
    c <= a and b;
    e <= c or d;
end arch;

Gebruik van buffer

Het gebruik van de mode buffer kan vermeden worden door een intern signaal aan te maken en dit te verbinden met de uitgang.

Volgende twee codes zijn identiek:

entity and_or_poort is
port(   a, b, d: in STD_LOGIC;
        c: buffer STD_LOGIC;
        e: out STD_LOGIC);
end and_or_poort;

architecture arch of and_or_poort is
begin
    c <= a and b;
    e <= c or d;
end arch;
entity and_or_poort is
port(   a, b, d: in STD_LOGIC;
        c, e: out STD_LOGIC);
end and_or_poort;

architecture arch of and_or_poort is
    signal c_intern: STD_LOGIC;
begin
    c_intern <= a and b;
    e <= c_intern or d;
    c <= c_intern;
end arch;

Architecture

  • De architecture beschrijft het gedrag.
  • Een architecture moet verbonden zijn met een specifieke entity.
  • Een entity kan meerdere architectures hebbben.
architecture arch of and_or_poort is
    signal c: STD_LOGIC;
begin
    c <= a and b;
    e <= c or d;
end arch;

Signals

  • Om interne data voor te stellen, worden signals gebruikt.
  • Een signal is van een bepaald type maar heeft geen mode.
  • Namen van signalen:
    • zelfde voorwaarden als namen van entity ports.
  • Voorbeeld:
    • signal c: STD_LOGIC
architecture arch of and_or_poort is
    signal c: STD_LOGIC;
begin
    c <= a and b;
    e <= c or d;
end arch;

Commentaar in VHDL

Je kan iets in commentaar zetten door er 2 keer een - voor te zetten.

-- dit is een regel commentaar
z <= a -- dit kan ook op het einde van de regel