14
Universidade Federal Rural de Pernambuco Unidade Acadêmica de Serra Talhada UNIDADE LÓGICA ARITMÉTICA - ULA Infraestrutura de Hardware FABRÍCIO DE MENESES LUNA

Ula

Embed Size (px)

DESCRIPTION

Unidade Logica Aritmetica e seus componentes

Citation preview

Page 1: Ula

Universidade Federal Rural de Pernambuco

Unidade Acadêmica de Serra Talhada

UNIDADE LÓGICA ARITMÉTICA - ULA

Infraestrutura de Hardware

FABRÍCIO DE MENESES LUNA

Page 2: Ula

UNIDADE LÓGICA ARITMÉTICA – ULA

INTRODUÇÃO

A unidade lógica e aritmética (ULA) ou em inglês Arithmetic Logic

Unit (ALU) é um circuito digital que realiza operações lógicas e aritméticas. A

ULA é uma peça fundamental da unidade central de processamento (CPU), e

até dos mais simples microprocessadores. É na verdade, uma "grande

calculadora eletrônica" do tipo desenvolvido durante a II Guerra Mundial, e sua

tecnologia já estava disponível quando os primeiros computadores modernos

foram construídos.

PROJETO

A unidade lógica aritmética deverá ser capaz de executar as seguintes operações, que serão selecionadas a partir dos códigos da tabela abaixo:

Seleção F u n ç ã o

S2 S1 S0

0 0 0 F = A + B

0 0 1 F = A - B

0 1 0 F = Complemento a 2 de B

0 1 1 F = A = B

1 0 0 F = A > B

1 0 1 F = A < B

1 1 0 F = A AND B

1 1 1 F = A XOR B

Entradas: 1. Dois vetores A e B de 4 bits (1 para sinal e 3 para o módulo) representando os operandos. Esses números são binários positivos ou negativos (complementados a 2). 2. Um vetor S de 3 bits representando o seletor da operação segundo a tabela exibida acima. Saídas: 1. Um vetor F de 4 bits representando o resultado da operação (para os casos em que a operação retorna um vetor). 2. Um sinal representando overflow (para as operações que podem gerar overflow) 3. Um sinal representado status (para as operações que retornam um booleano)

Page 3: Ula

Esquema de circuitos lógicos da ULA

Page 4: Ula

Componentes

Entradas

Dois vetores de (A e B) de 4 bits, sendo o primeiro bit de sinal (0 para

positivo e 1 para negativo). Caso o número seja negativo, deve-se usar

“Complemento a 2” para representa-lo

Chave seletora

Encarregada de determinar qual função será usada de a acordo com a

seleção, obedecendo o quadro a seguir:

Seleção F u n ç ã o

S2 S1 S0

0 0 0 F = A + B

0 0 1 F = A - B

0 1 0 F = Complemento a 2 de B

0 1 1 F = A = B

1 0 0 F = A > B

1 0 1 F = A < B

1 1 0 F = A AND B

1 1 1 F = A XOR B

Page 5: Ula

Display de 7 segmentos

Foi utilizado o esquema de display de7 segmentos para mostrar as

entradas (A e B), e também, para representar a saída. O display inserido a

esquerda, possui apenas a ligação com o bit de sinal de sua respectiva entrada

ou saída, caso o bit seja 1, o sinal do centro é aceso. O display é capaz de

mostrar números de -7 a 7

Circuito do Display de 7 Segmentos

Temos 4 entradas e 7 saídas, porém no projeto utilizamos apenas 3

entradas, uma vez que o primeiro bit é usado para representar o sinal dos

números. Cada saída do circuito é ligada a um led do display, que acenderá caso

o bit seja 1.

No projeto, dadas as entradas, são ligadas a um circuito

SomadorSubtrator cuja sua saída é ligada a entrada do circuito do display. Essa

medida foi tomada para no caso dos elementos negativos, o circuito realizará o

complemento a 2 para representa-los.

Page 6: Ula

Somador-Subtrator

É o principal circuito, onde todas as funções passam por ele para serem

computadas. Recebe 9 bits de entrada, sendo 4 de A, 4 de B e 1 bit de seleção

(0 para soma e 1 para subtração. Temos 4 bits de saída para o resultado e 1 bit

de saída para Overflow.

Circuito Somador-Subtrator

Temos 4 Somadores Completos ligados em sequência, onde recebem as

entradas A e B, e também a entrada de seleção (0 para soma e 1 para

subtração). No caso de soma, as entradas de A e B entram diretamente nos

somadores completos para que possa ser realizada a operação.

Já em caso de subtração, a chave seletora, envia 1 como entrada não só

para o primeiro somador completo, mas também para os XOR’S onde as

entradas de B estão ligadas. Sendo assim, todas as entradas de B serão

invertidas (1 por 0 e 0 por 1), realizando o complemento a 1. E somando isso a

1 bit de entrada no primeiro somador completo, é possível se obter o

complemento a 2, gerando o número negativo.

Temos 4 bis de saída, sendo 1 de sinal e 1 bit de Overflow. O overflow

indica que o resultado da operação não deverá ser usado. As condições para

que haja overflow são as seguintes:

Operação Operador A Operador B Resultado Indicando Overflow

A+B >=0 >=0 <0

A+B <0 <0 >=0

A-B >=0 <0 <0

A-B <0 >=0 >=0

Page 7: Ula

Somador Completo

Utilizado em sequência para formar o somador subtrator. Trata-se de um

circuito que recebe 2 bits de entrada (A e B) e também o Cin (Vem um). Tem

como saída S (resultado da soma) e Cout (Vai um).

Multiplexador de 2 entradas e 1 seletor

Foram utilizados multiplexadores de 2 entradas e 1 seletor para realizar a

função “Complemento a 2 de B”. Temos uma das entradas aterradas (sempre

será 0) e a outra entrada é “A”.

Vemos no circuito a seguir que existe uma porta AND cujas entradas são

a seleção de função. Essa porta serve para ativar os multiplexadores caso a

seleção seja 010 (Complemento a 2 de B).

Sendo assim, caso a opção de “Complemento a 2 de B” seja selecionada,

é realizada a subtração de B em 0 (zero), pois com a ativação dos

multiplexadores, independentemente do valor de A, a entrada no Somador-

Subtrator será sempre 0 (zero).

Page 8: Ula

Circuito do Multiplexador de 2 entradas e 1 seletor.

Dadas as entradas X que no projeto representa o valor aterrado (sempre

zero) e Y que representa o valor da entrada principal A. Temos como entrada

também a chave de seleção. Caso a chave marque 0, o valor a ser passado é o

valor de Y (Nesse caso, o valor da entrada principal: A), caso a chave marque 1,

o valor a ser passado é o valor de X (valor aterrado, sempre zero).

XOR

Temos 8 entradas, 4 bits de A e 4 Bits de B, com 4 saídas.

Circuito XOR

Dadas as entradas A e B, é realizada a função XOR em cada elemento,

resultando em 4 saídas. A0 xor B0; A1 xor B1; A2 xor B2; A3 xor B3.

Page 9: Ula

AND

Temos 8 entradas, 4 bits de A e 4 Bits de B, com 4 saídas.

Circuito AND

Dadas as entradas A e B, é realizada a função AND em cada elemento,

resultando em 4 saídas. A0 and B0; A1 and B1; A2 and B2; A3 and B3.

Page 10: Ula

Funções A=B; A>B; A<B

Para realizar a função: A=B, realizamos a subtração A-B. Caso o resultado

seja 0, o resultado é verdadeiro. Para que isso seja mostrado, é usado um OR

com as entradas sendo as saídas da subtração e a saída desse OR é negada.

Ou seja, para a saída ser verdadeira, todas as entradas devem ser zero.

Para realizar a Função A>B, também realizamos a subtração A-B, mas

dessa vez, é preciso que pelo menos uma das saídas seja 1 e que o bit de sinal

seja 0.

Para a função A<B, mais uma vez é feita a subtração A-B, e para o

resultado, basta termos um AND negando A=B e A>B. Ou seja, Se A não é maior

nem igual a B, será menor.

Multiplexador de 8 entradas e 3 seletores

Temos 5 multiplexadores, sendo 4 para resultados em forma de vetor e

um para resultado sendo apenas um bit de sinal (booleano).

Em cada multiplexador temos 8 entradas de dados, e 3 seletores, que são

justamente a chave de seleção que indica qual função deverá ser usada.

Page 11: Ula

Circuito Multiplexador de 8 entradas e 3 seletores

Como foi visto, se tem 8 entradas e 3 seletores. Os seletores recebem o

valor da chave de seleção que indica qual função deverá ser usada. Das 8

entradas, apenas 1 será selecionada.

Temos as 3 primeiras entradas (da direita para a esquerda) para a Soma,

Subtração e Complemento a 2 de B). Isso é possível, pois o resultado dessa

