Jaworek Michał gr. 12
Sprawozdanie
(układy dodające i mnożące)
Wstęp teoretyczny:
Półsumator jest cyfrowym układem posiadającym dwa wejścia (np: X1 i X2) oraz dwa wyjścia – sumę oraz przeniesienie (P-out). Wykonuje
działanie dodawania na układzie liczb binarnych. Obliczenia wykonywane przez sumator przypominają dodawanie liczb dziesiętnych pod kreską.
Jeżeli suma liczb przekracza cyfrę będącą podstawą systemu pozycyjnego (9 – dla systemu dziesietnego, 1 – dla systemy dwójkowego) nadmiar
zostaje zapisany jako przeniesienie. Ze względu na to, że sumotor połówkowy nie posiada wejścia przeniesienia połączone szeregowo sumotory
półpołówkowe nie działają poprawnie dla wszystkich sytuacji. Wówczas bit przeniesienia może raczej traktować jako bit informujący nas, że nastąpiło
przepełnienie sumotora.
Sumator jest w stosunku do półsumatora poszerzony o dodatkowe wejście (P-in przeniesienie z poprzedniego układu) z poprzedniego sumatora
lub półsumatora.
Przy projektowaniu powyższych układów będziemy korzystać z metody tabeli Karnough zakreślając jedynki. Polega o na na tym:
- zaznaczamy jak największe grupy pól zawierających tylko jedynki, przy czym:
- ilość pól w grupie ma być potęgą dwójki: 1,2,4,8,...
- łączymy tylko sąsiadujące pola lub oddzielone krawędzią tablicy
- wybieramy takie grupy, aby zawierały wszystkie jedynki co najmniej raz (w obrębie kilku grup ta sama jedynka może się powtarzać). Ilość pól które
zawiera pojedyncza grupa ma być jak największa, a łączna ilość grup jak najmniejsza. Zapewnia to minimalizacje formuły
- formule zapisujemy jako sumę iloczynów (gdzie każdy iloczyn odpowiada jednej grupie jedynek)
Zmienne mające stała wartość negujemy, gdy ich wartość wynosi zero, dla wartości jeden – zapisujemy postać niezanegowana.
Zadanie 1
Zbudować sumotor półpołówkowy.
Naszym celem jest zbudować układ posiadający dwa wejścia (np: X1 i X2) oraz dwa wyjścia – sumę oraz przeniesienie (P-out).
Rozważmy możeliwe sytuacje na wejściach układu:
_X1
_X2
SUMA
PRZENIESIENIE
0
0
0
0
0
1
1
0
1
0
1
0
1
1
0
1
?
W takim razie znając założenie możemy zbudować tablicę Karnough:
Tabela dla SUMA
_X1 \ _ X2
0
1
0
0
1
1
1
0
W takim razie formuła ma postać:
X1~X2 + ~X1X2
(nie nastąpila minimalizacja układu)
Tabela dla P – OUT
_X1 \ _ X2
0
1
0
0
0
1
0
1
W takim razie formuła ma postać:
X1X2
(nie nastąpila minimalizacja układu)
Gdy przedstawimy to na bramkach ligicznych układ wygłąda następująco:
Zadanie 2
Zbudować sumotor pełny – 2 słowa 1-bitowe
Chcemy zbudować sumotor pełny. Jest to układ podobny do sumotora połówkowego z tą róznicą, że posiada dodatkowe wejście P – IN będące
informacją pochodzącą z innego sumatora (jego wyjścia P – out).
P - IN
_X1
_X2
SUMA
PRZENIESIENIE
0
0
0
0
0
0
0
1
1
0
0
1
0
1
0
0
1
1
0
1
1
0
0
1
0
1
0
1
0
1
1
1
0
0
1
1
1
1
1
1
?
W takim razie znając założenie możemy zbudować tablicę Karnough:
Tabela dla SUMA
P-IN X1 \ X2
0
1
_00
0
1
_01
1
0
_11
0
1
_10
1
0
Formula wygląda następująco:
(~P-IN)(~X1)(X2)+(~P-IN)(X1)(~X2)+(P-IN)(X1)(X2)+(P-IN)(~X1)(~X2)
Tabela dla P-OUT
P-IN X1 \ X2
0
1
_00
0
0
_01
0
1
_11
1
1
_10
0
1
Formula wygląda następująco:
(P-IN)(X1) + (X1)(X2) + (P-IN)(X2)
Gdy przedstawimy to na bramkach ligicznych układ wygłąda następująco:
Zadanie 3
Zbudować sumotor pełny – 2 słowa 2-bitowe
Aby zbudować układ dodający dwa słowa swubitowe łączymy szeregowo dwa sumatory. Na wejścia pierwszego będą podane najmłodsze bity
słów A i B (A
0
, B
0
). Na wejście drugiego sumatora podane zostaną bity A
1
, B
1
.
Schemtycznie idea tego połączenia wygląda tak:
Przy budowie tego układu koryzstamy ze schematu z zadanie 2. Po zbudowaniu układ wygląda następująco.
SUMATOR
A0 B0
P-IN
0
S
0
P-OUT
0
SUMATOR
A1 B1
P-IN
1
S
1
P-OUT
1
SUMATOR 0
SUMATOR 1
miejsce styku sumatorów
Zadanie 4
Zbudować układ mnożący – 2 słowa 2-bitowe
Układ mnożący przyjmuje dwa dwubitowe słowa. W takim razie przyjmuje na wejście dwie liczby z zakresu 0-3. W takim razie wynik będzie
się mieścił w zakresie 0-9. Żeby przedstawić wszystkie liczby z tego zakresu potrzebujemy układu który będzie miał czterobitowe wyjście.
Zbudujmy tabele stanów:
A
A
1
A
0
B
B
1
B
0
W = A*B
W
3
W
2
W
1
W
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1
0
0
0
0
0
0
0
0
2
1
0
0
0
0
0
0
0
0
0
3
1
1
0
0
0
0
0
1
0
1
0
0
0
0
0
0
0
0
1
0
1
1
0
1
1
0
0
0
1
1
0
1
2
1
0
2
0
0
1
0
1
0
1
3
1
1
3
0
0
1
1
2
1
0
0
0
0
0
0
0
0
0
2
1
0
1
0
1
2
0
0
1
0
2
1
0
2
1
0
4
0
1
0
0
2
1
0
3
1
1
6
0
1
1
0
3
1
1
0
0
0
0
0
0
0
0
3
1
1
1
0
1
3
0
0
1
1
3
1
1
2
1
0
6
0
1
1
0
3
1
1
3
1
1
9
1
0
0
1
Zbudujmy tabele Karough dla każdego z bitów wynikowych.
Dla W
0
A
1
A
0
\
B
1
B
0
_00
_01
_11
_10
_00
0
0
0
0
_01
0
1
1
0
_11
0
1
1
0
_10
0
0
0
0
Formuła: A
0
B
0
Dla W
1
A
1
A
0
\
B
1
B
0
_00
_01
_11
_10
_00
0
0
0
0
_01
0
0
1
1
_11
0
1
0
1
_10
0
1
1
0
Formuła: A
1
~B
1
B
0
+ A
1
~A
0
B
0
+ ~A
1
A
0
B
1
+ A
0
B
1
~B
0
Dla W
2
A
1
A
0
\
B
1
B
0
_00
_01
_11
_10
_00
0
0
0
0
_01
0
0
0
0
_11
0
0
0
1
_10
0
0
1
1
Formuła: A
1
~A
0
B
1
+ A
1
B
1
~B
0
Dla W
3
A
1
A
0
\
B
1
B
0
_00
_01
_11
_10
_00
0
0
0
0
_01
0
0
0
0
_11
0
0
1
0
_10
0
0
0
0
Formuła: A
1
A
0
B
1
B
0
Przedstawmy to na schemacie:
Wnioski:
–
Tabele Katnough dobrze sprawdzają się do projektowania tego typu układów
–
Jeżeli chcemy zapewnić dowolną skalowalność sumatora (dodwanie słów dowolnej długości) musimy zastosować sumator pełny.
Wykorzystane tam wejście przeniesienia umożliwia łączenie sumatorół w szereg.
–
Przy konstruowaniu układu liczące należy pamiętać o tym, że wyniki rosną szybciej niż przy dodawaniu. Aby przedstawić prawidłowo wynik
potrzeba większej ilości wyjść niż wejść.