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 [2026/06/02 06:55] – [Princip DFF (Primary-Replica)] mates1nstatnice:bakalar:b0b35lsp [2026/06/02 08:46] (current) – [Popis FSM] mates1n
Line 198: Line 198:
  
 === Metastabilita === === 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‐latchu, který se může rozkládat na čisté 0/1 s nedefinovaným zpožděním.+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: Je možné ji zmírnit:
Line 204: Line 204:
   * **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.   * **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.+**Nelze ji naprosto vyloučit**, jen zredukovat pravděpodobnost na zanedbatelné minimum.
  
  
Line 406: Line 406:
 {{:statnice:bakalar:screenshot_from_2025-05-31_19-28-26.png?350|Mealy a Moore ilustrace}} {{:statnice:bakalar:screenshot_from_2025-05-31_19-28-26.png?350|Mealy a Moore ilustrace}}
 === Popis FSM  === === 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.+Používají se všude, kde systém závisí na sekvenci událostí v čase, ne jen na aktuálním vstupu. 
  
 == Moore == == Moore ==
-**Výstupy nezávisí na vstupech**, tj. **výstupy** se efektivně generují ze **stavu**, v němž se právě nachází automat. Má více stavů a stabilní výstup, je pomalejší.+**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 == == 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. Má méně stavů, je rychlejší, ale je citlivější. +**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ší. 
  
  
Line 482: Line 482:
  
 ======  Řadiče a mikroprogrové řadiče. Vlastnosti a architektura ====== ======  Ř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 +Ř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. +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.+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: Máme předem určenou posloupnost stavů, do kterých se po splnění podmínky posouváme:
Line 524: Line 524:
  
 === Posuvné registry s lineární zpětnou vazbou LFSR === === 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'').+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== ==Takt registru==
Line 549: Line 549:
   * **Phase/Frequency Detector (PFD)** – porovnává fázi a frekvenci referenčního a zpětnovazebního signálu..   * **Phase/Frequency Detector (PFD)** – porovnává fázi a frekvenci referenčního a zpětnovazebního signálu..
   * **Charge Pump (CP)** – generuje řídicí proudové impulsy.   * **Charge Pump (CP)** – generuje řídicí proudové impulsy.
-  * **Loop Filter (LPF)** – integruje proudy → hladké napětí ($V_{tune}$).+  * **Low Pass Filter (LPF)** – integruje proudy → hladké napětí ($V_{tune}$).
   * **VCO (Voltage-Controlled Oscillator)** – oscilátor řízený buď napětím ($V_{tune}$), nebo digitálně.   * **VCO (Voltage-Controlled Oscillator)** – oscilátor řízený buď napětím ($V_{tune}$), nebo digitálně.
   * **Dividers** $N$ (u reference) a $M$ (ve zpětné vazbě).   * **Dividers** $N$ (u reference) a $M$ (ve zpětné vazbě).
Line 564: Line 564:
  
 {{:statnice:bakalar:screenshot_from_2025-06-01_10-05-11.png?400|Blokové PLL schéma}} {{:statnice:bakalar:screenshot_from_2025-06-01_10-05-11.png?400|Blokové PLL schéma}}
 +{{:statnice:bakalar:pll-nvs.png?400|Fischerovo PLL schéma}}
  
  
Line 569: Line 570:
  
 === Ochrana vstupů === === 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.  +Všechny vstupy FPGA musí mít **definovanou logickou úroveň** (pull-up/pull-down).  
-Nepoužívané vstupy se proto nesmí nechávat nezapojené.+ 
 +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 === === 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.+**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ě.
  
-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 === === Debouncing ===
  
Line 581: Line 585:
  
 Dají se ošetřit dvěma způsoby: Dají se ošetřit dvěma způsoby:
-  * Hardwarově: RC článek + Schmitt/invertor (τ ≈ 1 ms) potlačí zákmitové pulsy (zahladí křivku).  +  * **Hardwarově**: RC článek + Schmitt/invertor (τ ≈ 1 ms) potlačí zákmitové pulsy (zahladí křivku).  
-  * Softwarově: ve FPGA čítačový filtr nebo FSM se vzorkováním po definované době -> změna je přijata až po dostatečně dlouhé době.+  * **Softwarově**: ve FPGA čítačový filtr nebo FSM se vzorkováním po definované době -> změna je přijata až po dostatečně dlouhé době.
  
 ===Chránění výstupů se zátěží === ===Chránění výstupů se zátěží ===
