Paměti - Sekvenční obvody

Původní verze lekce

memory_blank.circ

Kombinační obvody

Kombinační obvody lze ekvivalentně zadefinovat několika způsoby:

  • Hodnoty výstupů jsou plně definované pouze hodnotami vstupů
  • Obvod implementuje matematickou funkci, tj. lze popsat pravdivostní tabulkou
  • V obvodu se nevyskytují žádné cykly (nepřímá závislost závislost vstupu hradla na jeho výstupu)

Příklad kombinačního obvodu

Kombinační obvod

Sekvenční obvody

Sekvenční obvody jsou ty obvody, které nejsou kombinační, tj. vyskutyjí se v nich nějaké cykly. Tyto cykly způsobují zajímavé chování (paměť), ale jsou obtížnější analyzovat.

Příkladný sekvenční obvod s OR

Sekvenční obvod

Znázornění v pravdivostní tabulce

Protože X je zároveň výstup a vstup do obvodu, musíme tyto dvě jeho funkce rozdělit:

  • - aktuální hodnota vodiče X, tj. vstup
  • - příští hodnota vodiče X, tj. výstup.

"Příští" tady znamená, jakmile dané hradlo zpracuje své vstupy a aktualizuje svůj výstup - jeho tzv. propagační delay, který je vždy nenulový, závislý na výrobním procesu (typická hodnota např. 10ns). Tedy je to hodnota X v budoucnosti.

Nyní v pravdivostní tabulce můžeme popsat, jaké bude příští X v závislosti na aktuálním X a vstupu :

AXX'
000
011
101
111

Z chování obvodu vidíme, že pokud je , se nezmění (), a pokud , pak na nezáleží a . Můžeme tedy pravdivostní tabulku zjednodušit zavedením neznámé :

AXX'
0SS
1S1

V této tabulce může S nabýt libovolných hodnot ( nebo ) a každá varianta repreznetuje jeden řádek. Nicméně z takto zjednodušené tabulky je lépe vidět časové chování obvodu:

Pokud se obvod nachází v nějakém "stavu" , tak při v něm zůstane, ale při přejde do stavu .

Zároveň platí, že abychom mohli znát hodnotu výstupu, musíme znát hodnotu aktuálního stavu , který může být skrytý uvnitř obvodu, nestačí nám pouze vstup - typická vlastnost sekvenčních obvodů.

Popis výrazem a nekonečné vyhodnocování

Obvod můžeme popsat i výrazem:

kde značí příští hodnotu a tu stávající. Pokud nám ale vyjde jiné , než jsem měli , obvod na něj okamžitě zareaguje (je to vstup) a spustí výpočet znovu po dosazení za , tedy potenciálně je nutné popsat obvod takto:

Zde vidíme, že výraz se po opakovaném (klidně i nekonečném) dosazování za nemění. Z toho lze odvodit, že je garantovaně stabilní. Nemusí tomu tak být vždy

Nestabilní obvody

Nejjednodušší nestabilní obvod je následující obvod o nula vstupech:

Tento obvod můžeme zase modelovat pomocí výrazu:

Pokud ale budeme opakovaně dosazovat, nedostaneme ten samý výraz. Označme (neznámý) počáteční stav , a stav po dosazeních (neboli po provedeních obvodu). Každý stav se vypočítává z toho předchozího.

Můžeme tedy říct, že protože a obecně , stav obvodu se po každém provedení hradla změní, a tedy není stabilní, nikdy se neustálí na jednu stálou hodnotu, neboli osciluje. Skutečně, potvrdí nám to i simulace Logisimem:

SR Latch

Sekvenční obvody můžete využít pro paměť pomocí hradla OR. Hradlo OR nám vstup zapne a nechá výstup neustále zapnutý, ale nemáme ho zatím jak vyresetovat.

Sekvenční obvod

Abychom ho mohli vyresetovat, přidáme další vstup a to R jako reset.

SR Latch

Zapíšeme do výrazu

Zapíšeme chování do pravdivostní tabulky

RSQQ'
00QQ
01X1
10X0
11X1

Vytvořili jsme SR Latch, který se ale dá optimalizovat, tak abychom potřebovali 2 stejné gaty a to NOR viz. gif.

SR Latch

Latch vs Flip Flop

Signály

Stavy signálů

Na následujícím obrázku vidíme 4 definice.

  • High Level (Active-High) - zde probíhá ukládání
  • Low Level (Active-Low) - značí se jako CLK nebo ENA
  • Rising/Falling edge hodnota se zpracuje v okamžíku přechodu CLK signálu z high na low a opačně

Latch

Latch je level-triggered. To znamená, že latch bere vstup, když je zapnutý viz. obrázek

Latch

Flip Flop

Flip flop je edge-triggered. To znamená, že buď bere vstup na rising edge nebo falling edge. Na následujícím obrázku bere vstup na rising edge.

Flip Flop

Oscillation apparent

V rámci sekvenčních obvodů můžete narazit na chybu Oscillation apparent. Znamená to, že jste v nějakém paradoxním cyklu. Vyřešíte to následovně:

  • Odstraníme problémový prvek
  • Reset Simulation (CTRL+R)
  • Pokud není zapnuté tak --> Auto-Propagate (CTRL+E)

Bonusové materiály

Last change: 2025-01-07, commit: d95c3a3