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