DEV Community

Renan Marquetti
Renan Marquetti

Posted on

Como construir um computador do zero - Unidade Lógico Aritmética

Está parte do sistema é responsável pelo processamento lógico no nosso sistema, é onde de fato os dados são transformados, compostos e decompostos, até atingir o resultado desejado

Esse componente é o mais complexo do nosso sistema, porque agrega muitas regras de negocio em um único espaço

Está sessão do sistema é composta por 3 componentes, sendo eles:

  • Registrador A (ou Acumulador): é um registrador usado para persistir e guardar os resultados das operações do sistema
  • Registrador B: é o registrador auxiliar, usado para "memoria de trabalho", tem a função de receber o valor a será processado sobre o valor do Registrador A.
  • ULA: é de fato a onde ocorre o processamento, tem por objetivo processar os valores dos registradores A e B e armazenar novamente esse valor no registrador A

Registradores A e B

Os Registradores já foram abordados em artigos anteriores, e todas as suas conexões estão descritas na imagem acima

Unidade Lógica e Aritmética (ULA)

Este componente é capaz de processar os valores dos Registradores A e B de diversas formas diferentes, conseguimos fazer diversas operações, sendo elas:

  • Adição (ADD)
  • Subtração (SUB)
  • Lógica e (AND)
  • Lógica ou (OR)
  • Lógica ou exclusivo (XOR)
  • Lógica negação (NOT)

Os inputs ALU_0 e ALU_1, são utilizados para selecionar a operação deseja, veja a tabela a baixo

ALU_0 ALU_1 Operação
0 0 ADD/SUB
0 1 OR
1 0 AND
1 1 XOR/NOT

Observe que nos casos em que á mais de duas operações por seleção, será feito uma desambiguação em inputs específicos, portanto sendo necessário nos casos:

  • ADD/SUB: utilize o input N_SUB_ADD em 0 para SUB e 1 para ADD
  • XOR/NOT: utilize o input N_XOR_NOT em 0 para XOR e 1 para NOT

À também mais um input de entrada: ALU_OUT, server para liberar o resultado da operação para o BUS

Além desta, há mais uma saída: Carry_out, está saída é ativa quando o resultado das operações de soma ou subtração resultam em um overflow.

Este é o esquema desse componente:

Top comments (0)