Zelfstudie practicum 3 3.4 Converteer de volgende getallen van het decimale talstelsel naar het binaire talstelsel. Gebruik zo min mogelijk cijfers, m.a.w., schrijf geen ’leading zeros’ op. (a) 3 (b) 25 (c) 345 (d) 5643 3.5 Een half adder is een circuit dat twee 1–bits getallen bij elkaar kan optellen. Aangezien het resultaat twee bits breed is, heeft een half adder twee uitgangen. Ontwerp een 2–level circuit dat 2–bits getallen kan optellen. 3.6 Converteer de volgende getallen van het binaire talstelsel naar het decimale talstelsel. Je mag ervan uitgaan dat alle getallen positief zijn. (a) 1011 (b) 11001101 (c) 111111 (d) 0011001111 3.7 Gebruik half adders om de functionaliteit van een full adder te implementeren. 3.8 In deze opdracht onderzoeken we hoe een binaire vermenigvuldiging er uit ziet. We gaan uit van unsigned binaire getallen. (a) Stel we hebben een getal A in een binaire representatie. Wat is het effect als we achter deze binaire representatie een 0 plakken? Bijvoorbeeld, stel A 0110. Nu plakken Wat is het effect als we k nullen achter we een 0 achter A: A 01100. A plakken? (b) Aan de hand van de observatie die je gedaan hebt in onderdeel (a) moet je nu in staat zijn om A te vermenigvuldigen met binaire getallen waarvan slechts één bit op 1 staat. Deze kennis is genoeg om vermenigvuldiging in het binaire domein uit te voeren. Immers, elk binair getal kan gezien worden als de optelling van een aantal andere binaire getallen waarvan maar één bit op 1 staat. Voer de volgende vermenigvuldiging in het binaire domein uit: 110 101. (c) Hoeveel bits wordt het resultaat in onderdeel (b)? Kun je dat generaliseren tot gevallen waarin de twee getallen respectievelijk M en N bits breed zijn? 47 3.9 Geef de two’s complement representatie van de volgende getallen. Geef ook aan hoeveel bits je minimaal nodig hebt. (a) –3 (b) –4 (c) 8 (d) –345 3.10 Voer de volgende (binaire) optellingen uit. Geef voor elk getal, inclusief het resultaat, de decimale waarde. De binaire getallen zijn two’s complement getallen. Je mag ervan uitgaan dat indien beide getallen n bits zijn, het resultaat ook n bits is: breek het resultaat af op n bits. (a) 011 + 111 (b) 00110 + 11001 (c) 11100 + 11010 Wat valt je op aan de bovenstaande optellingen? 3.11 We gaan in deze opgave een circuit ontwerpen dat zowel kan optellen als aftrekken. We gaan hierbij uit van een ripple carry adder en van two’s complement getalrepresentaties. (a) Teken een 3–bits ripple carry adder. Je mag hierbij gebruik maken van half adders en full adders. (b) Gegeven twee positieve getallen A en B, beide in de two’s complement representatie. Pas je ripple carry adder aan zodat deze in staat is om A en B bij elkaar op te tellen en om B van A af te trekken. De laatste operatie vindt plaats indien een signaal ’substract’ gelijk is aan 1. (Tips: denk aan opgave 3.10. Met welke poort kun je verder een signaal conditioneel inverteren?) 3.12 Gegeven twee two’s complement getallen, A en B. A en B zijn beide twee bits breed. (a) Welke decimale getallen kunnen door een twee bits breed two’s complement getal worden gerepresenteerd? We gaan een circuit ontwerpen dat A en B met elkaar kan vergelijken; een zogenaamde comparator. De uitgang van deze comparator is ook een two’s complement getal dat het resultaat van de vergelijking weergeeft. Indien A B, dan zal dit getal gelijk zijn aan –1. Als A B, dan is het getal gelijk aan 1. Indien A en B gelijk zijn, dan zal het getal gelijk zijn aan 0. (b) Hoeveel uitgangen heeft de comparator? (c) Stel de waarheidstabel op van de comparator. (d) Geef een implementatie van de comparator. 48 3.13 Een circuit heeft vier ingangen waarop een two’s complement getal wordt gezet. Het circuit kan detecteren of de absolute waarde van het aangeboden getal een priem–getal is of niet. Neem in deze opgave aan dat 1 ook een priem–getal is. Ontwerp het circuit. 49 50