Jaký je důvod pro aritmetické funkce na 74181?

Nerozumím, proč 74181 funguje tak, jak funguje. poskytují úplnou sadu logických funkcí (AND, NAND, OR, NOR, XOR, shift), ale její aritmetické funkce nejsou tak jasné. Například neobsahuje A - B a A + B ve stejném režimu.

Mohli byste poskytnout nějaké historické pozadí o tom, jak to bylo navrženo?

Komentáře

  • dobrá otázka, ale nemyslím si, že by někdo z nás chiphackerových uživatelů znal jakýkoli motiv TI nad rámec toho, co je v datovém listu nebo na wikipedii en.wikipedia.org/wiki/74181
  • @Jason: děkuji za váš komentář. kde je tedy dobré místo pro tuto otázku?
  • nejste si jisti … zkontrolovat u obchodního zástupce TI? možná by vás mohli kontaktovat s jedním ze starodávných pracovníků, kteří pracovali na 74181 v roce 1970 ' s.

Odpověď

Vím, že se jedná o starou otázku, ale nedávno jsem model 74181 zpětně vytvořil a mohu podrobně vysvětlit, proč má funkce to dělá.

Model 74181 je 4bitový čip ALU, který poskytuje 16 logických funkcí a 16 aritmetických funkcí na svých operandech A a B. Mnoho logických funkcí je to, co můžete očekávat (AND, OR, XOR), ale existují i neobvyklé jako A NEBO B. Aritmetické funkce jsou ještě podivnější. I když máte A PLUS B a A MÍNUS B, některé jako (A OR B) PLUS (A NE B) se zdají docela náhodné.

Ve skutečnosti existuje důvod pro tuto sadu operací. Logické funkce poskytují všech 16 booleovských funkcí f (A, B). Všechny aritmetické funkce se snižují na A PLUS f (A, B) PLUS.

Krok zpět, abyste zjistili, proč existuje 16 funkce. Pokud máte na jednobitových vstupech booleovskou funkci f (A, B), jsou v tabulce pravdivosti 4 řádky. Každý řádek může mít výstup 0 nebo 1. Takže existuje 2 ^ 4 = 16 možných funkcí. Rozšířit tyto na 4 bity, a to je přesně 16 logických funkcí 74181, od triviální 0 a 1 přes očekávanou logiku jako A AND B až po vykonstruované operace jako NOT A AND B.

Aritmetické funkce jsou jednoduše tyto 16 funkcí přidaných do A s přidaným přenosem. Například pokud f (A, B) = B, získáte A PLUS B PLUS přenos. Pokud f (A, B) = NE B, získáte A PLUS NENÍ B PLUS carry-in, který se ve dvou „s-doplňkových logikách změní na A MINUS B MINUS 1 PLUS carry-in.

Jiná aritmetická fu funkce vyžadují trochu více analýzy. Předpokládejme, že f (A, B) = NE (A NEBO B). Pak bude každý bit A PLUS f (A, B) vždy 1, s výjimkou případu, kdy A je 0 a B je 1. Takže výsledek je A NEBO B. Výsledkem je A logická funkce. Další podivné aritmetické funkce lze vysvětlit podobně.

Jedna věc, kterou je třeba si všimnout, je, že A PLUS A vám dává levý posun, ale na 74181 neexistuje způsob, jak udělat pravý posun.

Při své implementaci má 74181 čtyři výběrové řádky, které vybírají, které z 16 f (A, B) funkcí jsou použity. První polovina obvodů čipu počítá čtyři 1-bitové součty A s f (A, B). (Konkrétně vytváří signály Generovat a Propagovat, které se používají pro carry lookahead . To umožňuje modelu 74181 pracovat paralelně, místo aby používal zvlněný přenos.) Druhá polovina obvodů čipu generuje všechny nosiče paralelně a vypočítává konečný součet.

Interně jsou logické funkce implementovány provedením sčítání s interním přenosem všech vynucených vysoko linií M: A PLUS f (A, B) se všemi přenosy. Je přímočaré vidět, že toto stále generuje 16 jedinečných logických funkcí. Nicméně to permutuje pořadí, a proto pokud se podíváte na datový list, není zřejmé spojení mezi logickými funkcemi a aritmetickými funkcemi.

Chcete-li porozumět vnitřním částem 74181, nejprve se podívejte na 7483 4bitovou sčítačku, která vyšla o dva roky dříve. Používá stejné techniky výpočtu, ale je jednodušší je pochopit, protože poskytuje jednu funkci, ne 32. 74181 si můžete představit jako zevšeobecnění 7483.

Odpověď

A minus B minus 1 se používá k odčítání a doplněk příznaku carry lze zobrazit jako příznak výpůjčky.

Komentáře

  • Ve skutečnosti to dokonce používají i AVR – nemají okamžitou instrukci pro přidání (pouze okamžité odčítání), protože je můžete snadno převést na jinou. Pokud obě hodnoty pocházejí z registrů pak oba su b a add jsou pěkné a rychlé, ale jeden stále není nezbytně nutný.
  • Ano, viz stackoverflow.com/questions/1337831/…

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *