Programovatelný logický obvod (programovatelné logické zařízení, PLD, anglicky programmable logic device) je elektronická součástka, která je používána pro vytváření uživatelsky nastavitelných číslicových obvodů. Na rozdíl od hradel, registrů a jiných číslicových obvodů (které mají z výroby pevně danou funkci) musí být PLD před použitím nejprve naprogramováno.
Historické kořeny moderních programovatelných polí jsou v prvních programovatelných pamětech typu PROM, které vyrobila firma Radiation v roce 1970 a jejich modernějších verzích EPROM (Intel, 1971) a EEPROM (Intel, 1978). Permanentní paměti jako takové ale neumožňovaly úspornou realizaci logické funkce. Logickým vývojovým krokem proto byl vznik FPLA obvodů (Field Programmable Logic Array of firmy Signetics/Philips z roku 1970), ale ty ale byly drahé a pomalé. Aby bylo možné dosáhnout vyšší rychlosti logiky, byla součtová matice realizována jako fixní – vznikla koncepce PAL obvodů (Programmable Array Logic od firmy Monolithic Memories v roce 1978) s programovatelnou maticí AND a pevnou maticí OR. S postupně se zlepšujícími technologiemi výroby integrovaných obvodů bylo možné vyrábět programovatelné obvody s vyšší kapacitou a realizující složitější logické funkce. Kvůli rostoucí velikosti obvodů se začalo později místo rozšiřování logických funkcí užívat spíše skládání více matic PLD obvodů do jednoho pouzdra. Vznikly tak obvody, které dnes nazýváme CPLD (Complex Programmable Logic Device od firmy Altera v roce 1988). Od CPLD byl už pak jen malý krok k prvním programovatelným hradlovým polím (FPGA), které uvedla firma Xilinx v roce 1984. Dnes dostupná FPGA se ovšem od architektur z poloviny osmdesátých let 20. století významně odlišují. Trendem je příklon k hrubozrnným architekturám, kde obvody kromě elementárních programovatelných logických bloků obsahují i další komplexní podpůrné bloky. Nejnovější architektury kombinují v roce 2010 FPGA a mikroprocesor, například FPOA obvody (Foeld Programmable Object Array) od firmy MathStar.[1]
Před vynálezem PLD se pro volně programovatelnou kombinační logiku používaly nevolatilní paměti typu ROM (tj. PROM, EPROM, EEPROM, …), což však sebou neslo několik nevýhod:
Nejjednodušší obvody GAL a PAL dovolují především úsporu místa, větší pružnost a zjednodušení návrhu plošných spojů náhradou několika klasických obvodů. Často se programují v patici pomocí speciálního zařízení (programátoru).
(Programmable Array Logic)
Je také obvod PLD (Programmable Logic Device), který funguje podobně jako PLA. PAL na rozdíl od PLA používá programovatelné AND, ale pevné OR brány.
Hlavním přínosem PLD bylo integrování složitějších logických funkcí do jediného čipu. Eliminovala se tak nespolehlivost zapojení, zjednodušil návrh a snížila spotřeba energie.
(Programmable Logic Array)
V roce 1970, firma Texas Instruments vyvinula integrovaný obvod, založený na čtecí asociativní paměti, také známé jako ROAM od IBM. Toto zařízení, TMS 2000, bylo naprogramováno úpravou kovové vrstvy, během produkce integrovaného obvodu. TMS 2000 mělo až 17 vstupů a až 18 výstupů, s osmi JK flip flop pro paměť. Texas Instruments vytvořila termín „Programmable Logic Array“ právě pro toto zařízení.
PLA je zkratka pro Programovatelné logické pole který představuje booleovskou funkci ve formě SOP (Sum of Products). PLA obsahuje NOT a AND a OR branky vyrobené na čipu. Prochází každým vstupem bránou NOT, díky které je každý vstup a jeho doplněk dostupný pro každou bránu AND. Výstup každé brány AND je přiřazen každé bráně OR. Konečně výstup OR brány produkuje čipový výstup. Takto se vytvoří vhodná spojení k použití výrazů SOP.
V PLA jsou programovatelná připojení k AND a OR polím. PLA je ve srovnání s PAL považována za nákladnější a složitější. Pro PLA lze použít dvě různé výrobní techniky ke zvýšení snadnosti programování. V této technice je každé spojení vytvořeno pomocí pojistky v každém průsečíku, kde lze nežádoucí spojení odstranit vyfukováním pojistek. Tato posledně uvedená technika zahrnuje vytvoření spojení v době výrobního procesu pomocí vhodné masky vytvořené pro specifický vzorec propojení.
(Generic Array Logic)
Vylepšená verze PAL, má i stejně vlastnosti a parametry, ale může být přeprogramováno. Zařízení je velice užitečné v prototypní fázi designu, kdy každý problém může být opraven pomocí jednoduchého přeprogramování. GAL jsou programovány a reprogramovány pomocí PAL programmeru nebo in-curcuit programmingu, pokud je podporován čipem.
Na obvody CPLD (komplexní programovatelné logické obvody) se můžeme dívat jako na spojení více obvodů GAL nebo PAL, které jsou vzájemně propojeny programovatelnými propojovacími poli. Současné obvody CPLD již mohou nahradit několik tisíc nebo i několik set tisíc logických hradel. Protože programování obvodů s několika sty vývody vkládáním do speciálního programátoru by bylo krajně nepraktické, CPLD se většinou programují pomocí vyhrazeného rozhraní (např. JTAG) až poté, co jsou zapájeny do desky plošných spojů.
Jinou alternativou jsou obvody FPGA (on Field Programmable Gate Arrays – programovatelná hradlová pole). Od CPLD se liší tím, že po zapnutí napájení musí být jejich konfigurace vždy znovu nahrána například z paměti EEPROM nebo FLASH. Pokud je tato paměť jejich součástí, programují se po zapájení podobně jako složitější CPLD. Větší FPGA většinou neobsahují paměť EEPROM/FLASH a po zapnutí napájení je nutné je vždy znovu nakonfigurovat (takže jejich funkce na rozdíl od CPLD není okamžitě dostupná).
Velké programovatelné logické obvody dnes umožňují i implementaci komplikovaných procesorů.
V dnešní době, již není takový zájem o rekonfigurovatelné systémy. Jsou to microprocesorové obvody, které obsahují určitě fixní funkce a další funkce, které mohou být změněny pomocí kódu. Designování nových, samopřepisovaných se systému vyžaduje, aby se inženýři učili nové metody a s tím i nový software.
PLD je kombinace logického a paměťového zařízení. Paměť slouží k uložení vzoru, který byl udán během programování. Většina metod pro ukládání dat byla adaptována pro využití v PLD. Ty zahrnují:
- SRAM
- Flash paměť
SRAM (statická paměť, anglicky Static Random Access Memory) - označuje volatilní paměť (po odpojení napájení zapomene svůj obsah). Paměť SRAM má v klidovém stavu velmi nízkou spotřebu, takže pokud potřebujeme nevolatilní RAM, lze toho dosáhnout malou pomocnou baterií, která napájí RAM po odpojení počítače od zdroje. Nevýhodou je, že baterii bývá nutné po několika letech vyměnit, zatímco životnost SRAM je mnohem delší.
Flash paměť je nejužitečnější, zachovává svojí konfiguraci, i když se zařízení vypne. A může být a smazaná, či reprogramována.
Pro zařízení vyráběná ve velkých sériích, kde hraje velkou roli cena a spotřeba a nepředpokládá se dodatečná změna funkce, se PLD často nahrazují zákaznickými obvody ASIC – což mohou být např. logické obvody s propojkami napevno napařenými již od výroby.
Mnoho PAL zařízení přijme vstup v standardním souborovém formátu „JEDEC soubory“. Jsou podobné k softwarovým kompilerům.. Jazyky používané jako zdrojový kód pro logické kompilery se nazývají „Hardware description languages“ - HDLs.
PALASM, ABEL (Advanced Boolean Expression Language) a CUPL (Cornell University Programming Language ) jsou často používány pro jednoduché zařízení, načež Verilog a VHDL (VHSIC Hardware Description Language) jsou používány pro komplexnější zařízení.