1.8 MB - Departamento de Informática e Estatística

Propaganda
Universidade Federal de Santa Catarina
Centro Tecnológico
Departamento de Informática e Estatística
Ciências da Computação & Engenharia Eletrônica
Aula 1-T
1. Projeto de unidade lógico-aritmética (ULA). Representação de
números inteiros em binário. Convenções do nível RT. Adição de
números sem e com sinal, o somador paralelo carry-ripple e overflow.
O subtrator e o somador-subtrator, overflow. Estrutura de uma ULA
simples. Outras operações lógicas e aritméticas. Unidades funcionais
para mais de dois. Circuitos Digitais e Níveis de Abstração.
Prof. José Luís Güntzel
[email protected]
www.inf.ufsc.br/~guntzel/ine5406/ine5406.html
1. Projeto de Unidade Lógico-Aritmética
Representação de Inteiros em Binário
Números Inteiros sem Sinal (Naturais)
•  assumindo-se números com 4 bits
binário
decimal
Menor número
0000
0
Maior número
1111
15
Intervalo de representação: [ 0 , 15 ]
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide1T.2
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Representação de Inteiros em Binário
Números Inteiros sem Sinal (naturais)
•  assumindo-se números com 8 bits
binário
decimal
Menor número
00000000
0
Maior número
11111111
255
Intervalo de representação: [ 0 , 255 ]
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide1T.3
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Representação de Inteiros em Binário
Números Inteiros sem Sinal (Naturais)
Observe que:
111111112 =
= 1x20 + 1x21 + 1x22 + 1x23 + 1x24 + 1x25 + 1x26 + 1x27=
= 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255
Observe também que:
1000000002 =
= 0x20 + 0x21 + 0x22 + 0x23 + 0x24 + 0x25 + 0x26 + 0x27 + 1x28 =
= 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 256 = 256 (= 255 + 1)
Então, podemos nos referir ao 255 como “28 - 1”, para
efeitos de generalização.
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide1T.4
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Representação de Inteiros em Binário
Números Inteiros sem Sinal (naturais)
•  Generalizando-se para n bits
binário
decimal
Menor número
0000...0
0
Maior número
1111...1
2n-1
Intervalo de representação: [ 0 , 2n-1]
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide1T.5
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Representando Dados em Circuitos Digitais
Algumas Convenções
Indicando como um
número de n+1 bits é
composto (outro exemplo)
“0”
“Decompondo” um número
de n+1 bits em um número
de n bits e mais um sinal
n
n+1
overflow
n+1
n
S
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide1T.6
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Circuitos Aritméticos
São Circuitos Combinacionais que operam sobre
dados numéricos.
Exercício 1: Projetar um circuito combinacional capaz de
testar se um número de 8 bits vale zero ou não. Este
circuito deve operar conforme descrito na tabela abaixo.
Tabela de funcionamento:
Interfaces:
S
8
zero
significado
0
S≠0
1
S=0
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
=0?
zero
Slide1T.7
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Circuitos Aritméticos
Exercício 2: Projetar um circuito combinacional que compara
dois números de 4 bits cada. Este circuito deve operar
conforme descrito na tabela abaixo.
Tabela de funcionamento:
iguais
significado
0
A≠B
1
A=B
Interfaces:
B
A
4
4
=?
iguais
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide1T.8
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Circuitos Aritméticos
Exercício 2: solução...
Função XOR (Exclusive OR, “OU” Exclusivo)
•  Resulta “1” se as duas entradas forem iguais...
X
Y
X⊕Y
0
0
0
0
1
1
1
0
1
1
1
0
X⊕Y = X·Y + X·Y
Circuito em soma de produtos
Porta lógica
X
X
Y
Y
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide1T.9
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Circuitos Aritméticos
Exercício 3: Projetar um circuito combinacional que compara
dois números de 4 bits cada. Este circuito deve operar
conforme descrito na tabela abaixo.
Tabela de funcionamento:
Interfaces:
B
A
maior
significado
0
A <= B
1
A>B
4
4
A>B?
maior
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide1T.10
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Circuitos Aritméticos
Qual é a operação aritmética mais importante?
Resposta: a adição!
Por quê?
Porque ela serve de base para outras
operações aritméticas mais frequentes nos
sistemas digitais.
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide1T.11
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Revisão de Adição Binária
Adição de Números Sem Sinal
Exemplo 1:
Notação genérica
Análise supondo A e B com 4 bits
transportes (carries)
0100
A
+ B
S
+
0110
0100
(6)
(4)
1010
(10)
resultado
Supondo um somador que trabalhe com operandos de 4 bits,
então o resultado S deverá pertencer ao intervalo [ 0, 15 ]
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide1T.12
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Revisão de Adição Binária
Adição de Números Sem Sinal
Exemplo 2:
Cout =
overflow
A
+ B
S
transportes (carries)
1100
+
1100
0110
(12)
(6)
0010
(18)
resultado
Caso o resultado não puder ser representado com 4 bits, o sinal
“Cout” indicará que houve um “estouro de representação” (em
inglês, overflow).
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide1T.13
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Esquema da Adição Paralela
Considerando dois números (A e B) com 4 bits cada
a3
b3
a2
b2
c3
c4
(=cout)
s3
a1
b1
c2
s2
a0
b0
c1
s1
s0
•  Há um elemento para cada coluna da soma.
•  O sinal de transporte mais à esquerda (c4, neste caso), também
recebe o nome de cout.
•  Se este somador operar sobre inteiros sem sinal, então cout
também servirá para indicar a ocorrência de overflow
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide1T.14
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
O Meio Somador
Redesenhando, usando porta XOR
a0
a0 b0
c1
b0
MS
s0
c1
s0 = a0·b0 + a0·b0 = a0 ⊕ b0
c1 = a0·b0
s0
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide1T.15
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Somador Para as Demais Colunas
Projetando um tipo de circuito
para as demais colunas:
c4
a3
b3
a2
c3
+
ai
+
a0
b0
c1
s1
s0
carry
Slide1T.16
adição de 3 bits
bi
ci+1 si
… s3 s2 s1 s0
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
b1
ci
Generalizando…
… b3 b2 b1 b0
a1
c2
s2
s3
… c4 c3 c2 c1
… a3 a2 a1 a0
b2
resultado
resultado em
2 bits
Com i >= 1
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
O Somador Completo
ai
ai
bi
MS
gi
bi
ci+1
SC
ci
pi
ci+1
ci
xi
si
MS
si = ci ⊕ ai ⊕ bi
si
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
ci+1 = ai·bi+ ai·ci+ bi·ci
Slide1T.17
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
O Somador Paralelo Carry-Ripple (de 4 Bits)
Diagrama de Blocos (Nível Lógico)
a3
c4
(=cout)
b3
SC
a2
c3
s3
b2
SC
a1
c2
b1
SC
s2
s1
A
Símbolo no Nível RT
c1
b0
MS
s0
B
4
cout
a0
4
+
Indicação do
número de bits
4
S
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide1T.18
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
O Somador Paralelo Carry-Ripple (de 4 Bits)
Diagrama de Blocos (Nível Lógico): versão 2
a3
c4
(=cout)
b3
SC
a2
c3
s3
b2
SC
a1
c2
b1
a0
c1
SC
s2
s1
B
4
cout
SC
c0
s0
A
Símbolo no Nível RT
b0
4
+
4
S
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide1T.19
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
O Somador Paralelo Carry-Ripple (de 4 Bits)
Diagrama de Blocos (Nível Lógico): versão 3
a3
c4
(=cout)
b3
SC
a2
c3
s3
b2
SC
a1
c2
b1
a0
c1
SC
s2
SC
s1
B
4
cout
c0 = cin
s0
A
Símbolo no Nível RT
b0
4
cin
+
4
S
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide1T.20
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Representando Dados em Circuitos Digitais
Mais Convenções
Somador-subtrator para
operandos com n bits cada
n
overflow
Indicando como um número de
n+1 bits é composto
n
n
overflow
+/-
+/-
n
n
n+1
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
n
Slide1T.21
Convenção para
indicar que o bit
menos significativo
está mais à direita
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Somador Carry-Ripple: Custo x Desempenho
•  A estrutura do somador carry-ripple baseia-se na fatoração
da expressão do carry. A consequência disto é:
•  Redução do custo (i.e., menor número de portas lógicas)
•  Aumento do atraso (o cálculo de c4 depende de c3, que depende
de c2, que depende de c1, que depende apenas das entradas c0,
a0 e b0).
a3
c4
(=cout)
b3
SC
s3
a2
c3
b2
SC
a1
c2
s2
b1
SC
s1
a0
c1
b0
SC
c0 = cin
s0
Os slides complementares “somadores rápidos” mostra outros tipos de
somadores.
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide1T.22
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Representação de Inteiros em Binário
Como Representar Inteiros Negativos?
Sinal-magnitude
Complemento de 1
sinal
sinal
+3 = 0 0 1 1
-3 = 1 0 1 1
+3 = 0 0 1 1
-3 = 1 1 0 0
Obtido a partir do +3,
aplicando-se a inversão
bit a bit
Complemento de 2
sinal
+3 = 0 0 1 1
-3 = 1 1 0 1
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Obtido a partir do +3, aplicando
-se a inversão bit a bit e após,
somando-se 1 (uma unidade)
Slide1T.23
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Representação de Inteiros em Binário
Números Inteiros com Sinal
•  Para facilitar a construção de circuitos aritméticos, os
negativos são representados em complemento de dois
•  Assumindo-se números com 4 bits
binário
decimal
Menor número
1000
-8
Zero
0000
0
Maior número
0111
+7
Intervalo de representação: [ -8 , +7 ]
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide1T.24
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Representação de Inteiros em Binário
Números Inteiros com Sinal
Observe que:
01112 = 1x20 + 1x21 + 1x22 + 0x23 =
=1+2+4+0 =
= +7
Observe também que:
11112 = 1x20 + 1x21 + 1x22 - 1x23 =
=1+2+4-8=
= -1
O bit mais à esquerda representa o sinal: se ele valer 1, o
número é negativo. Caso contrário, o número é positivo
ou zero.
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide1T.25
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Representação de Inteiros em Binário
Números Inteiros com Sinal
•  assumindo-se números com 8 bits
binário
decimal
Menor número
10000000
-128
Zero
00000000
0
Maior número
01111111
+127
Intervalo de representação: [ -128 , +127 ]
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide1T.26
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Representação de Inteiros em Binário
Números Inteiros com Sinal
•  Generalizando-se para n bits
binário
decimal
Menor número
1000...0
-2n-1
Zero
0000...0
0
Maior número
0111...1
+(2n-1-1)
Intervalo de representação: [ -2n-1 , +(2n-1-1) ]
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide1T.27
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Adição de Inteiros com Sinal
Assumindo:
•  Negativos são representados em complemento de dois
•  Números com 4 bits
binário
decimal
Menor número
1000
-8
Zero
0000
0
Maior número
0111
+7
Intervalo de representação: [ -8 , +7 ]
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide1T.28
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Adição de Inteiros com Sinal
(Assumindo Negativos em Complemento de 2)
Exemplo 3: dois números positivos, cuja soma ∈ [-8,+7]
transporte (carry)
0000
+
0010
0100
(+2)
(+4)
0110
(+6) resultado correto
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide1T.29
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Adição de Inteiros com Sinal
(Assumindo Negativos em Complemento de 2)
Exemplo 4: dois números negativos, cuja soma seja ≥ -8
transporte (carry)
1100
+
Apesar deste último
carry valer 1, não
houve overflow
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
1110
1100
(-2)
(-4)
1010
(-6)
Slide1T.30
resultado correto
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Adição de Inteiros com Sinal
(Assumindo Negativos em Complemento de 2)
Exemplo 5: um número positivo e um número negativo,
tais que o resultado é positivo
transporte (carry)
1111
+
0111
1111
(+7)
(-1)
0110
(+6)
Novamente…
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide1T.31
resultado correto
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Adição de Inteiros com Sinal
(Assumindo Negativos em Complemento de 2)
Exemplo 6: um número positivo e um número negativo,
tais que o resultado é negativo
transporte (carry)
0001
+
1001
0001
(-7)
(+1)
1010
(-6)
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
resultado correto
Slide1T.32
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Adição de Inteiros com Sinal
(Assumindo Negativos em Complemento de 2)
Exemplo 7: um positivo e um negativo, iguais em módulo
transporte (carry)
1111
+
E novamente…
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
0101
1011
(+5)
(-5)
0000
(0)
Slide1T.33
resultado correto
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Adição de Inteiros com Sinal
(Assumindo Negativos em Complemento de 2)
Exemplo 8: 2 números positivos
transporte (carry)
0100
+
ocorre overflow
quando esses 2 bits
são diferentes
0100
0101
(+4)
(+5)
1001
(-7)
Resultado errado !
o resultado excede o intervalo de representação = overflow
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide1T.34
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Adição de Inteiros com Sinal
(Assumindo Negativos em Complemento de 2)
Exemplo 9: 2 números negativos
transporte (carry)
1000
+
ocorre overflow
quando esses 2 bits
são diferentes
1100
1011
(-4)
(-5)
0111
(+7)
Resultado errado !
o resultado excede o intervalo de representação = overflow
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide1T.35
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Adição de Inteiros com Sinal
(Assumindo Negativos em Complemento de 2)
Conclusões:
•  Números binários em complemento de 2 podem ser
adicionados como se fossem números binários
sem sinal!
•  Neste caso, a detecção de overflow se dá
comparando-se os dois últimos sinais de carry
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide1T.36
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
O Somador Paralelo Carry-Ripple (de 4 Bits)
Modificado para Operar Sobre Números com Sinal
(Assumindo negativos em complemento de 2)
Diagrama de Blocos (Nível Lógico)
a3
c4
(=cout)
overflow
b3
SC
s3
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
a2
c3
b2
SC
a1
c2
s2
Slide1T.37
b1
SC
s1
a0
c1
b0
MS
s0
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
O Somador Paralelo Carry-Ripple (de 4 Bits)
Modificado para Operar Sobre Números com Sinal
(Assumindo negativos em complemento de 2)
Diagrama de Blocos (Nível Lógico): versão 2
a3
c4
(=cout)
overflow
b3
SC
a2
c3
s3
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
b2
SC
a1
c2
s2
b1
SC
s1
Slide1T.38
a0
c1
b0
SC
c0
s0
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
O Somador Paralelo Carry-Ripple (de 4 Bits)
Modificado para Operar Sobre Números com Sinal
(Assumindo negativos em complemento de 2)
Diagrama de Blocos (Nível Lógico): versão 3
a3
c4
(=cout)
overflow
b3
SC
a2
c3
s3
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
b2
SC
a1
c2
s2
b1
SC
s1
Slide1T.39
a0
c1
b0
SC
c0 = cin
s0
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
O Somador Paralelo Carry-Ripple (de 4 Bits)
Símbolos no Nível RT
A
A
B
4
cout
overflow
B
4
4
cout
overflow
+
4
4
4
S
S
A
A
B
4
overflow
cin
+
4
4
overflow
+
B
4
4
4
S
S
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
cin
+
Slide1T.40
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Circuitos Aritméticos
Exercício 4: Usando o somador carry-ripple, projetar um
circuito combinacional que troca o sinal de um número
inteiro de 4 bit.
Interfaces:
B
4
Troca sinal
–B
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide 2T.41
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Circuitos Aritméticos
Exercício 4: Solução
Trocar o sinal significa aplicar as regras do complemento
de dois ao número, ou seja:
1.  Negar (“NOT”) bit a bit o número
2.  Somar uma unidade ao resultado do passo anterior
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide 2T.42
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Circuitos Aritméticos
Exercício 4: Solução
b3
b2
0
c4 =
cout
b1
0
SC
c3
r3
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
b0
0
SC
r2
c2
B
0
SC
r1
Slide 2T.43
c1
SC
r0
c0 = cin = 1
-B
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Subtração de Números Inteiros em Binário
Princípio
A − B = A + (− B )
Onde −B é o número B de sinal trocado!
Ora, que coincidência!! (Ou não?)
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide 2T.44
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Subtrator Paralelo (de 4 bits)
A − B = A + (− B )
b3
b2
a3
0
c4
(=cout)
overflow
b1
a2
0
SC
s3
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
c3
b0
a1
0
SC
c2
s2
Slide 2T.45
a0
0
SC
s1
c1
SC
c0 = cin = 1
s0
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Subtrator Paralelo (de 4 bits)
Diagrama de Blocos (Nível Lógico)
b3
b2
a3
c4
(=cout)
a2
SC
c3
Símbolos no Nível RT
cout
overflow
b0
a1
c2
SC
s3
overflow
b1
s2
a0
SC
c1
SC
s1
A
B
4
4
−
s0
A
B
4
overflow
4
−
4
4
S
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide 2T.46
c0 = cin = 1
S
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Subtrator/Subtrator Paralelo (de 4 bits)
b3
a3
b2
a2
b1
a1
b0
a0
Somador
c4 =
cout
b3
b2
a3
c4 =
cout
a2
SC
s3
c3
c3
SC
s3
s2
b1
b0
a1
SC
c2
s2
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
SC
c2
s1
s1
c1
c1
SC
c0 = cin = 0
s0
Subtrator
a0
SC
SC
SC
c0 = cin = 1
s0
Slide 2T.47
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Subtrator/Subtrator Paralelo (de 4 bits)
Como uni-los em um único circuito, configurável?
b3
a3
a3
c4c4
==
cout
cout
b2
a2
a2
b3
SC
SC
c3
c3
s3
s3
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
b1
a1
a1
b2
SC
SC
s2
s2
c2
c2
b0
a0
a0
b1
SC
SC
s1
s1
Slide 2T.48
c1
c1
b0
SC
SC
c0==cin
cin==01
c0
s0
s0
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Subtrator/Subtrator Paralelo (de 4 bits)
Resposta!!!
b3
b2
a3
b1
a2
b0
a1
a0
c3
c4
(=cout)
SC
overflow
c3
s3
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
SC
c2
s2
SC
s1
Slide 2T.49
c1
c0 = cin =
controle
SC
s0
controle
operação
0
S=A+B
1
S=A-B
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Subtrator/Subtrator Paralelo (de 4 bits)
Símbolo no Nível RT
A
B
4
cout
overflow
A
4
4
+/−
B
controle
overflow
4
+/−
4
controle
4
S
S
Tabela de Operação
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
controle
operação
0
S=A+B
1
S=A−B
Slide 2T.50
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
ULA Simples
Suponha que se necessite de uma Unidade Lógico-Aritmética
(ULA) capaz de realizar as seguintes operações
Símbolo no nível RT
C1 C0
operação
comentário
0
0
S=A+B
adição
0
1
S=A-B
subtração
1
0
S = A AND B
“E” bit a bit
1
1
S = A OR B
“OU” bit a bit
A
B
n
overflow
n
ULA
2
C
n
S
Obs: o sinal de overflow pode ou
não ser necessário…
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide 2T.51
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
ULA Simples
Visão Geral desta ULA
A
n
B
AND/OR
bit a bit
n
operação
0
S=A+B
1
S=A-B
C0
operação
0
0
S=A+B
0
1
S=A-B
1
0
S = A AND B
1
1
S = A OR B
n
+/-
C0
C1
C0
n
0
1
n
C1
C0
operação
0
S=A AND B
1
S=A OR B
S
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide 2T.52
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
ULA Simples
a0
Visão de um bit desta ULA
(os demais bits serão
similares)
C1
C0
operação
0
0
S=A+B
0
1
S=A-B
1
0
S = A AND B
1
1
S = A OR B
c1
b0
0
1
SC
0
1
C1
s0
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide 2T.53
Prof. José Luís Güntzel
C0
1. Projeto de Unidade Lógico-Aritmética
ULA Simples
Multiplexador no Nível RT...
0
n
n
0
1
C1
0
1
0
1
0
1
0
1
0
n
Todos os n muxes 2:1 são
controlados pelo mesmo
sinal C1
1
0
1
0
1
0
1
0
1
0
1
0
1
1
n muxes 2:1
C1
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide 2T.54
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
ULA Simples
Mas onde foi parar o overflow?
Voltando ao projeto do todo…
A
n
overflow
B
n
n
n
AND/OR
bit a bit
+/-
n
“0”
n+1
C0
n
n+1
0
1
C1
n+1
overflow
n
S
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide 2T.55
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Deslocador Combinacional
Um deslocador (shifter) com uso de multiplexadores 2:1
A3
A2
A1
A0
entrada
serial
desloca
0
1
S3
0
1
S2
0
1
S1
0
1
S0
•  Se desloca=1, este circuito desloca cada bit uma posição para a
esquerda
•  Qual é o significado desta operação?
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide 2T.56
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Deslocador Combinacional
Outro deslocador (shifter) com uso de multiplexadores 2:1
A3
A2
A1
A0
entrada
serial
desloca
1
0
S3
1
0
1
S2
0
S1
1
0
S0
•  Se desloca=1, este circuito desloca cada bit uma posição para a direita
•  Qual é o significado desta operação?
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide 2T.57
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Multiplicação com Circuito Combinacional
O Multiplicador Matricial
•  É uma implementação direta
do esquema ao lado
•  Cada bit dos produtos parciais
é gerado por meio de um “E”
lógico
1001
multiplicando
1011
multiplicador
1001
1001 +
0000 - 1001 - - -
produtos
parciais
x
1100011
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide 2T.58
resultado
Prof. José Luís Güntzel
1. Projeto de Unidade Lógico-Aritmética
Multiplicação com Circuito Combinacional
O Multiplicador Matricial (p/ Números s/ Sinal)
A0 B2
•  Para multiplicar dois números
de n bits são necessários n-1
somadores de n bits
•  Problemas:
A2 B2
–  Custo
–  Atraso crítico!
Carry out
A1 B2
A1 B1
A0 B1
A0 B0
A1 B0
0
A2 B1
A2 B0
Carry out
Somador de 3 bits
Somador de 3 bits
caminho crítico
M5
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
M4
M3
Slide 2T.59
M2
M1
Prof. José Luís Güntzel
M0
1. Projeto de Unidade Lógico-Aritmética
Multiplicação com Circuito Combinacional
O Multiplicador Matricial (p/ Números s/ Sinal)
O Símbolo no Nível RT
X
Y
3
3
*
6
S
INE/CTC/UFSC
Sistemas Digitais - semestre 2012/2
Slide 2T.60
Prof. José Luís Güntzel
Download