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

2. Laboratoř: Kombinační logická funkce

Realizujte následující kombinační obvody:

  • 7segmentový dekodér
  • Násobička 2x2 bity
  • Bonusový úkol - sčítačka

1. Domácí příprava

Minimalizace kombinačního obvodu není nijak zvlášť obtížná, ale pro 7segmentový dekodér je potřeba pravdivostní tabulka pro 4 vstupy a 7 výstupů + 7 Karnaughových map a pro násobičku pravdivostní tabulka pro 4 vstupy a 4 výstupy + 4 Karnaughovy mapy. Dohromady se tedy jedná o 11 Karnaughových map, což může být časově náročnější - je tedy vhodné si je připravit 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í.

Bonusový úkol žádné další mapy nevyžaduje - jde o spojení 7segmentového dekodéru a sčítačky z minulé laboratoře.

2. Úloha 3: 7segmentový dekodér BCD

2.1. Zadání

Implementujte 7segmentový dekodér pro BCD čísla (tj., 0-9) na vývojovém kitu Basys3.

7segmentový dekodér BCD je kombinační obvod, který převede 4bitové číslo (pouze hodnoty 0-9) na hodnotu zobrazitelnou na 7segmentovém displeji. Pro ostatní vstupní hodnoty (10-15) použijte výstupní hodnoty don’t-care.

Návrh můžete simulovat pro efektivní opravu chyb, ale k odeslání je nutná implementace.

Jednotlivé segmenty jsou pojmenovány A-G dle následujícího obrázku.

7segmentový displej - Jména segmentů

Kompletní tabulka zobrazovaných znaků (včetně znaků A-F, které neimplementujte) je k dispozici zde (zdroj).

2.2. Hodnocení

2 body za úspěšné dokončení tohoto úkolu.

2.3. Realizace

Abyste mohli navrhnout dekodér, musíte nejprve navrhnout jeho pravdivostní tabulku (4 vstupy, 7 výstupů) a odvodit minimalizované algebraické výrazy pro 7 výstupů (pomocí 7 Karnaughových map).

Vlastní realizaci pak můžete kreslit ručně pomocí schématu, ale efektivnější cestou je využití generátoru schémat, který je v prostředí Logisim implementován.

2.4. Generátor schémat

V levé horní části okna prostředí Logisim klikněte pravým tlačítkem na název schématu a v menu vyberte volbu Analyze Circuit.

Analyze circuit - Menu

V nově otevřeném okně nejprve zadejte vstupy Input Variables a výstupy Output Variables obvodu (klikněte na řádek Click to add a new variable a zadejte jméno proměnné a opakujte, dokud nezadáte všechny proměnné dle obrázku).

Analyze circuit - Proměnné

Poté se přepněte na kartu Expression a pro jednotlivé výstupy zadejte logické funkce, které máte připravené z Karnaughových map.

Pro zadání můžete použít:

  • zápis dle syntaxe jazyka C: & pro logický AND, | pro logický OR, ~ a ! pro negaci, ^ pro XOR (např. a & b | ~c, ale i a && b || !c),
  • běžné operátory: * pro logický AND, + pro logický OR, ! pro negaci (např. a * b + !c),
  • zápis dle syntaxe jazyka VHDL: and, or, not, xor (např. a and b or (not c)).

Syntaxe lze různě kombinovat. Po potvrzení se výraz automaticky přepíše do syntaxe vybrané v poli Notation. Pro jistotu nepředpokládejte priority operátorů. Na obrázku nejsou skutečné rovnice dekodéru - je pouze ilustrativní.

Analyze circuit - Výrazy

Po zadání všech výrazů vygenerujte zapojení pomocí tlačítka Build Circuit. Poté vyberte projekt a schéma, které se má vyplnit (pokud už by ve schématu nějaké zapojení bylo, tak bude přepsáno).

Analyze circuit - Build

Po potvrzení se otevře vygenerované schéma. Na obrázku není skutečné schéma dekodéru - je pouze ilustrativní.

Analyze circuit - Výsledek

2.5. Otestování funkce dekodéru

