The wiki page is under active construction, expect bugs.

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
statnice:bakalar:b0b35lsp [2025/05/31 17:45] – [FSM ve VHDL] petrstepstatnice:bakalar:b0b35lsp [2025/06/14 13:22] (current) – [Úplná sčítačka] petrstep
Line 33: Line 33:
  
  
 +=== CMOS Invertor ===
  
 +{{:statnice:bakalar:screenshot-2023-04-14-at-2.27.30-pm-768x869.png?600|}}
 +
 +=== CMOS NAND ===
 +
 +  * PMOS paralelne nahore
 +  * NMOS serie dole
 +{{:statnice:bakalar:screenshot-2023-04-14-at-4.02.16-pm-768x471.png?600|}}
 +
 +=== CMOS NOR ===
 +
 +  * PMOS seriove nahore
 +  * NMOS pralelne dole
 +
 +{{:statnice:bakalar:screenshot-2023-04-14-at-4.25.13-pm-768x494.png?600|}}
 +
 +=== CMOS AND ===
 +
 +{{:statnice:bakalar:screenshot-2023-04-14-at-6.53.45-pm-768x593.png?600|}}
 +
 +=== CMOS OR ===
 +
 +{{:statnice:bakalar:screenshot-2023-04-14-at-6.44.01-pm-768x567.png?600|}}
 +
 +=== CMOS XOR ===
 +
 +{{:statnice:bakalar:screenshot-2023-04-14-at-7.09.58-pm-927x1024.png?600|}}
 ====== 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 log. funkcí v Karnaughových mapách, teoretické zázemí, logická krychle, grayovy kódy, skupinová minimalizace. Hazardy v kombinačních obvodech. ======
  
Line 50: Line 77:
   * Vždy tak, aby se měnila pouze jedna hodnota   * Vždy tak, aby se měnila pouze jedna hodnota
  
-==== Hazardy?? ==== +==== Hazardy ==== 
- TODO +//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í ====== ======  Uplatnění De Morganova teorému. Užití Shannonovy expanze a její aplikace ke konstrukci BDD (Binary Decision Diagram), výhody, omezení ======
  
Line 115: Line 143:
  
 ==== Úplná sčítačka ==== ==== Úplná sčítačka ====
-{{:statnice:bakalar:screenshot_from_2025-05-31_11-45-47.png?400|Úplná sčítačka}}+{{:statnice:bakalar:screenshot_from_2025-05-31_11-45-47.png?600|Úplná sčítačka}}
   * je ze dvou Half Adderů   * je ze dvou Half Adderů
   * má 3 vstupy   * má 3 vstupy
Line 405: Line 433:
 {{:statnice:bakalar:screenshot_from_2025-05-31_19-27-31.png?400|Tabulka přechodů}} {{:statnice:bakalar:screenshot_from_2025-05-31_19-27-31.png?400|Tabulka přechodů}}
  
 +{{:statnice:bakalar:screenshot_from_2025-05-31_19-45-11.png?400|Graf přechodů Start-Stop}}
 ==== Minimalizace Moore na Moore a Moore na Mealy ==== ==== Minimalizace Moore na Moore a Moore na Mealy ====
  
Line 437: Line 465:
 end architecture; end architecture;
 </codedoc> </codedoc>
 +
 +
 +======  Ř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;
 +
 +{{:statnice:bakalar:screenshot_from_2025-05-31_19-57-14.png?400|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 ===
 +
 +{{:statnice:bakalar:screenshot_from_2025-06-01_09-56-06.png?400|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.
 +
 +{{:statnice:bakalar:screenshot_from_2025-06-01_09-57-41.png?400|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 Q<sub>N–1</sub>, Q<sub>N–2</sub>, … )
 +  * 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) ======
 +{{:statnice:bakalar:screenshot_from_2025-06-01_10-05-11.png?400|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)