The wiki page is under active construction, expect bugs.

This is an old revision of the document!


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

  • Logická CMOS hradla a jejich vlastnosti. Typy AND, NAND, OR, NOR a 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.
  • Uplatnění De Morganova teorému. Užití Shannonovy expanze a její aplikace ke konstrukci BDD (Binary Decision Diagram), výhody, omezení
  • 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.
  • Úrovňové klopné obvody RS (RS-Latch) z hradel NAND a NOR, jejich chování a za jakých podmínek u nich mluvíme o zakázaných stavech.
  • Synchronní klopné obvody DFF (Data Flip-Flop) architektury Primary-Replica (zastarale Master-Slave). Jejich vlastnosti a podmínky činnosti. Metastabilita DFF. Vysvětlení příčin, jak a kdy lze odstranit.
  • Čítače a typy jejich spojování do ripple-kaskád a se synchronními přenosy.
  • 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.
  • Konečné automaty typu Moore a Mealy. Jejich definice, popisy pomocí grafu přechodů, tabulky přechodů a stavové tabulky přechodů (jiný název matice přechodů). Minimalizace automatu Moore na Moore a Moore na Mealy. Kdy lze? Návrh automatu a jeho popis ve VHDL.
  • Řadiče a mikroprogrové řadiče. Vlastnosti a architektura.
  • Posuvné registry a posuvné registry s lineární zpětnou vazbou (LFSR), pouze hlavní principy jejich teoretického zázemí a vlastnosti.
  • Násobení frekvencí fázovými závěsy (Phase-Locked Loop)
  • 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.
  • Používané FPGA technologie a jejich vlastnosti. Struktura SRAM paměti, paměti s jednoportovou a dvou portovou výběrovou logikou.

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 kombinuje NMOS (N-kanálové) a PMOS (P-kanálové) tranzistory, což zajišťuje nízkou statickou spotřebu.
  • Alternativně se používají i TTL (bipolární tranzistory), ale v integrovaných obvodech převládají CMOS.
  • Polovodič typu N (Si dopovaný pětivalentní příměsí) – nosiči jsou volné elektrony.
  • Polovodič typu P (Si dopovaný třívalenční příměsí) – nosiči jsou díry.
  • NMOS (substrát P-typu): při kladném napětí na gate > ⁣Vth>Vth​ vzniká kanál z minoritních nosičů (elektronů) ⇒ tranzistor vodí.
  • PMOS (substrát N-typu): při záporném napětí na gate < ⁣−Vth<−Vth​ vzniká kanál z děr ⇒ vodivost; kladné napětí „1“ na gate tranzistor uzavírá.
  • Elektrody: Source (zdroj nosičů), Drain (sběrač), Gate (řídicí elektroda), Body (substrát, u IC je vnitřně spojen s S).

CMOS Invertor

CMOS NAND

  • PMOS paralelne nahore
  • NMOS serie dole

CMOS NOR

  • PMOS seriove nahore
  • NMOS pralelne dole

CMOS AND

CMOS 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.

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

  • SoP (Sum-of-Products): hledáme AND-implikanty („krychle“) pokrývající co nejvíc „1“. Každý implikant odpovídá skupině 2ᵏ sousedních polí (k=0…n) a vyjádří se jako součin proměnných bez změny hodnoty v těchto polích. Primární implikanty (nelze rozšířit) se ORují do výsledku. Priklad (A and B) or (C and D)
  • PoS (Product-of-Sums): analogicky pokrýváme „0“ OR-implikanty a spojujeme je AND, dodefinujeme don't-care na 0. Priklad (A or B) and (C or D)
  • Don't-care (X): v mapě u výstupů značí nezáleží-na; lze je zahrnout do implikantů (pro SoP jako „1“, pro PoS jako „0“) a dodatečně je přiřadit ke zvýhodnění pokrytí

Logická krychle

  • K³ při n=3 proměnných, n⁴ při n=4 – každý vrchol krychle ↔ kombinace vstupů. KM pro n=4 je rozvinutá krychle 4×4
  • 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.

Gray Code

  • Binary-reflected Gray Code: standardní pořadí os čtyř proměnných v KM: {00,01,11,10}
  • Vždy tak, aby se měnila pouze jedna hodnota

