A táblázatok listája
4. Bináris számok kivonása
Ha már kivonás, akkor nézzük ennek is az elméletét. A bináris számok kivonása az összeadáshoz hasonlóan a helyi értékeken elvégzett műveletből és az átvitel/áthozat kezeléséből áll. Míg az összeadásnál egy helyi értéken átvitel keletkezik, amit „átviszünk” a következő helyi értékre, addig a kivonásnál, ha a kivonandó nagyobb, mint az az érték, amiből ki szeretnénk vonni, akkor „kölcsönveszünk”, „áthozunk” egy helyi értéknyit a következő, magasabb helyi értékről. Ezért itt „áthozat”-ról, „borrow”-ról (melynek jelentése kölcsön) beszélünk. Nézzünk is rögtön egy példát.
242 1111 0010
-125 -0111 1101
117 0111 0101
Jobbról haladva a kivonandó bitpárosok:
0. 0- → 2- → 1 és keletkezik áthozat 1
1 1
1.
1-0
→ 1-1
→ 0 van áthozat és nem keletkezik 0
2.
→ 0 van áthozat és keletkezik 0
4.
1-1
→ 3-2
→ 1 van áthozat és keletkezik 1
5.
1-1
→ 3-2
→ 1 van áthozat és keletkezik 1
6.
1-1
→ 3-2
→ 1 van áthozat és keletkezik 1
7.
1-0
→ 1-1
→ 0 van áthozat és nem keletkezik 0
Korábban gyakran tapasztaltam, hogy a hallgatók könnyen megértik az egy helyi értéken keletkező átvitel szükségességét, ha a 2 összeadandó szám összege nagyobb, mint a számrendszer alapszáma. Ugyanakkor nem szokott magától értetődő lenni az az eset, amikor 0-ból kivonunk 1-et, illetve az, hogy ilyenkor miért és hol/honnan keletkezik az ún. áthozat. Ezért nézzük a bitpárok kivonását. Kiindulásként, mint korábban az összeadásnál, 2 bit kivonására is felírhatunk egy igazságtáblát (lásd ).
4-29. táblázat - 4-29. táblázat
Amikor egy helyi értékes számrendszerben egy kisebb számból kivonunk egy nagyobbat, nem tudjuk elvégezni a műveletet és leírni a maradékot, csak ha a kisebb számot egy helyi értékkel megnöveljük. Vegyük ezt az esetet a jól ismert tízes számrendszerben.
Ha például a 2-ből kivonunk 5-öt, akkor -3-ot kapunk, és valósában ezzel a negatív számmal kell valamit kezdenünk.
Ha felírjuk a fenti 242-öt és a kivonandó 125-öt a jól ismert kettes alapú polinom alakban, akkor a következőt kapjuk:
Vizsgáljuk meg a legalacsonyabb és az azt megelőző helyi értéken a kivonást, vagyis nézzük az alábbi részletet:
A pirossal kiemelt részt írhatnánk a következő módon is (most csak egyszer és csak a példa kedvéért):
Amit csináltunk, az az, hogy az első hatványon lévő tag együtthatójából „elvettünk” (kölcsönvettünk), és az eggyel alacsonyabb hatványkitevőjű, a 0. hatványon lévő tag együtthatójához adtunk (persze helyiérték-helyesen, amivel ez az együttható kettő lett). Azt beláthatjuk, hogy a kisebbítendő polinom értéke ezzel nem változott, viszont a korábban „kisebb számból kell kivonni egy nagyobbat” helyzet megváltozott, hiszen ezen a helyi értéken most már (pozitív maradékot adóan), a kisebbítendőből kivonható a kivonandó. Azt a polinom-átrendezést, amikor kölcsönvettünk a magasabb helyi érték együtthatótól, áthozatnak, vagy borrow-nak nevezzük. De ezt ilyen részletesen nem szoktuk leírni, csak fejben megjegyezzük, hogy a következő helyi értéken mostantól az együttható eggyel kevesebb.
A 0-s helyi értéken elvégezzük a most már elvégezhető kivonást (102 – 1 = 210 – 1 = 1, ami jól látjuk, hogy azt jelenti: kettőből kivonunk egyet tehát az eredmény egy lesz). Ezután a nem módosított alakú polinomnál az 1-es helyi értéken elvégezzük az áthozat műveletét (1–1=0), és a keletkező részeredményből csak ezután lehet az eredeti kivonást is elvégezni (0–0=0), és így tovább. A következő 2 bitpár (a 0-val kezdve jobbról a számozást), a kettes és hármas helyi értékűek azért érdekesek, mert itt kétszer is továbbadjuk az áthozat-igényünket, amit csak a negyedik kisebbítendő helyi érték tud kiszolgálni, bár itt is keletkezik majd áthozat, ami, mint igény, egészen a hetedik bitpár kivonásáig tart.
242 1111 0010
-125 -0111 1101
117 0111 0101
4.1. „Félkivonó”
Lássunk neki a tervezésnek ugyanúgy, mint azt az összeadónál tettük. A ban felírtuk a félkivonó igazságtábláját.
(Emlékeztetőül: a félkivonó csak a kisebbítendőt és a kivonandót kezeli bemenetként, és az eredményt, valamint az áthozatot adja kimenetként.)
4-30. táblázat - 4-30. táblázat
X
Avatott szemmel rögtön látjuk, hogy az eredményt egy kizáró vagy kapuval könnyen megvalósíthatjuk, hiszen ez éppen az ő igazságfüggvénye, vagyis:
A az XY, vagyis egy és kapu igazságfüggvényét tartalmazza:
4-32. táblázat - 4-32. táblázat
Ha az X bemenetet negáljuk, akkor a következő, a ban szereplő igazságtáblához jutunk:
bit Y bit Y
1 0 0
1 1 1
0 0 0
0 1 0
Ez pedig éppen a keresett Bout-t adja, vagyis:
Fentiek alapján a félkivonó kapcsolási rajza a látható.
429. ábra
-4.2. Teljes kivonó
Ha azt gondoljuk, hogy 2 félkivonóból összerakható egy teljes kivonó, mint korábban a teljes összeadónál láttuk, akkor megérzéseink helyesek, ahogy a is mutatja.
430. ábra
-És újra itt a régi dilemma, hogy hogyan lehetne kevesebb típusú tokból megoldani a kapcsolást, persze csak úgy, hogy a működési logika ne változzék. Elsőként vizsgáljuk meg a vagy kaput, mint korábban tettük ezt az összeadásnál. Vajon biztosan lehetünk-e abban, hogy a vagy kapu kimenetére sohasem érkezik 2 db 1-es?
A B1-es áthozat csak akkor ad egyet, ha X=0 és Y=1, a B2-es áthozat pedig csak akkor, ha Z1=0 és Bin=1, azaz van Bin és Z1 nem igaz. Z1 pontosan akkor hamis, ha a bemenetek (X és Y) azonosak, ami ellentmond az X=0, Y=1 első feltételünknek.
Ha ebben a „szofisztikus” érvelésben nem vagyunk biztosak, akkor mindig rendelkezésre áll a jó öreg kibővített igazságtábla, amibe (mint belső jeleket) a B2 bemeneteit is felvesszük és szorgalmasan és főleg pontosan kitöltjük (lásd ).
Az a kérdés tehát, hogy B1 és B2 egyszerre lehet-e 1-es. A táblázatban pirossal jelöltük, ahol a B1 igaz, kékkel pedig, ahol a B2 igaz. Látható, hogy ez egyszerre nem teljesülhet, tehát a vagy kapu kiváltható egy xor kapuval.
Mi a helyzet a negációval, amiből kettő is van az áramkörünkben?
A (ún. ekvivalenciatáblázat) megmutatja, hogy nand kapukkal szinte minden kaput meg lehet valósítani. A táblázatból látszik, hogy egy nand kapuból könnyen lehet a bemenetek összeköttetésével invertert készíteni, valamint az és kapukat lecserélhetjük 2 sorba kötött nand kapura.
Tegyük meg, és máris csak 2 típusú kapuval kell dolgoznunk. A szerint akár a xor kapu is kiváltható lenne nand kapuval, azonban 2 db xor kaput kiváltani 10 db nand kapuval már mélyen sérti a tervezői jó ízlést, úgyhogy marad a nand kapuk használata az and kapuk és az inverterek helyett.
431. ábra
-Az új kapcsolásunk tehát a szerinti:
432. ábra
-4.3. A teljes kivonó áramköri megvalósítása
Tehát kell a már jól ismert 74LS136-os IC, ami 4 db xor kaput tartalmaz, valamint 2 db 74LS08-as IC-ből 6 db nand kapu a teljes megépítéshez. Ha megterveztük a huzalozást, a szerinti eredményre jutunk, ahol sárgával a komponensoldalt, pirossal a forrasztási oldalt, szürkével egy szabadon írható ún. felirat maszkot jelöltünk.
433. ábra
-Ha a beültetendő alkatrészeket is feltüntetjük, akkor kapcsolásunk szerint néz ki.
434. ábra
-Kapcsolásunkon elhelyezhetünk néhány kapcsolót, mellyel a bemenet vezérelhető, és néhány ledet, amivel pedig láthatóvá válik a kimenet.