NPLD & PLD — Logické obvody PLD · CPLD · FPGA · NPLD · 74xx

Úvod: Dvě kategorie logických obvodů

V digitální elektronice potřebujeme realizovat logické funkce – obvody, které na základě vstupních signálů produkují výstupy podle určitých pravidel. Historicky se to dělalo dvěma základními způsoby.

🔒 NPLD – Neprogramovatelné logické obvody Chování je pevně dáno výrobcem při výrobě. Typickým příkladem jsou standardní TTL/CMOS obvody z řady 74xx – hradla AND, OR, NOT, flip-flopy, čítače, registry. Nelze změnit bez fyzické modifikace.
⚙️ PLD – Programovatelné logické obvody Vnitřní logická funkce je nastavitelná programováním – buď jednou, nebo opakovaně. Jeden fyzický čip může plnit různé funkce dle programu. Místo desítek čipů stačí jeden PLD.

Základním principem PLD je, že jakákoli kombinační logická funkce se dá vyjádřit jako součet součinů (disjunktivní normální forma – DNF). Fyzicky to realizujeme polem AND hradel a polem OR hradel s programovatelnými spoji.

Architektura PLD a rozdělení

📊 Prezentace HAW · Slide 2 — Bloková architektura PLD
Bloková architektura PLD – vstupní blok, AND pole, OR pole, výstupní blok
Obecná architektura PLD: Vstupní vývody → Vstupní blok → Propojovací pole → AND pole → Propojovací pole → OR pole → Výstupní blok (makrobuňka) → Výstupní vývody. Zpětná vazba je vedena z výstupu zpět do propojovacího pole.

Klíčová otázka je, která pole jsou pevná a která programovatelná. Právě podle toho se PLD dělí:

TypAND poleOR polePoznámka
ROM pevné (dekodér) programovatelné Historický předchůdce
PLA programovatelné programovatelné Maximální flexibilita, pomalejší
PAL programovatelné pevné Jednodušší, rychlejší než PLA
GAL programovatelné pevné + OLMC EEPROM, opakovaně programovatelné
Historická časová osa
70. léta
První bipolarní PLA (Texas Instruments) – programování zápálením pojistek (fuse), nenávratné
1978
PAL – Monolithic Memories – jednodušší, rychlejší a levnější než PLA
1983
GAL – Lattice Semiconductor – elektricky mazatelné, opakovaně programovatelné (EEPROM)
80. léta
CPLD – více PLD bloků na jednom čipu propojených programovatelnou sítí
1985
FPGA – Xilinx – zcela jiná LUT architektura, obrovská kapacita
Výhody PLD Snížení počtu součástek a pinů · Zvýšení spolehlivosti · Snadná modifikace přeprogramováním · Vysoký výkon na jeden čip · Podpora moderních vývojových prostředí (ISE, Quartus, Diamond)
Nevýhody PLD Nutná znalost HDL (VHDL, Verilog, ABEL) · Při poruše nutno vyměnit jako celek · Vyšší cena oproti diskrétní logice pro jednoduché funkce

SPLD: PLA a PAL

PAL – Programmable Array Logic

PAL vzniklo jako pragmatická odpověď na složitost PLA. Klíčové zjednodušení: AND pole je programovatelné, ale OR pole je pevné – každý výstup má přiřazený pevný počet produktových termů (typicky 2, 4 nebo 8). Nižší zpoždění, jednodušší výroba, nižší cena.

📊 Prezentace HAW · Slide 10 — PAL: programovatelné AND pole, pevné OR
SPLD PAL – schéma AND pole s programovatelnými spoji a pevnými OR hradly
PAL: Vstupy x₁, x₂, x₃ procházejí programovatelným AND polem (křížky = programovatelné spoje). Produktové termy P₁–P₄ jsou vedeny do pevných OR hradel produkujících výstupy f₁ a f₂.
PLA – Programmable Logic Array

PLA má obě pole – AND i OR – programovatelná. To přináší maximální flexibilitu: produktové termy lze sdílet mezi více výstupy (P₂ může přispívat do f₁ i f₂ zároveň). Za cenu většího zpoždění a vyšší složitosti.

📊 Prezentace HAW · Slide 11 — PLA: programovatelné AND i OR pole
SPLD PLA – schéma se dvěma programovatelnými poli AND a OR
PLA: Na rozdíl od PAL je i OR pole programovatelné (pravá část schématu). Produktové termy P₁–P₄ z AND pole jsou programovatelně přiřazeny k výstupům f₁ a f₂ v OR poli – umožňuje sdílení termů.

GAL – Generic Array Logic

GAL přináší dvě klíčové inovace oproti PAL: elektrické mazání (EEPROM) a programovatelnou výstupní makrobuňku OLMC. Jeden typ čipu GAL dokáže emulovat různé typy PAL obvodů.

📊 Prezentace HAW · Slide 12 — GAL16V8: programovatelné AND pole + 8× OLMC
GAL schéma – Programmable AND-Array 64×32 s 8 výstupními makrobuňkami OLMC
GAL16V8: Programovatelné AND pole (64×32 buněk) napájí 8 výstupních makrobuněk OLMC přes hodinový vstup I/CLK. Každý OLMC pin může být konfigurován jako kombinační nebo registrový výstup s programovatelnou polaritou.
OLMC – Output Logic Macro Cell umožňuje konfigurovat: Polaritu výstupu (aktivní HIGH / LOW) · Kombinační nebo registrový výstup (s D flip-flopem) · Třístavový výstup (tristate) nebo otevřený kolektor · Zpětnou vazbu z výstupu zpět do AND pole (základ sekvenční logiky)

CPLD – Complex Programmable Logic Device

CPLD je více bloků SPLD propojených programovatelnou propojovací maticí. Architektura zajišťuje deterministické časování – zpoždění od vstupu k výstupu je garantováno výrobcem bez ohledu na konkrétní design. Konfigurace uložena v nevolatilní Flash paměti.

📊 HAW · Slide 14 — Complex PLD: globální propojovací matice
CPLD architektura – PAL bloky propojené globální propojovací maticí
CPLD: Více PAL bloků propojených globální propojovací maticí (Globální propojovací matice). CLK je distribuován ke všem blokům. Vstupy a výstupy jsou sdíleny přes horní a spodní sběrnici.
📊 HAW · Slide 16 — CPLD CoolRunner II: reálný příklad architektury
CPLD CoolRunner II – Function Blocks, PLA, AIM matice, I/O bloky, JTAG
Xilinx CoolRunner II: Function Blocky (MC1–MC16) propojeny přes AIM (Advanced Interconnect Matrix) po 40 vodičích. I/O bloky na periferii, JTAG rozhraní pro programování in-circuit (ISP).
Vlastnosti CPLD Komplexnější než SPLD · Desítky až stovky makrobuněk (SPLD: jednotky) · Většina pinů univerzálních · Nevolatilní Flash konfigurace (pamatuje i po vypnutí) · Garantované pin-to-pin zpoždění · JTAG ISP programování

Příklady: Xilinx CoolRunner-II, Altera MAX7000, Lattice ispMACH

FPGA – Field Programmable Gate Array

FPGA je kategoricky jiná architektura. Místo AND-OR polí používá LUT (Look-Up Table) – malou SRAM paměť realizující libovolnou logickou funkci přímo z pravdivostní tabulky. N-vstupová LUT má 2ᴺ paměťových buněk.

📊 HAW · Slide 17 — FPGA: matice logických bloků (LB) obklopená IOB
FPGA matice – IOB na periferii, LB (Logic Blocks) uvnitř propojené routing fabricem
FPGA: Velké pole identických logických bloků (LB) propojených hustou programovatelnou sítí (routing fabric). Na periferii jsou vstupně/výstupní bloky (IOB) pro každý fyzický pin.
📊 HAW · Slide 20 — FPGA: vnitřní struktura (CLB, DCM, Block RAM, Multiplier)
FPGA vnitřní architektura – CLB bloky, Block RAM, DCM, Multiplier, IOBs
Reálná struktura FPGA (Xilinx Spartan styl): CLB bloky tvoří hlavní logiku, Block RAM poskytuje datovou paměť, DCM (Digital Clock Manager) řídí distribuci hodinového signálu, Multiplier bloky akcelerují DSP operace.
Architektura FPGA (bloky)
BlokZkratkaFunkce
Configurable Logic BlockCLBLUT (look-up table na principu RAM) + D flip-flop + carry logika pro sousední CLB
Input/Output BlockIOBPropojení vnitřní logiky s I/O piny; může obsahovat registr, budič, MUX, ochranné obvody
Block RAMBRAMSynchronní SRAM bloky pro ukládání dat (typicky 18 nebo 36 kbit)
Digital Clock ManagerDCMAuto-kalibrace, rozvod CLK ke všem CLB, násobení/dělení frekvence, fázový posun
DSP / MultiplierDSPHardwarové násobiče a akumulátory pro signálové zpracování
Volatilní konfigurace – klíčový rozdíl od CPLD Konfigurace FPGA je uložena v SRAM buňkách – při vypnutí napájení se vymaže. Po zapnutí je nutno nahrát z externí EEPROM/Flash. Výhoda: partial reconfiguration, více konfigurací, rekonfigurace za provozu.

Vývojový tok: HDL (VHDL/Verilog) → Syntéza → Implementace (Place & Route) → Static Timing Analysis → Bitstream → JTAG konfigurace

Makrobuňka vs. logický blok

📊 Prezentace HAW · Slide 13 — Makrobuňka (OLMC): DKO + MUX + výstupní bufer
Makrobuňka – D flip-flop (DKO), 4:1 MUX, 2:1 MUX, výstupní bufer, AR, SP, CLK vstupy
Makrobuňka (Output Logic Macro Cell): Základem je D flip-flop (DKO = D klopný obvod) doplněný pomocnými hradly. 4:1 MUX vybírá výstupní mód (kombinační/registrový). 2:1 MUX volí zdroj dat FF. Bez DKO funguje pouze jako kombinační logický obvod (KLO). Umožňuje realizovat stavové automaty Moore i Mealy.
Makrobuňka (SPLD/CPLD)
  • Výstupní buňka AND-OR pole
  • D flip-flop (DKO) pro sekvenční logiku
  • Programovatelná polarita výstupu
  • Třístavový výstupní budič + OE
  • Zpětná vazba do AND pole
  • Typicky 8–256 na čipu
Logický blok / CLB (FPGA)
  • LUT (Look-Up Table) = autonomní logika
  • D flip-flop (nebo latch)
  • Carry chain pro sčítačky
  • MUX pro volbu kombinační/registrový výstup
  • Propojení přes routing fabric
  • Tisíce až miliony na čipu
VlastnostMakrobuňka (CPLD)Logický blok/CLB (FPGA)
Realizace logikyVýstup AND-OR poleLUT (Look-Up Table)
ČasováníDeterministické (garantované)Závisí na routingu
KonfiguraceFlash (nevolatilní)SRAM (volatilní)
GranularitaVětší (výsledek celé fce)Menší (max N vstupů LUT)
Kapacita čipuDesítky–stovky MCTisíce–miliony LUT

NPLD – Neprogramovatelné logické obvody

📊 Prezentace HAW NPLD · Slide 2 — NPLD: typické součástky
NPLD – integrované obvody MH74193 a CD74HCT688E
Typické NPLD součástky: MH74193 (obousměrný čítač) a CD74HCT688E (komparátor). Funkce pevně daná výrobou, nelze nijak upravit. Nejrůznější použití: posuvné registry, záchytné registry, posilovače sběrnice, komparátory, čítače.

NPLD jsou obvody, jejichž logická funkce je neměnně definována při výrobě. Série 74xx je standardizovaná rodina od 60. let, dostupná v technologiích TTL, CMOS (74HCT, 74AHCT, 74LVC…).

Proč NPLD stále existují vedle PLD? Rychlost: zpoždění jednotky ns (SPLD: 5–10 ns) · Jednoduchost a cena pro triviální úlohy · Standardizace: dostupné od desítek výrobců · Spolehlivost: není co špatně naprogramovat · Nízká spotřeba CMOS v klidu

Vybrané obvody rodiny 74xx

74164
SIPO Shift Register
74164 posuvný registr – schéma 8 D flip-flopů v řetězu 8 bit Sériový vstup Paralelní výstup

Princip: 8 D flip-flopů v řetězu. Každá náběžná hrana CLK posune obsah o jeden bit. Vstup: AND(A, B). CLR̄ asynchronní reset.

  • Převod sériové informace na paralelní
  • Rozšíření počtu výstupů mikrokontroléru
  • LFSR generátory pseudonáhodných sekvencí
⚠️ Rozdíl od 74595: nemá storage registr – výstupy se mění po každém CLK pulzu (možné problikávání).
74166
PISO Shift Register
74166 posuvný registr – paralelní vstupy A-H, sériový výstup QH 8 bit Paralelní vstup Sériový výstup

Princip: Opak 74164. SH/LD̄ = LOW → načtení paralelních dat A–H; HIGH → posun. CLK INH blokuje hodiny.

  • Převod paralelní informace na sériovou
  • Snímání stavu 8 přepínačů/senzorů
  • Rozšíření počtu vstupů mikrokontroléru
  • Kombinace s 74164: kompletní sériový přenos po 2 vodičích
