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.
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.
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.
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".