4-bitová aritmeticko-logická jednotka se dvěma vstupy A a B a výstupem Y s přenosem C. Jednotka může provádět 16 různých operací (viz tabulka).
Jednotce lze ručně nastavit vstupní příznak carry, který je u některých operací použit. Výsledná data (včetně vstupů) jsou zobrazena na šestnácti LED diodách a také na čtyřmístném sedmisegmentovém displeji. Všechny vstupní hodnoty se nastavují pomocí přepínačů, které jsou umístěny na externí rozšiřující desce společně s LED diodami.
Vývoj probíhal na vývojových deskách CoolRunner-II (CLPD) a Zybo (FPGA). Obě desky jsou od firmy Digilent. Program běží na obou deskách nezávisle, pouze na desce Zybo je nutné snížit vstupní hodinový kmitočet (na 10 kHz) a invertovat výstupy (carry, carry_in, parity).
CoolRunner-II Starter Board [1]
Zybo Zynq-7000 ARM/FPGA SoC Trainer Board [2]
Rozšiřující deska s tlačítky, přepínači a LED diodami
ALU jednotka s vlastní sadou početních/logických/binárních operací, viz např. 74181
Zapojení ALU jednotky s deskou Zybo
Schéma externího hardware připojeného k desce Zybo. Vlevo displej, vpravo LED diody a přepínače.
Řídící signál | Funkce | Popis |
0x0 | Y = A + B | Součet |
0x1 | Y = A - B | Rozdíl |
0x2 | Y = A + 1 | Inkrementace |
0x3 | Y = A - 1 | Dekrementace |
0x4 | Y = A + B + C | Součet s přenosem |
0x5 | Y = A - B - C | Rozdíl s přenosem |
0x6 | Y = A or B | Logický součet |
0x7 | Y = A and B | Logický součin |
0x8 | Y = A xor B | Exkluzivní logický součet |
0x9 | Y = not A | Logická negace |
0xA | Y = A >> 1 | Rotace vpravo |
0xB | Y = A << 1 | Rotace vlevo |
0xC | Y = (A + C) >> 1 | Rotace vpravo s přenosem |
0xD | Y = (A - C) << 1 | Rotace vlevo s přenosem |
0xE | Y = A'H <=> A'L | Přehození nejvyššího a nejnižšího čtvrbytu |
0xF | Y = A mul B | Součin |
Některé části (disp_mux) jsou doplněné šablony od pana Frýzy [3].
Celkové zjednodušené | Více podrobné |