Sunteți pe pagina 1din 20

Universidade Federal do Amazonas – UFAM

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. 

Para   melhor   compreensão,   vamos   nomear   cada   uma 


dessas   portas,   pois   estaremos   mencionando­as 
constantemente, no decorrer do trabalho.

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 usa­se 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 usa­se 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 usa­se 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 usa­se 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 usa­se 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 usa­se 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 
desabilitarmo­las 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 ( A­B ) 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:

Construímos   o   circuito   correspondente   abaixo,   e   pudemos   verificar   o 


funcionamento do circuito, que é o seguinte:
Após   testarmos   o   funcionamento   do   circuito,   pudemos   tirar   as   seguintes 
conclusões :
1 – Quando colocamos o valor 10100101, por exemplo, na entrada todos os respectivos 
Ffś de cada bit será carregado com o respectivo valor, ficando na entrada do respectivo 
FF, aguardando um clock. 
2 ­ Quando colocamos o valor 01 no endereçamento, esse valor irá carregar uma das 
portas   AND,  no  caso  a  segunda  porta  de  cima  para  baixo  (  que   corresponde   à  01  ), 
enviando um nível alto para a outra porta AND responsável pelo pulso de clock. 
3 ­ Essa porta AND ( responsável direta pelo pulso de clock ) depende desse valor 1 
citado e também de um nível 1 vindo das portas de controle. 
4 – Quando colocamos 1 e 0 ( CS e RD ) nas portas de controle não é verificado nenhum 
valor de saída. Concluindo portanto que a memória está sendo lida. 
5 – Já quando colocamos 1 e 1 ( CS e RD ) nas portas de controle é verificado o valor de 
entrada na saída. Concluindo portanto que a memória está sendo escrita.
6 – Portanto, a entrada RD serve para controlar a operação a ser realizada : leitura ou 
escrita;
7 – O CS é uma entrada auxiliar que serve como enable, não permitindo saída de nenhum 
valor quando desabilitada ( nível lógico 0 ). Quando está acionada, permite ou a escrita ou 
a leitura de acordo com o valor de RD.
8 – A entrada OE serve como um ENABLE para as saídas: caso esteja desabilitada ( nível 
lógico 0 ) não permitirá valor nas saídas.
9 – Foi possível realizar o armazenamento do valor 10100101 no endereço 01, com OE = 
1, CS = 1 e RD = 1.

S-ar putea să vă placă și