Hazardy

GPT podle skript

  • Hazardy vznikají kvůli rozdílným zpožděním v různých cestách kombinační logiky a projevují se jako krátké glitch pulsy (static-0, static-1, dynamické).
  • V běžných FPGA nelze hazardy zcela odstranit pouze změnou booleovského zápisu – nástroje je sice mohou potlačit, ale kvůli teplotním či výrobním variacím, různým délkám cest a LUT implementaci je riziko vždy přítomné.
  • Pro plně spolehlivou synchronní logiku je klíčové: vzorkovat výstup kombinační s dostatečným časovým posunem (t_wp), minimalizovat rozdíly v zpoždění (fan-out, buffery), a používat pouze edge-triggered D-FF (nikoli latch).

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

Shannon

  • při více než 4 proměnných - jednu zvolíme za 0 a uděláme KM, tu samou pak zvolíme za 1 a uděláme KM, výsledek pak dáme dohromady
  • Příklad: f(a,b,c,d,e) - 5 vstupů, velká mapa,
  • Rozdělíme Shannonem tak, že e prohlásíme 0 = f1(a,b,c,d,0) a vyčíslíme mapu.
  • druhá část e = 1 - f2(a,b,c,d,1) a vyčíslíme KM
  • Výsledek dohromady dáme (not E and f1) or (E and F2)

  • Citlivost na výběr proměnné – záleží, podle které proměnné se rozkládáme; nevhodně zvolená proměnná může vést ke složitějším kofaktorům a žádnému zjednodušení, někdy dokonce k růstu komplexity
  • Heuristiky nejsou zaručené – i když se snažíme volit proměnnou tak, aby redukovala co nejvíce členů, nemusíme dosáhnout zmenšení výsledné funkce ani u jednoduchých aritmetických bloků (např. násobičky, sčítačky)
  • Exponenciální růst pro některé funkce – bez vhodného uspořádání proměnných může velikost BDD i složitost rozkladu exponenciálně stoupat, což omezuje použití u velkých kombinací.

BDD??

  • to jsem v životě neslyšel v LSP
  • ani to nemá popsané ve svých skriptech
  • GPT po schroustání skript:
  • Z Shannonovy expanze se konstruují BDD (Binary Decision Diagrams), struktury ve tvaru acyklického grafu, kde každý uzel testuje jednu proměnnou a větví na podgrafy odpovídající kofaktorům xi=0xi​=0 a xi=1xi​=1
  • Výhody BDD:
  • Kanonická reprezentace (pro dané uspořádání proměnných je BDD jednoznačné)
  • Efektivní operace jako sjednocení, průnik nebo negace funkcí přímo na grafech
  • Umožňují rychlou verifikaci a manipulaci s velkými logickými výrazy
  • Omezení BDD:
  • Citlivost na pořadí proměnných: nevhodné uspořádání může způsobit exponenciální růst velikosti grafu
  • Některé funkce (např. multiplikátory, sčítačky) nemají kompaktní BDD bez speciálních heuristik

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

  • M vstupů, N výstupů
  • N = 2^M
  • One Hot - log 1 pouze pro jedinou hodnotu vstupů, jinak 0
  • One Cold - lon 0 pouze pro jedinou hodnotu vstupů, jinak 1
  • převání unsigned číslo na kódování 1 z N
  • využití v konečných automatech k očíslování stavů

Pravdivostní tabulka 1 z 4 KM a schema

Demultiplexor

  • Stejné jako dekodér 1 z N + Data
  • Při x1 a x0 určujících výstup ještě záleží zda Datový bit je 1 nebo 0.
  • Hodnota Data se propíše na určený výstup

Schema demultiplexoru

Multiplexor

  • opak Demultiplexoru
  • má 2^M datových vstupů - M je počet bitů vstupní adresy
  • lze chápat jako přepínač N:1
  • adresní bity x0, x1 zvolí jednu ze 4 poloh “přepínače” a přivede na výstup uřitý vstup - 4:1

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

Úplná sčítačka

Úplná sčítačka

  • je ze dvou Half Adderů
  • má 3 vstupy
  • x, y a Cin (Carry)
  • HA spočte x+y
  • HB sečte výsledek HA + Cin
  • první poloviční spočte část součtu bez přenosu, druhá k tomu přičte vstupní přenos

Sčítačka +1

  • do n-bitového čísla přičítáme +1
  • první bit x0 sčítáme +1 (full adder s y0 =1 a Cin =0)
  • ostatní bity xi (i<0) se sčítají s yi =0 a Cin předchozího řádu
  • pokud nejnižší bit x0 byl 0, přičte se 1 a není carry, přenos se zastaví na první pozici
  • pokud x0 = 1, pak +1 způsobí přetečení a carry se posouvá do vyšších bitů
  • pokud xi = 0, tak se tam utopí to Carry a přenos skončí, další přetečení není
  • pokud xi = 1, při +1 dojde k přetečení a Carry pokračuje na x(i+1) bit
  • pokud dojdeme až na nejvyšší bit a přeteče to i tam, přeteklo nám celé n-binární číslo

Sčítačka -1

  • Do n-bitového čísla odčítáme 1
  • Na nejnižší bit x0 aplikujeme „odečti 1“ (borrow bit)
  • Je-li x0=1, výsledkem S0=0 a borrow = 0 → odečítání končí hned.
  • Je-li x0=0, výsledkem S0=1 a borrow = 1 → další bit – odečítáme dál.
  • Na každý vyšší bit xi (pro i≥1) se díváme, zda k němu přišel borrow z nižšího
  • Pokud žádný borrow (borrow i−1=0), pak Si=xi​ a borrow dál = 0.
  • Pokud borrow (borrow i−1=1) → odečteme od xi:
  • Když xi=1: Si=0, borrow další = 0 (odečítání se zastaví).
  • Když xi=0: Si=1, borrow další = 1 (odečítání pokračuje).
  • Pokud i na nejvyšším bitu vyjde borrow=1, nastalo „podtečení“
  • To znamená, že původní číslo bylo 0, a výsledek 0−1 v n-bitech je 2^n−1.

Úrovňové klopné obvody RS (RS-Latch) z hradel NAND a NOR, jejich chování a za jakých podmínek u nich mluvíme o zakázaných stavech.

Klopné obvody RS

Klopení RS

  • Hradla nemají zakázané stavy
  • Díky nim se obvody můžou klopit
  • Zakázaný stav je pouze Q=NQ, ale to je jen dokud se obvod nepřeklopí za čas 2*Tpřeklopení

Pravdivostní tabulka RS

Synchronní klopné obvody DFF (Data Flip-Flop) architektury Primary-Replica (zastarale Master-Slave). Jejich vlastnosti a podmínky činnosti. Metastabilita DFF. Vysvětlení příčin, jak a kdy lze odstranit

Ukázka DFF a D-Latch

  • DFF může měnit stav jen při Rising edge, D-latch při enable vždy přepisuje stav ze vstupu na výstup
  • DFF jsou dva D-latch za sebou

Princip DFF

Princip DFF

  • DFF ovzorkuje vstup D právě na hraně hodinového signálu CLK (např. na náběžné hráně 0→1)
  • Interně se klasický DFF skládá ze dvou D‐latchů (Primary a Replica), jejichž enable vstupy jsou řízeny signálem CLK a jeho invertovanou verzí:
  • Primary D‐latch („Master“) má ENA = ¬CLK (invertované hodiny).
  • Dokud je CLK = 1, ENA_Primary = 0 ⇒ Primary je v paměťovém režimu a drží si poslední uložené D.
  • Když CLK = 0, ENA_Primary = 1 ⇒ Primary je transparentní a přebírá na svůj vstup hodnotu D (ale zatím nic nepropustí ven).
  • Replica D‐latch („Slave“) má ENA = CLK.
  • Dokud je CLK = 1, ENA_Replica = 1 ⇒ Replica je transparentní a na výstup Q pouští signál z Primary (přes jediný inverter, aby se vyrovnala polarita).
  • Když CLK = 0, ENA_Replica = 0 ⇒ Replica se „uzavře“ do paměti, a Q drží tu hodnotu, kterou obdržela v okamžiku, kdy CLK právě překročil hranici 1→0.
  • 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.

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, Primary D‐latch přejde (s určitým pravděpodobnostním rizikem) do metastabilního stavu – tj. vnitřní invertory se nedokážou jednoznačně rozhodnout na „0“ nebo „1“ a mohou se někdy dlouho chaoticky „kmitat“, než se rozhodnou.
  • Pokles CLK (sestupná hrana) naopak nevyžaduje žádné striktní setup/hold pro Replica

Metastabilita

  • 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‐latchu, který se může rozkládat na čisté 0/1 s nedefinovaným zpožděním.
  • Je třeba ji zmírnit:
  • Dodržet setup/hold: zajistit, že D je stabilní před a po hraně.
  • Synchronizační řetězce: zvláště při přenosech signálů mezi různými hodinovými doménami dát signál nejdřív do prvního DFF, pak až do druhého – aby se případná metastabilita rozpadla.
  • 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

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

Čítač

  • Vezmeme n‐bitový registr (s n DFF).
  • Na jeho paralelní výstup Q připojíme kaskádově jednobitovou sčítačku +1 (Full Adder chain), která spočte „Q + 1“.
  • Výsledek (n bitů) vedeme zpět na vstupy registru D.
  • Při každé náběžné hraně CLK se registr „přepíše“ hodnotou (Q_old + 1). 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

  • 4bit čítač, mohl by čítat od 0 do 15, ale komparátorem je nastaveno Reset při čítání do 9, pči aktivaci Reset nebo <9 se přepne multiplexor a do obvodu se nahraje 0 - čítáme znovu od 0
Spojování do ripple kaskád?
  • 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).
  • Třeba příklad s počítáním do 9 a automatický reset na 0 (počítání je ripple carry a nulování je synchronní podle GPT)

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

Příkaz process ve VHDL

  • Process je základní sekvenční blok VHDL, v němž popisujete chování „po jednotlivých cyklech“ nebo „po změnách vstupů“.¨
  • Proměnné je nutné resetovat uvnitř procesu každým průchodem, jinak vznikne smyčka/hazard.
  • Přesná syntaxe příkazu vypadá takto, kde části v [ ] lze vynechat:
[optional_label:] process [(optional sensitivity list)] [is]
[sequential_declarations]
begin
sequential statements
end process [optional_label];
  • Sensitivity list (nebo wait on) určuje, kdy se tělo procesu provede znovu.
  • Deklarace uvnitř (proměnné, funkce, procedury) slouží pro lokální výpočty; nelze tam dát signal ani component.
  • Proces se syntetizuje na kombinatorní nebo sekvenční obvody podle přítomnosti či absence detekce hrany (if rising_edge(CLK) apod.) a podle sensitivity listu.

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

:= (blocking)
  • sekvenční přiřazení
  • Pouze uvnitř procesů, procedur nebo funkcí (sequential statements).
  • Přiřazení v := 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í sig ⇐ expr; není provedeno okamžitě, ale jejím výsledkem je vložení „nové hodnoty” do fronty aktualizací (delta‐cykly).
  • V průběhu jednoho simulovaného času se nejprve vyhodnotí všechny výrazy napravo od ⇐, potom se současně (ve stejném čase) přiřadí výsledné hodnoty na výstupy signálů.
  • Když uvnitř procesu (sensitivity list) přiřadíte sig ⇐ expr;, stávající hodnota sig zůstává na výstupu až do skončení procesu, pak teprve (v nadcházejícím delta‐kroku) se přepne.
  • Ve skutečném hardware by to znamenalo, že signál se změní „po krátké, ale nenulové” době – odpovídá to latenci hradla či registru.

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“) – vytvářejí jednu hodnotu na základě vstupních parametrů; v obvodu se vždy „rozbalí“ (in‐line) na kombinatorní síť.
[pure | impure ] function function_name (parameter_list) return type_name is
[sequential_declarations]
begin
sequential statements
end [function] [function_name]
  • pure (výchozí)
  • Funkce nemá žádné vedlejší efekty a pro stejné vstupy vždy vrátí stejnou návratovou hodnotu.
  • Simulátor ani syntetizér ji může „vyhodnocovat“ kdykoli, protože nezávisí na žádném vnějším stavu.
  • Funkce (function) od GPT
  • Musí mít pouze parametry módu in.
  • Vrací jednu hodnotu přes return.
  • Lze zvolit volatile (impure) nebo pure (čehož se držíme, pokud funkce nemá vedlejší efekty).
  • Volá se jak v concurrent, tak v sequential doméně.
  • Kód se „rozbalí inline“ při syntéze do kombinatorní sítě (kaskády bran) či logiky.
Procedura
  • Procedury („procedure“) – mohou „vracet“ více hodnot (pomocí out/inout parametrů) a slouží pro popis podřízených bloků logiky, které mohou současně ovlivnit několik signálů nebo proměnných.
procedure identifier [ (formal_parameter_list) ] is
[sequential_declarations]
begin
sequential statement(s)
end [procedure] [identifier]
  • Procedura (procedure) od GPT
  • Formální parametry mohou být módu in, out, inout.
  • Nemá návratovou hodnotu return (nebo jen return; bez hodnoty pro ukončení).
  • Může „vrátit“ více výsledků (např. signal Y : out …, variable W : out …).
  • Volá se pouze uvnitř sequential domény (procesů, jiných procedur, funkcí), protože variable přiřazení := vyžaduje sekvenční context.
  • Inline rozbalení do vnitřku procesu vytváří blok kódu, který může zároveň aktualizovat několik výstupních signálů či proměnných.

Konečné automaty typu Moore a Mealy. Jejich definice, popisy pomocí grafu přechodů, tabulky přechodů a stavové tabulky přechodů (jiný název matice přechodů). Minimalizace automatu Moore na Moore a Moore na Mealy. Kdy lze? Návrh automatu a jeho popis ve VHDL

Definice FSM

Definice FSM

Mealy a Moore ilustrace

Popis FSM (graf, tabulka přechodů, stavová tabulka přechodů - matice přechodů)

  • Moore - Výstupy nezávisí na vstupech, tj. výstupy se efektivně generují ze stavu, v němž se právě nachází automat.
  • 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.
  • Používá se častěji v programech – ty berou vstupy z hodnot v proměnných, které jsou bez hazardů.
  • K jakémukoli Mooreovu automatu existuje ekvivalentní Mealyho automat se stejným nebo menším počtem stavů.
  • Naopak ke každému Mealyho automatu, který má N stavů a rozpoznává X možných kombinací vstupů, existuje ekvivalentní Mooreův automat mající N*X stavů.
  • 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 x p
  • řádky - výchozí stav s1 až sp
  • sloupce - příští stav s1 až sp
  • průsečík - podmínky x přechodu ze stavu sk do sj

Matice přechodů

  • Tabulka přechodů:
  • 2 části - příští stav ( d ) + výstupy ( w )
  • sloupce - všechny možné vstupy xi
  • řádky - všechny možné vnitřní stavy sj + výstup zm
  • průsečík řádku a sloupce - následný stav sk
  • tabulka výstupů – výstup generovaný ve stavu

Tabulka přechodů

Graf přechodů Start-Stop

Minimalizace Moore na Moore a Moore na Mealy

  • NIKDE NENí, nenašel jsem

FSM ve VHDL

  • Úloha Start-Stop
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

  • Vůbec nechápu z přednášek
  • Pravděpodobně:
  • Máme předem určenou posloupnost stavů, do kterých se po splnění podmínky posouváme
  • when S0 ⇒ if start then state := S1; end if;
  • when S1 ⇒ if full then state := S2; end if;
  • when S2 ⇒ if boiling then state := S3; end if;
  • when S3 ⇒ if Chef then state := S0; end if;

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

SISO

  • Série D‐flip‐flopů (DFF) propojených do řetězce: výstup jednoho DFF → vstup následujícího.
  • Na každý takt hodin (třeba při náběžné hraně CLK) se vloží nový bit na vstup SI („serial-in“) a zároveň se na výstup SO („serial-out“) vyhodí nejstarší bit.
  • SISO (Serial-In Serial-Out)
  • V každém taktu vstupní bit posune všechny bity o jednu pozici doprava; poslední bit „vypadne“.
  • Lze použít jako jednoduchou zpožďovací linku (delay line): hodnota na SI se objeví na SO až po N taktech, kde N = počet DFF.
  • PISO (Parallel-In Serial-Out)
  • Má řídicí vstup Load.
  • Pokud Load = ’1’, do všech DFF simultánně (paralelně) načte N-bitové slovo.
  • Pokud Load = ’0’, pak z toho „načteného” slova posouvá bity sériově ven přes SO.
  • SIPO (Serial-In Parallel-Out)
  • Nahrazuje SO N současnými výstupy Q(N–1 downto 0).
  • V každém taktu se do nejnižšího bita vloží SI, starší bity se posunou; všechny N bitů lze číst naráz (paralelně).
  • PIPO (Parallel-In Parallel-Out)
  • Pouze „datový registr” (není čistý posuvník), vstupy i výstupy vždy řídí společný Load/CLK.

PISO a SIPO

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

  • Základní princip LFSR
  • Posuvný registr (SISO) se na vstup SI (nejnižší bit) místo libovolného konstantního 0/1 napojuje XOR kombinace výstupních (!!) bitů z několika pozic v registru (tzv. „tap positions”).
  • Každý takt:
  • SI ≤ XOR( vybrané bitové „tap“ pozice ze stavu QN–1, QN–2, … )
  • Všechny bity se posunou doprava (nebo doleva) o jednu pozici.
  • Nejvyšší bit se vymění za předchozí nejnižší výstup SO (nebo jedná zerezní zpětnovazební brána).
  • Použití LFSR
  • Generování pseudonáhodných čísel pro testování a skrabbling dat.
  • Rozptyl (scrambling) a descrambling v komunikacích (zajišťuje rovnoměrné rozprostření spektra bitů).
  • CRC (Cyclic Redundancy Check): zkrácená varianta LFSR bez anamnézy stavu (uložen je pouze registr, výstupem jsou paritní bity).
  • Dežifrátory (čítače) pro test operačních frekvencí („BIST” – Built-In Self-Test) v hardwaru.
  • Fázové generátory a děliče frekvence s vysokou kvalitou (rozložení spektra).

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

Blokové PLL schéma

  • PLL je uzavřená smyčka, jejímž úkolem je zachytit a udržet konstantní fázový a frekvenční vztah mezi referencí (fR/N) a odvozeným signálem (fL/M).
  • Hlavní bloky:
  • Phase/Frequency Detector (PFD) – porovnává fázi/frekvenci.
  • Charge Pump (CP) – generuje řídicí proudové impulsy.
  • Loop Filter (LPF) – integruje proudy → hladké napětí „V_tune“.
  • VCO – oscilátor řízený „V_tune“ (digitální kapacitní pole v FPGA).
  • Dividers N (u reference) a M (ve zpětné vazbě).
  • 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.
  • Umožňuje:
  • Vytvářet stabilní vysokofrekvenční hodiny (z nižší frekvence krystalu).
  • Dělit nebo násobit hodinovou frekvenci přesně zlomkem.
  • Recover hodinový signál z přenášených dat (clock recovery).
  • Demodulovat frekvenční modulace (FM) v analogové oblasti.

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.

  • Všechny vstupy FPGA musí mít definovanou logickou úroveň (pull-up/pull-down), jinak plovoucí vstup vede k náhodnému rušení a vyššímu odběru
  • Pomalé hrany filtreujeme Schmittovými vstupy či buffrujeme, synchronizujeme do hodiny, aby se vyhnuli metastabilitě
  • Debouncing mechanických tlačítek:
  • Hardwarový: RC článek + Schmitt/invertor (τ ≈ 1 ms) potlačí zákmitové pulsy
  • Softwarový: ve FPGA čítačový filtr nebo FSM se vzorkováním po definované době.
  • Indukční zátěže (cívky, motory, relé):
  • 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:
  • Inertial delay: potlačení krátkých impulsů,
  • Transport delay: čisté zpoždění na ideálním vodiči,
  • Odrazy/jitter: nutnost impedance‐match a krátké trasy.
  • Řídit fan-out buffery a minimalizovat kapacitní zatížení kvůli zpoždění
  • Do hodinových cest nevkládat další hradla, aby se vyhnuli clock skew

