VHDL

I den här artikeln kommer vi att utforska VHDL och dess inverkan på olika aspekter av samhället. Sedan dess framträdande på den offentliga scenen har VHDL fångat människors fantasi och skapat en intensiv debatt kring dess betydelse och relevans. Detta fenomen har utan tvekan satt en outplånlig prägel på populärkulturen och påverkat hur samhället uppfattar och närmar sig en lång rad frågor. I den här artikeln kommer vi att undersöka de många dimensionerna av VHDL och dess inflytande inom områden som politik, teknik, utbildning, bland annat. Vi kommer också att analysera de olika perspektiven som finns angående VHDL, vilket möjliggör en mer komplett och berikande förståelse av dess betydelse i det aktuella panoramat.

VHDL, VHSIC (Very High Speed Integrated Circuit) Hardware Description Language, är ett hårdvarubeskrivande språk, vilket betyder att det liksom Verilog är ett programspråk som används för att beskriva digitala kretsar som sedan kan realiseras i en grindmatris eller ASIC.

VHDL lånar många element i sin syntax från Ada.

Historia

VHDL utvecklades 1980 av IBM, Texas Instruments och Intermetrics kontrakterade av det amerikanska försvaret. VHDL har kommit ut i ett antal nya versioner sen dess och idag vidareutvecklas programspråket under IEEE Computer Society som en IEEE standard. VHDL Analysis and Standards Group (http://www.eda.org/vasg/ ) håller i den utvecklingen.

Programexempel

En krets, till exempel en vippa, kallas i programspråket för en entitet. En sådan beskrivs av dess portar, dvs in- och utgångar som den använder för att kommunicera med andra kretsar, samt sin funktion, i språket kallat sitt beteende (behaviour), dvs vad den beroende på sina insignaler skickar ut som utsignal.

Beteendet hos en entitet styrs av processer som triggar på en av insignalernas positiva eller negativa flank.

D-vippa

Följande exempel är en D-vippa med synkroniserad reset som sparar en databit:

-- VHDL exempel program: DFlipFlop.vhd
-- en kommentar inleds med dubbla streck
  library IEEE;                 -- motsvarande C++: #include <...>
  use IEEE.std_logic_1164.all;  -- motsvarande C++: using namespace ...
  entity DFlipFlop is           -- moduldeklaration (C++: klassdeklaration)
     port (                     -- port(...) deklarerar alla "publika" signaler
        CLK : in STD_LOGIC;     -- ingång CLK
        RST : in STD_LOGIC;     -- ingång RST, aktiv hög
          D : in STD_LOGIC;     -- ingång D - värdet som skall "kopieras"
          Q : out STD_LOGIC    -- utgång Q - det kopierade värdet
     );
  end DFlipFlop;

  architecture behaviour of DFlipFlop is  -- motsvarande en klassdefinition.
                                          -- här deklareras ev. "privata" signaler/funktioner
  begin
      process(CLK)                -- processen "körs" när CLK ändras...
      begin
          if rising_edge(CLK) then --...från nolla till etta
              if RST = '1' then   -- Om RST är aktiv (hög), så skall vi...
                 Q <= '0';        --...nollställa utgången...
              else                --...annars skall vi...
                 Q <= D;          --...kopiera värdet på ingången D
              end if;
          end if;                 -- Kom ihåg: Raderna ovan händer bara när CLK går från 0 till 1.
      end process;
  end behaviour;                  -- Avsluta "klassdeklarationen".

Se även

Externa länkar