Pro aktivaci módu pro změnu hodnot použijte ikonu Ikona - Change. Vyzkoušejte jednotlivé kombinace dle pravdivostní tabulky uvedené v zadání.

Pro ukončení simulace se nezapomeňte přepnout zpět do módu pro editování schématu (ikona Ikona - Edit) - jinak nemůžete pokračovat v editaci.

2.6. Realizace na kitu Basys3

Displej na kitu Basys3 je řízen dvěma sadami signálů:

  • Katody CA-CG ovládají jednotlivé segmenty. Tyto signály budete řídit signály sa-sg.
  • Anody AN0-AN3 zapínají jednotlivé cifry.

Katody i anody se na kitu zapínají log. 0, ale Logisim s tímto stavem počítá a během syntézy automaticky hodnoty invertuje. Pro účely tohoto cvičení stačí jedna číslice. Vytvořte tedy nové schéma (např. ssegbasys), vložte do něj dekodér jako blok, připojte jej na vstupy a výstupy a přidejte čtyři nové výstupy AN0-AN3:

  • Nastavte AN0 na log. 1 (komponenta Power ze sekce Wiring),
  • Nastavte ostatní anody na log. 0 (komponenta Ground ze sekce Wiring).

2.7. Syntéza a mapování

Při syntéze nezapomeňte vybrat schéma, které obsahuje buzení anod (ssegbasys).

K mapování katod (výstupy sa-sg) slouží oblast levé cifry sedmisegmentového displeje na obrázku vývojového kitu.

Pořadí segmentů je vidět na následujícím obrázku:

7segmentový displej - Jména segmentů

K mapování anod (výstupy AN0-AN3) slouží obdélníky nacházející se nad každou cifrou sedmisegmentového displeje. Anody i katody jsou (spolu se vstupy) na následujícím obrázku nepatrně zeleně zvýrazněny.

7segmentový displej - Mapování

3. Úloha 4: Násobička 2x2 bity

Navrhněte násobičku 2×2 bity, vstupem jsou dvě nezáporná dvoubitová čísla A, B (A0=SW0, A1=SW1, B0=SW2, B1=SW3), pro oba vstupy jsou možné kombinace 00, 01, 10, 11 – tedy v desítkové soustavě je nejvyšší možná kombinace 3*3=9. Výsledek je zobrazován na 7segmentovém displeji, celkový návrh otestujte na přípravku.

Návrh proveďte pomocí pravdivostní tabulky 4 vstupů a 4 výstupů:

  • Nakreslete Karnaughovy mapy pro výstupy a funkci zminimalizujte, odvoďte příslušné výrazy.
  • Naimplementujte násobičku (pomocí generátoru nebo schématem) do nového schématu, ale do stejného projektu jako dekodér.
  • V dalším novém schématu připojte vstupy bloku s násobičkou k přepínačům a výstupy přes blok obsahující 7segmentový dekodér na displej. Nezapomeňte na anody AN0-AN3 zapínající jednotlivé cifry.
  • Nahrajte návrh do kitu Basys 3 a otestujte jej.

3.1. Hodnocení

1 bod za úspěšné dokončení tohoto úkolu.

4. Bonusové úlohy

4.1. Bonus 2.1 – sčítačka

K dekodéru připojte čtyřbitovou sčítačku z prvního cvičení, vstupy jsou definovány podle prvního cvičení, výstupy S0-S3 se budou zobrazovat na 7segmentovém displeji a výstup COUT na LD0, celkový návrh otestujte na přípravku.

Sčítačku máte vytvořenou jako schéma v projektu z prvního cvičení. Pokud byla v pořádku, tak schéma importujte do aktuálního projektu pomocí volby FileMerge…​. V novém schématu pak propojte blok adder4 a blok s dekodérem obdobně jako u předchozí úlohy s násobičkou. Nezapomeňte na anody AN0-AN3 zapínající jednotlivé cifry.

Nezapomeňte, že dekodér zobrazuje jenom čísla z rozsahu 0-9, vyšší výsledky nebudou dávat smysl.

Hodnocení

0,5 bodu za úspěšné dokončení tohoto úkolu.

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í.