Wat is de redenering voor de rekenkundige functies op de 74181?

Ik begrijp niet waarom de 74181 werkt zoals hij werkt. bieden de volledige set logische functionaliteit (AND, NAND, OR, NOR, XOR, shift), maar de rekenkundige functies zijn niet zo duidelijk. Het bevat bijvoorbeeld niet A - B en A + B in dezelfde modus.

Kunt u wat achtergrondinformatie geven over hoe het is ontworpen?

Opmerkingen

  • goede vraag, maar ik denk niet ' dat een van ons chiphacker-gebruikers een van de TI-motieven zou kennen die verder gaan dan wat in de datasheet of op Wikipedia staat en.wikipedia.org/wiki/74181
  • @Jason: bedankt voor je opmerking. waar is dan de goede plek voor deze vraag?
  • niet zeker … neem contact op met een TI-verkoopvertegenwoordiger? misschien kunnen ze u in contact brengen met een van de oudgedienden die in de jaren 70 aan de 74181 werkten ' s.

Antwoord

Ik weet dat dit een oude vraag is, maar ik heb onlangs de 74181 reverse-engineered en kan in detail uitleggen waarom het de functies heeft het doet.

De 74181 is een 4-bits ALU-chip die 16 logische functies en 16 rekenkundige functies biedt op de operanden A en B.Veel van de logische functies zijn wat je zou verwachten (EN, OF, XOR), maar er zijn ook ongebruikelijke zoals A OR NOT B. De rekenkundige functies zijn nog vreemder. Hoewel je A PLUS B en A MINUS B hebt, lijken sommige, zoals (A OF B) PLUS (A EN NIET B), behoorlijk willekeurig.

Er is eigenlijk een reden voor deze reeks bewerkingen. De logische functies bieden alle 16 Booleaanse functies f (A, B). De rekenkundige functies komen allemaal neer op A PLUS f (A, B) PLUS carry-in.

Stap terug om te zien waarom er 16 zijn. functies. Als je een Booleaanse functie f (A, B) hebt op invoer van één bit, zijn er 4 rijen in de waarheidstabel. Elke rij kan 0 of 1 uitvoeren. Er zijn dus 2 ^ 4 = 16 mogelijke functies. Breid deze uit tot 4 bits, en dit zijn precies de 16 logische functies van de 74181, van triviale 0 en 1 tot verwachte logica zoals A EN B tot gekunstelde bewerkingen zoals NIET A EN B.

De rekenkundige functies zijn gewoon deze 16 functies toegevoegd aan A met de carry-in toegevoegd. Bijvoorbeeld: als f (A, B) = B, krijg je A PLUS B PLUS carry-in. Als f (A, B) = NOT B, krijg je A PLUS NOT B PLUS carry-in, die in twee “s-complement logica verandert in A MINUS B MINUS 1 PLUS carry-in.

Andere rekenkundige functies ncties vergen wat meer analyse. Stel dat f (A, B) = NIET (A OF B). Dan zal elk bit van A PLUS f (A, B) altijd 1 zijn, behalve in het geval dat A 0 is en B is 1. Dus het resultaat is A OF NIET B. Hoewel je optelt, is het resultaat een logische functie. De andere vreemde rekenkundige functies kunnen op dezelfde manier worden verklaard.

Een ding om op te merken is dat A PLUS A je naar links verschuift, maar er is geen manier om rechts te verschuiven op de 74181.

In zijn implementatie heeft de 74181 vier selectielijnen die bepalen welke van de 16 f (A, B) -functies worden gebruikt. De eerste helft van het circuit van de chip berekent de vier 1-bit sommen van A met f (A, B). (Het creëert met name de Generate en Propagate signalen die worden gebruikt voor carry lookahead . Hierdoor kan de 74181 parallel werken in plaats van een rimpel-carry te gebruiken.) De tweede helft van het circuit van de chip genereert alle carrys parallel en berekent de uiteindelijke som.

Intern worden de logische functies geïmplementeerd door optelling uit te voeren met de interne dragers, alle geforceerd hoog door de M-lijn: A PLUS f (A, B) met alle dragers. Het is eenvoudig om te zien dat dit nog steeds 16 unieke logische functies genereert. Het verandert echter de volgorde, en daarom is er, als je naar het gegevensblad kijkt, geen duidelijk verband tussen de logische functies en de rekenkundige functies.

Als je de interne onderdelen van de 74181 wilt begrijpen, kijk dan eerst naar de 7483 4-bits opteller, die twee jaar eerder uitkwam. Deze gebruikt de dezelfde carry-berekeningstechnieken, maar is eenvoudiger te begrijpen omdat het één functie biedt, niet 32. Je kunt de 74181 beschouwen als de generalisatie van de 7483.

Antwoord

A minus B minus 1 wordt gebruikt voor aftrekken, en het complement van de carry-vlag kan worden gezien als een leenvlag.

Opmerkingen

  • In feite gebruiken zelfs AVRs dit – ze hebben geen instructie om direct toe te voegen (alleen direct aftrekken) omdat je de ene gemakkelijk in de andere kunt converteren. Als beide waarden uit registers komen dan beide zo b en add zijn aardig en snel, maar één is nog steeds niet strikt noodzakelijk.
  • Ja, zie stackoverflow.com/questions/1337831/…

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *