PUCRS - Portal - Microeletrônicamoraes/microel/microel_slides...Conceitos básicos para...
Transcript of PUCRS - Portal - Microeletrônicamoraes/microel/microel_slides...Conceitos básicos para...
-
Microeletrônicaq Professor: Fernando Gehm Moraes
http://www.inf.pucrs.br/moraes/microel
q Livro texto: Digital Integrated Circuits a Design Perspective - RabaeyCMOS VLSI Design - Weste
1Revisão das lâminas: 13/janeiro/2020
http://www.inf.pucrs.br/moraes/microel
-
Sumário da aulas teóricasUNIDADE 1
#1 à Introdução e Dispositivos MOS#2 à Inversor - comportamento estático e dinâmico#3 à Portas lógicas estáticas#4 à Dimensionamento de Portas Lógicas #5 à Portas lógicas dinâmicas #6 à Processo de fabricação CMOS
UNIDADE 2#7 à Circuitos sequenciais estáticos #8 à Circuitos sequenciais dinâmicos#9 à Circuitos aritméticos#10 à Multiplicação e Divisão: conceitos básicos#11 à Metodologias de projeto
2
-
Conceitos básicos para multiplicação
q product of 2 n-bit numbers is an 2n-bit number• sum of n n-bit partial products
q unsigned
multiplicand
multiplier
1101 (13)
1011 (11)
1101
1101
0000
1101
*
10001111 (143)
Partial products
3
-
Multiplicação
A0
B0
A0 B0
A1
B1
A1 B0
A0 B1
A2
B2
A2 B0
A1 B1
A0 B2
A3
B3
A2 B0
A2 B1
A1 B2
A0 B3
A3 B1
A2 B2
A1 B3
A3 B2
A2 B3A3 B3
S6 S5 S4 S3 S2 S1 S0S7
um carry propagado
dois carrys propagados
Quanto maior o número de produtos parciais a somar maior o número de bits de vai-um gerados
PROBLEMA
4
-
Multiplicador “array”
[Rab96] p.409[WE92] p547
HA FA FA HA
X3 X2 X1 X0 Y1
X3 X2 X1 X0 Y0
Z0
FA FA FA HA
X3 X2 X1 X0 Y2 Z1
FA FA FA HA
X3 X2 X1 X0 Y3 Z2
Z3Z4Z5Z6Z7
C
S
PROBLEMA?
Tempo de propagação do vai-um
5
-
Carry-save Additionq Speeding up multiplication is a
matter of speeding up the summing of the partial products.
q “Carry-save” addition can help.q Carry-save addition passes
(saves) the carries to the output, rather than propagating them.
q Example: sum three numbers,310 = 0011, 210 = 0010, 310 = 0011
310 0011+ 210 0010
c 0100 = 410s 0001 = 110
310 0011c 0010 = 210s 0110 = 610
1000 = 810
carry-save add
carry-propagate add
• In general, carry-save addition takes in 3 numbers and produces 2.• Whereas, carry-propagate takes 2 and produces 1.• With this technique, we can avoid carry propagation until final addition
6
-
Carry-save Addition
q Fazer a soma 7 + 3 + 4
0 1 1 1 70 0 1 1 3
0 carrysoma
0 1 0 0 40 carry
somaresultado
carry-save add
carry-save add
7
-
Carry-save Circuits
q When adding sets of numbers, carry-save can be used on all but the final sum.
q Standard adder (carry propagate) is used for final sum.
FA FA FA FA FA FA FA FA 0
CSA
s cs cs cs cs cs cs cs cc
CSA
CPA
CSA
CSA
x0
x1
x2
8
-
CSA
Carry-Save Adder: structureq Postpone the “carry propagation” operation to the last stage
HA HA HA HA
HA FA FA FA
HA FA FA FA
HA FA FA HA[Rab96] p.411
Vector merging stageHA FA FA HA
Todos os valores chegam juntos no somador de propagação
9
-
Implementação do multiplicador
A3 B0
SCA2 B0
SCA1 B0
SCA0 B0
SC
A3 B1
SC
A2 B1
SC
A1 B1
SC
A0 B1
SC
A3 B2
SCA2 B2
SCA1 B2
SCA0 B2
SC
A3 B3
SCA2 B3
S
A1 B3
S
A0 B3
S
B0
B1
B2
B3
P7 P6 P5 P4 P3 P2 P1 P0
A3 A2 A1 A0
Building block: full adder + and
4 x 4 array of building blocks
AddCPA
F A
A(i)
B
A B
S CI CO
Cin Sum In
Sum Out Cout
10
-
architecture Mult_CSAdder of Mult_CSAdder is
type mat4x4 is array(0 to 3) of std_logic_vector(3 downto 0);
signal soma : mat4x4;signal vaium : mat4x4;signal andab : mat4x4;
signal co: std_logic_vector(3 downto 0);
begin
--- primeira camada de geração de produtos parciais (substituí os FA por uma porta AND) ----
bits0: for j in 0 to 3 generate soma(0)(j)
-
F A
A(i)
B
A B
S CI CO
Cin Sum In
Sum Out Cout
A3 B0
SCA2 B0
SCA1 B0
SCA0 B0
SC
A3 B1
SC
A2 B1
SC
A1 B1
SC
A0 B1
SC
A3 B2
SCA2 B2
SCA1 B2
SCA0 B2
SC
A3 B3
SCA2 B3
S
A1 B3
S
A0 B3
S
B0
B1
B2
B3
P7 P6 P5 P4 P3 P2 P1 P0
A3 A2 A1 A0
linhas: for i in 1 to 3 generate bits: for j in 0 to 3 generate
andab(i)(j) vaium(i-1)(j),
c=>soma(i-1)(j+1), S=>soma(i)(j), Cout=>vaium(i)(j) );end generate;
g2: if j=3 generate Adder2: entity FullAdder port map( a=>andab(i)(j), b=>vaium(i-1)(j), c=>'0',
S=>soma(i)(j), Cout=>vaium(i)(j) );end generate;
end generate bits; end generate linhas;
12
-
A3 B0
SCA2 B0
SCA1 B0
SCA0 B0
SC
A3 B1
SC
A2 B1
SC
A1 B1
SC
A0 B1
SC
A3 B2
SCA2 B2
SCA1 B2
SCA0 B2
SC
A3 B3
SCA2 B3
S
A1 B3
S
A0 B3
S
B0
B1
B2
B3
P7 P6 P5 P4 P3 P2 P1 P0
A3 A2 A1 A0
-- primeiros bits da multiplicação são obtidos diretamente dos carry-save adders---P(3 downto 0) soma(3)(1), b=>vaium(3)(0), c=>'0', S=>P(4), Cout=>co(0) );
fa_last: for j in 1 to 3 generateg3: if jP(4+j), Cout=>co(j) );end generate;
g4: if j=3 generate entity FullAdder PORT MAP( '0‘, vaium(3)(j), co(j-1), S=>P(4+j), Cout=>co(j) );
end generate;
end generate fa_last;
end Mult_CSAdder;
13
-
Simulação e atrasos
14
-
Carry-save AdditionCSA is associative and communitive. For example:
(((X0 + X1) + X2 ) + X3 ) = ((X0 + X1) +( X2 + X3 ))
• A balanced tree can be used to reduce the logic delay.
• This structure is the basis of the Wallace Tree Multiplier.
• Partial products are summed with the CSA tree. Fast CPA (ex: CLA) is used for final sum.
• Multiplier delay a log3/2N + log2NCSA
CPA
CSA
CSA
x0x1x2
CSA
CSACSA
x3x4x5x6x7
log3/2N
log2N
15
-
16
O somador carry save, utilizado nos multiplicadores, serve pararealizar a soma quando há várias parcelas a seremadicionadas.
Dados os seguintes valores:A = 001101 (1310)B = 000101 (510)C = 001011 (1110)D = 001010 (1010)E = 000111 (710)F = 001100 (1210)
Mostre a obtenção e os valores de (C1/S1), (C2/S2), (C3/S3),(C4/S4) e a soma final (S5).
Carry Save
Carry Save
Carry Save
Carry Save
Carry Propagate
C1 S1 C2 S2
C3 S3
C4 S4
S5
F E D C B A
A 0 0 1 1 0 1 B 0 0 0 1 0 1 C 0 0 1 0 1 1
S2 C2 S1 S3 C3 C1 S4 C4
Soma
D 0 0 1 0 1 0 E 0 0 0 1 1 1 F 0 0 1 1 0 0
S1 C1
-
17
Multiplicação. Apresenta-se abaixo o diagrama lógico de ummultiplicador de 4 bits.
a)Explique como o carry é propagado no interior do circuito. Qual avantagem deste esquema de propagação de carry?
b)Considere: A=1011 e B=1101. Desenhe sobre o circuito osvalores booleanos correspondentes, verificando se o valor obtidopela multiplicação é o correto.
HAB A
Cout S
HAB A
Cout S
HAB A
Cout S
FAC AB
Cout S
FAC AB
Cout S
FAC AB
Cout S
FAC AB
Cout S
FAC AB
Cout S
FAC AB
Cout S
FAC
C
B
S
FAC B
S
HAB A
CoutS
C CoutCout
B3 A0 B2 A0 B1 A0 B0 A0
B3 A1 B2 A1 B1 A1 B0 A1
B3 A2 B2 A2 B1 A2 B0 A2
B3 A3 B2 A3 B1 A3 B0 A3
P7 P6 P5 P4 P3 P2 P1 P0
-
Multiplicação serialÆ Solução natural para a*b: somas sucessivas n passos
Æ Inicialmente, P=0, A=a, B=b. Cada passo, duas partes:§ soma carregada em P;§ P & A deslocado um bit para a direita.
+
P A
Bn
nn
DeslocamentoVai-um
18
-
A = 11011 (27)B = 00101 (5)
Multiplicação A*B
P Apasso 0 0 0 0 0 0 1 1 0 1 1
0 0 0 1 0 1 1 1 0 1 11
2
3
4
5
0 0 0 1 0 1 1 1 0 100 0 1 1 1 1 1 1 0 10
0 0 1 1 1 1 1 1 0000 0 1 1 1 1 1 1 000
0 0 1 1 1 1 1 10001 1 0 1 1 1 1 1000
1 1 0 1 1 1 100000 0 0 1 1 1 10100
0 0 0 1 1 101000
135 è 100 00111
19
-
➨ Solução para a/b: subtrações sucessivas, n passos
➨ Algoritmo: 1) desloca P&A p/ esq 1 bit; sub ß P-B; 2) if (sub
-
A = 11011 (27)B = 00101 (5)
Divisão A/B
P (conterá o resto) A (conterá a divisão)passo 0 0 0 0 0 0 1 1 0 1 1
0 0 0 0 0 1 1 0 1 1 010 0 0 0 0 1 1 0 1 1 0
2
3
4
5
21
1) desloca P&A p/ esq 1 bit; sub ß P-B; 2) if (sub
-
A = 11011 (27)B = 00101 (5)
P (conterá o resto) A (conterá a divisão)passo 0 0 0 0 0 0 1 1 0 1 1
0 0 0 0 0 1 1 0 1 1 010 0 0 0 0 1 1 0 1 1 00 0 0 0 1 1 0 1 1 0 020 0 0 0 1 1 0 1 1 0 0
3
4
5
Divisão A/B
22
1) desloca P&A p/ esq 1 bit; sub ß P-B; 2) if (sub
-
A = 11011 (27)B = 00101 (5)
P (conterá o resto) A (conterá a divisão)passo 0 0 0 0 0 0 1 1 0 1 1
0 0 0 0 0 1 1 0 1 1 010 0 0 0 0 1 1 0 1 1 00 0 0 0 1 1 0 1 1 0 020 0 0 0 1 1 0 1 1 0 00 0 0 1 1 0 1 1 0 0 030 0 0 0 0 1 1 1 0 0 1
4
5
Divisão A/B
00110 - 00101 = 001
23
1) desloca P&A p/ esq 1 bit; sub ß P-B; 2) if (sub
-
A = 11011 (27)B = 00101 (5)
P (conterá o resto) A (conterá a divisão)passo 0 0 0 0 0 0 1 1 0 1 1
0 0 0 0 0 1 1 0 1 1 010 0 0 0 0 1 1 0 1 1 00 0 0 0 1 1 0 1 1 0 020 0 0 0 1 1 0 1 1 0 00 0 0 1 1 0 1 1 0 0 030 0 0 0 0 1 1 1 0 0 10 0 0 0 1 1 1 0 0 1 040 0 0 0 1 1 1 0 0 1 0
5
Divisão A/B
24
1) desloca P&A p/ esq 1 bit; sub ß P-B; 2) if (sub
-
A = 11011 (27)B = 00101 (5)
P (conterá o resto) A (conterá a divisão)passo 0 0 0 0 0 0 1 1 0 1 1
0 0 0 0 0 1 1 0 1 1 010 0 0 0 0 1 1 0 1 1 00 0 0 0 1 1 0 1 1 0 020 0 0 0 1 1 0 1 1 0 00 0 0 1 1 0 1 1 0 0 030 0 0 0 0 1 1 1 0 0 10 0 0 0 1 1 1 0 0 1 040 0 0 0 1 1 1 0 0 1 00 0 0 1 1 1 0 0 1 0 050 0 0 0 1 0 0 0 1 0 1
Resto = 2 resultado=5
Divisão A/B1) desloca P&A p/ esq 1 bit; sub ß P-B; 2) if (sub
-
Shift and Rotate Operations
q Used in:§ Microprocessors§ Encryption algorithms
q If fixed shift, simply wire the inputs to the correct output positions
q Variable shift§ One-bit shifter§ Barrel shifter§ Logarithmic shifter
-
One-bit Shifter
Ai-1
Ai
Right NOP Left
Bi-1
Bi
Bit-slice i
27
-
n-bit Shifter (barrel shifter)
q Quadratic number of transistorsq One switch per path
in3 in2 in1 in0out0
out1
out2
out3
28
RR1RR1
Rotacioando 1 bit para direita:rotate 1 right(1100) 0110
ß in1
ß in2
ßin3
ßin0
-
n-bit Shifter (barrel shifter)
in3 in2 in1 in0out0
out1
out2
out3
29
RR2
RR2
Rotacioando 2 bits para direita:rotate 1 right(1100) 0 0 11
ß in2
ß in3
ßin0
ßin1
-
n-bit Shifter (barrel shifter)
in3 in2 in1 in0out0
out1
out2
out3
30
RR2
RR2RR1
RR1
Circuito completo:
RR0 RR3
RR3
-
q Deslocamento lógico10001 à 1 bit para a direita 01000
1 bit para a esquerda 00010
q Deslocamento aritmético00100 à 1 bit para a direita 00010 (de 4 para 2) 10100 à 1 bit para a direita 11010 (de -12 para -6)
31
Deslocamento Aritmético
-
B3
B2
B1
B0
A3
A2
A1
A0
Sh3Sh2Sh1Sh0
Sh3
Sh2
Sh1
32
ß A3
ß A3
ßA2
ßA1
SH1 ß 1
Area dominated by wiring
Bit 3 wrapped around
-
B3
B2
B1
B0
A3
A2
A1
A0
Sh3Sh2Sh1Sh0
Sh3
Sh2
Sh1
33
ß A3
ß A3
ßA3
ßA2
SH2 ß 1
-
Exemplo de Circuito Complexo
34
-
35
-
36
-
Flip-flops utilizados no circuito
37
-
38
Q
QSET
CLR
DQ1
clockQ
QSET
CLR
DQ2
clock
Latch (atraso interno 1 ns) Mestre escravo (atraso interno 1 ns)
Clk
Q1
Q2
t
t
t 0 5 10 15 20 25 30 35 40 45
Para os circuitos de memória abaixo, com valor inicial do Q1=’0’ e Q2=’0’, determine o comportamento de ambos os circuitos, completando os diagramas de tempo abaixo. Não desenhe apenas os diagramas de tempo, explique-os. O “atraso interno” refere-se ao tempo do inversor mais o do circuito de memória.
Exercício 1/6
-
39
clock IN clock
o1 Q3
Considere o circuito representado abaixo, preenchendo a forma de onda parao sinal Q3. Considere níveis lógicos perfeitos (0 e vcc) – sem distorções devidoao efeito de VTH.
a) O circuito, para armazenamento da entrada IN, é sensível ao nível ou à borda do sinalclock? Se for sensível ao nível do sinal clock, para qual nível o circuito é transparente,ou se for sensível à borda, para qual borda o circuito armazena a informação.
b) De que forma este circuito mantém a informação armazenada, dado que não há laçode realimentação no mesmo?
Q3
Exercício 2/6
-
40
Exercício 3/6
Prova P2 Disciplina: Microeletrônica T 590 Professor: Fernando Gehm Moraes
Aluno: 19/Junho/2017
1. (1,5) Explique a operação de portas lógicas dinâmicas utilizando o exemplo abaixo (NAND). Apresente no diagrama de tempos 1 transição válida e 1 transição inválida nas entradas A e B. Para cada transição, indique a mesma no diagrama de tempos e explique porque ela é válida e inválida, mostre o estado da saída S.
Para implementar um contador de 4 bits, o projetista resolveu substituir os flip-flops D mestre-escravo por latches D, com o objetivo de reduzir o número de transistores do circuito. Para o primeiro bit, este projetista utilizou um clock na forma de pulso (glitch clock). Pede-se:
a) Porque o projetista decidiu utilizar um clock na forma de pulso estreito ao invés de um sinal de clock com duty cycle de 50%?
b) Explique o comportamento deste novo circuito, dizendo se o mesmo vai operar como um contador ou não.
c) Apresente as formas de onda para clock (glitch), e o que se obtém nos sinais Q0 e Q1 [Q2 e Q3 são opcionais].
Circuitos aritméticos de soma. Apresenta-se abaixo o diagrama de um bloco do somador carry-select. Pede-se: d) Explique o princípio lógico de funcionamento deste somador, e como é obtido um somador de 32 bits
utilizado estágios de 4 bits? Porque este somador é mais rápido que o ripple carry? e) Considerando apenas o tempo do FA (full adder) (1,2 ns) e o tempo do multiplexador (0,4 ns), qual o tempo
de pior caso para a soma do carry-select, e qual o tempo de pior caso para o ripple carry, considerando soma de 32 bits. Apresente como o resultado foi obtido.
f) Considerando o número de transistores para o FA igual a 28 transistores, qual o número total de transistores para cada um dos somadores de 32 bits? (o número de transistores do multiplexador deve ser determinado na questão – não é fornecido)
S
A
B
ck
ck
A
B
S
D Q
Qck
LATCHD Q
Qck
LATCHD Q
Qck
LATCHD Q
Qck
LATCH
GLITCHClock
Q0 Q1 Q2 Q3
FA
b3 a3
FA
s3
FA
b2 a2
FA
s2
FA
b1 a1
FA
s1
FA
b0 a0
FA
s0
cout
cin
‘0’
‘1’
-
41
Prova P2 Disciplina: Microeletrônica T 590 Professor: Fernando Gehm Moraes
Aluno: 19/Junho/2017
1. (1,5) Explique a operação de portas lógicas dinâmicas utilizando o exemplo abaixo (NAND). Apresente no diagrama de tempos 1 transição válida e 1 transição inválida nas entradas A e B. Para cada transição, indique a mesma no diagrama de tempos e explique porque ela é válida e inválida, mostre o estado da saída S.
Para implementar um contador de 4 bits, o projetista resolveu substituir os flip-flops D mestre-escravo por latches D, com o objetivo de reduzir o número de transistores do circuito. Para o primeiro bit, este projetista utilizou um clock na forma de pulso (glitch clock). Pede-se:
a) Porque o projetista decidiu utilizar um clock na forma de pulso estreito ao invés de um sinal de clock com duty cycle de 50%?
b) Explique o comportamento deste novo circuito, dizendo se o mesmo vai operar como um contador ou não.
c) Apresente as formas de onda para clock (glitch), e o que se obtém nos sinais Q0 e Q1 [Q2 e Q3 são opcionais].
Circuitos aritméticos de soma. Apresenta-se abaixo o diagrama de um bloco do somador carry-select. Pede-se: d) Explique o princípio lógico de funcionamento deste somador, e como é obtido um somador de 32 bits
utilizado estágios de 4 bits? Porque este somador é mais rápido que o ripple carry? e) Considerando apenas o tempo do FA (full adder) (1,2 ns) e o tempo do multiplexador (0,4 ns), qual o tempo
de pior caso para a soma do carry-select, e qual o tempo de pior caso para o ripple carry, considerando soma de 32 bits. Apresente como o resultado foi obtido.
f) Considerando o número de transistores para o FA igual a 28 transistores, qual o número total de transistores para cada um dos somadores de 32 bits? (o número de transistores do multiplexador deve ser determinado na questão – não é fornecido)
S
A
B
ck
ck
A
B
S
D Q
Qck
LATCHD Q
Qck
LATCHD Q
Qck
LATCHD Q
Qck
LATCH
GLITCHClock
Q0 Q1 Q2 Q3
FA
b3 a3
FA
s3
FA
b2 a2
FA
s2
FA
b1 a1
FA
s1
FA
b0 a0
FA
s0
cout
cin
‘0’
‘1’
Exercício 4/6
-
42
Exercício 5/6
1. Circuitos de rotação e deslocamento. Apresentar uma matriz de transistores capaz de realizar deslocamentos para a direita para palavras de 4 bits, onde o bit mais significativo recebe ‘0’ (gnd). A tabela abaixo ilustra os valores que os bits de saída (B3 a B0) devem receber em função dos bits de entrada (A3 a A0).
Ação Comando B3 B2 B1 B0 Não desloca SR0 A3 A2 A1 A0 Deslocamento de 1 bit a direita SR1 0 A3 A2 A1 Deslocamento de 2 bits a direita SR2 0 0 A3 A2 Deslocamento de 3 bits a direita SR3 0 0 0 A3
-
43
Exercício 6/6
1. (2,0) Armazenamento. Considere o circuito flip-flop D mestre-escravo sensível à borda de descida representado abaixo.
a) (0,5 pt) Desenhe o circuito equivalente para cada nível do clock (ck=0 e ck=1).
b) (1,5 pt) Complete a tabela abaixo, explicando o comportamento de cada sinal [amostrando um determinado sinal (qual?), pré-carga em determinado valor (qual?), mantendo o valor anterior, recebendo novo valor, ‘0’, ‘1’].
Comportamento do sinal de clock (ck)
Sinal interno X Sinal interno Y Sinal interno Z Saída Q
Em nível lógico ‘1’
Mudando de ‘1’ para ‘0’ D-=’1’ D-=’0’
D-è valor da entrada D antes da borda de clock, respeitando tempo de setup.
Vcc Vcc Vcc
D ck
ck
ck
ckQ
X
Y Z
M1
M2
M3
M4
M5
M6
M7
M8
M9