Man kan i
princippet opbygge al digital elektronik med NAND
kredse. I praksis bruger man med en række standard
komponenter, såsom Dekodere og Multipleksere
(kombinatorisk logik).
En design-regel
for kombinatorisk logik siger: Lav
aldrig en tilbagekobling af en udgang til en indgang.
Hvis man alligevel gør det (og ved hvad man gør)
bliver det muligt at lave digitale komponenter med
hukommelse såsom: Latche og Flip/Flops.
De vigtigste standard
komponenter baseret på kombinatorisk logik og F/Fs
er Tællere og Skifteregistre.
Hardware beskrivende
sprog som VHDL gør det muligt for en designer at
beskrive et digital system på flere niveauer:
-
Struktureret VHDL kode - Svarer til at sætte
komponenter sammen (Diagram tegning)
- RTL
kode - Register Transfer Level betyder at ens
design fra starten er opdelt i kode som
implementerer Flip/Flops og kode som lægger op
til kombinatorisk logik.
-
Behavorial kode - bruges hvis man beskriver en
algoritme VHDL med henblik på simulering og
eventuelt også til syntese. Man vil dog ofte
opleve at koden godt nok kan simuleres men ikke
kan omsættes til hardware.
Det er så op til designeren selv at beskrive
algoritmen med RTL eller Struktureret kode som
(næsten) altid kan omsættes til hardware (læs
FPGA).
Hvis man har
kendskab til programmering i Java, C++ etc. er
det ikke nødvendigvis nogen fordel når man skal
lære VHDL. VHDL kode godt nok ligner et
"almindeligt" program, men den beskriver altså
en verden hvor alting foregår parallelt.