Upload
dokien
View
213
Download
0
Embed Size (px)
Citation preview
PROJETOS DIGITAIS E MICROPROCESSADORESUNIDADE LÓGICA E ARITMÉTICA
Marco A. Zanata Alves
PROJETOS DIGITAIS E MICROPROCESSADORES 1
REPRESENTAÇÃO BINÁRIACOMPLEMENTO DE 2
PROJETOS DIGITAIS E MICROPROCESSADORES 2
000
001
010
011
100
101
110
111
Representação binária
REPRESENTAÇÃO BINÁRIACOMPLEMENTO DE 2
PROJETOS DIGITAIS E MICROPROCESSADORES 3
0
1
2
3
-4
-3
-2
-1 000
001
010
011
100
101
110
111
Representação decimal
-4 2 1
REPRESENTAÇÃO BINÁRIACOMPLEMENTO DE 2
Overflow, acontece quando o valor armazenado é maior (em magnitude) do que o registrador pode armazenar ou representar
Underflow, acontece quando tentamos armazenar um valor menor que o menor valor absoluto que o registrador é capaz de armazenar ou representar
PROJETOS DIGITAIS E MICROPROCESSADORES 4
0
1
2
3
-4
-3
-2
-1 000
001
010
011
100
101
110
111
overflow
underflow
OVERFLOW DURANTE SOMAS
Se X e Y tiverem sinais opostos, nunca ocorrerá overflow
Overflow, poderá ocorrer apenas se X e Y tiverem sinais iguais
Overflow acontece quando X e Y tem sinais iguais, e o resultado tiver um sinal diferente
Pos + Pos = Neg Overflow
Neg + Neg = Pos Overflow
PROJETOS DIGITAIS E MICROPROCESSADORES 5
REPRESENTAÇÃO BINÁRIACOMPLEMENTO DE 2
Converta os números:
1100 00002
0100 00002
1111 11112
1000 00002
1000 11112
PROJETOS DIGITAIS E MICROPROCESSADORES 6
-128 64 32 16 8 4 2 1
Qual o bit
mais
significativo?
INTRODUÇÃO A UNIDADE LÓGICA E ARITMÉTICA (ULA)
Construa um circuito com:
8 entradas de dados 𝑏3, 𝑏2, 𝑏1, 𝑏0, 𝑎3, 𝑎2, 𝑎1, 𝑎0
1 entrada de seleção Op
4 saídas 𝑠3, 𝑠2, 𝑠1, 𝑠0
tal que:
𝑆3𝑆2𝑆1𝑆0 = 𝐴 + 𝐵 se Op=0, 𝐴 − 𝐵 se Op=1
Todas as operações são com números sem sinal. Desconsidere os casos em que há overflow.
PROJETOS DIGITAIS E MICROPROCESSADORES 7
Somador completo4 bits c in ‘0’cout
a3 a2 a1 a0b3 b2 b1 b0
Somador completo4 bits c in ‘1’cout
D 1 D 0 D 1 D 0 D 1 D 0 D 1 D 0
MUX MUX MUX MUX
Op
s3 s2 s1PROJETOS DIGITAIS E MICROPROCESSADORES 8
UNIDADE LÓGICA-ARITMÉTICA
Unidade Lógica-Aritmética (ULA): circuito digital que faz operações lógicas e aritméticas. A operação a ser feita é selecionada pelos bits de seleção de operação/função
A ULA do exercício anterior só possui 1 bit de operação, para escolher entre soma e subtração.
Representado por um trapézio chanfrado
PROJETOS DIGITAIS E MICROPROCESSADORES 9
ULA
UNIDADE LÓGICA-ARITMÉTICA
𝑅𝑒𝑔𝐷𝑒𝑠𝑡 <= 𝑈𝐿𝐴 𝐹𝑢𝑛, 𝑟𝑒𝑔𝐴, 𝑟𝑒𝑔𝐵 𝐹𝑢𝑛 ∈ {+,−,≪,≫,∧,∨,∨}
PROJETOS DIGITAIS E MICROPROCESSADORES 10
ULAA
B
R
Clock
Reg.
FonteReg.
Dest.4
4
4
Fun
Qtos. bits
para
Fun?
UNIDADE LÓGICA-ARITMÉTICA
𝑅𝑒𝑔𝐷𝑒𝑠𝑡 <= 𝑈𝐿𝐴 𝐹𝑢𝑛, 𝑟𝑒𝑔𝐴, 𝑟𝑒𝑔𝐵 𝐹𝑢𝑛 ∈ {+,−,≪,≫,∧,∨,∨, ¬}
PROJETOS DIGITAIS E MICROPROCESSADORES 11
ULAA
B
R
Clock
Reg.
FonteReg.
Dest.4
4
4
Fun
𝐴 = 0101𝐵 = 0001𝐴 + 𝐵 = 0101 + 0001 = 1011𝐴 − 𝐵 = 0101 − 0001 = 0100𝐴 ≪ 1 = 0101 ≪ 1 = 1010𝐴 ≫ 1 = 0101 ≫ 1 = 0010𝐴 ∧ 𝐵 = 0101 ∧ 0001 = 0001𝐴 ∨ 𝐵 = 0101 ∨ 0001 = 0101𝐴 ∨ 𝐵 = 0101 ∨ 0001 = 0100¬𝐴 = ¬0101 = 1010
UNIDADE LÓGICA-ARITMÉTICA
PROJETOS DIGITAIS E MICROPROCESSADORES 12
R
A
B
Clock
Reg.
FonteReg.
Dest.
Fun
d0d1d2d3
d0d1d2d3
d0d1d2d3
ULA
ULA
ULA
ULA
O que temos
dentro de
uma ULA?
DENTRO DA UNIDADE LÓGICA-ARITMÉTICA
PROJETOS DIGITAIS E MICROPROCESSADORES 13
Mux
0 +
1 −
2 ≪
3 ≫
4 ∧
5 ∨
6 ∨
7 ¬
𝐴
𝐵
𝑅𝐴𝑖−1
𝐴𝑖+1
Fun
vem
+
vai
-
3
/
OTIMIZANDO SOMADORES
PROJETOS DIGITAIS E MICROPROCESSADORES 14
BLOCOS SOMADORES BINÁRIOS
𝑠𝑖 = 𝑎𝑖 ⊕𝑏𝑖 ⊕ 𝑐𝑖−1
𝑐𝑖 = 𝑎𝑖𝑏𝑖 + (𝑎𝑖 + 𝑏𝑖) · 𝑐𝑖−1
ci
si
ci− 1
Bloco somador
completo
(Full Adder)
ai bi
PROJETOS DIGITAIS E MICROPROCESSADORES 15
SOMADOR DE 4 BITS
Construa um somador de 4 bits, com FullAdders
PROJETOS DIGITAIS E MICROPROCESSADORES 16
Somador completo
4 bits
𝑏3…𝑏0 𝑎3…𝑎0
𝑐𝑖𝑛𝑐𝑜𝑢𝑡
𝑟3…𝑟0
SOMADOR DE 4 BITS
PROJETOS DIGITAIS E MICROPROCESSADORES 17
FA vemvai
val
A B
FA vemvai
val
A B
FA vemvai
val
A B
FA vemvai
val
A B
Vem=0
A0=1
B0=0
A1=1
B1=1
A2=0
B2=0
A3=0
B3=1
R=1 R=1 R=0 R=1
Vai=0
SUBTRATOR DE 4 BITS
Construa um subtrator de 4 bits
PROJETOS DIGITAIS E MICROPROCESSADORES 18
SUBTRATOR DE 4 BITS
Construa um subtrator de 4 bits
PROJETOS DIGITAIS E MICROPROCESSADORES 19
Somador completo
4 bits
𝑏3…𝑏0 𝑎3…𝑎0
𝑐𝑖𝑛 = 1𝑐𝑜𝑢𝑡
𝑟3…𝑟0
Sinal
sub
MELHORA NO SOMADOR
PROJETOS DIGITAIS E MICROPROCESSADORES 20
FA vemvai
val
A B
FA vemvai
val
A B
FA vemvai
val
A B
FA vemvai
val
A B
Vem
A0
B0
A1
B1
A2
B2
A3
B3
R R R R
Vai
atraso
MELHORA NO SOMADOR
Os somadores com propagação de Vai-um (ripple carry) são muito lentos
O resultado (𝑉𝑎𝑖𝑛) só será conhecido após todos os (𝑉𝑒𝑚𝑚 , 𝑚 <𝑛) serem computados, um após o outro
Qual o número de portas lógicas entre 𝑉𝑒𝑚0 e 𝑉𝑎𝑖𝑛?
PROJETOS DIGITAIS E MICROPROCESSADORES 21
ci
si
ci− 1
ai bi
Ideia: adiantar
o sinal de Vai-um
SOMADOR CARRY-LOOKAHEAD
Esse somador utiliza uma técnica para aceleração do cálculo do carry
Para cada soma, nós vamos adiantar o sinal de carry a partir das entradas já disponíveis, sem esperar a propagação das informações sendo calculadas
Para isso iremos precisar de mais portas lógicas para transformar trabalho sequencial em trabalho paralelo
Com o aumento da lógica, normalmente fazemos blocos somadores de 4 bits. Onde os blocos são ligados em série
PROJETOS DIGITAIS E MICROPROCESSADORES 22
SOMADOR CARRY-LOOKAHEAD
Iremos então antecipar o calculo do vai-um em função dos bits menos significativos
PROJETOS DIGITAIS E MICROPROCESSADORES 23
𝐴 𝐵 𝑉𝟎 𝑅 𝑉𝟏
0 0 0 0 0
0 1 0 1 0
1 0 0 1 0
1 1 0 0 1
0 0 1 1 0
0 1 1 0 1
1 0 1 0 1
1 1 1 1 1
𝐺𝑖 = 𝑎𝑖 ∙ 𝑏𝑖 Gera vai-um
𝑃𝑖 = 𝑎𝑖 + 𝑏𝑖 Propaga vai-um
𝐴𝑖 𝐵𝑖
𝐺𝑖 𝑃𝑖
SOMADOR CARRY-LOOKAHEAD
𝐺𝑖 = 𝑎𝑖 ∙ 𝑏𝑖 Gera vai-um
𝑃𝑖 = 𝑎𝑖 + 𝑏𝑖 Propaga vai-um
𝑉1 = 𝐺0 + 𝑃0 ∙ 𝑉0
𝑉2 = 𝐺1 + 𝑃1 ∙ 𝐺0 + 𝑃1 ∙ 𝑃0 ∙ 𝑉0
𝑉3 = 𝐺2 + 𝑃2 ∙ 𝐺1 + 𝑃2 ∙ 𝑃1 ∙ 𝐺0 + 𝑃2 ∙ 𝑃1 ∙ 𝑃0 ∙ 𝑉0
𝑉4 = 𝐺3 + 𝑃3 ∙ 𝐺2 + 𝑃3 ∙ 𝑃2 ∙ 𝐺1 + 𝑃3 ∙ 𝑃2 ∙ 𝑃1 ∙ 𝐺0 + 𝑃3 ∙ 𝑃2 ∙ 𝑃1 ∙ 𝑃0 ∙ 𝑉0
…
PROJETOS DIGITAIS E MICROPROCESSADORES 24
Assim calculamos 4 vai-uns
em paralelo!
Evita-se calcular 5 vai-uns
em paralelo devido ao custo
em portas lógicas, além do
atraso não compensar
SOMADOR CARRY-LOOKAHEAD 2BITS
PROJETOS DIGITAIS E MICROPROCESSADORES 25
𝐴0 𝐵0
𝐺0 𝑃0
𝐶0 𝐴1 𝐵1
𝐺1 𝑃1
𝐶2
𝑆1
𝑆0 𝐶1
PROJETOS DIGITAIS E MICROPROCESSADORES 26
𝐴0 𝐵0
𝐺0 𝑃0
𝐶0 𝐴1 𝐵1
𝐺1 𝑃1
𝐶2
𝑆1
𝑆0 𝐶1
ci
si
ci− 1
ai bi
ci
si
ai bi
Qual o
caminho
crítico?
PROJETOS DIGITAIS E MICROPROCESSADORES 27
EXEMPLOCOMPLETO