Documente Academic
Documente Profesional
Documente Cultură
Departamento de Ciência da Computação – DCC
UNIDADE LÓGICA E ARITMÉTICA
e
MEMÓRIA
Equipe
Geane Souza de Araújo
Cristina Souza de Araújo
Professora
Tanara Lauschner
Manaus, 01 de julho de 2009
1) QUESTÃO
RESOLUÇÃO
Uma unidade lógica e aritmética (ULA) precisa funcionar basicamente com 3 componentes :
um decodificador, um bloco para resolução da operação aritmética e outro bloco para resolução da
operação lógica, além também das entradas, das saídas, e das entradas de seleção.
Portanto, vamos explicar cada um desses componentes, iniciando pelo decodificador.
1 DECODIFICADOR
Como já se sabe, um decodificador serve para decodificar uma determinada entrada,
selecionando uma determinada porta de saída.
Para a nossa ULA, criamos o seguinte decodificador :
As entradas que estão em laranja são as entradas de
seleção S0, S1 e S2. Sendo que dependendo do valor colocado
nas mesmas somente uma porta do decodificador será
selecionada.
A porta que habilita de acordo com cada valor receberá
a seguinte nomenclatura :
000 – P0 101 – P5
001 – P1 110 P6
010 – P2 111 P7
011 – P3
100 – P4
Portanto, nossa ULA, vai adotar determinada operação de saída, dependendo dos valores de
S2, S1, S0 e também de M.
Logo abaixo do decodificador, que foi mostrado acima,
temos as entradas de B, de baixo para cima na seguinte ordem : B0,
B1, B2 e B3
Para iniciarmos vamos analisar primeiramente o modo lógico, ou seja, todos os circuitos do
lado direito da ULA.
MODO LÓGICO
2 CIRCUITO DESLOCADOR, ENTRADAS E MODO DE OPERAÇÃO
( M = 0, S2 = 0, S1 = 0, S0 = 0 OU S0 = 1 .: P0 OU P1 = 1 )
Para as entradas de seleção 000 e 001, a ULA deverá produzir em sua saída o deslocamento
respectivo para a esquerda e para a direita.
O seguinte circuito ilustra uma parte da ULA, onde podemos verificar A3, A2, A1 e A0 e M.
A3 A2 A1 A0 M
No circuito 1, temos um deslocador: quando a porta NOT recebe 0, o deslocamento ocorre
para a esquerda e quando recebe 1, para a direita.
Verificamos que a porta NOT deverá receber valores ou de P0 ou P1 ( 000 ou 001 ). Por isso,
foi criado o circuito 2 que liga NOT a P0 e P1 através de uma AND; quando 000 é selecionada ela
garante que o valor 0 chegará no circuito 1, quando 001 é selecionada ela garante que 1 chegará no
circuito 1.
O circuito 3 envia os valores do circuito 1 para as saídas da ULA, que vamos chamar de E3,
E2, E1 e E0. Porém, vale lembrar que toda vez que o valor de M for diferente de 0 e P0 e P1 não
forem selecionadas, ou seja, forem 0, então devemos desabilitar as saídas do circuito 1 para que ele
não envie nada para a saída da ULA: o circuito 3, portanto foi ligado diretamente com a entrada M'
( M barrado ), de modo que quando este for 0, i.e, o modo de operação for lógico ele habilite a saída
do circuito e dependa somente dos valores de P0 e P1.
Assim, o circuito 3 só poderá ficar habilitado se P0 ou P1 forem selecionadas. Para isso
criamos o circuito 4, que é uma porta OR que ficará responsável por habilitar a saída do deslocador
( circuito 3 ) somente se receber o valor 1 em sua entrada, confirmando assim que P0 ou P1 foram
selecionadas. Este circuito 4 está portanto ligado diretamente ao circuito 3.
3 – A AND B
( M = 0, S2 = 0, S1 = 1, S0 = 0 .: P2 = 1 )
Para os seguintes valores das entradas de seleção, temos que M = 0 e a respectiva porta P2
deve estar selecionada:
Nesta operação usase o mapa de karnaugh para definir o circuito:
Segundo podemos verificar somente quando M = 0 e P2 = 1 é que poderemos ter resultado
na saída. Quando isto ocorre realizamos a operação A AND B de acordo com a entrada A e B
respectiva.
M P2 A B A AND B
0 0 0 0 0
0 0 0 1 0
0 0 1 0 0
0 0 1 1 0
0 1 0 0 0
0 1 0 1 0
0 1 1 0 0
0 1 1 1 1
1 0 0 0 0
1 0 0 1 0
1 0 1 0 0
1 0 1 1 0
1 1 0 0 0
1 1 0 1 0
1 1 1 0 0
1 1 1 1 0
Da tabela acima temos a seguinte expressão:
Saída : M'(P2)AB
Para o qual teremos o seguinte circuito:
A3
B3
A2
B2
A1
B1
A0
B0
Lembrando que cada porta AND está ligada conforme a ordem descrita acima ( A3B3 ...
A0B0 ) e suas saídas estão ligadas diretamente com a saída da ULA.
4 – A OR B
( M = 0, S2 = 0, S1 = 1, S0 = 1 .: P3 = 1 )
De modo similar ao anterior, também definiremos o circuito para A OR B
Segundo podemos verificar somente quando M = 0 e P3 = 1 é que poderemos ter resultado
na saída. Quando isto ocorre realizamos a operação A OR B de acordo com a entrada A e B
respectiva.
Nesta operação usase o mapa de karnaugh para definir o circuito:
M P3 A B A OR B
0 0 0 0 0
0 0 0 1 0
0 0 1 0 0
0 0 1 1 0
0 1 0 0 0
0 1 0 1 1
0 1 1 0 1
0 1 1 1 1
1 0 0 0 0
1 0 0 1 0
1 0 1 0 0
1 0 1 1 0
1 1 0 0 0
1 1 0 1 0
1 1 1 0 0
1 1 1 1 0
A
M
B
P3
00 01 11 10 Saída : M'P3B + M'P3A = M'P3 ( A + B )
00 0 0 0 0
01 0 1 1 1
11 0 0 0 0
10 0 0 0 0
5 – A XOR B
( M = 0, S2 = 1, S1 = 0, S0 = 0 .: P4 = 1 )
Segundo podemos verificar somente quando M = 0 e P4 = 1 é que poderemos ter resultado
na saída. Quando isto ocorre realizamos a operação A XOR B de acordo com a entrada A e B
respectiva.
Nesta operação usase o mapa de karnaugh para definir o circuito:
M P4 A B A XOR B
0 0 0 0 0
0 0 0 1 0
0 0 1 0 0
0 0 1 1 0
0 1 0 0 0
0 1 0 1 1
0 1 1 0 1
0 1 1 1 0
1 0 0 0 0
1 0 0 1 0
1 0 1 0 0
1 0 1 1 0
1 1 0 0 0
1 1 0 1 0
1 1 1 0 0
1 1 1 1 0
A
Saída : (M')P4(A')B + (M')P4A(B') = M'P4 ((A')B + A(B') )
M B
= M'P4 ( A ⊕ B )
P4
00 01 11 10
00 0 0 0 0
01 0 1 0 1
11 0 0 0 0
10 0 0 0 0
Circuito correspondente :
6 – A XNOR B
( M = 0, S2 = 1, S1 = 0, S0 = 1 .: P5 = 1 )
Segundo podemos verificar somente quando M = 0 e P5 = 1 é que poderemos ter resultado
na saída. Quando isto ocorre realizamos a operação A XNOR B de acordo com a entrada A e B
respectiva.
Nesta operação usase o mapa de karnaugh para definir o circuito:
M P5 A B A XNOR B
0 0 0 0 0
0 0 0 1 0
0 0 1 0 0
0 0 1 1 0
0 1 0 0 1
0 1 0 1 0
0 1 1 0 0
0 1 1 1 1
1 0 0 0 0
1 0 0 1 0
1 0 1 0 0
1 0 1 1 0
1 1 0 0 0
1 1 0 1 0
1 1 1 0 0
1 1 1 1 0
A
Saída : (M')P5(A')(B') + (M')P5AB = M'P5 ((A')(B') + AB )
M B
= M'P5 ( A ⊕ B )'
P5
00 01 11 10
00 0 0 0 0
01 1 0 1 0
11 0 0 0 0
10 0 0 0 0
Circuito correspondente :
7 A NAND B
( M = 0, S2 = 1, S1 = 1, S0 = 0 .: P6 = 1 )
Segundo podemos verificar somente quando M = 0 e P6 = 1 é que poderemos ter resultado
na saída. Quando isto ocorre realizamos a operação A NAND B de acordo com a entrada A e B
respectiva.
Nesta operação usase o mapa de karnaugh para definir o circuito:
M P6 A B A NAND B
0 0 0 0 0
0 0 0 1 0
0 0 1 0 0
0 0 1 1 0
0 1 0 0 1
0 1 0 1 1
0 1 1 0 1
0 1 1 1 0
1 0 0 0 0
1 0 0 1 0
1 0 1 0 0
1 0 1 1 0
1 1 0 0 0
1 1 0 1 0
1 1 1 0 0
1 1 1 1 0
A
Saída : (M')P6(A') + (M')P6(B') = M'P6 ((A') + (B'))
M B
P6
00 01 11 10
00 0 0 0 0
01 1 1 0 1
11 0 0 0 0
10 0 0 0 0
Circuito correspondente :
8 – A NOR B
( M = 0, S2 = 1, S1 = 1, S0 = 1 .: P7 = 1 )
Da mesma forma que os outros, somente quando M = 0 e P7 = 1 é que poderemos ter
resultado na saída. Quando isto ocorre realizamos a operação A NOR B de acordo com a entrada A
e B respectiva.
Nesta operação usase o mapa de karnaugh para definir o circuito:
M P7 A B A NOR B
0 0 0 0 0
0 0 0 1 0
0 0 1 0 0
0 0 1 1 0
0 1 0 0 1
0 1 0 1 0
0 1 1 0 0
0 1 1 1 0
1 0 0 0 0
1 0 0 1 0
1 0 1 0 0
1 0 1 1 0
1 1 0 0 0
1 1 0 1 0
1 1 1 0 0
1 1 1 1 0
Daí temos a seguinte expressão :
Saída : (M')P6(A')(B')
Circuito correspondente :
___________________________________________________________________
Agora vamos analisar o segundo modo de operação : aritmético
MODO ARITMÉTICO
9 – SAÍDA 0
( M = 1, S2 = 0, S1 = 0, S0 = 0 .: P0 = 1 )
Para este modo de operação, as saídas da ULA simplesmente tem que ser 0. Basta não
acrescentarmos nada as essas saídas. Note que como o modo M está selecionado em 1,
obrigatoriamente, como já vimos anteriormente o modo de operação 0, com o mesmo valor de
entrada 000 não tem como influenciar em nosso nova saída, visto que já criamos meios de
desabilitarmolas para este caso.
10 – NOT A ( M = 1, S2 = 0, S1 = 0, S0 = 1 .: P1 = 1 )
Da mesma forma anterior criamos um mapa de karnaugh e achamos a expressão do circuito
NOT A .
M P1 A NOT A
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 0
1 0 0 0
1 0 1 0
1 1 0 1
1 1 1 0
Daí temos a seguinte expressão :
Saída : MP1A'
11 – NOT B ( M = 1, S2 = 0, S1 = 1, S0 = 0 .: P2 = 1 )
Novamente:
M P2 B NOT B
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 0
1 0 0 0
1 0 1 0
1 1 0 1
1 1 1 0
Daí temos a seguinte expressão :
Saída : MP1B'
Idêntico ao anterior, no entanto, quem vai entrar pela NOT será B e
não A .
12 – A B ( M = 1, S2 = 0, S1 = 1, S0 = 1 .: P3 = 1 )
Este caso devemos analisar da seguinte maneira :
A será somado ao complemento de B, i.e, antes dessa soma ocorrer um outro circuito deverá
inverter a entrada B respectiva e somar o valor a 0001:
Exemplo :
A = 1100
B = 1001 → inverte → 0110 → soma a 0001 → 0110
0001
0111
logo : 1100
0111
10011
Então concluímos que para cada entrada Aj Bj, teremos que realizar primeiramente o
complemento de 2 num primeiro somador somando o valor invertido do respectivo B com 0001,
considerando todos os carrys e depois teremos que finalmente realizar a soma de A com o então
complemento de B, considerando os carrys e enviando o último carry para a saída da ULA,
conforme pede o trabalho.
Circuito:
2 1 3 4
= Cout
= B0' + 1 + A0
= B1'+ 0+Cin+A1
= B2'+0+Cin+A2
= B3'+0+Cin+A3
No circuito 1 temos os quatro somadores que receberão os valores de B invertido que será
somado a 0001. No circuito 2, criamos uma entrada em nível lógico 1 para ser somado ao bit menos
significativo que no caso é B0. NO circuito 3, A é somado ao seu respectivo complemento B. O
circuito 4, foi criado para habilitar ou não a saída, ou seja, somente se M = 1 e P3 = 1 é que essa
operação enviará suas saídas para a saída da ULA. Obviamente, essas portas AND estão recebendo
em suas entradas 3 valores : o valor da soma ( AB ) ou carry, o valor de M e o valor da porta P3.
Todas essas portas estão enviando seus valores de saída para as saídas da ULA e também a saída do
Carry da ULA.
13 – B A ( M = 1, S2 = 1, S1 = 0, S0 = 0 .: P4 = 1 )
Ficará idêntico ao anterior, no entanto a única diferença é que neste caso o circuito usado
para complemento de 2, terá A como entrada e não B, como no anterior.
14 – A + B ( M = 1, S2 = 1, S1 = 0, S0 = 1 .: P5 = 1 )
Este circuito será mais simples ainda, pois não precisaremos realizar complemento de 2,
logo, basta somarmos todos os valores dos respectivos A e B, não esquecendo de considerar os
carrys de uma soma para a outra e também o último carry que irá para a saída da ULA.
Não esquecendo que os somadores, similarmente aos anteriores deverá estar interligado com
portas de ENABLE ( AND ) que habilitarão ou não as saídas desse circuito ( A + B ), dependendo
dos valores de M e P5.
14 – A + 1 ( M = 1, S2 = 1, S1 = 1, S0 = 0 .: P6 = 1 )
Neste circuito A será somado à 0001 e também terá as portas de habilitação AND.
= Cout
= A3+0+Cin
= A2+0+Cin
= A1+0+Cin
= A0+1
15 – 1 ( M = 1, S2 = 1, S1 = 1, S0 = 1 .: P7 = 1 )
Lembrando que para que a saída da ULA seja 1 independentemente dos valores de A ou B,
devemos considerar que este valor só será possível se M, P7 = 1. Logicamente, o circuito terá como
entradas o próprio 1 , M e P7, conforme abaixo:
16 – SAÍDAS DA ULA
Conforme podemos ver, a saída vai depender dos valores de M, portanto montamos o
seguinte circuito:
Cada par de portas AND vai estar funcionando da Como temos apenas 4
Finalmente cada uma
seguinte maneira : a AND do lado esquerdo vai ter como operações ( e do lado
dessas portas OR receberá
entrada o valor da porta OR abaixo dela e também o valor aritmético ) que
um valor de um das AND
de M' (M barrado), i.e, quando M for 0 ( e M' = 1, portanto possuem carry de saída
abaixo dela, i.e, ou do
) ela deverá ser habilitada para receber os valores do lado então criamos essa
lado lógico ou do lado
esquerdo, que corresponde ao lado lógico, no entanto porta para receber esse
aritmético.
quando M = 1, a porta AND do lado direito deverá ser valor de carry.
habilitada, portanto esta porta similarmente à outra terá
como entrada M e o valor da porta OR logo abaixo. Isso
SAÍDAS DA ULA : E3 E2 E1 E0 Cout
se repetirá para as demais.
Essas 4 portas OR receberão o valor de uma das
saídas de qualquer um dos circuitos do lado Essas outras portas OR receberão uma
esquerdo. Ou seja, receberão os valores do modo das saídas vindas de qualquer um dos
lógico, na seguinte ordem da esquerda para a direita : circuito do lado direito
E3 E2 E1 E0
Para finalizar ilustraremos a ULA pronta com todos os blocos ou partes descritas
anteriormente:
2 ª
QUESTÃO
Resolução: