6. Programovatelné struktury PLA, PAL, PROM, GAL struktury
6. Programovatelné struktury úvod Programovatelné obvodyřadíme mezi univerzální logické bloky, resp. programovatelné logické moduly. Obecné označení těchto modulů je PLD Programmable Logic Devices. V tomto pojetí to jsou integrované obvody typu MSI a VLSI (Midle Scale Integration, Very Large Scale Integration), které obsahují bloky se základními logickými členy i s klopnými obvody a tyto jsou propojovány uspořádaným systémem vodičů s programovatelnými spínači. Konfigurací spínačů se určí funkce logického obvodu. Ve srovnání se zákaznickými a polozákaznickými obvody jsou tyto programovatelné obvody o něco pomalejší. Avšak moderní obvody jsou konstruovány jako rekonfigurovatelné, tedy dají se přeprogramovat a tím aktualizovat pro danou aplikaci. Vlastí návrh logické struktury se v zásadě neliší od klasických návrhů. Návrhář nakreslí schéma nebo popíše funkci obvodu logickými rovnicemi ve speciálním programovacím jazyku. Dané schéma je zpracováno postupně několika procesy. Prvý může být označen syntézou, kdy se provedou optimalizace logických funkcí, včetně minimalizace, dekompozice apod.
6. Programovatelné struktury - úvod II Druhým krokem je pak tzv. mapování, což je proces, kdy se rozhoduje jakými prvky (logickými členy) a s jakým počtem vstupů se bude obvod realizovat. Další krok je proces rozmísťování, tj. přiřazení skutečných logických členů na souřadnicích x, y ve struktu-ře obvodu a propojení (tedy určuje se, které spínače budou sep-nuty. Výsledkem jsou konfigurační data, zpravidla ve formě sou-boru. Obvod se pak umístí do speciálního zařízení, označované jako programátor, který je připojen ke standardnímu PC např. prostřednictvím paralelního portu nebo sériového portu USB a nakon-figuruje se. Obvody, které jsou v desce zapájeny a je vyžadována rekonfigurace, mají speciální rozhraní JTAG, neboli Boundary Scan. Toto sériové rozhraní bylo vyvinuto za účelem diagnostiky a konfigurace číslicových obvodů. Obvod se již nezasouvá do programátoru, ale konfiguruje se zapájený v desce, připojením konektoru JTAG k PC (ISP In System Programming)
6. Programovatelné struktury úvod III Spínací prvky programovatelných obvodů se mohou dělit na destruktivní a nedestruktivní. V počátku těchto realizací byly užívány tzv. přepalovatelných pojistek (angl. fuse) nebo antipojistek jako destruktivních prvků. Pojistkou vlastně byl destruktivní polovodičový přechod, kde přivedeným vyšším napětím došlo k přerušení vodivosti. Tyto obvody byly možné programovat jen jednou ty se nazývaly obvody PLA a prvé obvody PAL. U moderních obvodů se začalo používat spínacích tranzistorů CMOS. Sepnutí tranzistoru je řízeno miniaturní paměťovou buňkou (zapsaná nebo ). V buňce je hodnota uchována na principu izolace náboje hodnota zůstává zachována i o vypnutí napájecího napětí a je možné ji elektricky smazat a přeprogramovat. Ta se začaly vyrábět obvody GAL a CPLD. Výrobci je zaručena trvanlivost záznamu na let a asi cyklů reprogramování. Obvody označené jako FPGA mají poněkud odlišnou architekturu.
6. Programovatelné struktury - aplikace PROM Užití ROM resp. PROM pro univerzální realizaci logické funkce pro rychlé realizace méně rozsáhlých logických funkcí
6. Programovatelné struktury aplikace PROM Logické funkce pro realizaci v PROM nelze minimalizovat! Programovací předpis pro PROM - pravdivostní tabulka a n. a 2 a a O O 2. O n..... 2.. 2 n..
6. Programovatelné struktury aplikace PROM Příklad: realizace funkce pamětí y a b c A A A2 a b c y Adresa na adrese je zapsána na adrese je zapsána
6. Programovatelné struktury PLA, PAL, GAL Ve strukturách PLA, PAL a GAL se dodržuje klasická AND OR koncepce, tj. taková, aby se bez dalších úprav mohly realizovat součtové formy logických funkcí (disjunktivní forma Sum of Product). Klasická řada obvodů PLA se již dnes v katalozích firem nevyskytuje šlo o jednorázově naprogramovatelné logické pole. Na vstupu součinové AND matice jsou zajištěny i negece vstupních proměnných I k. Do matice součtové pak vstupují součiny(součinové termy) p i. Bližš ukázka je na dalším obrázku.
6. Programovatelné struktury PLA, PAL, GAL Struktura PAL (Programmable Array Logic) Oproti PLA nemají obvody PAL součtovou matici a výstupy jsou fixovány do součtových hradel OR zpravidla s omezeným počtem vstupů. Přímo bylo možné realizovat funkce pouze s maximálně osmi součinovými termy. Výstupníčásti se vyráběly v několika variantách a kromě třístavových budičů obsahovaly klopné obvody (zpravidla typu D). Princip realizace s možnou minimalizací jednoduché logické funkce obvodem PAL ukazuje další orázek.
6. Programovatelné struktury PLA, PAL, GAL
6. Programovatelné struktury PLA, PAL, GAL Příklad obvodu PAL s označením GAL6V8, reprogramovatelný a na výstupu mají konfigurovatelnou buňku (OLMC)- Output Logic MacroCell. Ukázka této buňky je na dalším obrázku.
6. Programovatelné struktury PLA, PAL, GAL Výstupní buňka OLMC obvodu GAL - obsahuje dva multiplexory (4- vstupový a 2- vstupový), které se konfigurují při programování. Výstup D klopného obvodu je přiveden zpět do matice AND. Pokud není makro-buňka využita, odpovídající vývody pouzdra mohou být konfigurovány jako vstupní. Budič je trvale ve třetím stavu a dvouvstupový multiplexor přivádí do matice místo výstupu klopného obvodu signál z výstupu pouzdra.
6. Programovatelné struktury obvody CPDL Obvody CPDL (Complex Programmable Logic Devices) se řadí mezi obvody LSI a vznikly integrací struktur GAL. Lze si je představit jako několik obvodů GAL uspořádaných na čipu do matice, mezi nimiž jsou vloženy propojovací vodiče (jako propojovací matice) s programovatelným propojením. Největšími výrobci obvodů CPDL jsou firmy Altera a XILINX. Uveďme si vnitřní strukturu obvodů CPDL fy XILINX řady XC95xx. Obvody jsou mazatelné a reprogramovatelné - výrobce zaručuje cyklů mazání/programování. Obdobnou architekturu mají obvody CPDL CoolRunner od téže firmy tato řada se vyznačuje velmi nízkou spotřebou (klidová spotřeba činí cca µa, technologie EEPROM a využívá 5 úrovní metalizace,35 µm). Obvody XC95xx se vyrábějí pro 3 napájecí napětí, jinak se neliší. Řada XC95xx používá napájení 5V, XC95xxXL 3,3V a XC95xxXV je optimalizována pro 2,5V. U řady s nižším napájecím napětím než 5V tolerant, je možné na ně přivést signály TTL logiky. Programování je systémem ISP přes rozhraní JTAG.
6. Programovatelné struktury CPDL II Vnitřní architektura obvodů řady XC95xx
6. Programovatelné struktury CPLD III Vnější signály z vývodů pouzdra jsou přivedeny do I/O buněk, které obsahují třístavové budiče společně s logikou řízení směru signálu. Rychlá propojovací matice (FASTCONNECT Switch Matrix) zajišťuje programovatelné propojení navzájem mezi buňkami s logikou a I/O bloky. Vlastní programovatelnou logiku představují funkční bloky Function lock, základem je programovatelná matice AND jako u obvodu GAL. Product Term Allocator tvoří jednak logický součet součinů, jednak má možnost přivést k signálům asynchronního nastavení /nulování klopných obvodů v makrobuňkách a ovládání třetích stavů budičů v I/O blocích, eventuálně ovládat hodinový signál klopného obvodu místo společného rozvodu. Makrobuňka (MakroCell ) je tvořena klopným obvodem typu D a multiplexory nastavovanými konfigurací. Na dalším obrázku je vyobrazení funkčního bloku část matice AND, Product Term Allocator a jedna makrobuňka.
6. Programovatelné struktury CPLD IV
6. Programovatelné struktury CPLD V. Přehled vyráběných obvodůřady XC95xx co do počtu makrobuněk Obvod XC9536 XC9572 XC958 XC9544 XC9526 XC95288 Makrobuňky 36 72 8 44 26 288 Počet ekv. hradel 8 6 24 32 48 64 Počet klop. obvodů 36 72 8 44 26 288 F (MHz) 25 25 25,, Maximální frekvence sekvenčního obvodu závisí na složitosti kombinační logiky. Cena obvodu závisí kromě vnitřní velikosti (počtu makrobuněk a hradel) také na pouzdru, ve kterém je IO aplikován. Obvody se vyrábějí v pouzdrech pro povrchovou montáž od velikosti 44 až 352 vývodů.
6. Programovatelné struktury - FPGA Programovatelná hradlová pole FPGA Největšími výrobci programovatelných polí hradel FPGA (Fiield Programmable Gate Array) jsou firmy Altera a XILINX. Prvnířada fy XILINX, která se výrazně rozšířila byla označena XC3. Později se zvětšila konfigurovatelná buňka CLB a z toho vznikla řada XC4. Koncem 9. let provedla firma technologické úpravy řady XC4 a byla vytvořena řada Spartan XCS, která se vnitřní strukturou od XC4 v podstatě nelišila. Do této doby používaly všechny obvody napájení +5V. Avšak řada Spartan s napájením 3,3V nesla označení XL. Odlišná architektura je až u řady Spartan II (napájení 2,5V), nejnovějšířada obvodů Spartan nese označení Spartan III. Firma XILINX má v nabídce ještěřady Virtex resp. Virtex II. Základem architektury jsou hlavně konfigurovatelné logické bloky CLB (Configurable Logic Block). Jsou uspořádány do matice, v oblasti mezi boky jsou vloženy propojovací vodiče s propojovacími maticemi. Na obvodu čipu jsou umístěny
6. Programovatelné struktury - FPGA II vstupně-výstupní bloky IOB, které jsou napojeny na vývody z čipu resp. z pouzdra.
6. Programovatelné struktury - FPGA III Stručně několik informací o konfigurovatelném bloku CLB. Obsahuje dva klopné obvody typu D, několik multiplexorů, které se nastavují při konfiguraci, dále 3 statické paměti RAM resp. SRAM, nazývaní LUT (Look-up Table vyhledávací tabulka). Tyto paměti mají označení F, G, H a při konfiguraci těchto pamětí LUT se realizuje kombinační logika (kombinační logické funkce). Podobně jako u použití pevné paměti Rom(PROM) se do těchto pamětí zapisuje pravdivostní tabulka logických funkcí a vstupní signály se přivedou na adresové vodiče. Tedy FPGA neobsahuje žádná hradla ani programovatelné matice AND. Aby byla umožněna reprogramovatelnost, jsou místo pevných pamětí v hradlovém poli statické paměti RAM. V jednom CLB bloku je možné realizovat buď libovolné dvě funkce čtyř proměnných (F, F2, F3, F4 a G G2, G3, G4) nebo libovolnou jednu funkci o pěti logických proměnných. S využitím třetí tabulky H a vstupu H je tedy možné realizovat funkci o 5 proměnných. Realizace funkce s 5 proměnnými
6. Programovatelné struktury FPGA IV je provedena rozkladem Shannonova teorému. Tabulka H je nakonfigurována jako dvouvstupový multiplexorřízený vstupem H. Pouze některé logické funkce s více proměnnými je možné realizovat pomocí jediného bloku CLB, ve složitějších případech je nutné provést dekompozici funkce a rozložit ji do více bloků CLB. Kromě implementace kombinačního logického obvodu v CLB bloku mohou být tabulky LUT využity také skutečně jako paměti, a tudíž je možné v návrzích struktury obvodů používat i bloky paměti. Synchronizační signál (hodinový) clk, asynchronní nastavení resp. nulování SR a povolovací signál CE jsou používány společně pro CLB buňku. Blokové schéma konfigurovateného bloku je uvedeno na obrázku.
6. Programovatelné struktury FPGA V blok CLB
6. Programovatelné struktury FPGA VI propojovací matice Propojovací kanál CLB konfigurovatelný logický blok PSM programovatelná matice propojení, kde se křižují propojovací vodiče (Programmable Switching Matrix) Černé bodíky mimo matice znázorňují samostatné programovatelné propojovací body. Propojovací vodiče jsou na čipu trojí a liší se svou délkou. Jednoduché vodiče (Singles), kterých je nejvíce, propojují dvě sousední matice PSM a mezi každou
6. Programovací struktury FPGA VII - PSM druhou maticí jsou dvojité vodiče (Doubles). Dlouhé vodiče (Long) jsou vedeny přes celý čip. Zpoždění signálu na vodičích již není u FPGA zanedbatelné vůči zpoždění logiky a klopných obvodů, musí se tedy při výpočtu časování samozřejmě uvažovat. Vnitřní strukturu propojovatelné matice PSM ukazuje další obrázek.
6. Programovatelné struktury FPGA VIII Každý propojovací bod v matici PSM je realizován šesticí spínacích tranzistorů, u nichž se stav sepnutí určuje při kofiguraci. U každého tranzistoru je připojena buňka statické paměti RAM, do které se zapisuje, zda má být tranzistor sepnut či rozepnut. Vstupně-výstupní blok IOB obsahuje vstupní a výstupní klopný obvod, jichž je možné využít v návrhu v případě, že výstupní signál je přímo výstupem klopného obvodu nebo vstupní signál je veden na vstup klopného obvodu. Tím se může uštřit klopný obvod v CLB bloku. Výstupní třístavový budič má programovatelnou rychlost přeběhu (Slew Rate) a volbu nastavení úrovní TTL/CMOS. Hodinový signál, signál pro nastavení resp. nulování GSR (Global Set/Reset) a řízení třetího stavu GTS (Global TriState) mají specielně navržené rozvody po celém čipu. Při návrhu na FPGA důsledně dodržujeme pravidlo nevkládat žádnou logiku do cesty hodinovému signálu.
6. Programovatelné struktury FPGA IX Blok IOB
6. Programovatelné struktury FPGA X Konfigurace obvodů FPGA je založena na statických pamětech RAM, které jsou implementovány s velkým důrazem na spolehlivost a díky odlišné technologii buněk než u EEPROM pamětí CPLD(izolace náboje) není zde prakticky omezení na počet reprogramování z hlediska spolehlivosti. Nevýhodou RAM však je jejich závislost na napájení, tzn., že po každém zapnutí zařízení, kde jsou FPGA, je nutné obvod vždy znovu nakonfigurovat. To se dá provádět buď přes rozhraní JTAG nebo ve speciálním sériovém či paralelním Slave módu. V tomto módu např. jednočipový mikropočítač načítá konfigurační data (bitstream) z paměti ROM (EPROM, EEPROM). V módu Master je obvod FPGA schopen řídit autonomně připojenou paměť ROM a načítat data. Maximální dosažitelná frekvence hodinového signálu deklarovaná výrobcem u obvodů Spartan je 8 MHz. Tato samozřejmě je ovlivněna rozsahem návrhu a tedy se snižuje. Obecně závisí frekvence na počtu použitých CLB bloků, na rozmístění a propojení. Běžně bývá u realizovaných návrhů okolo 2MHz.
6. Programovatelné struktury FPGA XI Obvody Spartan II a Virtex - nová generace obvodů fy XILNX Obě řady mají stejnou architekturu. Každý CLB blokse skládá ze dvou identických bloků Slice. Blok obsahuje dvě LUT tabulky F a G a dva klopné obvody. Je přidána Carry Logic se vstupním signálem CIN a výstupním COUT, která se využívá při implementaci sčítaček pro přenosy mezi řády. Architektura systému programovatelného propojování je dvouúrovňová. GRM Global Routing Matrix obdobou PSM (u Spartanu)