.. _z1: ========================== Zadanie 1: Mini-kalkulator ========================== Data ogłoszenia: 17.10.2018 Termin oddania: 14.11.2018 Napisać prosty kalkulator operujący na liczbach 4-bitowych. Wejściami do kalkulatora będą ustawiane na ``sw[7:4]`` (nazwijmy je ``a``) oraz ``sw[3:0]`` (nazwijmy je ``b``). Wejścia będą traktowane jako liczby bez znaku. Przyciskami będziemy wybierać tryb pracy kalkulatora: - ``btn[0]`` naciśnięty: dodawanie i odejmowanie. Na ``led[7:4]`` pokazujemy ``a+b``, a na ``led[3:0]`` pokazujemy ``a-b``. - ``btn[1]`` naciśnięty: minimum i maksimum. Na ``led[7:4]`` pokazujemy ``min(a, b)``, a na ``led[3:0]`` pokazujemy ``max(a, b)``. - ``btn[2]``: mnożenie. Na ``led[7:0]`` pokazujemy 8-bitowy wynik mnożenia ``a * b``. - ``btn[3]``: dzielenie. Na ``led[7:4]`` pokazujemy ``a / b``, a na ``led[3:0]`` pokazujemy ``a % b``. Jeśli ``b == 0``, możemy pokazać cokolwiek. - brak naciśniętych przycisków: diody wyłączone. - więcej niż jeden naciśnięty przycisk: dowolnie. Jako część rozwiązania należy napisać układ kombinacyjny dzielący dwie liczby, zrealizowany jako moduł parametryzowany długością liczb w bitach. Najprościej jest to zrobić, generując wynik dzielenia od góry bit po bicie i odejmując za każdym razem odpowiednio przesunięty dzielnik, jeśli wynikowym bitem jest 1 (ale istnieją bardziej zaawansowane algorytmy).