Table of Contents

Logické systémy a procesory

Realizace operací s daty pomocí kombinačních a sekvenčních logických obvodů s vyloučením hazardů a metastability. Obvodová struktura konečných automatů a řadičů procesorů. Popisy obvodů pomocí HDL jazyků a funkční testování obvodů.

Šustovo skriptaVHDL I.VHDL II.Šustovo stránky předmětu APOLOS (Šustovo skripta simplified verze)

Logická CMOS hradla a jejich vlastnosti. Typy AND, NAND, OR, NOR a XOR.

Struktura NMOS PMOS

Většina logických hradel dnes používá CMOS (Complementary Metal–Oxide–Semiconductor) transistory.

CMOS Invertor

CMOS NAND & NOR

CMOS AND & OR & XOR

Minimalizace log. funkcí v Karnaughových mapách, teoretické zázemí, logická krychle, grayovy kódy, skupinová minimalizace. Hazardy v kombinačních obvodech.

Karnaughovy mapy

Karnaughovy mapy jsou metoda pro minimalizaci logických funkcí. Slouží ke zjednodušení a zpřehlednění zápisu v porovnání s pravdivostní tabulkou. Karnaughova mapa pro $n$ proměnných vždy obsahuje $ 2^n$ polí, kde každé pole reprezentuje kombinaci právě vstupních hodnot.

Logická hyperkrychle

Karnaughovu mapu lze chápat jako rozvinutí n-rozměrné hyperkrychle, kde každý vrchol představuje právě jednu kombinaci vstupů a každá hrana změnu jednoho bitu. Pokrytí rohů, hran i vnitřních bloků v mapě odpovídá hledání souvislých oblastí (=krychlí) v n-dimenzionálním hyper-krychli. Příklady vizualizace:

Minimalizace logických funkcí v Karnaughových mapách

Grayův kód

Popisuje řazení Karnaughovy mapy tak, aby se při jednom horizontálním nebo vertikálním pohybu v mapě měnila pouze jedna logická hodnota najednou - usnadňuje tak čtení. Mapy nejsou řazeny klasicky binárně $\{(00), (01), (10), (11) \} $ ale jako $\{(00), (01), (11), (10) \} $

Indexace v Karnaughově mapě pomocí Grayova kódu

Hazardy

Hazardy (přechodové děje) v logických obvodech jsou způsobeny zpožděním logických hradel (propagation time delay). Vznikají při existenci více cest uvnitř logického obvodu (tj. tehdy, když existují cesty, které mají různé propagační zpoždění). Projevují se jako krátké glitch pulsy, buď statické (krátké invertování aktuálního ustáleného stavu - z 0 do 1 nebo z 1 do 0), nebo dynamické (série přechodových pulsů).

Při návrhu je potřeba s hazardy vždy počítat, protože jednotlivá zpoždění se mění například s teplotou zařízení a na běžných FPGA je tak nelze zcela odstranit změnou booleovského zápisu (nástroje je však mohou do určité míry potlačit).

Statické hazardy lze v synchronních obvodech potlačit tak, že se výstup vzorkuje až po ustálení logiky (po uplynutí worst-case propagation delay), zatímco v asynchronních obvodech mohou způsobit chybu logiky. Obecně se dají potlačit přidáním redundantních členů do logické funkce. Zároveň platí, že dynamické hazardy lze potlačit potlačením statických hazardů a zjednodušením logické struktury.

Uplatnění De Morganova teorému. Užití Shannonovy expanze a její aplikace ke konstrukci BDD (Binary Decision Diagram), výhody, omezení

Shannonova expanze

Binary Decision Diagrams (BDD)

BDD (Binary Decision Diagrams) jsou datové struktury používané pro reprezentaci a manipulaci s booleovskými funkcemi, například při verifikaci hardwaru či model checkingu - obecně míst, kde se opakovaně vyčísluje mnoho logických výrazů. vycházejí ze Shannonovy expanze booleovské funkce. Jsou reprezentovány jako orientované acyklické grafy (DAG), kde každý vnitřní uzel odpovídá testu jedné proměnné a má dvě hrany: větev pro $x_i = 0$ a větev pro $x_i = 1$

Výhody BDD
Omezení BDD

