Digitaalipiirit
Digitaalipiirit ovat elektroniikassa ja tietokonetekniikassa piirejä, jotka käsittelevät signaaleja muutaman (yleensä kahden) erillisen signaalitason avulla. Yleensä nämä signaalitasot merkitään "0" ja "1" ja käytännön kytkennässä niitä vastaavat esimerkiksi 0 V ja +5 V jännitteet. Käytännössä kaikkien nykyisten tietokoneiden suorittimet on toteutettu digitaalipiireinä. Digitaalipiireistä poiketen analogiset piirit käsittelevät jatkuvasti portaattomasti muuttuvia signaalitasoja. Digitaalipiirien toimintaa käsittelevää tekniikan alaa voidaan kutsua digitaalitekniikaksi, tai tietokonetekniikaksi sillä alat liittyvät läheisesti toisiinsa. Piirien fyysinen toteuttaminen taas liittyy elektroniikkaan.
Usein esimerkiksi sulautetuissa järjestelmissä on periaatteessa mahdollista toteuttaa tietty laitteelta vaadittu toiminto (algoritmi) joko ohjelmistolla, jota suorittaa ohjelmoitava suoritin, tai vaihtoehtoisesti tarkoitusta varten erityisesti suunnitellulla digitaalipiirillä. Toisin sanoen algoritmi voidaan siis toteuttaa joko ohjelmalla, joka ohjaa yleiskäyttöisen digitaalipiirin toimintaa, pelkällä tarkoitusta varten suunnitellulla digitaalipiirillä, tai näiden yhdistelmänä jossa osa algoritmista toteutetaan ohjelmallisesti ja osa pelkällä piirillä.
Usein digitaalipiirit toimivat tahdistettuna johonkin halutun suuruiseen oskillaattorin tuottamaan kellotaajuuteen, jolloin piiri saadaan esimerkiksi suorittamaan jokin toiminto tietyin aikavälein. Tällaista piiriä kutsutaan synkroniseksi piiriksi. Asynkroniset piirit taas eivät käytä kellosignaalia toimintojensa tahdistukseen, vaan toisistaan riippuvat alilohkot käyttävät kättelyprotokollaa toimintansa tahdistamiseen. Asynkronisten piirien suunnittelu on huomattavasti vaikeampaa, mutta toisaalta niiden suorituskyky on parempi ja tehon kulutus pienempi
Piirien toimintaa tutkitaan ja suunnitellaan Boolen algebran avulla. Yksinkertaisen digitaalipiirin toiminnallisuus voidaan esittää totuustauluna, jossa on listattu kaikki sisääntulosignaalien mahdolliset kombinaatiot ja niitä vastaavat lähdöt. Mikäli piiri on sekventiaalinen, eli sen seuraava tila riippuu sisääntulojen lisäksi piirin edellisestä tilasta, voidaan piirin toiminta esittää tilakoneena, joka edelleen voidaan muuntaa totuustauluksi. Totuustaulusta voidaan johtaa loogisista operaatioista (AND, OR, yms.) muodostuvat lausekkeet lähdöille käyttämällä esimerkiksi Karnaugh’n karttaa, kun lähtöjen lukumäärä on pieni.
Nämä lausekkeet ovat toteutettavissa fyysisesti loogisilla porteilla, jotka nykyään koostuvat tyypillisesti muutamasta mikropiirillä olevasta transistorista. Monimutkaisia digitaalipiirejä voidaan suunnitella ja simuloida esimerkiksi tietokoneavusteisilla suunnittelutyökaluilla (CAD), tai nostaa abstraktiotasoa käyttämällä laitteistokuvauskieliä joilla piirin toiminnalle voidaan antaa formaali tietokoneohjelmaa muistuttava kuvaus. Laitteistokuvauskielellä kirjoitettua mallia voidaan usein hyödyntää logiikkasynteesissä, joka nopeuttaa ja helpottaa valmistusprosessia siirtämällä suuren osan työstä tietokoneohjelmalle (ns. synteesityökalu).
Digitaalipiiri toteutetaan nykyään fyysisesti yleensä joko valmistamalla mikropiiri (usein ns. sovelluskohtainen mikropiiri (ASIC)) tai käyttämällä ohjelmoitavaa logiikkapiiriä kuten FPGA-piiriä. Yksinkertainen digitaalipiiri on mahdollista myös rakentaa palakomponenteista. Piirit voivat olla joko bipolaarisia (TTL-) tai MOS-piirejä (CMOS).
Digitaalipiirien rakenneosia ovat: