BI-SAP.21 Struktura a architektura počítačů
Jdi na navigaci předmětu

4. Laboratoř: Návrh, realizace a simulace synchronního sekvenčního obvodu sestaveného z bloků

1. Domácí příprava

Návrh sekvenčního obvodu může být časově náročnější - je tedy vhodné si jej vyzkoušet před začátkem cvičení. Čím více si připravíte doma, tím jednodušší budete mít práci na samotném cvičení.

Než začnete, ujistěte se, že vytváříte návrh pro správné posloupnosti dle zadání vašeho cvičícího (zadání bývají typicky upřesněna na stránce Učitelé a rozvrh nebo přímo v odevzdávacím systému EET).

Celý postup (pro jiné sekvence) lze najít v ukázkově vyřešeném příkladu detektoru posloupností.

2. Úloha 5: Implementace (& simulace) sekvenčního obvodu

Úkolem bude navrhnout sekvenční obvod s jedním vstupem a jedním výstupem (hodiny a reset se nepočítají), který bude detekovat danou(é) posloupnost(i) bitů na vstupu.

Cvičící zadá:

  • konkrétní hledané posloupnosti,
  • typ automatu, tj. Mealy a/nebo Moore,
  • zda se posloupnosti mohou nebo nemohou překrývat.

Zadání jednotlivých cvičících najdete na stránce Učitelé a rozvrh nebo přímo v odevzdávacím systému EET.

2.1. Příklad zadání

Automat je typu Mealy.

Hledané posloupnosti (levý bit jde do obvodu jako první):

  • 1000
  • 1100

Posloupnosti se nemohou překrývat. Mohou na sebe ale bezprostředně navazovat, nebo mezi nimi může být libovolný počet bitů, které požadovanou posloupnost netvoří.

Několik příkladů posloupností:

  • 10100011101010001 – dvě detekované posloupnosti
  • 01111000101110010 – dvě detekované posloupnosti
  • 11001000110111100 – tři detekované posloupnosti

Detekování jedné z posloupností bude indikováno log. 1 na výstupu. Uvedené dvě posloupnosti se nerozlišují.

3. Hodnocení

3 body za úspěšné splnění úkolu (fungující FSM).

4. Realizace

4.1. Přechodové a výstupní funkce

Přechodové a výstupní funkce jsou kombinační funkce - nejprve si je připravte dle postupu na přednášce nebo prosemináři. Jejich schéma poté můžete vytvořit podobně jako u minulé úlohy pomocí generátoru schémat Kombinační logická funkce – 1.4. Generátor schémat.

4.2. Zapojení automatu

Kromě přechodových a výstupních funkcí jsou klíčovou součástí sekvenčního obvodu klopné obvody / paměti. V prostředí Logisim můžete použít prvky D Flip-Flop, nebo Register. Oba prvky jsou k dispozici buď v sekci Memory v levé horní části, nebo jako poslední dvě ikony v horní liště. Register je ve výchozím nastavení 8bitový (lze změnit po vložení a vybrání prvku volbou Data Bits v dolní levé části).

Výsledné zapojení automatu typu Moore je na následujícím obrázku. Automat typu Mealy se liší (kromě obsahu bloků next_state a out_logic) v tom, že vstup sw je zaveden i do bloku out_logic.

Detektor - Main

Toto schéma je vhodné pro kontrolu správnosti.

4.3. Otestování funkce automatu

Přepněte se do módu pro změnu hodnot (ikona Ikona - Change).

Nastavte vstup SW na požadovanou hodnotu. Výstup přechodové logiky by měl na tuto změnu zareagovat ihned, ale pro změnu hodnot v paměti je potřeba provést hodinový pulz (dvě kliknutí na vstup CLK - změna na log. 1 a zpět na log. 0).

Na výstupech paměťových bloků můžete sledovat aktuální stav, výstup celého automatu je pak výstup LED.

Signál Reset slouží (jak je patrné z názvu) k resetování pamětí, tj. nastavení na log. 0.

Po ukončení simulace se nezapomeňte přepnout zpět do módu pro editování schématu (ikona Ikona - Edit).

4.4. Celkové zapojení

Automat vyžaduje ke své funkci hodinový signál - ten je však na vývojovém kitu realizován oscilátorem s frekvencí 100 MHz. Při takové frekvenci by bylo nemožné zadávat vstupy ručně - pro tuto úlohu tedy zapojíme hodinový signál přímo na jedno z tlačítek na vývojovém kitu. Budeme tak moct kontrolovat hodinový signál ručně s rychlostí, která nám vyhovuje. Tato úprava se sice v praxi nepoužívá (zapojení libovolné logiky do cesty hodinového signálu zpravidla vede u složitějších obvodů na opravdu ošklivé a obtížně detekovatelné chyby), ale v tomto případě si ji můžeme dovolit v rámci zjednodušení využít.

Problém by však mohl nastat s kvalitou fyzického kontaktu tlačítka. To není nijak ošetřeno proti tzv. zákmitům a jeden stisk tak může vyvolat několik změn hodnot, které by byly vyhodnoceny jako samostatné hodinové pulzy. Proto využijeme prvek Debounce, který můžete stáhnout zde. Do projektu jej přidáte pomocí volby FileMerge…​. Projekt obsahuje dvě schémata - odstraňovače zákmitů - jeden určený pro simulaci debounce_sim (bude se hodit u závěrečné úlohy), druhý pro použití na vývojovém kitu debounce_board, který využijeme teď.

Celkové zapojení pro nahrání do vývojového kitu je na následujícím obrázku. Použitý pin na signálu CLK najdete v sekci Wiring pod názvem Clock. Jeho funkce je prakticky identická s běžným vstupním pinem, ale během mapování při syntéze jej nemusíte již přiřazovat (Logisim ví, že jde o vstup pro hodinový signál a ví, kde se zdroj hodinového signálu na vývojovém kitu nachází).

Detektor - Top

4.5. Realizace na kitu Basys3

Pro ovládání detektoru využijte následující prvky:

  • přepínač SW0 pro signál SW,
  • tlačítko BTNU (horní) pro ruční hodinový signál CLK_BUTTON,
  • tlačítko BTND (dolní) pro signál RESET,
  • LEDku LD0 pro výstup LED,
  • vnitřní hodinový signál (CLK100MHz) (zakroužkovaná oblast na následujícím obrázku) pro hodinový signál CLK (pouze pokud jste ve schématu nepoužili speciální hodinový pin Clock, jinak se signál CLK mapuje automaticky).
Důležité:

Nezapomeňte během nastavení syntézy nastavit Divider Value na 1, jinak by se obvod mohl tvářit, že nic nedělá (byl by extrémně zpomalený). Postup je obdobný jako u předchozích úloh. Divider Value pro jistotu potvrďte Enter-em (hodnota v Frequency se musí změnit na 50 MHz), jinak se může stát, že Logisim nastavení ignoruje.

Syntéza - Divider
Detektor - Mapování

5. Odevzdání úlohy na EET

Pokud cvičící neurčí jinak, odevzdejte řešení úlohy na EET dle pokynů na hlavní stránce cvičení.