Ve většině praktických aplikací se nepoužívají obecné BDD, ale hlavně OBDD (ordered BDD) a ROBDD (reduced ordered BDD).

Základní logické obvody: dekodér 1 z N, demultiplexer, multiplexory a jejich kaskády, sčitačka +1 a -1 a úplná sčítačka. Převodníky mezi binárním a zrcadlový grayovým kódem

Dekodér 1 z N

Mají $M$ vstupů a $N$ výstupů ($N = 2^M$), převádí binární kód na aktivaci právě jednoho z N výstupů. Používají se v konečných automatech na očíslování stavů.

2 typy:

Pravdivostní tabulka 1 z 4 KM a schema

Demultiplexor

Stejné jako dekodér 1 z N, navíc přidává data na logický výstup (při $x_1$ a $x_0$ určujících výstup ještě záleží zda Datový bit je 1 nebo 0).

Schema demultiplexoru

Multiplexor

Multiplexor je opak Demultiplexoru, který lze chápat jako přepínač typu $N:1$. Převádí $N$ datových vstupů na 1 výstup pomocí M adresních bitů $x_0,\dots, x_{m-1}$ . Adresní bity tak určují, který vstup bude přiveden na výstup - $N:1$.

Multiplexor 4:1 Kaskáda 5x Mux 4:1 = 16:1

Úplná sčítačka

Úplná sčítačka je složená ze dvou Half Adderů (HA, HB), má 3 vstupy ($\mathbf{x, y, C_{in}}$(Carry)).

Postup výpočtu:

Úplná sčítačka

Sčítačka +1

Přičítá +1 do n-bitového čísla. Používá kaskádu full adderů, kam postupně přetéká carry z předchozího kroku (počáteční stav je full adder s $x=x_0$, $y=1$, $C_{in}=0$). Na nejnižším bitu $x_0$ se provede operace $x_0 + 1$.

Pokud Carry proteče celou kaskádou přes nejvyšší bit, přeteče celé n-binární číslo (overflow) - z 1111 se stane 0000.

Sčítačka -1

Odečítá −1 od n-bitového čísla. Funguje pomocí kaskády full adderů, kde se místo carry používá borrow (výpůjčka), která se šíří od nejnižšího bitu směrem nahoru. Na nejnižším bitu $x_0$ se provede operace $x_0 - 1$.

Na každý vyšší bit $x_i (i \ge 1)$ se aplikuje případný borrow z předchozího kroku.Borrow se tedy šíří přes všechny nejnižší nuly, dokud nenarazí na první jedničku. Pokud borrow proteče až za nejvyšší bit, nastává podtečení (underflow) - z 0000 se stane 1111.

Úrovňové klopné obvody RS (RS-Latch)

Klopné obvody RS

Reset-Set (RS) latch (úrovňový klopný obvod RS) je nejjednodušší paměťový prvek. Umí uchovat 1 bit informace pomocí zpětné vazby dvou hradel. Existují dvě základní varianty - z NAND a NOR hradel.

Chování

Latch má dvě zpětně propojená hradla, na základě uloženého stavu se při nenulovém vstupu určuje stav následující.

Pravdivostní tabulka RS
Pravdivostní tabulka RS
Zakázané stavy

Zakázaným stavem je $Q=NQ$, protože po určitou dobu vzniká metastabilita (obvod není stabilní ani v 1 ani v 0) - po uvolnění vstupů závisí výsledek na jejich zpoždění.

Klopení RS
Klopení RS-Latch (metastabilita na $Q=QN$)

Synchronní klopné obvody DFF (Data Flip-Flop)

Princip DFF (Primary-Replica)

Data Flip-Flop (DFF) je základní synchronní paměťový obvod, který je tvořený dvěma D-latch (RS-latch s enable signálem) obvody za sebou. Má vstup (D), výstup (Q) a hodiny (CLK - řídí enable vstup D-latchů). Na každé aktivní hraně hodin (rising/falling edge) uloží hodnotu D do Q.

Ukázka DFF a D-Latch

Dva D-latche, které tvoří DFF se nazývají Primary a Replica, jejich enable vstupy jsou řízeny signálem CLK, respektive jeho invertovanou verzí:

