Care este raționamentul pentru funcțiile aritmetice pe 74181?

Nu înțeleg de ce 74181 funcționează așa cum funcționează. oferă setul complet de funcționalități logice (AND, NAND, OR, NOR, XOR, shift), dar funcționalitățile sale aritmetice nu sunt atât de clare. De exemplu, nu conține A - B și A + B în același mod.

Ați putea furniza un istoric despre modul în care a fost proiectat?

Comentarii

  • întrebare bună, dar nu ' nu cred că vreunul dintre noi utilizatorii de chiphacker ar ști vreunul dintre motivele TI dincolo de ceea ce este în foaia tehnică sau pe wikipedia en.wikipedia.org/wiki/74181
  • @Jason: mulțumesc pentru comentariul dvs. atunci unde este locul potrivit pentru această întrebare?
  • nu sunteți sigur … consultați un reprezentant de vânzări TI? poate ar putea să vă pună în legătură cu unul dintre vechii timeri care au lucrat la 74181 în 1970 ' s.

Răspuns

Știu că este o întrebare veche, dar recent am proiectat 74181 și pot explica în detaliu de ce are funcțiile da.

74181 este un cip ALU pe 4 biți care oferă 16 funcții logice și 16 funcții aritmetice pe operanzii săi A și B. Multe dintre funcțiile logice sunt ceea ce vă puteți aștepta (ȘI, SAU, XOR), dar există și unele neobișnuite precum A SAU B. Funcțiile aritmetice sunt chiar mai ciudate. În timp ce aveți A PLUS B și A MINUS B, unele precum (A SAU B) PLUS (A ȘI NU B) par destul de aleatorii.

De fapt, există un motiv pentru acest set de operații. Funcțiile logice furnizează toate cele 16 funcții booleene f (A, B). Funcțiile aritmetice se reduc la A PLUS f (A, B) PLUS carry-in.

Pas înapoi pentru a vedea de ce sunt 16 funcții. Dacă aveți o funcție booleană f (A, B) pe intrările pe un bit, există 4 rânduri în tabelul adevărului. Fiecare rând poate genera 0 sau 1. Deci există 2 ^ 4 = 16 funcții posibile. Extindeți-le la 4 biți, iar acestea sunt exact cele 16 funcții logice ale 74181, de la 0 și 1 triviale la logica așteptată precum A ȘI B până la operații inventate ca NU A ȘI B.

Funcțiile aritmetice sunt pur și simplu acestea 16 funcții adăugate la A cu reportul adăugat. De exemplu, dacă f (A, B) = B, primiți A PLUS B PLUS carry-in. Dacă f (A, B) = NU B, primiți PLUS NOT B PLUS carry-in, care în două „s-complement logică se transformă în A MINUS B MINUS 1 PLUS carry-in.

Alte fu aritmetice funcțiile necesită o analiză ceva mai mare. Să presupunem că f (A, B) = NU (A SAU B). Apoi, fiecare bit A PLUS f (A, B) va fi întotdeauna 1, cu excepția cazului în care A este 0 și B este 1. Deci, rezultatul este A SAU NU B. Chiar dacă faceți adunare, rezultatul este un funcția logică. Celelalte funcții aritmetice ciudate pot fi explicate în mod similar.

Un lucru de remarcat este că A PLUS A vă oferă schimbarea la stânga, dar nu există nicio modalitate de a face schimbarea la dreapta pe 74181.

În implementarea sa 74181 are patru linii selectate care aleg care dintre cele 16 f (A, B) funcții sunt utilizate. Prima jumătate a circuitului cipului calculează cele patru sume de 1 bit ale lui A cu f (A, B). (Mai exact, creează semnalele Generare și propagare care sunt utilizate pentru carry lookahead . Acest lucru permite ca 74181 să funcționeze în paralel, mai degrabă decât să folosească un ripple carry.) A doua jumătate a circuitului cipului generează toate transporturile în paralel și calculează suma finală.

Intern, funcțiile logice sunt implementate prin efectuarea adunării cu transporturile interne, toate forțate în sus de linia M: A PLUS f (A, B) cu toate transporturile. Este simplu să vedem că acest lucru generează încă 16 funcții logice unice. Cu toate acestea, permite ordinea, motiv pentru care, dacă ne uităm la foaia tehnică, nu există o legătură evidentă între funcțiile logice și funcțiile aritmetice.

Dacă doriți să înțelegeți elementele interne 74181 „, mai întâi uitați la 7483 sumator de 4 biți, care a apărut cu doi ani mai devreme. aceleași tehnici de calcul de transport, dar este mai ușor de înțeles, deoarece oferă o funcție, nu 32. Puteți gândi la 74181 ca la generalizarea 7483.

Răspuns

A minus B minus 1 este utilizat pentru scădere, iar complementul steagului carry poate fi vizualizat ca un steag de împrumut.

Comentarii

  • De fapt, chiar și AVR-urile folosesc acest lucru – nu au o instrucțiune de adăugare imediată (doar scădere imediată), deoarece puteți converti cu ușurință una în alta. Dacă ambele valori provin din registre apoi amândoi su b și add sunt drăguțe și rapide, dar încă nu este strict necesar.
  • Da, consultați stackoverflow.com/questions/1337831/…

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *