Programovateľný logický obvod

PLD - PAL, GAL

Prvé užívateľom programovateľné logické obvody (Programmable Logic Device, PLD) vznikli zo snahy nahradiť pomerne rozsiahle, avšak nekomplikované kombinatorické logické obvody (typicky adresné dekodéry) jedným obvodom aj tam, kde cena a počet výrobkov vylučovali použitie ASIC. Takéto obvody sa často realizovali pomocou bipolárnych PROM pamätí, toto však bolo pomerne nákladné a ťažkopádne riešenie. Keďže väčšina takýchto obvodov pozostáva z niekoľkých mnohovstupových hradiel typu AND s výstupmi spojenými hradlom OR, boli (firmou MMI) navrhnuté prvé PLD obvody ako matica AND/OR, kde sa prepaľovacími prepojkami (rovnakej technológie ako v PROM) určovali vstupy zapojené do AND matíc. Neskôr boli na výstupy OR hradiel pridané klopné obvody, čo umožnilo aj tvorbu jednoduchých sekvenčných obvodov.
Tieto jednorazovo programovateľné obvody boli nazvané PAL (Programmable Array Logic, programovateľná logika v tvare poľa) a v ich označení sa odzrkadľoval počet možných vstupov a výstupov (pričom však vstupy a výstupy zdieľali jednotlivé fyzické piny), napr. PAL16L8 bol obvod s max. 16 vstupmi a max. 8 výstupmi, ktorý realizoval čisto logickú funkciu (písmeno L v označení; písmeno R znamenalo PAL doplnený klopnými obvodmi).
Neskôr boli prepaľovacie prepojky nahradené pamäťovými bunkami typu EEPROM, čím sa obvody stali preprogramovateľnými. Súčasne sa modifikovala ich štruktúra tak, že sa okolo výstupného klopného obvodu pridali ďalšie obvody umožňujúce napr. uvedenie výstupu do tretieho stavu alebo presmerovanie fyzického vstupu na iný vstup AND/OR matice. Tak sa vytvorila tzv. výstupná makrocela, ktorej presná funkcia je konfigurovaná ďalšími pamäťovými bunkami. Tieto obvody sa označujú GAL (Generic Array Logic), pričom je zachovaná schéma s číslovaním ako u PAL (niektorí výrobcovia po drobných úpravách vyrábali GAL aj pod názvami PEEL, PALCE a pod.)

CPLD

Zväčšovanie počtu vstupov a výstupov obvodov GAL narazilo na problém príliš veľkej AND/OR matice (ktorá rastie s počtom vstupov približne kvadraticky). Preto sa pre zložitejšie obvody navrhla štruktúra, kde niekoľko pomerne uzavretých blokov podobných GAL je prepojených pomerne jednoduchou prepojovacou sústavou. Takto je možné dosiahnuť obvody s niekoľkými stovkami vstupov a výstupov. Štruktúra GAL zostala v základnej podobe zachovaná, a CPLD sa kategorizujú podľa počtu výstupných makrociel - toto číslo je obvykle prítomné aj v označení obvodu, napr. XC95144 je obvod z radu XC95xx a obsahuje 144 makrociel.

FPGA

Obvody FPGA majú odlišnú genézu a vznikli ako programovateľná verzia hradlového poľa známeho z ASIC technológií. Prepoje jednotlivých buniek poľa, ako aj samotná funkcia (pomerne malých) buniek je daná obsahom RAM buniek, ktorý je do obvodu „nahraný“ obvykle po zapnutí napájania. To znamená, že FPGA nie sú pripravené na činnosť hneď po zapnutí, aj keď existujú obvody s integrovanou konfiguračnou pamäťou ako aj obvody založené na technológii ROM (antifuse) aj EEPROM (najmä firma Actel). Niektoré dnešné FPGA majú integrované aj ďalšie funkcie, napríklad generátor niekoľkých hodinových signálov pomocou fázového závesu (PLL), zabudovanú pamäť RAM, zabudované procesorové jadro apod.

Porovnanie CPLD a FPGA

Výhody aj nevýhody oboch druhov PLD vychádzajú z ich štruktúry. Keďže CPLD majú štruktúru blízku GAL, sú vhodné na konštrukciu kombinatorickej logiky s mnohými vstupmi a s dobre odhadnuteľnými oneskoreniami (vďaka „priamočiarej“ štruktúre). Nie sú však vhodné pre rozsiahlu sekvenčnú logiku, keďže každý klopný obvod zaberie jednu makrocelu, ktorých je obmedzený počet. Naopak, FPGA nie sú vhodné pre rozsiahlu kombinatorickú logiku, keďže signály by museli prechádzať veľkým množstvom buniek. Naopak, aj zložitá sekvenčné logika sa implemntuje pomerne jednoducho. Keďže väčšina aplikácií si vyžaduje práve sekvenčné obvody a nie kombinatorické, na obvody FPGA sa kladie väčší dôraz a sú vyrábané aj v mimoriadne veľkých a rýchlych verziách.

Návrhové prostriedky

Na návrh PLD boli napísané pomerne jednoduché prekladače typu „PAL assembler“. Tieto umožňovali jednoduchý symbolický popis obvodu v textovej podobe, ktorý prekladač preložil do bitového toku ktorý slúžil ako predpis na programovanie obvodu. Zložitejšie obvody sa už nedajú navrhovať takýmito jednoduchými prostriedkami a dnes sa používajú v podstate tie isté návrhové prostriedky ako u ASIC. Používa sa jednak symbolický popis obvodu v jazyku podobnom vyšším programovacím jazykom, a taktiež schematický návrh podobný návrhu bežných elektronických obvodov. Z takto vytvorených návrhových súborov sa konečný bitový tok získa sústavou programov: najskôr sa z návrhového súboru odvodí logická funkcia, ktorá sa optimalizuje a nakoniec sa prevedie do samotného bitového toku. Dôležité sú aj simulačné programy a tiež utility ktoré umožňujú sledovať časovanie jednotlivých signálov, tiež sledovať a ovplyvňovať rozloženie jednotlivých funkčných blokov v obvode.