Díky propojení právě těchto dvou latchů (Primary + Replica) výsledek Q reaguje pouze na konkrétní hranu (například vzestupnou). Během fáze mezi dvěma po sobě jdoucími hranami se Q nemění, i kdyby D dramaticky kolísalo. Proto se říká, že DFF je edge‐triggered.

Princip DFF

Podmínky činnosti

Aby Primary D‐latch „správně“ zachytil vstup D bez rizika metastability, musí být D ustálené po dostatečnou dobu před náběžnou hranou CLK (tzv. setup time) a nesmí se měnit hned po hraně (tzv. hold time).

Pokud tyto časy nejsou dodrženy, nastane u Primary D‐latch (s určitým pravděpodobnostním rizikem) metastabilita. Pokles CLK (sestupná hrana) naopak nevyžaduje žádné striktní setup/hold pro Replica.

Metastabilita

Stav, kdy se vnitřní invertory se nedokážou jednoznačně rozhodnout na „0“ nebo „1“ a mohou se někdy dlouho chaoticky „kmitat“, než se ustálí. Vzniká, pokud D mění hodnotu příliš blízko aktivní hrany CLK (nedodržení setup/hold). Projevuje se jako nestabilní, váhavý stav vnitřních invertorů Primary D‐latch, který se může rozkládat na čisté 0/1 s nedefinovaným zpožděním.

Je možné ji zmírnit:

Nelze ji naprosto vyloučit, jen zredukovat pravděpodobnost na zanedbatelné minimum.

Čítače a typy jejich spojování do ripple-kaskád a se synchronními přenosy

Ripple kaskáda

Zapojení několika stejných digitálních bloků za sebou tak, že výstup jednoho je vstupem dalšího a změna se šíří postupně („vlní se“) od prvního stupně dál. Když je ripple kaskáda se synchronním přenosem, znamená to, že jednotlivé stupně jsou řízené společným clockem (synchronně), ale přenos (carry/borrow) mezi nimi se šíří postupně jako v ripple struktuře.

Registr

Paralelní sada D‐flip‐flopů (DFF), která na náběžnou hranu CLK „uzamkne“ všechny bity současně. Může mít volitelné synchronní „nulování“ (RESET nebo SCLR), případně asynchronní CLEAR „na všech DFF“.

4bit registr
4-bit registr

Čítač

Vezmeme n‐bitový registr (kde n je počet DFF), na jeho paralelní výstup $Q$ připojíme kaskádově jednobitovou sčítačku +1 (Full Adder chain).

Tím vzniká n‐bitový čítač, který se „odráždí“ v posloupnosti 0,1,2,3,… modulo $2^n$.

Dekadický čítač od 0 do 9
4-bit čítač (mohl by čítat od 0 do 15, ale komparátorem je nastaveno Reset při čítání do 9)
Spojování do ripple kaskád

Čítače se skládají z řetězu jedno‐bitových adderů + DFF. Výhodné pro malé n, mají jednoduchou konstrukci, ale frekvence omezuje délka řetězce.

Spojování se synchonními přenosy

Synchronní čítače (paralelní sčítačka + mux) dovedou dosáhnout vyšší frekvence u větších n, ale vyžadují větší plošnou logiku (adder, komparátor, mux).

Příkaz process ve VHDL, rozdíl mezi chování blocking := a non-blocking příkazů ⇐. Popis obvodů DFF ve VHDL procesu. VHDL funkce a procedury

Syntéza ve VHDL

Syntéze je proces, kdy se abstraktní popis chování obvodu (RTL kód) převede na konkrétní hardwarovou strukturu tvořenou logickými hradly, registry a propojkami.

Příkaz process ve VHDL

Process je základní konstrukce VHDL, která popisuje sekvenční chování obvodu. Uvnitř procesu se příkazy vykonávají sekvenčně v rámci jednoho běhu simulace. Proces může popisovat:

Přesná syntaxe příkazu vypadá takto (části v [ ] lze vynechat):

[optional_label:] process [(optional sensitivity list)] [is]
[sequential_declarations]
begin
sequential statements
end process [optional_label];

Proces se v syntéze mapuje na kombinační nebo sekvenční (registrovou) logiku podle jeho struktury:

Rozdíl mezi := (blocking) a <= (non-blocking)

:= (blocking)

Přiřazení proměnné (sekvenční přiřazení). Pouze uvnitř procesů, procedur nebo funkcí (sequential statements).

Přiřazení var := expr; okamžitě změní hodnotu proměnné v v té samé „iteraci“ procesu, následující řádek kódu už čte tuto novou hodnotu v (tj. v se chová jako běžná proměnná v imperativním jazyce).

<= (non-blocking)

Přiřazení signálu (sig ⇐ expr). Není provedeno okamžitě, ale jejím výsledkem je vložení „nové hodnoty” do fronty aktualizací (delta‐cykly).

Popis obvodů DFF ve VHDL procesu

 – Importujeme standardní IEEE knihovny pro práci se signály std_logic
library ieee;                   
use ieee.std_logic_1164.all;– Deklarace entity, tedy rozhraní D‐flip‐flopu
entity DataFlipFlop is
  port (
    Data    : in  std_logic;  – Vstup D: data, která chceme ovzorkovat
    CLOCK   : in  std_logic;  – Hodinový signál (CLK), na jehož hranu reagujeme
    ENABLE  : in  std_logic;  – Povolení zápisu: když ENABLE='1', povolíme přepsat Q
    ACLRN   : in  std_logic;  – Asynchronní clear (active‐low): když ACLRN='0', Q se ihned vynuluje
    SCLEAR  : in  std_logic;  – Synchronní clear (active‐high): po náběžné hraně CLK, pokud SCLEAR='1', Q se vynuluje
    Q       : out std_logic   – Výstup Q: zde se objeví poslední uložená hodnota D
  );
end entity DataFlipFlop;– Architekturální popis: popisujeme vnitřní chování entity
architecture rtl_final of DataFlipFlop is
begin
 
 – Proces, který definuje chování DFF
 – Sensitivity list: proces “vidí” změny signálů CLOCK i ACLRN
  process (CLOCK, ACLRN)
  begin
 
 – 1) Ošetření asynchronního clear (ACLRN = '0' → okamžitě nastav Q na '0')
    if ACLRN = '0' then
      Q ⇐ '0';  
 – Jakmile ACLRN přejde na '0', obvod se okamžitě vynuluje, nezávisle na stavu hodiny
 
 – 2) Pokud není aktivní asynchronní clear, čekáme na náběžnou hranu CLOCK
    elsif rising_edge(CLOCK) then
 
 – 2a) Synchronní clear (pokud SCLEAR = '1' na hranu CLK, pak Q ≤ '0')
      if SCLEAR = '1' then
        Q ⇐ '0';
 – Priorita synchronního clear má přednost před povolením ENABLE a před čtením Data
 
 – 2b) Pokud žádný clear není aktivní, řešíme ENABLE
      elsif ENABLE = '1' then
        Q ⇐ Data;
 – Jestliže ENABLE = '1', na hranu CLK se do Q zapíše aktuální hodnota na vstupu Data
 
 – 2c) Když ani synchronní clear, ani ENABLE není aktivní, zachovává se předešlá hodnota Q
 – (nepíšeme žádné další přiřazení; Q zůstane takové, jaké bylo)
      end if;
 
 – 3) Konec detekce hrany: v jiných případech (kdy ACLRN='1' a žádná hrana CLK) se nic neděje
    end if;
 
  end process;
 
end architecture rtl_final;

VHDL funkce a procedury

Funkce

Funkce („function“) vrací jednu hodnotu na základě vstupních parametrů. Do obvodu se „rozbalí“ (in‐line) do kombinatorní sítě či logiky, pokud je syntetizovatelná. Funkce nesmí mít výstupní parametry a návratová hodnota je jediný způsob komunikace. Typy funkce:

[pure | impure ] function function_name (parameter_list) return type_name is
[sequential_declarations]
begin
sequential statements
end [function] [function_name]
Procedura

Procedury („procedure“) slouží pro popis podřízených bloků logiky, které mohou současně ovlivnit několik signálů nebo proměnných. Mohou „vracet“ více hodnot (pomocí out/inout parametrů) - např. signal Y : out …, variable W : out …

Volají se pouze uvnitř sequential domény (procesy, jiné procedury, funkce) - variable přiřazení (':=') vyžaduje sekvenční context.

procedure identifier [ (formal_parameter_list) ] is
[sequential_declarations]
begin
sequential statement(s)
end [procedure] [identifier]

Zde příklad pro vyhodnocení logického stavu hradla “2-and-or”:

entity and_or is
port(
  a       : in std_logic;
  b       : in std_logic;
  d       : in std_logic;
  e       : in std_logic;
  g       : out std_logic);
end and_or;
 
architecture and_or_a of and_or is– declarative part: empty
 
begin
process_and_or : process(a,b,d,e)– declarative part: empty
begin
  g ⇐ (a and b) or (d and e);
end process process_and_or;
end and_or_a;

Konečné automaty typu Moore a Mealy

Definice Finite State Machine (FSM)

Definice FSM

Mealy a Moore ilustrace

Popis FSM

Používají se všude, kde systém závisí na sekvenci událostí v čase, ne jen na aktuálním vstupu.

Moore

Výstupy se generují ze stavu, v němž se právě nachází automat. Výstup se změní, pokud se změní stav. Má více stavů a stabilní výstup, je pomalejší.

Mealy

Výstupy se generují ze současného stavu a okamžitého vstupu, tj. výstupy se tvoří v době přípravy automatu na přechod z jednoho stavu do druhého (výstup reaguje na změnu vstupu okamžitě). Má méně stavů, je rychlejší, ale je citlivější.

Matice přechodů

Má formát čtvercové matice sousednosti (eng. adjacency matrix) používané k popisu grafů. Zůstává přehledná i při značném počtu stavů. Je-li p počet všech stavů, pak má rozměr $p\times p$

Průsečík - podmínky $x$ přechodu ze stavu $s_k$ do $s_j$

Matice přechodů
Matice přechodů
Tabulka přechodů

V řádcích všechny možné vnitřní stavy ($s_i$), ve sloupcích jsou všechny možné vstupy ($x_i$).

Má dvě části:

Průsečík - následný stav $s_k$

Tabulka přechodůGraf přechodů Start-Stop
Tabulka přechodů Graf přechodů Start-Stop

Transformace FSM

K jakémukoli Mooreovu automatu existuje ekvivalentní Mealyho automat se stejným nebo menším počtem stavů.

Ke každému Mealyho automatu, který má $\mathbf{N}$ stavů a rozpoznává $\mathbf{X}$ možných kombinací vstupů, existuje ekvivalentní Mooreův automat mající $\mathbf{N\cdot X}$ stavů.

Převody se provádí pomocí analýzy tabulky přechodů.

Převod Moore → Mealy

Výstup se přesune ze stavů na přechody, každý přechod dostane výstup cílového Moore stavu. Počet stavů se obvykle nemění. Výstup reaguje rychleji (už během přechodu).

Převod Mealy → Moore

Výstupy se přesunou z přechodů do stavů, ty se obvykle rozdělí podle různých výstupů. Počet stavů často naroste. Výstupy jsou stabilnější.

mealy_to_moore.jpg
Převod Mealy → Moore (kvalita obrázku je šajs, originál tady)

FSM ve VHDL

architecture rtlFSM of StartStopFSM is
begin
ifsm: process(CLK)
 type state_t is (ROFF, RON); – enumerated types are reserved only for FSMs
 variable state: state_t:=ROFF;
 begin
  iRedge : if rising_edge(CLK) then
   iClrn: if CLRN='0' then state:=ROFF;always clear
          else
           case state is
            when ROFF ⇒ if START='1' and STOP='0'
                         then state:=RON; end if;
            when RON ⇒ if STOP='1'
                        then state:=ROFF; end if;
   end case; end if iClrn;
  end if iRedge;
  if state=RON then RUN⇐'1'; else RUN⇐'0'; end if;
 end process;
end architecture;

Řadiče a mikroprogrové řadiče. Vlastnosti a architektura

Řadiče (control unit) jsou část číslicového systému nebo procesoru, která řídí vykonávání operací v datapathu. Jejich nejpravděpodobnější akcí je přejití do následujícího stavu po splnění dané podmínky. Generují řídicí signály pro registry, ALU, paměti, sběrnice a další části obvodu.

Jedná v podstatě o složitější čítač s tím rozdílem, že pro přechod do dalšího stavu (i.e. přičtení čísla), musí být splněna nějaká podmínka.

