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/…