ALU - Sčítačka/odčítačka
Sčítačka je podstatná část ALU. Po určitých úpravách z ní můžeme udělat dokonce i odčítačku. Začneme jednoduše, a to s jedno bitovou verzí.
Half-adder (1 bit adder)
Pravdivostní tabulka pro half-adder vypadá následovně.
A | B | OUT | COUT |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 1 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 1 |
Pomocí karnaughovy mapy nebo i logiky (odkoukání) můžeme zjistit, že sčítání (OUT
) je vlastně XOR
a COUT
je jenom AND
. Takže half-adder vypadá následovně.
Full-adder
Full-adder využívá half adder a pomocí něj přijímá další argument a to CIN
, neboli carry in.
Pravdivostní tabulka pro full-adder vypadá následovně.
CIN | A | B | OUT | COUT |
---|---|---|---|---|
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 |
Jediné, co tedy uděláme je, že přidáme half-adder 2 krát, jeden na A+B
a druhý na výsledek z prvního X
a CIN
, neboli X+CIN
.
COUT
half-adderů by se měly sčítat, ale jelikož nemůže nastat případ, kdy jsou oba dva COUT
1
, tak nám stačí OR
. Taky se nemusíme bát přetečení, jelikož při sčítání 3 bitů se hodnota vždy vejde do 2 bitů (maximální hodnota je 3).
Odčítačka
Pro pochopení odčítačky si musíme říct, co jsou to záporná čísla. Záporná čísla můžeme v binárce vyjadřovat mnoho způsoby, ale nejčastější je dvojkový doplněk.
Dvojkový doplněk (two's complement)
Když pracujeme s n-bitovými čísly, tak pracujeme s tělesem \(Z_{2^n}^+\). Chceme vytvořit taková pravidla, že budeme moct pomocí sčítání odčítat.
- Pro každé kladné \(b^+\) musí existovat takové \(b^-\), aby platitlo \(a-b^+ = a + (-b^+) = a + b^-\).
- Taky musí platit \(b^+ + b^- = 0\)
Potřebujeme tedy najít aditivní inverzi
\(b^- = 2^n - b^+ = (2^n - 1) - b^+ + 1\)
\((2^n - 1)\) je řetězec samých jedniček a odečtením od takové hodnoty nikdy nenastane žádný přenos a odečtená hodnota se touto operací jednoduše zneguje. Dostáváme tedy pravidlo pro výpočet opačného čísla a to: \(b^- = \overline{b^+} + 1\)
Rozdělíme tak těleso na dvě poloviny na zápornou a nezápornou. Viz. obrázek
Zkráceně dvojkový doplněk spočívá ve vyhrazení prvního bitu pro znaménko. 1
znamená -
a 0
znamená +
s tím, že jsou u negativních čísel znegované bity a poté přičtena 1
. Pochopíte z následného příkladu.
Dvojková soustava | Decimální soustava |
---|---|
000 | 0 |
001 | 1 |
010 | 2 |
011 | 3 |
100 | -4 |
101 | -3 |
110 | -2 |
111 | -1 |
Jeho hlavní výhoda spočívá v odčítání, jelikož pomocí tohoto znázornění platí následující: \(A-B = A + \overline{B} + 1\)
Tuto funkcionalitu tedy neimplementujeme nějak zvlášť, ale pomocí sčítačky, kde nastavíme CIN
na 1
a znegujeme vstup B
.