entrada já foi filtrado pelo Somador-Subtrator, que realizou a operação de acordo

com a chave de seleção. A 4ª entrada é a operação A=B, a 5ª A>B, a 6ª A<B. A

7ª entrada recebe a função A and B e a 8ª recebe A xor B.

Page 12: Ula

Saídas

Se tem como saída, um vetor de 4 bits ou um sinal de status para os

resultados booleanos. Esses resultados são obtidos após as informações

passarem pelo multiplexador. Foi inserido também um circuito de display de 7

segmentos para mostrar nos displays as respostas, caso seja o vetor.

Overflow

É acionado caso exista a condição descrita no quadro visto em

Somador-Subtrator, e em qualquer outro caso em que o resultado não deverá

ser considerado.

Erros encontrados

Em operações que o resultado seria 8 (valor a cima do limite da ULA), o

resultado mostrado era “-0” e o overflow não era indicado. Para contornar esse

erro, foi feita a condição para que caso ocorra, o overflow é aceso, indicando que

o resultado não é válido.

Page 13: Ula

Explicando as funções

A+B (000)

Recebe-se como entradas A e B, os valores são mostrados em seus

respectivos displays e enviados para o Somador-Subtrator, que realiza a

operação de soma e manda o resultado para os multiplexadores, que identificam

de acordo com a chave seletora e por fim, exibem o resultado, em leds e também

no display.

A-B (001)

Recebe-se como entradas A e B, os valores são mostrados em seus

respectivos displays e enviados para o Somador-Subtrator, que realiza a

operação de subtração usando o complemento de 2 e manda o resultado para

os multiplexadores, que identificam de acordo com a chave seletora e por fim,

exibem o resultado, em leds e também no display.

Complemento a 2 de B (010)

Recebe-se como B, que é mostrado no display, o valor de A não é usado

o valor é enviado para o Somador-Subtrator, que realiza a operação subtraindo

B de 0 usando complemento de 2 e manda o resultado para os multiplexadores,

que identificam de acordo com a chave seletora e por fim, exibem o resultado,

em leds e também no display.

A=B (011)

Recebe-se como entradas A e B, os valores são mostrados em seus

respectivos displays e enviados para o Somador-Subtrator, que realiza a

operação de subtração e caso o resultado seja “0”, a operação é verdadeira. O

resultado é enviado para o multiplexador, que identifica de acordo com a chave

seletora e por fim, exibem o resultado no led de status.

A>B (100)

Recebe-se como entradas A e B, os valores são mostrados em seus

respectivos displays e enviados para o Somador-Subtrator, que realiza a

operação de subtração e caso o resultado não seja “0” e o bit de sinal seja igual

a “0” a operação é verdadeira. O resultado é enviado para o multiplexador, que

identifica de acordo com a chave seletora e por fim, exibem o resultado no led

de status.

A<B (101)

Recebe-se como entradas A e B, os valores são mostrados em seus

respectivos displays e enviados para o Somador-Subtrator, que realiza a

operação de subtração e caso o resultado não seja “0” e também não seja A>0,

Page 14: Ula

a operação é verdadeira. O resultado é enviado para o multiplexador, que

identifica de acordo com a chave seletora e por fim, exibem o resultado no led

de status.

A and B (110)

Recebe-se como entradas A e B, os valores são mostrados em seus

respectivos displays e enviados para o circuito AND, onde é feita a comparação

bit a bit, é enviado o resultado para os multiplexadores, que identificam de acordo

com a chave seletora e por fim, exibem o resultado, em leds e também no

display.

A xor B (111)

Recebe-se como entradas A e B, os valores são mostrados em seus

respectivos displays e enviados para o circuito XOR, onde é feita a comparação

bit a bit, é enviado o resultado para os multiplexadores, que identificam de acordo

com a chave seletora e por fim, exibem o resultado, em leds e também no

display.

Dificuldades encontradas

Uma das dificuldades encontradas foi na exibição de valores a serem

mostrados no display, que foi tratado utilizando o circuito Somador-Subtrator

juntamente como circuito de Display de 7 Segmentos.

Outra dificuldade encontrada, foi quanto ao tratamento de Overflow, que

foi feito com a ajuda a tabela de condições de Overflow do livro: Organização e

projeto de computadores : [a interface hardware-software] - 3. ed. / 2005.