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.
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
CMOS NOR
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ů
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
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
Ú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
- 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í
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
- 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
- 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“.
Čí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.
- 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
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
- 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
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;
Posuvné registry a posuvné registry s lineární zpětnou vazbou (LFSR), pouze hlavní principy jejich teoretického zázemí a vlastnosti
Posuvné registry
- 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.
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)
- 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í.