74595
SIPO + Latch + 3-state
74595 – dvoustupňová architektura: shift register + storage register, třístavový výstup 8 bit Latch 3-stavový výstup Řetězitelný (QH')

Princip: Dvoustupňová architektura: Shift Register (SRCLK) + Storage Register (RCLK). Výstupy Q0–Q7 se mění jen při RCLK pulzu → žádné glitches.

  • Řízení LED maticí, 7-seg. displeji, relé
  • Rozšíření výstupů MCU (Arduino → 8+ výstupů ze 3 pinů)
  • Světelné tabule
  • Řetězení: QH' → SER dalšího čipu (16, 24... bitů)
74573
Octal D-type Latch
74573 záchytný registr – D latch s LE a OE vstupy 8 bit Transparentní latch 3-stavový výstup

Princip: 8 úrovňově-citlivých latchů. LE=HIGH → výstup sleduje vstup (transparentní). Sestupná hrana LE uzamkne hodnotu. OE̅ uvede výstupy do tristate.

  • Rychlé zachytávání informací na sběrnici
  • Multiplexovaná sběrnice (Intel 8051, starší x86)
  • Rozšíření MCU o vnější paměť
74573 vs 74374: 74374 = flip-flopy (hrán-citlivé); 74573 = latche (úrovňově-citlivé). Příznivý layout pinů pro PCB.
74244
Octal Bus Buffer (jednosměrný)
74244 posilovač sběrnice – 2×4 bit jednosměrné buffery s OE vstupy 2×4 bit Jednosměrný budič 3,3 V nebo 5 V vstup 5 V výstup

Princip: 8 neinvertujících buferů ve dvou skupinách po 4 s oddělenými 1OE̅ a 2OE̅. Zesiluje proudovou schopnost – zvládne větší fan-out a delší vedení.

  • Jednosměrný bufer adresové/řídicí sběrnice
  • Distribuce signálu s velkým fan-out
  • Spínání náročnějších součástek
74245
Octal Bus Transceiver (obousměrný)
74245 posilovač sběrnice obousměrný – DIR vstup řídí směr přenosu A↔B 2×8 bit Oboustranný budič DIR vstup 3,3 V ↔ 5 V

Princip: DIR=HIGH → A→B; DIR=LOW → B→A. OE̅=HIGH → odpojení (tristate). Pro každou linku jsou dvě antiparalelní buffery. Podporuje level shifting.

  • Datová sběrnice CPU ↔ paměť/periferie
  • Level shifting 5V TTL ↔ 3.3V LVTTL
  • Brány mezi dvěma sběrnicovými segmenty
74688
8-bit Identity Comparator
74688 komparátor – 8 XNOR hradel, Ḡ enable vstup, výstup Y aktivní LOW 2×8 bit XNOR logika Výstup aktivní LOW

Princip: Pro každý bit XNOR(Pi, Qi)=1 při shodě. Výstup Ȳ je LOW pokud všech 8 bitů P=Q. Ḡ (enable, aktivní LOW) povoluje/blokuje porovnávání.

  • Adresní dekodér: P = adresní bity od CPU, Q = pevná referenční hodnota → výstup aktivuje CS/OE paměti
  • Detekce specifické hodnoty na datové sběrnici
74193
4-bit Synchronní UP/DOWN čítač
74193 obousměrný čítač – 4 bit, kaskádní zapojení, přednastavení vstupu 4 bit Synchronní UP/DOWN Kaskádovatelný

Princip: Synchronní = všechny FF přepínají simultánně (žádné glitches). CPU vstup = čítání nahoru, CPD vstup = čítání dolů. LOAD̄ asynchronně nastaví hodnotu A–D. CLR reset.

  • Čítač událostí, odpočítávání (LOAD nastaví start)
  • Polohové enkodéry (UP/DOWN dle směru otáčení)
  • Kaskádování: TCŪ prvního → CPU druhého (8 bit, 12 bit…)
  • Pořadník, generátor časových sekvencí
Rychlé srovnání všech obvodů
ObvodFunkceVstupVýstupKlíčový vstup
74164Posuvný registrSériový (A, B)Paralelní (QA–QH)CLK, CLR̄
74166Posuvný registrParalelní (A–H)Sériový (QH)SH/LD̄, CLK
74595Posuvný registr + latchSériový (SER)Paralelní (Q0–Q7) + QH'SRCLK, RCLK, OE̅
74573Záchytný registr (latch)Paralelní (D0–D7)Paralelní (Q0–Q7)LE, OE̅
74244Jednosměrný buferA1–A4, A1–A4Y1–Y4, Y1–Y41OE̅, 2OE̅
74245Obousměrný transceiverA1–A8 nebo B1–B8B1–B8 nebo A1–A8DIR, OE̅
74688Komparátor rovnostiP0–P7, Q0–Q7Ȳ (LOW = shoda)Ḡ (enable)
74193UP/DOWN čítačA–D (data), CPU, CPDQA–QD, TCŪ, TCD̄LOAD̄, CLR
🏠