Não entendo por que o 74181 opera dessa maneira. Funciona fornecem o conjunto completo de funcionalidades lógicas (AND, NAND, OR, NOR, XOR, shift), mas suas funcionalidades aritméticas não são tão claras. Por exemplo, ele não contém A - B
e A + B
no mesmo modo.
Você poderia fornecer alguns antecedentes históricos sobre como ele foi projetado?
Comentários
- boa pergunta, mas eu não ' não acho que qualquer um de nós, usuários de chiphacker, conheceria algum dos motivos de TI além do que está na folha de dados ou na Wikipedia en.wikipedia.org/wiki/74181
- @Jason: obrigado pelo seu comentário. então, qual é o bom lugar para esta pergunta?
- não tenho certeza … verifique com um representante de vendas da TI? talvez ele possa colocá-lo em contato com um dos veteranos que trabalharam no 74181 em 1970 ' s.
Resposta
Eu sei que esta é uma pergunta antiga, mas recentemente fiz a engenharia reversa do 74181 e posso explicar em detalhes por que ele tem as funções ele faz.
O 74181 é um chip ALU de 4 bits que fornece 16 funções lógicas e 16 funções aritméticas em seus operandos A e B. Muitas das funções lógicas são o que você pode esperar (AND, OR, XOR), mas também existem alguns incomuns como A OU NÃO B. As funções aritméticas são ainda mais estranhas. Embora você tenha A MAIS B e A MENOS B, alguns como (A OU B) MAIS (A E NÃO B) parecem bastante aleatórios.
Na verdade, há um motivo para esse conjunto de operações. As funções lógicas fornecem todas as 16 funções booleanas f (A, B). Todas as funções aritméticas se resumem em A MAIS f (A, B) MAIS transporte.
Volte para ver por que existem 16 funções. Se você tiver uma função booleana f (A, B) em entradas de um bit, há 4 linhas na tabela verdade. Cada linha pode produzir 0 ou 1. Portanto, há 2 ^ 4 = 16 funções possíveis. Estenda-as a 4 bits, e essas são exatamente as 16 funções lógicas do 74181, de 0 e 1 triviais à lógica esperada como A AND B e operações planejadas como NOT A AND B.
As funções aritméticas são simplesmente essas 16 funções adicionadas a A com o transporte adicionado. Por exemplo, se f (A, B) = B, você obtém A MAIS B MAIS transporte. Se f (A, B) = NÃO B, você ganha A MAIS NOT B PLUS carry-in, que na lógica de complemento de dois s se transforma em A MINUS B MENOS 1 PLUS carry-in.
Outro fu aritmético as ações exigem um pouco mais de análise. Suponha que f (A, B) = NÃO (A OU B). Então, cada bit de A MAIS f (A, B) sempre será 1, exceto no caso em que A é 0 e B é 1. Portanto, o resultado é A OU NÃO B. Mesmo que você esteja fazendo adição, o resultado é um função lógica. As outras funções aritméticas estranhas podem ser explicadas de forma semelhante.
Uma coisa a se notar é que A MAIS A fornece deslocamento para a esquerda, mas não há como fazer deslocamento para a direita no 74181.
Em sua implementação, o 74181 tem quatro linhas de seleção que selecionam quais das 16 funções f (A, B) são usadas. A primeira metade dos circuitos do chip calcula as quatro somas de 1 bit de A com f (A, B). (Especificamente, ele está criando os sinais Gerar e Propagar que são usados para carry lookahead . Isso permite que o 74181 trabalhe em paralelo, em vez de usar um carry por ondulação.) A segunda metade do circuito do chip gera todos os carregamentos em paralelo e calcula a soma final.
Internamente, as funções lógicas são implementadas realizando a adição com os carregamentos internos todos forçados para cima pela linha M: A MAIS f (A, B) com todos os carregamentos. É simples ver que isso ainda gera 16 funções lógicas exclusivas. No entanto, ela permuta a ordem, e é por isso que, se você olhar a folha de dados, não há conexão óbvia entre as funções lógicas e as funções aritméticas.
Se você quiser entender as partes internas do 74181 “s, primeiro olhe para o 7483 somador de 4 bits, que saiu dois anos antes. Ele usa o mesmas técnicas de computação de transporte, mas é mais simples de entender, pois fornece uma função, não 32. Você pode pensar no 74181 como a generalização do 7483.
Resposta
A minus B minus 1
é usado para subtração, e o complemento do sinalizador de transporte pode ser visto como um sinalizador de empréstimo.
Comentários
- Na verdade, mesmo os AVRs usam isso – eles não têm uma instrução add imediato (apenas subtrair imediato), pois você pode converter facilmente um em outro. Se ambos os valores vierem de registradores então ambos su be add são bons e rápidos, mas ainda não é estritamente necessário.
- Sim, consulte stackoverflow.com/questions/1337831/…