Používané FPGA technologie a jejich vlastnosti. Struktura SRAM paměti, paměti s jednoportovou a dvou portovou výběrovou logikou.

Celé GPT

FPGA Technologie

  • SRAM-based FPGA
  • Princip: Konfigurační buňky tvoří klasické CMOS SRAM buňky (8–12 tranzistorů na buňku). Po programování (napájecím pulzu) drží hodnotu, dokud je FPGA zapnuté, ale po vypnutí se vymažou. Řešení: externí Flash–EEPROM čip, který po zapnutí automaticky nahraje bitstream do SRAM buněk
  • Výhody:
  • Rychlá a neomezeně opakovatelná rekonfigurace.
  • 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) .
  • 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)
  • Nevýhody:
  • Citlivost na radiaci (ztráta konfigurace) → pro kosmické aplikace se vyrábějí verze “radiation-hardened” (umožňují vzdálené dožití softwaru).
  • Po ztrátě napájení je nutná opětovná konfigurace (boot time).
  • Flash-based FPGA
  • Princip: Konfigurační buňky jsou vnitřní Flash buňky (nesmí se zaměnit s typy pro SSD). Obsah si pamatují i po vypnutí napájení.
  • Výhody:
  • Po zapnutí ihned naloží konfiguraci (bez externí Flash GOP).
  • Nízká klidová spotřeba (Flash je nevolatilní).
  • Méně citlivé na radiaci než čistě SRAM FPGA.
  • Nevýhody:
  • Pomalejší rekonfigurace než SRAM, ale rychlejší než antifuse.
  • O něco vyšší náklady než čisté SRAM verze.
  • Antifuse-based FPGA
  • 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ýhody:
  • Velmi odolné vůči radiaci (vhodné pro satelity, kosmické sondy).
  • Jednou naprogramované, již nelze změnit (vyšší stabilita).
  • Nevýhody:
  • Nepřekonatelně pomalá a navždy jednosměrná konfigurace – desítky minut pro programování.
  • Nelze rekonfigurovat v cílovém systému (vyžaduje speciální napěťové pulzy, nutné předem otestovat).
Struktura SRAM pamětí v FPGA
  • Paměťové bloky (M4K / M9K)
  • Každý blok je krokovatelný na různé šířky a hloubky:
  • Cyclone II: M4K bloky (4 kbit + 512 paritních) → lze použít například jako 4 kb × 1, 2 kb × 2, 512 B × 8, apod. .
  • Cyclone IV: M9K bloky (8 kbit + 1024 paritních) → větší kapacita a širší vnitřní sběrnice.
  • Uvnitř: statická CMOS SRAM matice, každý bit uložen v buketě CMOS tranzistorů; při změně adresy se data objeví na výstupu s typickým zpožděním ~1–2 cyklů T CLK, proto se doporučuje přidat i výstupní registr (pipeline) pro zajištění správného časování čtení .
  • Jednoportová (Single-Port) SRAM
  • Má jednu adresní sběrnici, jedno data‐in a jedno data‐out, a jeden řídicí vstup např. „Write Enable (WE)“ + hodinový vstup.
  • Operace:
  • Čtení: Adresa se na chvíli drží konstantní (v registru), po ~1–2 CLK se na datovou sběrnici objeví obsah.
  • Zápis: Při aktivním WE se během jednoho cyklu do vybrané buňky zapíše data.
  • Výhoda: Jednoduše se postaví, má nižší spotřebu a menší plochu.
  • Nevýhoda: Nelze současně číst a zapisovat; pokud se během jednoho taktu provádí zápis, čtení je buď blokováno, nebo vrací předchozí data.
  • 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:
  • Obě strany (porty) mohou libovolně číst či psát současně.
  • Pokud se snaží oba porty přistoupit k téže buňce zároveň, je definováno, který port má prioritu (typicky „write first“ nebo „read first“).
  • Výhoda: Velká flexibilita – může sloužit pro dvoukanálové (FIFO) bufferování mezi dvěma hodinovými doménami.
  • Nevýhoda: Dvojnásobná logika k řízení přístupu, větší spotřeba a plocha.
  • 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í.
Navigation

Playground

QR Code
QR Code statnice:bakalar:b0b35lsp (generated for current page)