Máme předem určenou posloupnost stavů, do kterých se po splnění podmínky posouváme:

Grafické zobrazení Řadiče kotle

Posuvné registry a posuvné registry s lineární zpětnou vazbou (LFSR), pouze hlavní principy jejich teoretického zázemí a vlastnosti

Posuvné registry

Posuvný registr je série zřetězených D‐flip‐flopů (DFF). Výstup jednoho DFF → vstup následujícího. Posun hodnoty v řetězci nastává při každém taktu hodin (první DFF čte data na vstupu (SI) a posílá dál svoje data do kaskády). Výstup posledního DFF řetězce je SO (Serial Out - výstup registru).

SISO

SISO (Serial-In Serial-Out)
PISO (Parallel-In Serial-Out)
SIPO (Serial-In Parallel-Out)
PIPO (Parallel-In Parallel-Out)

PISO a SIPO

Posuvné registry s lineární zpětnou vazbou LFSR

LFSR (Linear Feedback Shift Register) je posuvný registr se zpětnou vazbou, kde se nový vstupní bit generuje jako XOR vybraných bitů registru (tzv. tap positions).

Takt registru
Použití LFSR

Násobení frekvencí fázovými závěsy (Phase-Locked Loop)

Phase-Locked Loop (PLL) je uzavřená regulační smyčka, která synchronizuje fázi a frekvenci lokálního oscilátoru s referenčním signálem. PLL porovnává referenční frekvenci a zpětnovazební signál odvozený z výstupu VCO a průběžně upravuje oscilátor tak, aby byla minimalizována fázová chyba.

Analogie - převody na kole (Fischer GOAT).

Bloky PLL
Princip činnosti

Uzavřená regulační smyčka, která „zamkne“ fázový posun výstupního oscilátoru (VCO) za fází referenčního signálu. Upravuje frekvenci VCO tak, aby platilo $\frac{f_{VCO}}{M} = \frac{f_{REF}}{N} $.

Použití PLL

Blokové PLL schéma Fischerovo PLL schéma

Správné ošetření vstupů, plovoucí vstupy, pomalé náběžné hrany, odstranění zákmitů tlačítek (debouncing). Chránění výstupů s indukčních zátěží a výkonovou zátěží. Chování logického signálu na vodiči.

Ochrana vstupů

Všechny vstupy FPGA musí mít definovanou logickou úroveň (pull-up/pull-down).

Plovoucí vstup (floating input) vede k náhodnému rušení a vyššímu odběru proudu → nepoužívané vstupy se nesmí nechávat nezapojené.

Práce s pomalými náběžnými hranami

Pomalé změny signálu mohou způsobit opakované překročení logického prahu, vznik metastability, nebo zvýšený proud ve vstupních tranzistorech.

Filtrujeme je buď Schmittovými vstupy či bufferujeme, synchronizujeme do hodin pomocí flip-flopů, aby se vyhnuli metastabilitě.

Schmittův vstup - vstup s hysterezí - má dva napěťové prahy, mezi nimi “šedá zóna”, kde nedochází ke změně logické hodnoty (tj. $V_{in} < V_{th-} \implies 0, V_{in} > V_{th+} \implies 1$).

Debouncing

Odskoky tlačítek (zákmity, bouncing) jsou způsobeny mechanickým odrážením kovových kontaktů při sepnutí nebo rozepnutí tlačítka. Čím je tlačítko opotřebenější, dochází k odskokům častěji.

Dají se ošetřit dvěma způsoby:

Chránění výstupů se zátěží

FPGA výstupy nejsou určeny pro přímé řízení výkonových nebo indukčních zátěží.

Indukční zátěže (cívky, motory, relé)

Při vypnutí vzniká vysoké indukované napětí, to může poškodit tranzistory nebo FPGA IO.

Řešení: Flyback dioda pro DC cívky; RC snubber nebo TVS dioda pro AC/rychlé spínání.

Výkonové zátěže (LED pásky, velké proudy)

Oddělit výstup FPGA dedikovaným driverem (MOSFET, buffer) s ochranným RC, řídit dI/dt (slew-rate), přidat teplotní/přetížení ochrany.

Fyzické (analogové) chování logického signálu na vodiči

Při vyšších rychlostech se vodič chová jako přenosová linka.

Důležité jevy
Pravidla návrhu

