Ula

Preview:

DESCRIPTION

Unidade Logica Aritmetica e seus componentes

Citation preview

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

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)

Esquema de circuitos lógicos da 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

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.

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

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).

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.

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.

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.

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.

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.

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,

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.

Recommended