Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
statnice:bakalar:b0b35lsp [2025/05/31 17:46] – [Popis FSM (graf, tabulka přechodů, stavová tabulka přechodů - matice přechodů)] petrstep | statnice:bakalar:b0b35lsp [2025/06/14 13:22] (current) – [Úplná sčítačka] petrstep | ||
---|---|---|---|
Line 33: | Line 33: | ||
+ | === CMOS Invertor === | ||
+ | {{: | ||
+ | |||
+ | === CMOS NAND === | ||
+ | |||
+ | * PMOS paralelne nahore | ||
+ | * NMOS serie dole | ||
+ | {{: | ||
+ | |||
+ | === CMOS NOR === | ||
+ | |||
+ | * PMOS seriove nahore | ||
+ | * NMOS pralelne dole | ||
+ | |||
+ | {{: | ||
+ | |||
+ | === CMOS AND === | ||
+ | |||
+ | {{: | ||
+ | |||
+ | === CMOS OR === | ||
+ | |||
+ | {{: | ||
+ | |||
+ | === 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 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 ==== |
- | | + | //GPT podle skript// |
- | + | | |
+ | * 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). | ||
====== | ====== | ||
Line 115: | Line 143: | ||
==== Úplná sčítačka ==== | ==== Úplná sčítačka ==== | ||
- | {{: | + | {{: |
* je ze dvou Half Adderů | * je ze dvou Half Adderů | ||
* má 3 vstupy | * má 3 vstupy | ||
Line 437: | Line 465: | ||
end architecture; | end architecture; | ||
</ | </ | ||
+ | |||
+ | |||
+ | ====== | ||
+ | |||
+ | * 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 === | ||
+ | |||
+ | {{: | ||
+ | * 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 Q< | ||
+ | * 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). | ||
+ | |||
+ | |||
+ | ====== | ||
+ | {{: | ||
+ | |||
+ | * 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/ | ||
+ | * 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. | ||
+ | |||
+ | |||
+ | ====== | ||
+ | |||
+ | |||
+ | * Všechny vstupy FPGA musí mít definovanou logickou úroveň (pull-up/ | ||
+ | |||
+ | |||
+ | * Pomalé hrany filtreujeme Schmittovými vstupy či buffrujeme, synchronizujeme do hodiny, aby se vyhnuli metastabilitě | ||
+ | |||
+ | |||
+ | * Debouncing mechanických tlačítek: | ||
+ | * Hardwarový: | ||
+ | * Softwarový: | ||
+ | |||
+ | |||
+ | * 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), | ||
+ | |||
+ | |||
+ | * 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/ | ||
+ | * Ří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 | ||
+ | |||
+ | |||
+ | ====== | ||
+ | |||
+ | //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é, | ||
+ | * 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ů; | ||
+ | |||
+ | |||
+ | * 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, | ||
+ | * 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, |