Používané FPGA technologie a jejich vlastnosti.

FPGA Technologie

SRAM-based FPGA - Volatile
VýhodyNevýhody
Rychlá a neomezeně opakovatelná rekonfigurace.Citlivost na radiaci (ztráta konfigurace) → pro kosmické aplikace se vyrábějí verze “radiation-hardened” (umožňují vzdálené dožití softwaru).
Velké množství LUT/CLB a embedovaných SRAM bloků (např. Cyclone IV: 3981312 bitů ve 432 blocích M9K, vs. Cyclone II: 483840 bitů ve 105 blocích M4K) Po ztrátě napájení je nutná opětovná konfigurace (boot time).
Digitální PLL pro násobení frekvencí, DSP bloky, rychlé carry-chainy aj.
Relativně nízká cena (např. Cyclone II od ~$20, Cyclone IV od ~$65, rok 2022)
Flash-based FPGA - Non-volatile

Princip: Konfigurační buňky jsou vnitřní Flash buňky (NAND nebo NOR). Obsah si pamatují i po vypnutí napájení (nevolatilní).

VýhodyNevýhody
Konfigurace je zachována i po vypnutí napájení (nevolatile). Pomalejší rekonfigurace než SRAM FPGA.
Rychlý start – FPGA je po zapnutí okamžitě funkční. Obvykle vyšší cena než čisté SRAM varianty.
Nižší klidová spotřeba (není nutná externí konfigurační paměť). Menší flexibilita při častém přepisu konfigurace.
Vyšší odolnost proti částečné radiaci než SRAM FPGA. Omezený počet přepisovacích cyklů Flash buněk.
Antifuse-based FPGA - ROM

Princip: Konfigurační prvek je antifuse prvek (připomíná pojistku, ve výchozím stavu otevřený, programovacím pulzem se neprůstřelně „přepálí” a vytvoří pevný vodivý spoj)

VýhodyNevýhody
Velmi vysoká odolnost proti radiaci (vhodné pro kosmické aplikace). Jednorázové naprogramování – nelze přepsat.
Velmi stabilní a spolehlivé propojení (fyzický vodivý spoj). Velmi dlouhá a neflexibilní konfigurace (jednorázový proces).
Žádná potřeba konfigurační paměti po zapnutí. Vyšší riziko chyb při návrhu – nelze opravit po výrobě/programování.
Nízká citlivost na SEU (single event upset). Nevhodné pro vývoj a prototypování.

Struktura SRAM paměti, paměti s jednoportovou a dvou portovou výběrovou logikou.

Struktura SRAM pamětí v FPGA

Jednoportová (Single-Port) SRAM

jednu adresní sběrnici, jedno data‐in a jedno data‐out, a jeden řídicí vstup např. „Write Enable (WE)“ + hodinový vstup.

Operace:

VýhodyNevýhody
Jednoduchá architektura paměťového bloku. Nelze současně číst a zapisovat.
Menší plocha a nižší spotřeba. Konflikt mezi čtením a zápisem (pipeline hazard).
Snadná implementace v FPGA (LUT/RAM bloky). Omezená propustnost paměti.
Dvouportová (Dual-Port) SRAM

Obsahuje dvě nezávislé adresní sběrnice (adresy A, B), každou se samostatným datovým vstupem, výstupem a hodinou.

Operace:

VýhodyNevýhody
Možnost současného čtení a zápisu. Vyšší spotřeba a větší plocha.
Paralelní přístup ze dvou nezávislých zdrojů. Složitější řídicí logika.
Vhodná pro FIFO a sdílené buffery mezi doménami. Riziko konfliktů při přístupu ke stejné adrese.
Víceportové (Multi-Port) SRAM

Některé FPGA umožňují 4portové či 8portové bloky (především uvnitř vestavěných procesorů). Každý port samostatně může číst či zapisovat. Softwarově se konfiguruje, zda bude port jako čtecí či zapisovací.

VýhodyNevýhody
Velmi vysoká paralelní propustnost paměti. Výrazně vyšší hardwarová složitost.
Možnost více nezávislých čtení/zápisů současně. Vysoká spotřeba a plocha.
Vhodné pro specializované výpočetní jednotky. Komplexní arbitráž přístupu mezi porty.