flip-flops, registros e contadoresmauro.roisenberg/ine5377/cursos-ica/sd1-03-register... · 9 17...
TRANSCRIPT
1
1
PUC-Rio
Flip-Flops, Registros e Contadores
2
PUC-Rio
D latch
2
3
PUC-Rio
Operação do D-latch
• se C=1 a saída acompanha a entrada• se C=0 a saída mantém estado anterior• não pode ser usado em circuitos síncronos:
leitura e escrita no mesmo ciclo de relógio. Ex: inadequado para shift-register
4
PUC-Rio
D-latch: Parâmetros de Tempo• Propagation delay (de C ou D para Q)• Setup time (preparação de D antes da descida de C)
• Hold time (manutenção de D após a descida de C)
-manutenção de D
-preparação de D
3
5
PUC-Rio
Edge-triggered D: comportamento
6
PUC-Rio
D flip-flop: Parâmetros de Tempo• Propagation delay (de CLK)• Setup time (D antes CLK)• Hold time (D após CLK)
4
7
PUC-Rio
T flip-flops
• Importante para contadores
8
PUC-Rio
Oscilações em Chaves (Bounce)
5
9
PUC-Rio
Circuito Anti-Bounce 1
10
PUC-Rio
Circuito Anti-Bounce 2
Possui níveis estáveis na saída (VOL, VOH)
6
11
PUC-Rio
Contadores• Circuito sequencial cujo diagrama de estado é
um ciclo simples.
RESET EN
EN
ENEN EN
EN
EN
EN′EN′ EN′
EN′EN′EN′
12
PUC-Rio
Tipos de Contadores• Assíncrono
– saída de um FF é o sinal de clock para FF seguinte (ripple counter)
• Síncrono– mesmo sinal de relógio para todos os FFs– Tipos: enable serial ou paralelo
7
13
PUC-Rio
Contador Assíncrono-Ripple Counter• Cada FF troca de estado quando o FF anterior
vai de 1 → 0• o MSB só troca quandotodos trocam de 1 → 0: onda de propagaçãoq3 q2 q1 q00 0 0 00 0 0 10 0 1 00 0 1 10 1 0 0-----------0 1 1 11 0 0 0
14
PUC-RioDelay de Propagaçãoprovoca estados espúrios nos
contadores
0 1 2 3 4 5 6 7 8
2 2 44Estados espúrios →
TP5
TP4
TP3
TP2
TP1
8070605040302010
8
15
PUC-Rio
Contadores Assíncronos TTL• Série 749x• Dividem por 2 e por n/2
– 7490: ÷ 2 , ÷ 5, ÷ 10– 7492: ÷ 2 , ÷ 6, ÷ 12– 7493: ÷ 2 , ÷ 8, ÷ 16
• Q0 ÷ 2 sinal em CP0• Q3 ÷ n/2 sinal em CP1• Ligando Q0 a CP1→ ÷n
MS1MS2MR1MR2
CP0CP1
Q3
Q2
Q1
Q0 ÷ 2
÷ n
16
PUC-Rio
7493 OutputCountQD QC QB QA
0 L L L L1 L L L H2 L L H L3 L L H H4 L H L L5 L H L H6 L H H L7 L H H H8 H L L L9 H L L H
10 H L H L11 H L H H12 H H L L13 H H L H14 H H H L15 H H H H
7490 OutputCountQD QC QB QA
0 L L L L1 L L L H2 L L H L3 L L H H4 L H L L5 L H L H6 L H H L7 L H H H8 H L L L9 H L L H
7492 OutputCountQD QC QB QA
0 L L L L1 L L L H2 L L H L3 L L H H4 L H L L5 L H L H6 H L H L7 H L H H8 H L L L9 H L L H
10 H H H L11 H H H H
7490 Reset e Set OutputMR01 MR02 MS1 MS2 QD QC QB QA
H H L X L L L LH H X L L L L LX X H H H L L HX L X LL X L XL X X LX L L X
CountCountCountCount
7492/3 Reset OutputMR01 MR02 QD QC QB QA
H H L L L LL XX L
CountCount
Binários fora de sequência
Saída não simétrica
9
17
PUC-Rio
TP2
TP1
CP1CP2
Q1Q2
74LS90MS1MS2MR1MR2
CP0CP1
Q3
Q2
Q1
Q0
TP2
TP1
380360340320300280260240220200180160
Exemplo de Divisor por 9• Reset a 0 quando Qi = 9
18
PUC-RioImplementação de DivisoresFatorando N
N= N1 x N2 x ...x Nk
CP1CP2
Q1Q2
74LS90MS1MS2MR1MR2
CP0CP1
Q3
Q2
Q1
Q0
74LS90MS1MS2MR1MR2
CP0CP1
Q3
Q2
Q1
Q0
74LS90MS1MS2MR1MR2
CP0CP1
Q3
Q2
Q1
Q0
÷ 10 ÷ 10 ÷ 5
÷ 500
10
19
PUC-Rio
Implementação de DivisoresN representado em base qualquerN= N1 x B0 + N2 x B1...x Nk x Bk-1
• Útil para divisor por números primos: 97, 53, 17, etc
• Contadores contam livremente até o valor da base
• Reset depende das saídas de todos os contadores
20
PUC-Rio
Divisor por 97, base 10
TP2
TP1
CP1CP2
Q1Q2
74LS90MS1MS2MR1MR2
CP0CP1
Q3
Q2
Q1
Q0
74LS90MS1MS2MR1MR2
CP0CP1
Q3
Q2
Q1
Q0
N= 7 x 100 + 9 x 101
TP2
TP1
10401000960920880840800760720680640600560520480440
11
21
PUC-Rio
Divisor por 125, base 16
TP3TP2
CP1CP2
Q1Q2
5V
74LS93MR1MR2CP0CP1
Q3Q2Q1Q0
74LS93MR1MR2CP0CP1
Q3Q2Q1Q0
TP3
TP2
12801240120011601120108010401000960920880840800760720680640
N= 13 x 160 + 7 x 161
22
PUC-Rio
LSB
MSB
ContadorSíncrono
lógica de enableserial
12
23
PUC-Rio
LSB
MSB
ContadorSíncrono
Lógica de enableparalela:mais rápido
24
PUC-Rio
74x163 MSI 4-bit counter
13
25
PUC-Rio
74x163 diagrama
lógicointerno
• Portas XOR fazem função “Toggle” se EN=1
• Estrutura de Mux para load
• Todas as operações sinronizadas com CK
26
PUC-Rio
Operação do Contador
• Divide por ÷16• Conta se ENP e ENT ativos.• Load prevalece sobre contagem• Clear prevalece sobre contagem e Load• Todas operações ocorrem na subida de CLK.• RCO=1 quando ENT = ‘1’ e Count = 15; é
usada para cascatear contadores.
14
27
PUC-RioContador 74163 (4 bits)Contagem Livre
• “divide-by-16” counter
28
PUC-Rio
Sequência de Contagem Modificada
• Load 0101 (5) após Count = 15• 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 5, 6, …• “divide-by-11” counter
15
29
PUC-RioOutro Modo
• Clear após Count = 1010 (10)• 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 1, 2, 3, …• “módulo-11” ou “divide-by-11” counter
30
PUC-Rio
Contagemde 3 a 12
16
31
PUC-Rio
Contadores em cascata• RCO (ripple carry out) vai a ‘1’ no estato 15,
se ENT = ‘1’
32
PUC-RioDecodificando estados da contagem binária
• não há glitches devido ao contador (síncrono)
17
33
PUC-Rio
Formas de onda da decodificação
• Há glitches devido às saídas do decodificador (5,6,7) que têm diferentes delays
• Glitches podem ou não ser um problema.
34
PUC-Rio
Saídas livres de Glitches
• Saídas atrasadas (armazenadas) de um pulso de clock.
• Outra solução: enable decoder =clock => saída do decodificador só no segundo semi-ciclo do relógio
18
35
PUC-RioDecodificação de Estado do Contador Assíncrono : com e sem glitches
Estados sem GlitchesEN=CLOCK_HIGH
Estados com glitchesEN=1
TP9
+V
V25V
TP8TP7TP6TP5
TP4TP3TP2TP1
74LS138
A2A1A0
E3E2E1
Q7Q6Q5Q4Q3Q2Q1Q0
U374F138
74LS138
A2A1A0
E3E2E1
Q7Q6Q5Q4Q3Q2Q1Q0
U274F138
CP1CP2
Q1Q2
V1
74LS93MR1MR2CP0CP1
Q3Q2Q1Q0
U1
36
PUC-RioDecodificação de Estado do Contador: com e sem glitches
Formas de Onda
TP9
TP8
TP7
TP6
TP5
TP4
TP3
TP2
TP1
400390380370360350
de 01 para 10 ocorre 00
de 11 para 00 ocorre 10
19
37
PUC-Rio
Outros Contadores Síncronos• Série 7419X - Contadores UP/DOWN• clock e select(Up/Down)
– 74190 BCD, ÷ 10– 74191 binário, ÷ 16
• 2 sinais de relógio: clock_up e clock_down– 74192 BCD, ÷ 10– 74193 binário, ÷ 16
38
PUC-Rio
Sincronizando Sinal Assíncrono
SYNCIN é sincronizado com o sistema síncrono, garantindo que qualquer alteração só ocorrerá na transição positiva do relógio
20
39
PUC-Rio
Registros de Múltiplos bits
• 74x175
40
PUC-Rio
8-bit (octal)
• 74x374– 3-state output
21
41
PUC-Rio
Registros de 8 bits
• 74x273– clear síncrono
• 74x377– clock enable
42
PUC-Rio
Latch de 8 bits• 74x373
– Output enable– Latch-enable input “C” ou “G”
• Registro X Latch, qual a diferença?– Registro: comportamento edge-triggered– Latch: saída segue entrada quando G=enable– Latch não pode ser usado em circuitos síncronos!!!