Line 600: Line 604:
  
 == Důležité jevy == == Důležité jevy ==
-  * Propagation delay – konečné zpoždění šíření signálu, +  * **Propagation delay** – konečné zpoždění šíření signálu, 
-  * Inertial delay – krátké impulsy se nemusí přenést, +  * **Inertial delay** – krátké impulsy se nemusí přenést, 
-  * Transport delay – ideální čisté zpoždění, +  * **Transport delay** – ideální čisté zpoždění, 
-  * Odrazy (reflections) – vznikají při nepřizpůsobené impedanci +  * **Odrazy** (reflections) – vznikají při nepřizpůsobené impedanci 
-  * Jitter – časové kolísání hran signálu, +  * **Jitter** – časové kolísání hran signálu, 
-  * Crosstalk – rušení mezi sousedními vodiči - nutnost impedance‐match a krátké trasy.+  * **Crosstalk** – rušení mezi sousedními vodiči - nutnost impedance‐match a krátké trasy. 
 == Pravidla návrhu == == Pravidla návrhu ==
   * Řídit fan-out buffery a minimalizovat kapacitní zatížení kvůli zpoždění    * Řídit fan-out buffery a minimalizovat kapacitní zatížení kvůli zpoždění 
Line 614: Line 619:
  
 === FPGA Technologie === === FPGA Technologie ===
-== SRAM-based FPGA== +== SRAM-based FPGA - Volatile== 
-  * 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 +  * 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** (volatilní) 
 +  * Řešení: externí Flash–EEPROM čip, který po zapnutí automaticky nahraje bitstream do SRAM buněk 
  
 ^Výhody^Nevýhody^ ^Výhody^Nevýhody^
Line 624: Line 630:
  
  
-== Flash-based FPGA== +== Flash-based FPGA - Non-volatile== 
-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í.+Princip: Konfigurační buňky jsou vnitřní **Flash** buňky (NAND nebo NOR). Obsah si pamatují i po vypnutí napájení (nevolatilní) 
 + 
 +  * NOR flash - přístup k jednotlivým bytům/slovům (tj. random access) - vhodná pro firmware/boot 
 +  * NAND flash - přístup k blokům/stránkám - vhodná pro větší objem dat
  
 ^Výhody^Nevýhody^ ^Výhody^Nevýhody^
Line 633: Line 642:
 | Vyšší odolnost proti částečné radiaci než SRAM FPGA. | Omezený počet přepisovacích cyklů Flash buněk. | | Vyšší odolnost proti částečné radiaci než SRAM FPGA. | Omezený počet přepisovacích cyklů Flash buněk. |
  
-== Antifuse-based FPGA== +== 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) +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^Nevýhody^ ^Výhody^Nevýhody^
Line 648: Line 657:
   * Paměťové bloky (M4K / M9K)   * Paměťové bloky (M4K / M9K)
   * Každý blok je krokovatelný na různé šířky a hloubky:   * 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 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. +    * 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ů CLK, proto se doporučuje přidat i výstupní registr (pipeline) pro zajištění správného časování čtení .+  * 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ů  CLK, proto se doporučuje přidat i výstupní registr (pipeline) pro zajištění správného časování čtení. 
 +    * Používá DFF
  
 ==Jednoportová (Single-Port) SRAM== ==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.+Má **jednu adresní sběrnici**, jedno data‐in a jedno data‐out, a jeden řídicí vstup např. „Write Enable (WE)“ + hodinový vstup.
  
 Operace: Operace:
Line 666: Line 676:
  
 ==Dvouportová (Dual-Port) SRAM== ==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.+Obsahuje **dvě nezávislé adresní sběrnice** (adresy A, B), každou se samostatným datovým vstupem, výstupem a hodinou.
  
 Operace: Operace:
   * Obě strany (porty) mohou libovolně číst či psát současně.   * 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“).+  * 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ýhody^Nevýhody^ ^Výhody^Nevýhody^
Navigation

Playground

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