Dále se budeme zabývat pouze programovatelnými logickými obvody ( FPLA - field programmable logic arrays). Tyto obvody lze podle velikosti a vlastností připravených funkčních bloků dělit na dvě skupiny. Programovatelné logické obvody ( PLD - programmable logic devices ) a složitější logická pole ( FPGA - field programmable generic arrays). Dělící hranice není ostrá. PLD obsahují obvykle do 100 ekvivalentních hradel, ale existují i obvody s 10000 ekvivalentními hradly ( tyto obvody se pro svojí velikost označují CPLD - complex PLD ). Obvody FPGA obsahují také okolo 1000 ekvivalentních hradel, ale na rozdíl od CPLD jsou tvořeny bloky, schopnými vytvářet i složitější funkce.
Programovatelné propojky
První programovatelné obvody se objevily okolo roku 1978. Jednalo se například o obvody firmy AMD obsahující propojky určené k přetavení. V dnešní době se využívá následujících druhů propojek.
Bipolární propojky - v nenaprogramovaném stavu jsou vždy vodivé, při programování se zvýšeným napětím přetaví, a tím se uvedou do nevodivého stavu. Zpoždění na hradlo takovýchto obvodů je za cenu vysoké spořeby velmi nízké ( okolo 1 až 2 ns ).
Plovoucí hradla - používají se u obvodů vyrobených technologií NMOS a CMOS. Propojky jsou tvořeny unipolárními tranzistory, jejichž hradla jsou připojena na miniaturní kondenzátory. Pokud je na kondenzátoru uložen náboj, propojka se nalézá ve vodivém stavu. Náboj na kondenzátorech lze měnit pouze v programovacím stavu, kdy je kondenzátor přes další tranzistor nebo diodu připojen k vnějším logickým signálům. Jedná-li se o diodu, lze pouze přivedením zvýšeného napětí dodat náboj do kondenzátoru. Snížení náboje se dociluje například ozářením obvodu UV světlem, které způsobí excitaci elektronů a umožní jejich přesun z kondenzátoru. Tato technologie se nazývá EPROM ( erasable programmable read only memory ). Jedná-li se o tranzistory připojené ke kondenzátorům, lze zvýšením napětí na jejich hradle docílit možnosti řídit náboj a je možné ve speciálním režimu i obvod elektricky vymazat ( EEPROM - eletric erasable programmable read only memory ). Obvody s těmito technologiemi mohou mít zpoždění na hradlo okolo 5 až 10 ns.
Propojky PLICE - technologie firmy ACTEL. Jedná se o propojky ANTI-FUSE ( obrácená pojistka ), které jsou v základním stavu nevodivé. Nevodivá dielektrická vrstva se zvýšeným napětím prorazí a propojka se stane vodivou. Odpor v nevodivém a vodivém stavu je 100 MW / 500 W.
Propojky VIALINK - firmy Quick Logic. Programovatelná propojka je tvořena amorfním křemíkem mezi dvěma kovovými drahami. Při proražení dojde k natavení kovu a jeho slití. Tato technologie dosahuje velmi dobrého poměru odporu v nevodivém a vodivém stavu ( 50 MW / 50 W ). To je důležité pro zajištění rychlé změny napětí na kapacitách vodičů.
Architektura obvodů PLD
Nejdříve se budeme zbývat kombinačními logickými obvody. Libovolnou kombinační funkci lze zapsat jako součin maxtermů nebo součet mintermů. Dále budeme uvažovat pouze součet mintermů. Minterm je pravdivý poze tehdy, je-li na vstupech jedna z kombinací, pro kterou je výsledná funkce pravdivá. Nejjednodušším příkladem takového obvodu je paměť PROM. Pro každou kombinaci vstupů je možné určit hodnotu výstupu. Toto řešení však vyžaduje úplný dekodér všech stavů vstupů a velké množství programovatelných buněk. Výsledkem je vyšší cena a nízká rychlost. Pro mnoho funkcí je možné dekodér zjednodušit a rozdělit. Není třeba dekódovat stavy, kdy je výstup nepravdivý a je možné sloučit mintermy, které se liší pouze v hodnotě jednoho vstupu ( například pomocí Karnaughových map ). Tento postup lze opakovat iněkolikrát. Tím se ukazuje, že je pro programování funkcí, vhodnější programovat dekodér kombinací vstupů. Tento dekodér je realizován polem AND. Sloučení všech pravdivých kombinací na jeden nebo více výstupů se provádí polem OR.
Na obrázku je viditelná obecná struktura kombinačního obvodu. Čárkovaně je naznačena možná zpětná vazba z výstupu Y0 do pole AND. Podle možnosti programovat AND a OR pole lze obvody rozdělit.
Typ obvodu | Pole AND programuje | Pole OR programuje |
ROM | výrobce | výrobce |
PROM a EPROM | výrobce | uživatel |
PAL - prog. array. logic | uživatel | výrobce |
FPLA - field. prog. logic arrays | uživatel | uživatel |
Příklad naprogramované logické funkce v obvodu typu PAL s jedním výstupem.
V mnoha případech je nutné nevyužité termy ( vstupy části OR ) připojit k zdroji nepravdivého stavu. Toho lze docílit součinem signálu s jeho negací. Některé obvody mají speciální propojky pro připojení termu k nepravdivému stavu.
Značení obvodů typu PAL
Obvody PAL mají programovatelné pole AND a pevně realizované pole OR tvořící vždy součet několika sousedních termů přivedený do výstupního obvodu. Dále následují označení jednotlivých typů výstupních obvodů připojených k poli OR.:
L | kombinační výstup aktivní v nízké úrovni |
H | kombinační výstup aktivní ve vysoké úrovni |
R | výstupní registr se společným hodinovým signálem |
C | complementary - obě dvě úrovně výstupu |
P | programovatelné L nebo H |
V | původní význam proměnný počet součinových termů |
A | jako R, ale asynchronně taktované, vždy jeden term pro CLK |
S | sharing - využití termu pro dva výstupy nebo sdílení mezi sousedy |
Příklad:
PAL 16 L 8 | 8 výstupů aktivních v L, 7 součinových termů pro jeden výstup a jeden součinový term pro OE, řídí přechod výstupu z neaktivního do aktivního stavu. |
Následuje obrázek obvodu PAL 16 L 8. Zajímavá je odlišnost zapojení pinů 1 a 11. Piny 10 ( GND ) a 20 ( VCC ) jsou použity pro napájení obvodu.
PAL16L8
PAL16R8
Obvody GAL ( generic array logic )
Tyto obvody začala jako první vyrábět firma LATICE. Jedná se o náhradu téměř všech obvodů PAL. K programovatelné části pole AND byla přidána možnost volby typu výstupní logiky. Konfigurovatelné výstupní obvody jsou označeny jako OLMC ( Output Logic MacroCell ). Byla také změněna technologie programování. Místo jednorázově propalovacích propojek byla použita technologie EEPROM. Obvody je tedy možné elektricky programovat a v případě nutnosti změn je možné elektrickým vymazáním uvést obvod do nenaprogramovaného stavu. Stav propojek je možné v kontrolním režimu i číst. Po kontrole naprogramování je možné obvod zajistit proti možnosti čtení.
Obvod nemá žádné zvláštní vstupy určené k programování. Do programovacího stavu se uvede zvýšením napětí na jednom z logických vstupů na 16,5 V. Poté je vybrán řádek programovací matice přivedením kombinace logických signálů na další vstupy. Data jsou zapisována a čtena sériově.
Nejrozšířenější je obvod GAL 16 V 8. Je zapouzdřen v úzkém pouzdře s 20 vývody, z nich dva jsou napájecí ( 10 GND, 20 VCC ), osm přímo vstupujících do pole AND ( 2 až 9 ), dalších osm výstupních ( 12 až 19 ). Funkce zbylých dvou vývodů je závislá na konfiguraci obvodu. Mohou být použity jako nezávislé vstupy nebo jako vybavovací ( 11 OE ) a hodinový ( 1 CLK ) vstup. 6 až 8 výstupů je také podle konfigurace zavedeno zpět do pole AND.
Další obvod GAL20V8 zapouzdřený ve 24vývodovém pouzdře je pouze rozšířen proti GAL16V8 o možnost dalších čtyř vstupů.
Obvody GAL18V10 ( 20 vývodů ), GAL20V10 ( 24 vývodů ) a GAL22V10 ( 28 vývodů ) se odlišují velikostí pole AND a od obvodu GAL16V8 se liší možnými konfiguracemi výstupní makrobuňky a možností asynchronního nulování a synchronního nastavení výstupních klopných obvodů pomocí dvou výstupů pole AND.
Z dalších modifikací obvodů GAL jsou zajímavé obvody ispEEPLD ( in-system programmable EEPLD ), u kterých je možné pomocí programovacích vstupů měnit funkci přímo ve provozním zapojení. Příkladem je obvod ispGAL16V8 a ispGAL22V10.
Pro aplikace vyžadující nízký příkon se klasické obvody GAL příliš nehodí, klidový odběr činí asi 70 mA. Existují však obvody ve verzích low pover ( 40 mA ) a ve verzích zerro power, které v klidovém stavu odebírají jen několik mA. Například EPLD obvod PALCE18V8. Tento obvod obsahuje propojky tvořené technologií EPROM. Pro sériovou výrobu je dodávána levná verze bez mazacího okénka ( OTP - one time programmable ).
JEDEC soubory
Jedná se o standardní formát pro přenos informace o logickém návrhu propojek a konfigurací programovatelného obvodu z CAE programů do programátoru logických obvodů.
Data souboru začínají za komentářem znakem STX ( 02h ). Jednotlivá pole jsou ukončena kombinací "*" (2Ah) a koncem řádky (0Dh 0Ah). Data začínají informací o typu obvodu. Další pole
N@ název_pinu @číslo_pinu* | přiřazení názvu pinu | |
G0* nebo G1* | nastavení, nulování ochrany proti přečtení | |
QFpočet_programovatelných_bitů* | informace o velikosti programovatelné paměti | |
QPpočet_pinů* | počet vývodů pouzdra | |
Ldddd bbbbbbbbbb* | hodnoty jednotlivých progamovatelných bitů | |
dddd decimální adresa | ||
b požadovaná hodnota bitu, počet je volitelný a pole lze rozdelit na více úseků |
Data jsou ukončena znakem ETX (03h). Za ním následuje hexadecimálně zapsaný kontrolní součet.
Dále následuje zkrácený výpis JEDEC souboru vytvořený programem OPAL.
PAL16V8 QP20* QF2194* G0* F0* L0000 11111111111111111111111111111111* L0032 10111111110111011110111111101111* L0064 10111111111011011111111011111110* L0096 10111111110111101111110111111101* ... L2016 00000000000000000000000000000000* L2048 00000000* L2056 01000110010001000100100101010011* L2088 00110001000000000000000000000000* L2120 11000000* L2128 11111000111110001110000011100000* L2160 10000000100000001000000010000000* L2192 01* C47F4* _443D
pisa@cmp.felk.cvut.cz
DOWNLOAD & Odkazy
- Domovská stránka autora - http://cmp.felk.cvut.cz/~pisa