Zelfstudie practicum 3 Uitwerkingen
3.4 We passen de opeenvolgende deling methode toe.
(a) 11 (b) 11001 (c) 101011001 (d) 1011000001011
3.5
Een circuit dat twee bits kan optellen heeft vier ingangen. Het resultaat van een twee–
bits optelling is maximaal drie bits breed. Het circuit heeft dus drie uitgangen. De waarheidstabel van het gevraagde circuit is:
a1 a0b1 b0 c s1 s0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 1 1 0 1 0 0 0 0 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 1 1 1 1 0 0 1 0 0 0 0 1 0 1 0 0 1 0 1 1 1 0 1 0 1 0 0 1 0 1 1 1 0 1 1 1 0 0 0 1 1 1 1 0 1 1 0 0 1 1 1 0 1 0 1 1 1 1 1 1 1 0
Per uitgang stellen we een Karnaugh–diagram op:
a0
a1
b0 b1
a0
a1
b0 b1
a0
a1
b0 b1
c s1
s0
1 1
1
1
1
1
1
1 1
1 1
1
1 1
1
1
1 1
1
1
1 1
a0
a1
b0 b1
Uit deze Karnaugh–diagrammen kunnen we de volgende expressies worden afgeleid:
c a0 a1 b0 a0 b0 b1 a1 b1
s1 a0 a1 b0 b1 a0 a1 b0 b1 a0 a1 b1 a1 b0 b1 a0 a1 b1 a1 b0 b1
s0 a0 b0 a0 b0
Uit deze expressies kunnen we de volgende 2–level implementatie afleiden:
a0a1 b0 a0b1 b0 a1 b1
c
s1
a1b0 b1 a0a1 b0b1
a0a1 b0b1
a0a1 b1 a1b0 b1 a0a1 b1
s2 a0
b0
a0 b0
3.6 (a) 11 (b) 205 (c) 63 (d) 207
3.7 Je hebt twee half adders nodig en één OR–poort:
HA
HA
A B Cin
S Cout
Deze schakeling werkt omdat een half adder nooit zowel de carry als de som tegelijk hoog kan maken. Dit betekent dat slechts één van de twee half adders in bovenstaande schakeling de carry hoog kan maken. M.a.w. de OR–poort in bovenstaande schakeling had vervangen kunnen worden door een XOR–poort.
3.8
(a) Het effect van het plakken van een 0 achter een binair getal is gelijk aan het vermenig- vuldigen van dat getal met 2. Als we k nullen achter A zetten, dan vermenigvuldigen we A met 2k.
(b) 110 101 110 (100 001) 110 100 110 001
11000 00110 11110
(c) Het resultaat van de vermenigvuldiging in onderdeel (b) is 5 bits breed. In het slechtste geval zal een vermenigvuldiging van een M bits getal met een N bits getal leiden tot een M N bits breed resultaat.
We zien dat vermenigvuldigen in het binaire domein bestaat uit het optellen van ver- schoven versies van één van de gegeven getallen.
(d) 10 bits, 1010100111
3.10 Om de waarde van een negatief two’s complement getal te bepalen, is het handig om eerst de absolute waarde van dit getal te bepalen. Dit kan worden gedaan door het com- plement van het getal te nemen en daar 1 bij op te tellen.
(a) 011+111 = 010. Hierbij is, zoals afgesproken, het carry bitje weggelaten. Omgezet in decimale getallen staat er: 3 + –1 = 2.
(b) 00110 + 11001 = 11111. Waarbij 00110 = 6, 11001 = –7 en 11111 = –1. Dus:
6 + –7 = –1.
(c) 11100 + 11010 = 10110. 11100 = –4, 11010 = –6, 10110 = –10. Dus: –4 + –6 = –10.
Als je two’s complement getallen gebruikt ter representatie van positieve/negatieve ge- tallen, dan kun je met een adder zowel optellen als aftrekken.
3.11 (a)
HA FA
FA
A0 B0 A1 B1
A2 B2
cin cin
cout cout
cout (b)
FA FA
A0 B0 A1 B1
A2 B2
cin cin
cout cout
FA
cout cin
substract
Indien signaal substract gelijk is aan 1, dan moeten we de two’s complement represen- tatie van –B bij A optellen. De two’s complement representatie van B wordt verkregen door elk bit van B te inverteren, hetgeen door de XOR–poorten wordt gedaan indien
3.12
(a) Met een twee bits breed two’s complement getal kunnen de decimale waarden {–2, –1, 0, 1} worden gerepresenteerd.
(b) De uitgang van de comparator is ook een twee bits two’s complement getal.
(c) We noemen het two’s complement getal dat wordt geproduceerd door de comparator s. In dat geval kunnen we de volgende waarheidstabel opstellen:
a1 a0b1 b0 s1 s0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 1 0 0 1 1 0 1 0 1 0 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 0 1 1 1 0 1 1 0 0 0 1 1 1 0 0 1 1 1 1 0 1 0 0 0 1 0 1 1 1 1 1 1 0 0 1 1 1 1 0 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0
(d) Ter implementatie bepalen we eerst de Karnaugh–diagrammen van zowel s0 als s1.
a0
s1 s0
a0
Uit de Karnaugh–diagrammen kunnen we de volgende expressies afleiden:
a1b1 a0b0b1 a0a1b0
s0 a0b0 a0b0 a1b1 a1b1
Deze expressies kunnen we herschrijven tot:
a1b1 a0b0(a1 b1) s0 a0 b0 a1 b1
Hierbij staat voor een XOR–operatie. Bovenstaande expressies geven de volgende poort–implementatie:
s1
s0 a0
b0
b1 a1
b1 a1
a0 b0
a1 b1
3.13 Zoals gewoonlijk beginnen we met het opstellen van een waarheidstabel.
abcd decimaal f
0000 0 0
0001 1 1
0010 2 1
0011 3 1
0100 4 0
0101 5 1
0110 6 0
0111 7 1
1000 –8 0
1001 –7 1
1010 –6 0
1011 –5 1
1100 –4 0
1101 –3 1
1110 –2 1
1111 –1 1
Hiervan kunnen we een Karnaugh–diagram tekenen:
0 0 0 1
0 0 1 0
1 1 1 1
1 1 1 1
a
b
c d