Você está na página 1de 175

Sistemas Digitais e Microprocessadores

Roberto A Hexsel
1
Departamento de Informatica
Universidade Federal do Parana
11 de marco de 2006
1
c _ Roberto A Hexsel 2001-2006
Sumario
1 Especicacao Formal para Projetistas de Circuitos 2
1.1

Algebra Booleana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Formulas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Tipos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 Circuitos Combinacionais 6
2.1 Circuitos Combinacionais Basicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1.1 Multiplexador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1.2 Demultiplexador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.1.3 Seletor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2 Implementacao em TTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.1 Multiplexador 74151 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.2 Decodicador 74154 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.3 Seletor 74138 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3 Deslocamentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.3.1 Deslocador Logartmico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3.2 Rotacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4 Implementacao em CMOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.4.1 Portas Logicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.4.2 Terceiro Estado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3 Circuitos Seq uenciais 22
3.1 Circuitos com Memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2 Flip Flops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3 Contadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3.1 Ripple Counter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.3.2 Contadores Sncronos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.3.3 74163 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.3.4 74191 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.4 Registradores de Deslocamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.4.1 74164 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.4.2 74194 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.4.3 Contador em Anel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.4.4 Contador Johnson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
i
Sumario ii
3.4.5 Somador Serial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.5 Uma Rapida Olhada no Relogio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.6 Velocidade Maxima de Operacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.7 Projeto de Maquinas de Estados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.7.1 Diagrama de Estados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.7.2 Implementacao de Maquinas de Estado . . . . . . . . . . . . . . . . . . . . 41
3.7.3 Maquina de Vender Chocolates . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.8 Micro-controladores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.8.1 Memoria ROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.8.2 Micro-controlador Baseado em ROM . . . . . . . . . . . . . . . . . . . . . . 46
3.8.3 Controle de Fluxo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.8.4 Maquina de Vender Chocolates Versao 2 . . . . . . . . . . . . . . . . . . . 50
3.9 Circuitos Complexos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.9.1 Bloco de Registradores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.9.2 Memoria RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.9.3 Pilha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.9.4 Fila Circular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4 Memoria 61
4.1 Tipos de Memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.2 Interface ProcessadorMemoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.2.1 Intertravamento dos Sinais na Interface . . . . . . . . . . . . . . . . . . . . 63
4.2.2 Ciclo de Leitura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.2.3 Ciclo de Escrita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.3 Circuitos Integrados de Memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
4.3.1 Um Bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.3.2 Varios Bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.3.3 Muitos Bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.3.4 Memoria com Largura Nao-unitaria . . . . . . . . . . . . . . . . . . . . . . 71
4.3.5 Milhoes de Bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.3.6 Memoria Rapida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5 O Microprocessador Mico 75
5.1 Organizacao de um Computador com o Mico . . . . . . . . . . . . . . . . . . . . . 75
5.2 Organizacao do Processador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.3 Unidade de Logica e Aritmetica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
5.4 Conjunto de Instrucoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.4.1 Instrucoes de Logica e Aritmetica . . . . . . . . . . . . . . . . . . . . . . . . 80
5.4.2 Movimentacao de Dados Entre Memoria e Registradores . . . . . . . . . . . 82
5.4.3 Saltos e Desvios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.4.4 Suporte `a Funcoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
5.4.5 Instrucoes de Entrada e Sada . . . . . . . . . . . . . . . . . . . . . . . . . . 84
5.4.6 Instrucoes de Controle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Sumario iii
5.4.7 Modos de Enderecamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.4.8 Codicacao das Instrucoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.5 Execucao das Instrucoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
5.5.1 Fases de Execucao das Instrucoes . . . . . . . . . . . . . . . . . . . . . . . . 88
5.5.2 Diagrama de Estados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
5.6 Interface com Memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
5.6.1 Inter-travamento dos Sinais na Interface . . . . . . . . . . . . . . . . . . . . 93
5.6.2 Ciclo de Busca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
5.6.3 Ciclo de Leitura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
5.6.4 Ciclo de Escrita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
5.6.5 Ciclos de Entrada/Sada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
5.6.6 Circuito de Memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
5.7 Circuito de Controle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
5.7.1 Sinais da Interface com Memoria . . . . . . . . . . . . . . . . . . . . . . . . 97
5.7.2 Sinais de controle do circuito de dados . . . . . . . . . . . . . . . . . . . . . 98
5.7.3 Controle Microprogramado . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
5.7.4 Busca Antecipada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
5.8 Espacos de Enderecamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
5.9 Perifericos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
6 Sistemas de Memoria 111
6.1 Implementacao de Sistemas de Memoria . . . . . . . . . . . . . . . . . . . . . . . . 111
6.1.1 Sistema de Memoria com Referencias Fracionarias . . . . . . . . . . . . . . 112
6.1.2 Sistema de Memoria com Capacidade Conguravel . . . . . . . . . . . . . . 114
6.2 Barramentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
6.2.1 Barramento Multiplexado . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
6.2.2 Barramento com Sobreposicao de Fases . . . . . . . . . . . . . . . . . . . . 117
6.2.3 Barramento Assncrono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
6.2.4 Sistema de Memoria com Referencias em Rajadas . . . . . . . . . . . . . . 120
6.2.5 Sistema de Memoria com Referencias Concorrentes . . . . . . . . . . . . . . 122
6.3 Desempenho de Sistemas de Memoria . . . . . . . . . . . . . . . . . . . . . . . . . 124
6.4 Barramento Multi-mestre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
6.4.1 Acesso Direto a Memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
7 Interfaces 128
7.1 Interrupcoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
7.1.1 Sinais de Interrupcoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
7.1.2 Vetor de Interrupcoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
7.1.3 Transacoes de Barramento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
7.1.4 Cadeia de Aceitacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.1.5 Salvamento do Contexto de Execucao . . . . . . . . . . . . . . . . . . . . . 132
7.2 Interface Paralela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
7.2.1 Ligacao ao mundo externo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Sumario iv
7.2.2 Ligacao ao Processador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
7.2.3 Modos de Operacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
7.2.4 Programacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
7.2.5 Interrupcoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
7.3 Interface Serial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
7.3.1 Comunicacao Serial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
7.3.2 Ligacao ao Processador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
7.3.3 Programacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
7.3.4 Double Buering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
7.3.5 Interrupcoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
7.4 Interfaces Analogicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
7.4.1 Representacao Digital de Sinais Analogicos . . . . . . . . . . . . . . . . . . 150
7.4.2 Conversor DigitalAnalogico . . . . . . . . . . . . . . . . . . . . . . . . . . 150
7.4.3 Conversor AnalogicoDigital . . . . . . . . . . . . . . . . . . . . . . . . . . 152
7.5 Contadores e Temporizadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
7.5.1 Modos de Operacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
8 Programacao 156
8.1 Acesso a Estruturas de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
8.1.1 Calculo de enderecos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
8.1.2 Segmentos de Codigo, Dados e Pilha . . . . . . . . . . . . . . . . . . . . . . 158
8.2 Funcoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
8.2.1 Variaveis Locais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
8.2.2 Avaliacao de parametros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
8.2.3 Instrucoes de Chamada e de Retorno . . . . . . . . . . . . . . . . . . . . . . 160
8.2.4 Convencoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
8.2.5 Recursao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Introducao
Este texto contem material introdutorio sobre sistemas digitais e microprocessadores. O
nvel do texto e mais aprofundado que o de outros textos sobre sistemas digitais ([Kat94,
TS89]), e menos aprofundado que a documentacao tecnica produzida por fabricantes de
componentes (folhas de dados ou manuais). O objetivo deste texto e preparar o leitor para
o material detalhado. Para tanto, o conte udo e generico e descritivo, abordando as questoes
importantes sem contudo entrar em detalhes que sao irrelevantes para a compreensao do
problema sob estudo.
Os exerccios sao uma parte importante do texto, reforcam a compreensao e expandem o
conte udo apresentado.
Convenc oes
Codigo C ou em linguagem de maquina (assembly) e grafado com tipo typewriter;
nomes de sinais digitais sao grafados com tipo sans serif, e sinais ativos em zero
(logica negada) sao grafados com o mesmo tipo, mas com uma barra acima do nome
para indicar a negacao, grafado como sinal;
nomes de sinais analogicos sao grafados com tipo slanted.
1
Captulo 1
Especicacao Formal para
Projetistas de Circuitos
A proxima secao contem um resumo do material sobre

Algebra de Boole que e relevante
para projetistas de circuitos. A utilizacao de

Algebra Booleana para representar o com-
portamento de circuitos digitais somente e aceitavel como uma simplicacao e idealizacao
do comportamento dos sinais e das relacoes entre eles. Esta abordagem, especialmente o
formalismo para a especicacao circuitos das Secoes 1.3 e 2.1, e baseada em [San90].
1.1

Algebra Booleana
Denicao 1.1 Uma algebra Booleana e uma tripla (IB, , ) composta pelo conjunto
IB = a, b e dois operadores chamados de conjuncao e disjuncao, denotados por e re-
spectivamente, sobre os elementos de IB, que possuem as propriedades enumeradas abaixo.
Axioma 1.1 (Fechamento)
a, b IB a b IB, a b IB (1.1)
Axioma 1.2 (Identidade)
Dene-se a identidade com relac ao a , chamada de zero tal que
0 IB a IB a 0 = a (1.2)
Dene-se a identidade com relac ao a , chamada de um tal que
1 IB a IB a 1 = a (1.3)
Axioma 1.3 (Complemento)
a IB a IB a a = 0
a a = 1
(1.4)
Axioma 1.4 (Comutatividade)
a, b IB a b = b a,
a b = b a
(1.5)
2
Captulo 1. Especicacao Formal para Projetistas de Circuitos 3
Axioma 1.5 (Associatividade)
a, b, c IB (a b) c = a (b c),
(a b) c = a (b c)
(1.6)
Axioma 1.6 (Distributividade)
a, b, c IB a (b c) = (a b) (a c),
a (b c) = (a b) (a c)
(1.7)
Dene-se o dual de uma proposicao em uma

Algebra Booleana a proposicao obtida pela
troca de todas as ocorrencias de por , e vice-versa, e de todas as ocorrencias de suas
identidades 0 e 1. Isso signica que o dual de um axioma em uma

Algebra Booleana
tambem e um axioma. O Princpio da Dualidade determina que o dual de um teorema
tambem e um teorema e este pode ser provado substituindo-se cada passo da prova pelo
seu dual.
Teorema 1.1 (Princpio da Dualidade) O dual de qualquer teorema em uma

Algebra
Booleana tambem e um teorema.
Teorema 1.2 (Idempotencia)
a IB a a = a
a a = a
(1.8)
Teorema 1.3 (Involucao)
a IB (a) = a (1.9)
Teorema 1.4 (Maximo e Mnimo)
a IB a 1 = 1
a 0 = 0
(1.10)
Teorema 1.5 (Elementos de IB)
1 = 0
0 = 1
(1.11)
Alem das propriedades dos operadores, indicadas acima, dois outros teoremas sao uteis na
manipulacao de equacoes. Sao eles o Teorema da Simplicacao e o Teorema de DeMorgan.
O Teorema da Simplicacao, especialmente a formula (a), e que permite a eliminacao de
variaveis pelo agrupamento de celulas nos Mapas de Karnaugh.
Teorema 1.6 (Teorema da Simplicacao)
(x y) (x y) = x (x y) (x y) = x (a)
x (x y) = x x (x y) = x (b)
(x y) y = x y (x y) y = x y (c)
(1.12)
Captulo 1. Especicacao Formal para Projetistas de Circuitos 4
O Teorema de DeMorgan permite expressar as funcoes logicas mesmo que as portas logicas
disponveis nao sejam as necessarias para implementar a funcao desejada. A Figura 1.1
mostra uma implementacao de um multiplexador com 4 portas nand. Note que a porta `a
esquerda e usada como inversor e a porta `a direita como or. Note ainda que as inversoes
nas sadas das duas portas and cancelam as inversoes nas entradas da porta or.
Teorema 1.7 (Teorema de DeMorgan)
(x y) = (x y) (x y) = (x y) (1.13)
ppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppppppppppppppppppppppp
pppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p r
r
b
s
a
z
Figura 1.1: Multiplexador implementado com quatro portas nand.
Do ponto de vista de tecnologia de circuitos integrados, uma questao importante e quanto
ao conjunto mnimo de operadores que necessita ser provido aos projetistas para permitir a
implementacao de qualquer funcao logica. Por exemplo, a porta logica basica da tecnologia
TTL e a porta nand, e na tecnologia CMOS e a porta nor.
A Tabela 1.1 contem as 16 funcoes de duas variaveis em IB, e indica as funcoes mais
conhecidas. Note que as funcoes = e ,= tambem sao conhecidas como xnor e xor ou ou-
exclusivo, respectivamente. O ou-exclusivo e representado pelo smbolo . Quais sao as
funcoes identicadas por f
2
, f
4
, f
11
, e f
13
?
AB 0 f
2
A f
4
B ,= nor = B f
11
A f
13
nand 1
00 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
01 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
10 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
11 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
Tabela 1.1: Funcoes de duas variaveis.
1.2 F ormulas
Proposicoes em Calculo Proposicional sao formulas que podem ser verdadeiras ou falsas,
mas nao sao as duas coisas ao mesmo tempo. As proposicoes podem ser combinadas pelo
uso dos operadores logicos listados abaixo.
Captulo 1. Especicacao Formal para Projetistas de Circuitos 5
negacao
conjuncao (E)
disjuncao (OU)
ou-exclusivo
implicacao
equivalencia
condicional
a c b (c a) (c b)
1.3 Tipos
As descricoes formais dos circuitos neste texto indicam o tipo dos operandos e operadores.
Os tipos basicos sao denidos pela Equacao 1.14.
IB Booleanos
elemento de IB
IB
n
Vetor de Booleanos com n bits
IN Naturais
elemento de IN
IR Reais
elemento de IR
( ) Tupla de valores do tipo IB
Funcao com domnio em IN e imagem em IB
(1.14)
Como um exemplo, a Equacao 1.15 contem a denicao completa do operador condicional.
Esta equacao pode ser usada para especicar o comportamento de um circuito, ou para
documentar uma implementacao. Nos dois casos, o comportamento e declarado com pre-
cisao e sem ambig uidade, e pode ser usado como um contrato entre quem especica o
circuito e quem o implementa, ou entre quem implementa e quem usa o circuito.
a, b, c : IB
: ( )
a c b (c a) (c b)
(1.15)
Os tipos dos tres operandos a, b, c e declarado, explicitando que estes sao do tipo IB.
a, b, c : IB
O operador condicional tem tipo
: ( )
que e lido como e uma funcao com dois argumentos, o primeiro do tipo IB < >,
e o segundo e um par de operandos do tipo IB < ( ) >, e produz um resultado do
tipo IB < >. Finalmente, a expressao
a c b (c a) (c b)
dene as relacoes validas entre os sinais declarados anteriormente.
Captulo 2
Circuitos Combinacionais
Um circuito combinacional produz sadas que dependem exclusivamente dos valores nas
suas entradas, e para um mesmo conjunto de entradas e produzido sempre o mesmo con-
junto de sadas. Este captulo discute alguns circuitos combinacionais que implementam
algumas funcoes logicas que sao empregadas com freq uencia no projeto de sistemas dig-
itais. A Secao 2.1 especica o comportamento de multiplexadores, demultiplexadores e
seletores. A Secao 2.2 contem uma brevssima descricao da famlia de circuitos integrados
TTL 74xxx, especialmente as versoes TTL dos circuitos multiplexador, demultiplexador
e seletor. A Secao 2.3 discute dois circuitos combinacionais que permitem efetuar as
operacoes de multiplicacao e divisao inteiras por potencias de dois. Estes circuitos sao
o deslocador logartmico e o deslocador rotatorio. A Secao 2.4 encerra o captulo com
uma breve introducao `a tecnologia CMOS quando usada na implementacao de circuitos
digitais. Sao descritos os dois componentes fundamentais desta tecnologia, os transistores
do tipo P e do tipo N. Com estes podem ser implementadas as portas logicas nand e nor,
bem como circuitos com um terceiro estado alem dos estados 0 e 1.
2.1 Circuitos Combinacionais Basicos
Esta secao contem a especicacao e possveis implementacoes de circuitos combinacionais
basicos que permitem escolher um dentre um conjunto de valores. Os circuitos sao chama-
dos de multiplexador, de-multiplexador e seletor. Tais circuitos sao relevantes porque
podem ser empregados de in umeras maneiras como blocos basicos na construcao de cir-
cuitos mais complexos.
2.1.1 Multiplexador
Um multiplexador e um circuito com tres entradas a, b, s e uma sada z. A entrada de
controle s permite escolher qual, dentre as outras duas entradas, sera apresentada na
sada, conforme especicado pela Equacao 2.1. A Figura 2.1 mostra o smbolo de um
multiplexador de duas entradas.
a, b, s, z : IB
mux : ( )
mux(a, b, s, z) z = b s a
(2.1)
6
Captulo 2. Circuitos Combinacionais 7
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
1
0
z
b
a
s
Figura 2.1: Multiplexador de 2 entradas.
A expressao mux : . . . dene o tipo do circuito. O multiplexador possui uma entrada
de controle do tipo binario , um par de entradas tambem do tipo binario ( ), e
produz uma sada de tipo binario , e portanto o multiplexador de duas entradas tem tipo
( ) .
Multiplexadores com maior n umero de entradas podem ser construdos pela composicao
de multiplexadores de duas entradas. Preste atencao aos ndices das variaveis de controle.
A : IB
4
S : IB
2
mux-4 : ( ) ( )
mux-4(a
0
, a
1
, a
2
, a
3
, s
1
, s
0
, z) z = (a
3
s
0
a
2
) s
1
(a
1
s
0
a
0
)
(2.2)
Este processo pode ser levado adiante na construcao de multiplexadores de qualquer
n umero de variaveis.
A : IB
2
n
S : IB
n
mux-2
n
: (
2
n) (
n
)
mux-2
n
(a
0
a
2
n
1
, s
n
s
0
, z)
z = ((a
n1
s
0
a
n2
) ) s
n
( (a
1
s
0
a
0
))
(2.3)
A Figura 2.2 mostra uma implementacao para o circuito do multiplexador por uma arvore
de mux-2.
q q q
q q q
q
q
q q
q q
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
v
0
v
(2
n
/21)
v
(2
n
1)
v
(2
n
/2)
s
n s
0
s
n1
z
mux(2
n1
)
mux(2)
mux(2
n1
)
Figura 2.2: Multiplexador de 2
n
entradas composto por mux-2 e dois mux-2
n1
.
Captulo 2. Circuitos Combinacionais 8
2.1.2 Demultiplexador
Um demultiplexador e um circuito com duas entradas a, s e duas sadas y
0
, y
1
. A entrada de
controle s permite escolher em qual das duas sadas sera apresentada a entrada, conforme
denido na Equacao 2.4. A Figura 2.3 mostra o smbolo do demultiplexador de duas
entradas.
a, s : IB
Y : IB
2
demux-2 : ( )
demux-2(a, s, y
0
, y
1
)

y
0
= 0 s a
y
1
= a s 0
(2.4)
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
1
0 y
0
y
1
a
s
Figura 2.3: Demultiplexador de 2 sadas.
O tipo do demultiplexador e denido como as duas entradas do tipo binario e pela
sada que e um par com tipo dupla de binarios ( ).
Demultiplexadores com maior n umero de entradas podem ser construdos pela composicao
de demultiplexadores de duas entradas.
a : IB
S : IB
2
Y : IB
4
demux-4 : ( ) ( )
demux-4(a, s
1
, s
0
, y
0
, y
1
, y
2
, y
3
)

y
0
= 0 s
1
(0 s
0
a)
y
1
= 0 s
1
(a s
0
0)
y
2
= (0 s
0
a) s
1
0
y
3
= (a s
0
0) s
1
0
(2.5)
Como no caso dos multiplexadores, este processo pode ser levado adiante na construcao de
demultiplexadores de qualquer n umero de sadas. As sadas do demultiplexador sao deter-
minadas pelo n umero binario representado pelas entradas de selecao. No comportamento
denido na Equacao 2.5, a sada y
2
apresenta o valor da entrada a quando s
1
s
0
= 2.
Assim, o comportamento do demultiplexador de 2
n
sadas e aquele especicado pela
Equacao 2.6. A funcao num(B) produz o n umero representado por uma tupla de booleanos
(num :
n
).
a : IB
S : IB
n
Y : IB
2
n
demux-2
n
: (
n
) (
2
n)
demux-2
n
(a, s
n
s
0
, y
0
y
2
n
1
) y
i
= a (num(S) = i) 0
(2.6)
Captulo 2. Circuitos Combinacionais 9
2.1.3 Seletor
Um seletor e um circuito com uma entrada s e duas sadas y
0
, y
1
. A entrada de controle s
permite escolher qual das duas sadas sera ativada, conforme denido na Equacao 2.7. A
Figura 2.4 mostra o smbolo de um seletor de duas sadas.
s : IB
Y : IB
2
sel-2 : ( )
sel-2(s, y
0
, y
1
)

y
0
= 0 s 1
y
1
= 1 s 0
(2.7)
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
1
0 y
0
y
1
s
Figura 2.4: Seletor de 2 sadas.
Um demultiplexador pode ser transformado num seletor se a entrada a for permanente-
mente ligada em 1. Assim, todas as sadas permanecem em 0, exceto aquela selecionada
pelo sinal s. Um seletor de 2
n
sadas pode ser construdo com um seletor de duas sadas
e dois demultiplexadores de 2
n1
sadas.
Exerccios
Ex. 2.1 Mostre uma implementacao para o circuito mux-2 com apenas quatro por-
tas nand.
Ex. 2.2 Mostre uma implementacao para o circuito demux-2 com apenas quatro por-
tas nor.
Ex. 2.3 Enuncie a lei de formacao de um mux-N a partir de mux-(N-1). Use recursao.
Ex. 2.4 Enuncie a lei de formacao de um demux-N a partir de demux-(N-1). Use recursao.
Ex. 2.5 Enuncie a lei de formacao de um sel-N a partir de sel-(N-1).

E necessario
modicar a denicao original do seletor na Equacao 2.7.
Ex. 2.6 Uma possvel implementacao para multiplexadores de 2
n
entradas consiste em
usar um seletor de n para 2
n
, 2
n
portas and de 2 entradas, e uma porta or de 2
n
entradas.
O sinal de entrada e ligado `a todas as portas and, cada sada do seletor e ligada `a outra
entrada da porta and. As sadas de todas as and sao ligadas `as respectivas 2
n
entradas da
porta or. As n entradas de selecao sao ligadas `as n entradas do seletor. Desenhe o circuito
de multiplexador de 8 entradas implementado como descrito aqui.
Ex. 2.7 Prove que um mux-2 implementa as funcoes logicas , , e . Por que isso e
relevante?
Captulo 2. Circuitos Combinacionais 10
Ex. 2.8 Com base na denicao do multiplexador, mostre que um mux-N pode implementar
qualquer funcao logica de log
2
N variaveis.
Ex. 2.9 Com base na denicao do multiplexador, mostre que com um mux-N e inversores,
pode-se implementar qualquer funcao logica de log
2
(N + 1) variaveis.
Ex. 2.10 Mostre como a composicao apropriada de um mux-N e de um demux-N, pode ser
usada para transferir dados entre dois circuitos distintos usando somente S os S = log
2
N
para os sinais, mais um o de referencia de tensao (o terra).
2.2 Implementacao em TTL
Uma das tecnologias de implementacao de circuitos integrados (CIs) digitais muito usada
nas decadas de 1970 a 90 foi a tecnologia conhecida por TTL ou Transistor-Transistor
Logic. CIs TTL foram inicialmente produzidos pela Texas Instruments na metade da
decada de 70 e entao por varios fabricantes
1
. Os transistores empregados nestes CIs sao
do tipo bipolar
2
e com estes podem ser produzidos CIs com tempos de comutacao da
ordem de uns poucos nanosegundos, embora a velocidade seja obtida `a custa de potencias
relativamente elevadas. Por exemplo, o 74ALS138 descrito abaixo tem um consumo tpico
de 23mW com tempos de propagacao da ordem de 6ns. Para mais detalhes sobre esta
tecnologia veja [Fle80, TS89, SS90].
Na famlia TTL, as funcoes logicas sao empacotadas em circuitos integrados e a cada funcao
corresponde um n umero. O circuito basico desta tecnologia e a porta nand e o CI 7400
contem quatro portas nand de duas entradas, encapsuladas num CI de 14 pinos 4 portas
de 3 pinos cada, mais alimentacao (VCC) e terra (GND). O 7402 contem 4 portas nor, o
7404 contem 6 inversores e o 7474 contem 2 ip-ops tipo D com sinais de set e reset.
Uma particularidade dos circuitos TTL e que geralmente as sadas sao ativas em zero.
Isso se deve aos transistores usados nestes circuitos que sao capazes de drenar maiores
correntes com a sada em zero. Esta caracterstica faz com que os circuitos tenham tempos
de comutacao de 1 para 0 mais curtos do que o tempo de comutacao de 0 para 1.
Embora circuitos TTL nao sejam tao populares como ja o foram nas decadas de 80-90,
o empacotamento das funcoes logicas nos CIs ainda e bem conhecido. As bibliotecas de
componentes digitais empregam a mesma nomenclatura dos circuitos TTL para denom-
inar os componentes: um mux-8 e chamado de 74151, um demux-16 de 74154, e um
seletor de tres-para-oito e referenciado como 74138. Detalhes sobre estes tres circuitos sao
apresentados a seguir.
2.2.1 Multiplexador 74151
O 74151 e multiplexador de oito entradas E e
0
e
7
, tres entradas de selecao S
s
2
, s
1
, s
0
, e com um par complementar de sadas y e w=y. O valor da sada y e determinado
pela Equacao 2.8. Este circuito encaminha para a sada y o valor da entrada determinada
pelo n umero representado nos tres sinais de selecao y
i
=e
num(S)
.
1
As folhas de dados disponveis em http://www.fairchildsemi.com:80/ds/ sao usadas como referencia
neste texto.
2
Existem CIs com a mesma funcionalidade de CIs TTL implementados em tecnologia CMOS. Geral-
mente estes sao identicados pela letra C no codigo do CI, como 74C138 por exemplo.
Captulo 2. Circuitos Combinacionais 11
y = h e
num(S)
(2.8)
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
. . . . . . . . . . . . . . . . . . .
...................
. . . . . . . . . . . . . . . . . . .
...................
...................
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
...................
. . . . . . . . . . . . . . . . . . .
...................
...................
. . . . . . . . . . . . . . . . . . .
7
5
3
2
1
0
y
w
en
6
4
s0
s1
s2
E
S
en
s1
s0
s2
0
1
2
3
4
5
6
7
151
habilitacao
y
w
E
sadas
h
entradas
selecao
S
sadas
Figura 2.5: Multiplexador 74151.
2.2.2 Decodicador 74154
O 74154 e um decodicador 4 para 16, com 4 entradas de selecao S s
3
, s
2
, s
1
, s
0
,
16 sadas Y y
0
y
15
, e duas entradas de habilitacao g
1
, g
2
. Quando g
1
= g
2
= 1 to-
das as sadas cam inativas em 1. Se as entradas de habilitacao cam ativas, a sada y
i
selecionada por num(S) ca ativa em 0. Este comportamento e denido na Equacao 2.9 e
na Tabela 2.1. Note que se uma das entradas de habilitacao esta ativa, o 74154 comporta-
se como um demultiplexador para a outra entrada de habilitacao. A Figura 2.6 mostra as
duas representacoes gracas deste circuito.
y
i
= [(g1 g2) (num(S) = i)] (2.9)
g1 g2 num(S) y
15
y
14
y
13
y
12
y
3
y
2
y
1
y
0
1 1 X 1 1 1 1 1 1 1 1
1 0 X 1 1 1 1 1 1 1 1
0 1 X 1 1 1 1 1 1 1 1
0 0 15 0 1 1 1 1 1 1 1
0 0 14 1 0 1 1 1 1 1 1
0 0 13 1 1 0 1 1 1 1 1
0 0 1 1 1 1 1 1 1 1
0 0 1 1 1 1 1 1 1 0 1
0 0 0 1 1 1 1 1 1 1 0
Tabela 2.1: Denicao do comportamento do 74154.
Captulo 2. Circuitos Combinacionais 12
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
q
q
q
q
q
q
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
...................
. . . . . . . . . . . . . . . . . . .
...................
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
...................
. . . . . . . . . . . . . . . . . . .
...................
. . . . . . . . . . . . . . . . . . .
...................
. . . . . . . . . . . . . . . . . . .
...................
13
14
15
12
13
14
15
H
4
11
10..5
0
1
3
2
habilitacao
g2
g1
H
s0
s1
s2
s3
selecao
S
Y
sadas
g1
s0
s1
s2
S
0
1
3
2
4
Y
s3
12
11
10..5
g2
154
Figura 2.6: Decodicador/demultiplexador 74154.
2.2.3 Seletor 74138
O 74138 e um seletor do tipo 3-para-8, com tres entradas de selecao S s
2
, s
1
, s
0
e oito
sadas Y y
0
y
7
, ativas em 0. As tres entradas de controle g1,g2a,g2b aumentam a
funcionalidade do 74138 ao permitirem a implementacao de funcoes mais complexas sem
a necessidade de circuitos adicionais. A Figura 2.7 mostra dois smbolos usados para
representar o 74138, sendo o smbolo da esquerda mais usado. O comportamento deste
circuito e denido pela Equacao 2.10 e Tabela 2.2.
y
i
= [(g1 g2a g2b) (num(S) = i)] (2.10)
g1 g2a g2b num(S) y
7
y
6
y
5
y
4
y
3
y
2
y
1
y
0
0 X X 1 1 1 1 1 1 1 1
X 1 X 1 1 1 1 1 1 1 1
1 0 7 0 1 1 1 1 1 1 1
1 0 6 1 0 1 1 1 1 1 1
1 0 5 1 1 0 1 1 1 1 1
1 0 4 1 1 1 0 1 1 1 1
1 0 3 1 1 1 1 0 1 1 1
1 0 2 1 1 1 1 1 0 1 1
1 0 1 1 1 1 1 1 1 0 1
1 0 0 1 1 1 1 1 1 1 0
Tabela 2.2: Denicao do comportamento do 74138.
Captulo 2. Circuitos Combinacionais 13
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
. . . . . . . . . . . . . . . . . . .
...................
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
...................
. . . . . . . . . . . . . . . . . . .
...................
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
...................
. . . . . . . . . . . . . . . . . . .
...................
. . . . . . . . . . . . . . . . . . .
...................
g2a
g2b
g1
0
1
3
2
4
5
6
7
Y
0
1
3
2
4
5
6
7
sadas
s0
s1
s2
S
g1
H
s0
s1
s2
g2
138
selecao
S
Y habilitacao
H
Figura 2.7: Seletor 74138.
Exerccios
Ex. 2.11 Escreva uma especicacao similar `a Equacao 2.3 levando em conta a
Equacao 2.8.
Ex. 2.12 Escreva uma especicacao similar `a Equacao 2.6 levando em conta a
Equacao 2.9.
Ex. 2.13 Escreva uma especicacao similar `a Equacao 2.7 levando em conta a
Equacao 2.10.
Ex. 2.14 Mostre como implementar um seletor de 24 sadas com apenas tres 74138.
Ex. 2.15 Mostre como implementar um seletor de 32 sadas com quatro 74138 e um
inversor.
Ex. 2.16 Mostre como implementar um seletor de 128 sadas com um 74138 e oito 74154.
Ex. 2.17 Os Codigos de Gray sao usados em sistemas que devem operar de forma segura.
Considere, por exemplo, o eixo que controla a posicao vertical de um canhao. A medida
da posicao angular do eixo e indicada por uma serie de furos ao longo do raio de um disco
que e rigidamente xado ao eixo. A cada intervalo, um conjunto radial de furos indica o
angulo do eixo com relacao `a horizontal, de forma que cada combinacao de furos indica o
angulo absoluto do eixo. O disco do medidor de posicao angular e mostrado na Figura 2.8.
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . ..................... . . . . . . . . . . . . . . . . . . . . ..................... . . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . ..................... . . . . . . . . . . . . . . . . . . . . ..................... . . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
.......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... ..........
...............
. . . . . . . . . . . . . . .
d
0
d
1
d
2
vista lateral vista frontal
eixo
de posicao
detectores
Figura 2.8: Disco do detector de posicao angular.
Suponha ainda que o sistema de numeracao binaria com tres bits e usado para marcar
os angulos. O que pode ocorrer quando o eixo esta mudando de posicao, de 011 para
Captulo 2. Circuitos Combinacionais 14
100? O angulo pode ser medido pelos detectores na seq uencia 011001000100,
cuja correspondente em decimal e 3104. Esta seq uencia de angulos certamente
provocaria uma pane no acionador vertical do canhao.
Uma solucao para este problema consiste em usar uma codicacao na qual, entre dois
vizinhos na seq uencia so ocorre uma unica troca de bit so uma posicao troca de 1 para 0
ou de 0 para 1. A Tabela 2.3 mostra uma das possveis codicacoes em 3 bits. Note que
100 e adjacente a 000.
IN IB
3
Gray
b
2
b
1
b
0
g
2
g
1
g
0
0 000 000
1 001 001
2 010 011
3 011 010
4 100 110
5 101 111
6 110 101
7 111 100
Tabela 2.3: Relacao entre o Codigo de Gray e IB
3
.
Projete um circuito que converta de binario para Gray segundo a Tabela 2.3. (a) Use
mapas de Karnaugh para simplicar os circuitos que geram g
2
, g
1
e g
0
. (b) Implemente
estas tres funcoes usando portas xor. (c) Implemente estas tres funcoes usando tres 74151,
um para cada um de g
2
, g
1
e g
0
.
2.3 Deslocamentos
Quando um grupo de bits e interpretado como um n umero, segundo a notacao posicional,
um deslocamento lateral pode ser utilizado para efetuar uma multiplicacao ou divisao por
uma potencia de dois. Considere um n umero binario representado em quatro bits. Se
este n umero e deslocado de uma casa para a direita, o resultado e o quociente da divisao
inteira por dois. Se o n umero e deslocado para a esquerda, e a posicao menos-signicativa
preenchida com 0, o resultado e o n umero original multiplicado por dois, como mostrado
abaixo.
0110 seis
0110 1 = 0011 tres
0110 1 = 1100 doze
Se a representacao e em complemento de dois, o deslocamento para a direita de n umeros
negativos deve garantir que o n umero permaneca negativo. Para tanto, o bit mais `a
esquerda, que e o que indica o sinal, deve ser replicado. Se o deslocamento e para a
esquerda, um n umero positivo pode tornar-se negativo.
1110 dois negativo
1110 1 = 1111 um negativo (1110 1) 1000
0110 1 = 1100 quatro negativo erro
Captulo 2. Circuitos Combinacionais 15
A Figura 2.9 mostra parte do circuito que efetua o deslocamento de uma posicao para a
esquerda. Seu comportamento e denido pela Equacao2.11.
B, S : IB
n
d : IB
desl(d, B, S) i, 0 i < n [(i > 0 s
i>0
= b
i1
) (s
0
= 0)] d [s
i
= b
i
]
(2.11)
ppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppppppppppppppppppppppp
pppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppppppppppppppppppppppp
pppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
r
r
r
r
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
b
n
b
n2
ou 0
s
n
s
n1
b
n1
d
Figura 2.9: Deslocamento de uma posicao.
2.3.1 Deslocador Logartmico
Um deslocador logartmico e um circuito combinacional que permite que sua sada seja um
deslocamento de D posicoes com relacao `a entrada. A Figura 2.10 mostra o diagrama de
blocos deste circuito. O n umero de posicoes deslocadas e denido pela entrada D = d
3
..d
0
e a sada e a versao deslocada da entrada S = B 2
D
. Uma possvel implementacao
para o deslocador logartmico consiste em ligar 16 circuitos deslocadores em cascata. O
primeiro deslocador desloca de uma posicao. O segundo e o terceiro compartilham o
sinal de controle e deslocam de duas posicoes. O 4
o
, 5
o
, 6
o
e 7
o
compartilham o sinal
de controle e juntos deslocam sua entrada de quatro posicoes. Os restantes (8
o
a 16
o
)
tambem compartilham seu sinal de controle e deslocam sua entrada de oito posicoes.
b
15
b
14
s
15
s
14
b
13
b
12
s
13
s
12
b
11
b
10
s
11
s
10
b
9
b
8
s
9
s
8
b
7
b
6
s
7
s
6
b
5
b
4
s
5
s
4
b
3
b
2
s
3
s
2
b
1
b
0
s
1
s
0
d
3
..d
0
Figura 2.10: Deslocador logartmico de dezesseis posicoes.
O circuito deslocador da Figura 2.9 pode ser alterado para que a sada seja deslocada de
duas, quatro, oito, ou mais posicoes. Com estas versoes modicadas, o deslocador pode
Captulo 2. Circuitos Combinacionais 16
ser implementado com quatro deslocadores em cascata, cada um deles sendo capaz de
deslocar sua entrada de 2
i
, i 1, 2, 4, 8 posicoes. O projeto mostrado na Figura 2.11
permite deslocar a entrada de qualquer n umero de posicoes entre 0 e 15. O deslocamento
e denido pelas entradas de controle dos quatro circuitos: ou a entrada nao se altera, ou
e deslocada de 2
i
posicoes.
b
15
b
14
b
13
b
12
b
11
b
10
b
9
b
8
b
7
b
6
b
5
b
4
b
3
b
2
b
1
b
0
d
0
d
1
d
2
d
3
s
15
s
14
s
13
s
12
s
11
s
10
s
9
s
8
s
7
s
6
s
5
s
4
s
3
s
2
s
1
s
0
desloc(1)
desloc(2)
desloc(4)
desloc(8)
Figura 2.11: Projeto do deslocador logartmico de dezesseis posicoes.
2.3.2 Rotacao
Um deslocador rotacional (barrel shifter) e um circuito similar ao deslocador logartmico,
mas a sada do deslocador rotacional e sua entrada apos uma rotacao de n posicoes.
Apos uma rotacao de uma posicao para a esquerda, s
i
= b
i1
se i [1, n), e s
0
= b
n
.
A Tabela 2.4 especica o comportamento de um barrel shifter com quatro bits de largura,
ou este comportamento pode ser especicado por i, d 0, 1, 2, 3 s
i
= b
(id)%4
.
d
1
d
0
s
3
s
2
s
1
s
0
00 b
3
b
2
b
1
b
0
01 b
2
b
1
b
0
b
3
10 b
1
b
0
b
3
b
2
11 b
0
b
3
b
2
b
1
Tabela 2.4: Comportamento de um deslocador rotacional de quatro bits.
Exerccios
Ex. 2.18 Estenda o circuito da Figura 2.9 para que ele permita deslocamentos para a
esquerda e para a direita. Cuidado com os dois extremos (s
0
e s
n
).
Captulo 2. Circuitos Combinacionais 17
Ex. 2.19 Estenda o circuito obtido no exerccio anterior para que ele mantenha o sinal
correto de n umeros representados em complemento de dois.
Ex. 2.20 Altere o circuito do deslocador logartmico na Figura 2.9 para transforma-lo
num deslocador rotacional.
Ex. 2.21 Implemente um deslocador rotacional de 8 bits usando multiplexadores.
Ex. 2.22 Prove que o circuito da Figura 2.11 satisfaz `a sua especicacao (S = B 2
D
).
2.4 Implementacao em CMOS
Esta secao contem uma brevssima introducao aos metodos de implementacao de circuitos
digitais baseados em tecnologia CMOS, ou Complementary Metal-Oxide Semiconductor.
Para detalhes veja [WE85, KL96, Rab96].
A Figura 2.12 mostra os dois tipos de transistores da tecnologia CMOS, que sao transistores
tipo P e tipo N. Estes transistores se comportam como chaves e quando o terminal g
(gate) esta ligado ao nvel logico adequado, o nvel logico dos outros dois terminais s e d e
equivalente chave fechada. Quando o gate esta no outro nvel, a chave ca aberta e nada
se pode dizer quanto aos valores em s e d, porque estes dependerao dos circuitos aos quais
aqueles terminais estao ligados. O terminal s e chamado de source porque este terminal e
ligado `a fonte de carga eletrica, enquanto que o terminal d e chamado de drain porque ele
e ligado ao dreno por onde as cargas eletricas escoam.
O crculo no gate do transistor P indica que e o nvel logico 0 que permite o uxo de
corrente entre os terminais fonte e dreno, como uma chave fechada. Complementarmente,
e o nvel logico 1 que faz o transistor N conduzir. A Equacao 2.12 dene o comportamento
dos transistores. Num transistor P, os portadores da carga eletrica que ui no canal
entre os terminais fonte e dreno sao os buracos que resultam da falta de eletrons, sendo
portanto cargas eletricas positivas. Os portadores de carga no canal entre fonte e dreno
de um transistor tipo N sao eletrons, com carga eletrica negativa.

E por causa dos dois
tipos de transistores que o nome desta tecnologia inclui o Complementary.
transistor P g = 0 s = d
transistor N g = 1 s = d
(2.12)
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
transistor N transistor P
s
d
g g
d
s
Figura 2.12: Transistores CMOS.
Captulo 2. Circuitos Combinacionais 18
2.4.1 Portas L ogicas
A implementacao de um inversor em CMOS necessita de apenas dois transistores, como
mostra a Figura 2.13. O transistor P e ligado `a fonte de alimentacao VCC e o transistor N e
ligado `a tensao de referencia GND (ground ou terra). Isso e necessario porque transistores
do tipo P conduzem melhor cargas positivas, enquanto que os transistores N conduzem
melhor cargas negativas. Normalmente, as ligacoes `a fonte de alimentacao sao omitidas
dos esquematicos, embora estas ligacoes devam existir para que o circuito funcione. Note
que VCC e uma fonte de nvel logico 1, e que GND e uma fonte de nvel logico 0.
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
. . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . .
s
s
d
GND
d
g
g
N
P
S E
E S
VCC
r r
Figura 2.13: Inversor CMOS.
O sinal de entrada E e ligado ao gate dos dois transistores e a sada S e ligada aos seus
drenos. Quando a entrada esta em 1, o transistor P esta aberto e portanto nao conduz
corrente entre a fonte e a sada. O transistor N esta fechado e portando ha um caminho
entre a sada e GND, o que faz com que a sada seja 0. Quando a entrada esta em 0,
o transistor P conduz como uma chave fechada, ligando a sada a VCC, enquanto que
o transistor N esta aberto. A Figura 2.14 mostra o inversor nas duas situacoes. Os
terminais fonte e dreno do transistor que esta aberto foram omitidos no desenho.
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . .
. . . . . .
.
.
.
.
.
.
.
.
.
. . . . .
. . . . . .
.
.
.
.
.
.
.
.
.
. . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
....................................
................... . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
P
E=1
VCC
GND
N
P
VCC
S=0
S=1
N
GND
E=0
cargas
cargas
r r r r
Figura 2.14: Operacao do circuito inversor CMOS.
Captulo 2. Circuitos Combinacionais 19
Uma implementacao da porta nor e mostrada na Figura 2.15. O circuito pode ser encarado
como duas redes, uma rede que puxa a sada para 1, e outra rede que puxa a sada para 0.
A rede que puxa para 1 comporta-se como uma porta andcom as entradas complementadas,
enquanto que a rede que puxa para 0 comporta-se como uma porta nor. A sada e 0 se
qualquer das entradas estiver em 1 (ligacao em paralelo equivale a a b). A sada e 1
somente se as duas entradas forem 0 (ligacao em serie equivale a a b). As duas redes sao
necessarias por causa das caractersticas de conducao dos transistores aqueles do tipo P
conduzem bem cargas positivas, e transistores do tipo N conduzem bem cargas negativas.
ppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppppppppppppppppppppppp
pppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
. . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
N
N
P
P
VCC
GND
b
a
s
r r
r
r
r
Figura 2.15: Porta nor implementada em CMOS.
ppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppppppppppppppppppppppp
pppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
. . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
P P
N
N
s
b
a
GND
VCC
r
r
r
r
r
Figura 2.16: Porta nand implementada em CMOS.
A Figura 2.16 mostra uma implementacao da porta nand. Os circuitos das portas nand
e nor sao chamados de duais por causa da similaridade das ligacoes entre os transistores
P e N. Neste caso, dualidade signica que uma ligacao em serie e substituda por uma
ligacao em paralelo, e que uma ligacao em paralelo e substituda por uma ligacao em serie.
Captulo 2. Circuitos Combinacionais 20
Conforme o Teorema 1.1, um circuito / e dual de um circuito B se para todas as ligacoes
em serie no circuito / existem ligacoes em paralelo correspondentes no circuito B, e se
para todas as ligacoes em paralelo no circuito / existem ligacoes em serie no circuito B.
2.4.2 Terceiro Estado

E possvel projetar-se circuitos digitais com um terceiro estado, alem dos estados 0 e 1.
No terceiro estado as sadas do circuito formam um caminho de alta impedancia que
oferece alta resistencia `a passagem de corrente eletrica, efetivamente desligando a sada
dos circuitos aos quais esta ligada. Circuitos que operam com os tres estados sao chamados
de tri-state. Circuitos tri-state tambem podem ser implementados com tecnologia TTL.
Estes circuitos possuem um sinal de controle que permite colocar a sada no terceiro
estado em alta impedancia com o efeito de desliga-la do circuito. A Figura 2.17 mostra
o circuito interno de um buer tri-state um buer funciona como um amplicador que
nao altera o nvel logico do sinal. O smbolo do circuito e mostrado no lado direito da
gura. O asterisco junto a sada e uma indicacao visual de que esta sada e tri-state.
Quando o sinal de habilitacao esta inativo (hab = 0) os gates dos dois transistores ligados
`a sada fazem com que eles quem abertos, de forma a que nao haja nenhum caminho
que ligue a sada `a VCC ou a GND. Diz-se que um o ligado a uma sada tri-state esta
utuando se nao ha um circuito que puxe o nvel logico neste o para 0 ou para 1.
Sadas tri-state sao usadas para a ligacao de varias sadas a um mesmo o, formando
um barramento, como mostra a Figura 2.18. Os circuitos com sadas a
n
, b
n
, c
n
tem suas
sadas ligadas ao o barr
n
, e este o serve de entrada para outros circuitos que produzem
os sinais X
n
e Y
n
. O circuito de controle deve ser projetado para garantir que somente
um dentre habA, habB, ou habC, esteja ativo a qualquer momento. Se mais de uma sada
estiver ligada simultaneamente, o nvel de sinal resultante em barr
n
pode assumir um nvel
logico invalido. Note que este circuito implementa um multiplexador. Se mais de um sinal
de habilitacao estiver ativo, as sadas ativas poderao causar um curto-circuito se estiverem
com nveis logicos diferentes.
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp s
s
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . .
ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
g
n
g
p
hab
0
1
1
a
X
0
1
1
1
0
g
p
P
aberto
aberto
conduz
g
n
0
1
0
N
aberto
conduz
aberto
s
desligado
0
1
s a
hab
*
s
hab
a
P
N
r
Figura 2.17: Buer tri-state CMOS.
Captulo 2. Circuitos Combinacionais 21
ppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
s
s
s
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp s
s
ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
. . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . .
*
*
*
a
n
b
n
c
n
habB
habC Y
n
X
n
F
barr
n
habA
pull-up
Figura 2.18: Ligacao de sadas tri-state.
Quando todas as sadas tri-state estao em alta impedancia, o nvel logico no o utua e
e indeterminado. Para garantir que este sinal que em um nvel logico determinado, um
resistor e ligado a VCC. Este resistor e chamado de pull-up porque sua funcao e puxar o
nvel logico do sinal para 1 quando todas as sadas estiverem em tri-state. Quando alguma
das sadas e 0, o transistor N desta sada puxa o nvel logico para 0, sem que o pull-up
interra. O pull-up e chamado de circuito passivo porque somente atua quando nenhum
dos circuitos ativos portas logicas ou buers esta puxando o nvel logico do sinal para 0
ou para 1.
Exerccios
Ex. 2.23 Mostre como implementar portas nand e nor de tres entradas.
Ex. 2.24 Mostre como implementar portas xor e xnor de duas entradas.
Ex. 2.25 Mostre como implementar um somador completo de dois bits com transistores
tipo P e tipo N.
Ex. 2.26 Mostre como implementar o buer tri-state com 10 transistores.
Captulo 3
Circuitos Seq uenciais
Este captulo apresenta algumas tecnicas de projeto de circuitos seq uenciais sncronos.
Estes circuitos sao extremamente importantes porque sao circuitos com memoria, ou es-
tado, e cujo comportamento e descrito por uma seq uencia de estados. Por exemplo, um
computador e um circuito seq uencial cuja seq uencia de estados e determinada pelo pro-
grama que esta sendo executado.
Um circuito combinacional produz valores nas suas sadas que dependem exclusivamente
dos valores nas suas entradas, e para as mesmas entradas sao produzidas sempre as mesmas
sadas. Por outro lado, um circuito seq uencial produz sadas que dependem da seq uencia
com que os valores foram apresentados `as suas entradas. Num dado instante, a sada
de um circuito seq uencial depende da seq uencia de todos os valores apresentados `as suas
entradas. Posto de outra forma, o estado atual de um circuito seq uencial depende das
entradas e da seq uencia dos estados anteriores.
A Secao 3.1 apresenta um circuito muito simples com capacidade de memorizar um bit. A
Secao 3.2 contem uma breve discussao sobre circuitos de memoria um pouco mais versateis
como basculas e ip-ops. Quando varios ip-ops sao combinados, a seq uencia de estados
pode percorrer um subconjunto dos n umeros naturais, conforme mostram as Secoes 3.3
e 3.4, que tratam de contadores e registradores de deslocamento. A Secao 3.6 discute
os parametros de projeto que impoem limites `a velocidade maxima de operacao de um
circuito seq uencial. A Secao 3.7 apresenta uma metodologia de projeto de maquinas de
estados.
A segunda metade deste captulo, a partir da Secao 3.8, trata da combinacao de circuitos
seq uenciais simples, na construcao de seq uenciadores e controladores. A Secao 3.8 trata
de micro-controladores, que sao maquinas de estado cujo comportamento e denido por
uma forma rudimentar de programa. A Secao 3.9 contem exemplos de implementacao de
circuitos seq uenciais relativamente complexos pela simples composicao de componentes
tais como memorias, contadores e registradores.
3.1 Circuitos com Mem oria
O circuito da Figura 3.1, se isolado, e capaz de manter o valor na sua sada enquanto sua
fonte de energia estiver ligada. Este tipo de comportamento decorre da realimentacao da
sua sada para a sua entrada.
22
Captulo 3. Circuitos Seq uenciais 23
r r p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
1 0 1
Figura 3.1: Circuito com memoria.
Da forma como esta desenhado, o circuito com memoria nao permite a alteracao do valor
memorizado. A Figura 3.2 mostra o circuito de memoria com duas chaves que permitem
alterar o valor memorizado. A posicao das duas chaves deve ser trocada simultaneamente
para que o circuito se comporte como o esperado. Com tecnologia CMOS, as chaves podem
ser implementadas com pares complementares de transistores.
r r p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
r r p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . . . . . . . . . ..
.
.
.
.
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . . . . . . . . . ..
.
.
.
.
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
(a) valor memorizado;
(b) valor pode ser alterado.
Figura 3.2: Circuito com memoria programavel.
Os circuitos com capacidade de memoria sao geralmente implementados com portas logicas
ao inves de com inversores e chaves. Estes circuitos sao chamados de latches ou basculas
porque sua sada normalmente esta em um de dois estados possveis. A Figura 3.3 mostra
duas formas de desenhar o circuito de uma bascula que e implementada com portas nor.
Normalmente as entradas R e S estao em 0. Se a entrada S (set) mudar para 1, a sada Q
ca em 1. Se a entrada R (reset) mudar para 1, a sada Q ca em 0. Se as duas entradas
mudarem de 1 para 0 simultaneamente, a sada Q oscilara entre 0 e 1 por algum tempo
e seu valor nal estabilizara em 0 ou em 1. A este comportamento se da o nome de
meta-estabilidade porque nao se pode prever o valor nal e nem a duracao do intervalo de
estabilizacao.
ppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
p p p p p p p p p p p p p p p p p p pppppppppppppppppp
p p p p p p p p p p p p p p p p p p pppppppppppppppppp
ppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
p p p p p p p p p p p p p p p p p p pppppppppppppppppp r
p p p p p p p p p p p p p p p p p p pppppppppppppppppp
p p p p p p p p p p p p p p p p p p pppppppppppppppppp
r
r
....................................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
S=1 R=1
Q
R
S
Q
Figura 3.3: Bascula ou latch.
Captulo 3. Circuitos Seq uenciais 24
3.2 Flip Flops
Basculas possuem caractersticas temporais que tornam os projetos mais complexos e
sujeitos a erros, embora sejam mais economicos e potencialmente mais rapidos. Flip-
ops sao circuitos mais complexos que basculas e possuem comportamento determinstico
porque as mudancas nas sadas ocorrem somente nas transicoes do sinal de relogio. A
Figura 3.4 mostra os diagramas de ip-ops do tipo D (direto), T (toggle) e JK.
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
....................... . . . . . . . . . . . . . . . . . . . . .
....................... . . . . . . . . . . . . . . . . . . . . .
....................... . . . . . . . . . . . . . . . . . . . . .
Q D Q T
Q
Q
Q Q
J
K
Figura 3.4: Flip-ops tipo D, T e JK.
O comportamento destes ip-ops (FFs) e denido pela Equacao 3.1, ou alternativamente,
pela sua tabela de excitacao (Tabela 3.1). Nestas equacoes, e na tabela, o estado do ip-
op apos a transicao no sinal de relogio e denotado por Q
+
, representando o proximo
estado do ip-op.
ip op D Q
+
:= D
ip op T Q
+
:= TQ TQ
ip op JK Q
+
:= JQ KQ
(3.1)
Q Q
+
JK T D
0 0 0X 0 0
0 1 1X 1 1
1 0 X1 1 0
1 1 X0 0 1
Tabela 3.1: Tabela de excitacao dos ip-ops JK, T e D.
3.3 Contadores
Contadores sao circuitos seq uenciais com um comportamento cclico e com uma seq uencia
de estados que pouco depende de outros estmulos externos alem do sinal de relogio. Um
contador e um circuito que conta pulsos do relogio. Esta secao inicia com uma breve dis-
cussao sobre circuitos seq uenciais assncronos e apresenta alguns exemplos de contadores
seq uenciais sncronos. Um dos principais fatores que limitam a velocidade maxima de
operacao de um circuito seq uencial e o tempo de propagacao dos componentes combina-
cionais do circuito. A Secao 3.6 discute estes fatores.
Captulo 3. Circuitos Seq uenciais 25
3.3.1 Ripple Counter
O circuito mostrado na Figura 3.5 e um contador de tres bits implementado com ip-ops
tipo T. O valor de contagem C para um contador de tres FFs depende do estado destes tres
FFs, e e expresso pela Equacao 3.2. Cada valor da contagem representa um dos possveis
estados do contador.
Q : IB
3
C : IN
C = 2
2
Q2 + 2
1
Q1 + 2
0
Q0
(3.2)
r r
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
........................ . . . . . . . . . . . . . . . . . . . . . .
........................ . . . . . . . . . . . . . . . . . . . . . .
...................... . . . . . . . . . . . . . . . . . . . .
Q T
Q
Q T
Q
Q T
Q
Q1 Q2 Q0
1 1 1
clock
Figura 3.5: Ripple counter implementado com FFs tipo T.
As mudancas de estado nos FFs ocorrem na borda descendente do sinal de relogio, e a
seq uencia de contagem e mostrada na Figura 3.6. Suponha que inicialmente os tres FFs
estao com a sada Q = 0 e C = 0. Na primeira borda descendente do sinal clock, o FF Q0
troca de estado e C = 1 (001). Na primeira borda descendente em Q0 o FF Q1 troca
de estado e C = 2 (010). A gura tambem mostra a seq uencia de contagem. Quando a
contagem atinge sete, os tres FFs trocam de estado e a seq uencia reinicia de zero. Este
circuito e portanto um contador modulo-8.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Q2
Q1
Q0
clock
0 1 2 3 4 5 6 7 0 C
Figura 3.6: Comportamento idealizado do ripple counter.
Assim como nas portas logicas, os sinais nao se propagam instantaneamente atraves
de FFs. Isso signica que a seq uencia de contagem deste contador nao e exatamente
aquela mostrada na Figura 3.6. Dependendo da velocidade do sinal de relogio, e mais
provavel que a seq uencia de estados se pareca com a mostrada na Figura 3.7. Neste dia-
grama, a escala de tempo e tal que o tempo de propagacao dos FFs e proximo da duracao
de um ciclo do relogio. Este contador e chamado de assncrono porque a sada de um FF
e usada como sinal de relogio do FF seguinte, e o tempo de propagacao dos sinais faz com
Captulo 3. Circuitos Seq uenciais 26
que os FFs mudem de estado em instantes diferentes. O nome ripple advem da onda de
propagacao das mudancas de estado dos FFs.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
................................. ................................. ................................. ................................. ................................. ................................. ................................. .................................
................................. ................................. ................................. .................................
................................. .................................
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Q2
Q1
Q0
clock
0 C 1 2 3 4 5 7 0 2 0 6 4 6 4 0
Figura 3.7: Seq uencia de contagem do ripple counter.
Este comportamento e altamente indesejavel e freq uentemente perigoso
1
. Existem tecnicas
de projeto que permitem tolerar a assincronia entre sinais, mas o projeto de circuitos
assncronos esta fora do escopo desta disciplina.
Note que e impossvel garantir a perfeita sincronia nos eventos em um circuito nao-trivial
por causa dos tempos de propagacao dos diversos tipos de portas logicas e da propagacao
de sinais atraves de os com comprimentos diferentes. Contudo, as tecnicas de projeto de
circuitos sncronos reduzem enormemente o problemas potenciais causados pela assincronia
porque tais tecnicas garantem que todas as trocas de estado ocorrem durante intervalos
de tempo muito estreitos, que sao os intervalos das transicoes no sinal de relogio.
Exerccios
Ex. 3.1 Qual e a seq uencia de contagem do contador da Figura 3.5 se os FFs forem
sensveis `a borda ascendente do relogio?
Ex. 3.2 Qual o comportamento de um contador ripple com 16 FFs? E com 64 FFs?
3.3.2 Contadores Sncronos
A Figura 3.8 mostra um contador sncrono implementado com FFs do tipo T. A porta and
garante que as mudancas de estado no FF Q2 ocorrem somente durante o ciclo de relogio
em que ambos Q0 e Q1 estao em 1. Esta porta computa o vai-um da soma de Q0 + 2 Q1.
O FF Q0 e um contador modulo-2 e a cada ciclo do relogio ele e incrementado. Quando este
contador de 1-bit vira, o FF Q1 e incrementado (e isto ocorre a cada segundo ciclo). Os
FFs Q0 e Q1 implementam um contador modulo-4 que vira toda vez que Q0 + 2 Q1 = 3,
e esta virada causa o vai-um que incrementa o FF Q2. O diagrama de tempos deste
contador e identico `aquele mostrado na Figura 3.6.
1
O Ministerio dos Projetos adverte: circuitos assncronos fazem mal `a sa ude e `a nota.
Captulo 3. Circuitos Seq uenciais 27
ppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
r r
r
r
r
........................ . . . . . . . . . . . . . . . . . . . . . .
........................ . . . . . . . . . . . . . . . . . . . . . .
...................... . . . . . . . . . . . . . . . . . . . .
Q T Q T
clock
1
Q T
Q2 Q1 Q0
Figura 3.8: Contador sncrono implementado com FFs tipo T.
3.3.3 74163
O contador 74163 e um contador modulo-16, sncrono, com entradas de carga e limpeza
tambem sncronas. Se as entradas p e t estao ativas (p=t=1), e ld e clr estao inativas
(ld=clr=0), a contagem e incrementada na borda do relogio. Quando a contagem chega
em quinze, o sinal rco ca em 1. A Figura 3.9 mostra o smbolo deste contador e as
Equa coes 3.3 denem seu comportamento.
p t ld clr Q
+
:= (Q+ 1) mod16
clr Q
+
:= 0
p t ld clr Q
+
:= E
(p t) ld clr Q
+
:= Q
Q = 15 rco = 1
(3.3)
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
...................... . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
...................
...................
. . . . . . . . . . . . . . . . . . .
rco
t
p Q=15
163
Qd
Qc
Qb
D
C
B
A Qa
ld
clr
E Q
Figura 3.9: Smbolo e sinais do 74163.
A Figura 3.10 mostra um contador de 12 bits implementado com tres 74163, e o diagrama
de tempo deste contador indicando as mudancas de estado que causam incremento em mais
de um dos contadores. Note que a sada rco e combinacional e portanto este sinal e um
pouco atrasado com relacao `as mudancas de estado do contador. Quando a contagem do
primeiro contador passa pelo estado 15, sua sada rcoA ca em 1 durante tempo suciente
para que o segundo contador mude de 0 para 1. Quando o primeiro e o segundo contadores
estao ambos em 15, apos 255 pulsos de relogio, os sinais rcoA e rcoB cam em 1, permitindo
que o terceiro contador seja incrementado.
Captulo 3. Circuitos Seq uenciais 28
1
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
r
r
r
r
r
r
...................... . . . . . . . . . . . . . . . . . . . .
...................... . . . . . . . . . . . . . . . . . . . .
...................... . . . . . . . . . . . . . . . . . . . .
rco
t
Qd
Qc
Qb
D
C
B
A
p
Qa
ld
clr
163
rco
t
Qd
Qc
Qb
D
C
B
A
p
Qa
ld
clr
163
rco
t
Qd
Qc
Qb
D
C
B
A
p
Qa
ld
clr
163
c10
c9
c8
c11
c6
c5
c4
c7
c2
c1
c0
c3
1
1 1
reset
clock
rcoA rcoB
Figura 3.10: Contador sncrono de 12 bits com 74163.
A Figura 3.11 mostra o diagrama de tempo do contador de 12 bits, para as transicoes na
contagem de 15 para 16, e de 255 para 256. Na transicao de 15 para 16, o sinal rcoA ca
ativo quando a sada do contador menos signicativo (c3..c0) atinge 15 e isso permite que
o segundo contador (c7..c4) seja incrementado. Quando a contagem atinge 255, durante o
ciclo de relogio os sinais rcoA e rcoB estao ambos ativos e isso permite que o contador mais
signicativo (c11..c8) seja incrementado. Note que e o sinal rcoA quem dene o instante
em que o terceiro contador e incrementado.
................................. ................................. ................................. .................................
................................. .................................
................................. ................................. ................................. .................................
14 15 0 1
. . . . . . . . . . . . . . . . . . . . . . . . . . . . ..............................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .............................
................................. .................................
................................. ................................. ................................. .................................
................................. .................................
................................. ................................. ................................. .................................
................................. .................................
.................................
................................. .................................
............................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..................................................................
............... . . . . . . . . . . . . .
clock
c3..c0
rcoA
rcoB
14 15 16 17
0 1
0
14 15 0 1
15 0
254 257 256 255
1 0
c7..c4
c11..c8
Figura 3.11: Contador sncrono de 12 bits com 74163.
A Figura 3.12 mostra mais duas aplicacoes do 74163. O circuito (a) conta na seq uencia
entre 5 e 15: quando a contagem chega em 15, o sinal rco faz com que o n umero 5 que
esta nas entradas D-A seja carregado sincronamente. Nos tics do relogio subseq uentes a
contagem prossegue de 6 ate 15. O circuito (b) e um contador modulo-13: toda vez que a
contagem chegar em 12, a sada da porta and re-inicializa o contador sincronamente.
Captulo 3. Circuitos Seq uenciais 29
ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p pppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
r
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
r
...................... . . . . . . . . . . . . . . . . . . . .
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
...................... . . . . . . . . . . . . . . . . . . . .
.......................
rco
t
Qd
Qc
Qb
D
C
B
A
p
Qa
ld
clr
163
1
1
1
0
0
rco
t
Qd
Qc
Qb
D
C
B
A
p
Qa
ld
clr
163
1
1
clock
(a) contagem entre 5 e 15;
clock
reset
(b) contador modulo-13.
Figura 3.12: Aplicacoes do 74163.
3.3.4 74191
O 74191 e um contador sncrono que pode ser incrementado ou decrementado a cada pulso
do relogio. Quando a contagem esta habilitada (en=0), o sinal D/u (Down/up) dene o
sentido da contagem: D/u=0 faz o contador incrementar e D/u=1 o faz decrementar. O
sinal ld permite a carga em paralelo das entradas. Este contador e implementado com
basculas JK (FFs mestre-escravo), e portanto a carga e assncrona e independe da borda
do relogio. Alem disso, os valores nas entradas en e down/up so podem ser alterados
quando o sinal de relogio esta em 1.
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
...................... . . . . . . . . . . . . . . . . . . . .
...................
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
...................
Qd
Qc
Qb
D
C
B
A Qa
191
en
D/u
rck
E Q
M/m
ld
Figura 3.13: Smbolo e sinais do 74191.
Este contados possui duas sadas de controle, alem dos sinais com a contagem propriamente
dita. O sinal M/m (Max/min) ca em 1 nos dois extremos da contagem. Se o contador esta
incrementando, M/m=1 quando a contagem Q = 15, e M/m=1 quando a contagem Q = 0,
se o contador esta decrementando. O sinal rck produz um pulso durante o semi-ciclo em 0
do sinal de relogio, quando M/m=1. Estas duas sadas podem ser usadas para habilitar
o in/de-cremento de outros 74191. O comportamento deste contador e especicado pelas
Equacoes 3.4 e seu smbolo e mostrado na Figura 3.13.
Captulo 3. Circuitos Seq uenciais 30
en ld (D/u = 0) Q
+
:= (Q+ 1) %16
en ld (D/u = 1) Q
+
:= (Q1) %16
en ld Q
+
:= Q
ld Q
+
= E
(D/u = 0) Q = 15 M/m = 1
(D/u = 1) Q = 0 M/m = 1
(M/m = 1) (ck = 0) rck = 0
(3.4)
3.4 Registradores de Deslocamento
Um registrador de deslocamento permite deslocar seu conte udo, de tal forma que a cada
tic do relogio, todos os bits armazenados nos ip-ops deslocam-se simultaneamente de
uma posicao. A Figura 3.14 mostra um registrador de deslocamento simples. A cada tic do
relogio, a entrada de cada ip-op e copiada para sua sada, deslocando assim o conte udo
do registrador de uma posicao. A Tabela 3.2 mostra uma seq uencia de estados deste
registrador. Inicialmente, os ip-ops Q
0
Q
1
Q
2
Q
3
contem os bits xyzw, e `a entrada D
0
sao apresentados os bits abcd, um a cada tic do relogio. Apos 4 tics, os ip-ops estao no
estado Q
0
Q
1
Q
2
Q
3
= dcba.
s
s s s
s s
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
...................... . . . . . . . . . . . . . . . . . . . .
...................... . . . . . . . . . . . . . . . . . . . .
...................... . . . . . . . . . . . . . . . . . . . .
...................... . . . . . . . . . . . . . . . . . . . .
Q D
Q
Q D
Q
Q D
Q
Q D
Q
relog
D
0
Q
3
Q
2
Q
1
Q
0
Figura 3.14: Registrador de deslocamento simples.
estado D
0
Q
+
0
Q
+
1
Q
+
2
Q
+
3
0 x y z w
1 a a x y x
2 b b a x y
3 c c b a z
4 d d c b a
Tabela 3.2: Seq uencia de deslocamento de estados.
O registrador da Figura 3.14 e chamado de conversor serie-paralelo porque este circuito
converte entradas que sao amostradas em serie um bit a cada ciclo em sada que e
apresentada em paralelo todos os bits ao mesmo tempo. Um registrador que permita
a carga dos valores nas entradas em paralelo, e apresente a sada um bit de cada vez e
chamado de conversor paralelo-serie. Este tipo de circuito pode ser construdo ligando-se
um seletor na entrada de cada FF, de forma que se pode escolher se o FF sera carregado
com a sada do FF anterior, ou com o valor na entrada paralela. A Figura 3.15 mostra os
dois tipos de conversores, um serie-paralelo e um paralelo-serie.
Captulo 3. Circuitos Seq uenciais 31
3.4.1 74164
O 74164 e um registrador de deslocamento de 8 bits, com entrada serial e 8 sadas em
paralelo. A entrada serial e o and das entradas A e B. O 74164 e similar ao registrador
da Figura 3.15, mas com 8 FFs e sinal de inicializacao assncrono.
............................ . . . . . . . . . . . . . . . . . . . . . . . . . .
............................ . . . . . . . . . . . . . . . . . . . . . . . . . .
Q1 Q2 Q3 Q3
serie-paralelo
carga
paralelo-serie
D0
Q0
D0 D1 D2 D3
entrada serial
sada paralela sada serial
entrada paralela
Figura 3.15: Conversores serie-paralelo e paralelo-serie.
3.4.2 74194
O 74194 e um registrador de deslocamento universal de 4 bits que efetua as duas formas de
conversao (serie-paralelo e paralelo-serie), e permite deslocamentos para a esquerda e para
a direita. O comportamento deste registrador e especicado na Tabela 3.3, e a Figura 3.16
mostra o seu smbolo. A inicializacao deste registrador e assncrona.
s1 s0 iL iR A B C D Qa
+
Qb
+
Qc
+
Qd
+
1 1 X X a b c d a b c d
0 1 X v X X X X v Qa Qb Qc
1 0 v X X X X X Qb Qc Qd v
0 0 X X a b c d Qa Qb Qc Qd
Tabela 3.3: Especicacao de comportamento do 74194.
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
...................... . . . . . . . . . . . . . . . . . . . .
...................
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
...................
. . . . . . . . . . . . . . . . . . .
...................
Qd
Qc
Qb
D
C
B
A Qa
clr
194
s1
s0
iL
iR
E Q
S
Figura 3.16: Especicacao, smbolo e sinais do 74194.
Captulo 3. Circuitos Seq uenciais 32
3.4.3 Contador em Anel
Um contador em anel e um registrador de deslocamento ligado de forma a se comportar
como um contador de n bits cujo conjunto de estados e menor que 2
n
estados. Um contador
em anel pode ser implementado como aquele mostrado na Figura 3.17. A sada de cada
um dos quatro FFs e ligada `a entrada do FF seguinte, de forma a que os valores iniciais
dos FFs circulem pelo anel. A seq uencia de contagem depende do valor inicial dos FFs, e
nos casos triviais Q
0
Q
1
Q
2
Q
3
= 0000, 1111 a contagem nunca se alteraria.
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
r r r
r r r
...................... . . . . . . . . . . . . . . . . . . . .
...................... . . . . . . . . . . . . . . . . . . . .
...................... . . . . . . . . . . . . . . . . . . . .
...................... . . . . . . . . . . . . . . . . . . . .
Q
0
Q
1
Q
2
Q
3
s
Q D Q D Q D Q D
r r r
reset
clock
Figura 3.17: Contador em anel implementado com FFs tipo D.
Um contador em anel de n bits possui um conjunto de estados E com n < 2
n
estados,
que sao E = 0001, 0010, 0100, 1000 para um contador com n = 4 bits, e a seq uencia de
contagem e 1, 2, 4, 8, 1, 2, 4 .
Uma das aplicacoes de contadores em anel e a geracao de sinal de relogio multi-fase de
tal forma que cada um dos FFs gera uma das quatro fases do relogio. Estas fases sao
chamadas de
0
,
1
,
2
,
3
, e a cada instante somente uma das quatro fases esta ativa,
como mostra a Figura 3.18.
.................................
clock

3
reset
Figura 3.18: Comportamento do contador em anel.
Se apenas os pares <
0
,
2
> ou <
1
,
3
> forem empregados, estes produzem inter-
valos em que nao ha sinais de relogio ativos (
0
, ,
2
, ,
0
, e
1
, ,
3
, ,
1
, ).
Relogios multi-fase sao necessarios em circuitos seq uenciais implementados com basculas
para garantir que o estado das basculas seja alterado somente quando os sinais nas suas
entradas estejam estaveis. Normalmente, uma fase e usada para a alteracao do estado
das basculas, e a fase seguinte e usada para garantir que os sinais se propaguem atraves
Captulo 3. Circuitos Seq uenciais 33
da parte combinacional do circuito e estabilize imediatamente antes da proxima fase de
alteracao de estado.
Se ocorrer alguma falha no circuito e o contador entrar em algum dos estados que nao
pertencem a E, o contador cara repetindo a seq uencia incorreta de estados. Se for
acrescentada ao circuito da Figura 3.17 uma porta logica (de que tipo, e com quantas
entradas?), o contador voltara `a seq uencia correta em, no maximo, n 1 estados.
3.4.4 Contador Johnson
Um contador Johnson e similar a um contador em anel exceto que a sada do ultimo FF
e complementada. Um contador Johnson de n bits possui um conjunto de estados E com
[E[ = 2n estados. A Figura 3.19 mostra o diagrama de tempos de um contador Johnson
com 4 FFs.
.................................
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
clock
Q
0
Q
1
Q
2
Q
3
reset
E
1
E
2
E
3
E
4
E
5
E
6
E
7
E
8
E
1
E
2
E
3
Figura 3.19: Comportamento do contador Johnson.
Note que na seq uencia de contagem de um contador Johnson apenas uma das sadas se
altera a cada ciclo, o que torna esta seq uencia de estados um codigo de Gray. Veja o
Exerccio 3.19 para outra implementacao de um contador Gray.
Exerccios
Ex. 3.3 Desenhe os diagramas de estados completos de um contador em anel e de um
contador Johnson, ambos com 4 FFs.
Ex. 3.4 Repita o exerccio anterior apos acrescentar ao circuito do contador em anel a
porta logica que garante que a seq uencia correta de contagem e retomada em 3 ciclos do
relogio.
Ex. 3.5 Modique o circuito do contador Johnson para garantir que, em caso de operacao
incorreta, a seq uencia correta de contagem seja retomada em 3 ciclos do relogio. Pista:
use um 74194 mais um inversor e uma porta logica de 2 entradas.
Captulo 3. Circuitos Seq uenciais 34
3.4.5 Somador Serial
Existem aplicacoes nas quais reduzido consumo de energia e mais importante do que ve-
locidade de execucao. Nestas aplicacoes pode ser conveniente empregar circuitos que op-
eram serialmente, ao inves paralelamente. Por exemplo, um somador serial para n umeros
inteiros representados em n bits pode ser implementado com tres registradores de deslo-
camento para conter os operandos e o resultado, e um somador completo para efetuar
a soma de um par de bits a cada tic do relogio, como mostrado na Figura 3.20. O cir-
cuito funciona de forma similar ao calculo manual da soma de dois n umeros com muitos
dgitos: efetua-se a soma da direita para a esquerda, considerando-se um par de dgitos
mais o vem-um dos dois dgitos anteriores, e lembrando do vai-um para o proximo par de
dgitos. Este algoritmo esta formalizado na Equacao 3.5, na qual sao computados os dois
bits (C
i
S
i
) que resultam da soma dos dois operandos e do vem-um.
C
1
= 0
C
i
S
i
= A
i
+B
i
+C
i1
(3.5)
O bloco que efetua a soma dos tres bits contem um somador completo e um ip-op, para
armazenar o valor do vai-um para a soma do proximo par de bits.
q q q
r
q q q
q q q
r
..........................................
..........................................
...................... . . . . . . . . . . . . . . . . . . . .
..........................................
..........................................
Q
0
Q
n
D
0
D
n1
Q
n1
D
0
D
0
D
n1
Q
n1
operando A
operando B
resultado
rel
rel
................... . . . . . . . . . . . . . . . . .
................... . . . . . . . . . . . . . . . . .
................... . . . . . . . . . . . . . . . . .
A
soma
S
A
S
B
B
Figura 3.20: Somador serial.
Exerccios
Ex. 3.6 Complemente o diagrama da Figura 3.20, que nao mostra como devem ser
inicializados o registradores com os operandos e o de resultado, e nem o ip-op do vai-
um.
Ex. 3.7 Com base no somador serial, mostre como implementar um multiplicador serial.
3.5 Uma Rapida Olhada no Rel ogio
Os circuitos que sao o objeto deste captulo sao qualicados como sncronos porque as
mudancas de estado acontecem sincronamente a um sinal que dene os instantes em que as
transicoes podem ocorrer. Estes sinais sao chamados de relogio por conta da periodicidade
e regularidade destes e daqueles.
Um sinal contnuo no tempo e que apresenta comportamento cclico repetitivo e denido
pela sua amplitude e sua freq uencia. A amplitude e a distancia entre seus valores maximos
Captulo 3. Circuitos Seq uenciais 35
e mnimos, e em circuitos digitais a os sinais variam entre 0 e 1. Note que isto e uma
idealizacao, mas na pratica amplitude dos sinais permanece (quase) sempre entre os limites
de tensao das faixas aceitaveis como nvel logico 0 (0V V
0
< 1.5V ), e o nvel logico 1
(2.5V < V
1
5V para circuitos TTL). A Figura 3.21 mostra um perodo de uma onda
quadrada que poderia ser usada como sinal de relogio. Esta forma de onda e chamada
de quadrada porque o semi-ciclo em 0 tem a mesma duracao do semi-ciclo em 1.
. . . . . . . . . . . . . . . . . ...................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
................... . . . . . . . . . . . . . . . . .
T
Figura 3.21: Perodo de um sinal periodico.
A freq uencia de um sinal periodico e o n umero de vezes por segundo em que o ciclo do
sinal se repete, e a unidade da freq uencia e Hertz [Hz]. O perodo de um sinal e a duracao
de um ciclo, e o perodo e medido em segundos [s]. Freq uencia e perodo sao relacionados
pela Equacao 3.6.
T = 1/f (3.6)
A faixa de valores de freq uencia empregados em circuitos digitais e ampla, desde
freq uencias abaixo de um Hertz (f 0, 5Hz), em sinais de transito, ate dezenas de
gigahertz, em circuitos de alto desempenho (f 10
9
Hz). A faixa de valores dos perodos
destes sinais tambem e ampla, desde uns poucos segundos ate picosegundos (T 10
12
s).
A Tabela 3.4 relaciona as potencias de 10 e os nomes usados para qualicar as freq uencias
e perodos. Note que, em se tratando de tempo ou freq uencia, sao usadas potencias de 10
e nao potencias de 2. Isso se deve ao desenvolvimento das telecomunicacoes ter ocorrido
antes do desenvolvimento da computacao automatica e a nomenclatura empregada pelos
engenheiros se manteve em uso.
potencia nome smbolo
12 pico p
9 nano n
6 micro
3 mili m
3 kilo k
6 mega M
9 giga G
12 tera T
Tabela 3.4: Tabela de potencias de 10.
Divisao de freq uencia As sadas de um contador efetuam divisao de freq uencia do
sinal de relogio. Considerando a freq uencia f do sinal de relogio, a sada Q
0
produz um
sinal com freq uencia f/2, a sada Q
1
tem freq uencia f/4, e assim sucessivamente. A cada
divisao na freq uencia corresponde uma duplicacao no perodo, como mostra a Figura 3.22.
Captulo 3. Circuitos Seq uenciais 36
relogio
Q
0
Q
1
Q
2
f = 0, 5
f = 0, 25
f = 0, 125
f = 1 T = 1
T = 2
T = 4
T = 8
Figura 3.22: Divisao de freq uencia.
Ciclo de Trabalho A sada de um dos FFs do contador em anel produz um sinal
periodico mas assimetrico porque os intervalos em que o sinal permanece em 1 e em 0 sao
diferentes. Por exemplo, o diagrama de tempo mostrado na Figura 3.18 mostra que os
sinais
i
permanecem em 1 durante 1/4 do perodo e em 0 por 3/4 do perodo. O ciclo
de trabalho, ou duty cycle, de um sinal periodico e a relacao entre os intervalos em que o
sinal permanece em 1 e em 0. A Figura 3.23 mostra sinais com ciclos de trabalho de 25,
50 e 75%.
. . . . . . . . . . . . . . . . . ................... ................... . . . . . . . . . . . . . . . . .
25%
50%
75%
T
Figura 3.23: Ciclo de trabalho.
3.6 Velocidade Maxima de Operacao
Os fabricantes de circuitos integrados informam tres parametros operacionais importantes
para os circuitos seq uenciais que produzem. A discussao que segue se limita a ip-ops
mas estes parametros se aplicam a quaisquer circuitos seq uenciais. O primeiro parametro
e o tempo de propagacao do FF t
prop
. O segundo e o setup time, que e o intervalo ime-
diatamente antes da borda do relogio em que a entrada nao pode variar. O terceiro
parametro e o hold time e e o intervalo imediatamente apos a borda do relogio em que
a entrada nao pode variar. Se um circuito que emprega um determinado FF violar seus
t
setup
ou t
hold
, o comportamento do FF nao e garantido pelo fabricante. Geralmente,
t
hold
= 0. A Figura 3.24 mostra um diagrama de tempo que relaciona estes parametros.
Estes parametros sao importantes porque eles impoem um limite na velocidade maxima
de operacao de um circuito com FFs ou registradores. A Figura 3.25 mostra um circuito
seq uencial hipotetico com dois FFs interligados por um circuito combinacional. A sada q1
do primeiro FF e uma das entradas do circuito combinacional, que por sua vez produz
o sinal de entrada d2 do segundo FF. O diagrama de tempo mostra o limite operacional
deste circuito: a somatoria de t
prop
do primeiro FF, tempo de propagacao do circuito com-
binacional t
combin
, e t
setup
do segundo FF e praticamente igual ao perodo do relogio. Por
Captulo 3. Circuitos Seq uenciais 37
exemplo, a adicao de mais uma porta logica no caminho crtico do circuito combinacional
violaria t
setup
do segundo FF e este circuito deixaria de operar corretamente.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...................................
.................................
.................................
................................. .................................
.................................
.................................
................................. .................................
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . ............... ............... . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . ............... ............... . . . . . . . . . . . . .
............... . . . . . . . . . . . . . . . . . . . . . . . . . . ...............
Q
D
clock
prop
setup hold
Figura 3.24: Parametros temporais de FFs.
A velocidade maxima de operacao de um circuito seq uencial depende da freq uencia do
relogio, que por sua vez e limitada pelo tempo de propagacao da parte combinacional, e
dos parametros temporais dos FFs e registradores. A freq uencia maxima e a recproca
do perodo mnimo do ciclo do relogio (f
max
= 1/T
min
), e o perodo mnimo do relogio e
determinado pela Equacao 3.7. Para um dado circuito, o estagio com o maior T
min
limita
a velocidade do relogio e portanto o desempenho de todo o circuito.
T
min
t
prop
+t
combinacional
+t
setup
(3.7)
ppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
r
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p pppppppppppppppppp
...................... . . . . . . . . . . . . . . . . . . . .
...................... . . . . . . . . . . . . . . . . . . . .
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
...................................
...................................
...................................
...................................
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
............... . . . . . . . . . . . . . . . . . . . . . . . . . . ...............
. . . . . . . . . . . . . ............... ............... . . . . . . . . . . . . .
............... . . . . . . . . . . . . . . . . . . . . . . . . . . ...............
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . ............... ............... . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . ............... ............... . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
D
Q
Q D
Q
d2 q1
clock
d1
d1
clock
q1
d2
q2
q2
prop setup
combinacional setup
combinacional
prop
Q
Figura 3.25: Limites da velocidade maxima.
Exerccios
Ex. 3.8 Tomando o circuito mostrado na Figura 3.8 como base, projete um contador de
32 bits. Pista: replique a parte mais `a direita do circuito.
Captulo 3. Circuitos Seq uenciais 38
Ex. 3.9 Escreva a expressao para o limite de velocidade do circuito do exerccio anterior.
Ex. 3.10 Usando uma tecnica similar a do somador com adiantamento de vai-um (carry
look-ahead), modique o contador de 32 bits para melhorar seu desempenho e re-escreva a
equacao do limite de velocidade para reetir a modicacao. Qual o ganho em desempenho?
Ex. 3.11 O fabricante do registrador 74374, com 8 FFs tipo D, informa que o tempo de
propagacao medio e de 20ns, e o maximo de 30ns, o setup time e no mnimo 20ns, e o hold
time de 1ns. Suponha que este registrador e usado em uma maquina de estados e que o
tempo de propagacao da funcao de proximo estado e de 40ns. Qual a freq uencia maxima
(segura) do relogio deste circuito?
3.7 Projeto de Maquinas de Estados
As secoes anteriores tratam de contadores e registradores de deslocamento, que sao exem-
plos relativamente simples de maquinas de estados. Esta secao discute tecnicas de projeto
de maquinas de estados que se aplicam a uma classe mais ampla de circuitos seq uenciais.
3.7.1 Diagrama de Estados
O comportamento de um contador sncrono de dois bits pode ser descrito pela seq uencia
de estados que e percorrida ao longo do tempo:
reset 0 1 2 3 0 1
Este comportamento pode ser descrito gracamente atraves de um diagrama de estados,
como o mostrado na Figura 3.26. Cada estado e representado por um crculo e cada
transicao de estado por uma seta, e a cada seta e associada a condicao que possibilita a
mudanca de estado. O nome do estado e indicado na parte superior do crculo, e a sada
produzida no estado e indicada na parte inferior. O estado inicial e indicado por uma seta
que nao provem de nenhum outro estado, e este e o estado para o qual a maquina vai
quando o sinal de reset e ativado. No diagrama da Figura 3.26 nao sao mostradas sadas
porque o estado dos ip-ops e a propria sada. As transicoes nao estao marcadas porque
num contador sempre ocorre uma mudanca de estado a cada tic do relogio.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .................................................................................................................................................... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....................................................................................................................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .................................................................................................................................................... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....................................................................................................................................................
. . . . . . . . . . . . . . . . . ...................
. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .
....................................
................... . . . . . . . . . . . . . . . . .
............................................................................................
................... . . . . . . . . . . . . . . . . .
00 11
10 01
reset
Figura 3.26: Diagrama de estados de um contador de 2 bits.
Considere uma maquina de estados que produz um pulso na sua sada toda a vez em que
sua entrada contiver a seq uencia 01110. Dito de outra forma, esta maquina e capaz de
Captulo 3. Circuitos Seq uenciais 39
reconhecer a seq uencia 01110. Note que ao reconhecer a seq uencia 011101110, a maquina
produziria dois pulsos. A Figura 3.27 contem um dos possveis diagramas de estados que
descreve o comportamento desejado.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....................................................................................................................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....................................................................................................................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....................................................................................................................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...................................................................................................................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....................................................................................................................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....................................................................................................................................................
....................................
........................................................................................................................................................................... ................... . . . . . . . . . . . . . . . . .
...................................................................................................................................................................................................
................... . . . . . . . . . . . . . . . . .
....................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . ...................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .
................................................................................
.....
....................................
. .. .. . .. . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . .. . . .. . . .. . . .. . .. . .. . .. . .. . . . . .. . .. . .. . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . . .
................................................................................................................................................................................................
................... . . . . . . . . . . . . . . . . .
................................................................................................................................
. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . . . . . . . . . . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . .. . . . . . .. . . . . .. . . . .. . . .. . .. . . . .
. . . . . . . . . . . . . . . . . ...................
. .. .. .. . .. . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . .. . .. . .. . .. . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . . .. . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . . . . . . . . . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . .. . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . .. . . . .. . . . .. . . .. . . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .
......................................................................................................................................................................................................................................................
................... . . . . . . . . . . . . . . . . .
. .. .. .. . .. . .. . .. . .. . .. . .. .. .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. .. .. .. .. .. . .. .. . .. . .. . .. .. .. .. .. .. .. .. . .. .. . .. . .. . .. . .. . .. . . ...........................................................................
................... . . . . . . . . . . . . . . . . .
. .. .. .. . .. . . .. . . .. . . . .. . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . .. . . . .. . . . .. . . . .. . . .. . . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . . . . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . . .. . . . . .. . . . . .. . . . .. . . . .. . . . .. . . .. . .. . . . .
. . . . . . . . . . . . . . . . . ...................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . ...................
i
A
B
C
0
1
0
1
E
1
1
D
1
0
0
1
1
0
0
Figura 3.27: Diagrama de estados do reconhecedor de 01110.
Todos as transicoes ocorrem quando do recebimento de uma nova entrada, a cada tic
do relogio. Como a entrada e binaria, todos os estados tem duas possveis transicoes,
uma para entrada 0 e a outra para entrada 1. Apos a inicializacao, enquanto a en-
trada for 1, a maquina permanece no estado i. A seq uencia de estados que produz um
pulso, com a duracao de um perodo do relogio, e iABCDE para entradas 01110. Para
entradas 011101110, a seq uencia de estados seria iABCDEBCDE. Para simplicar o dia-
grama, somente o estado E tem a indicacao de sada em 1, e subentende-se que os demais
estados produzem sada 0.
Dos dois exemplos de diagramas de estado discutidos ate agora, o contador nao depende
de nenhuma entrada externa porque as transicoes ocorrem a cada tic do relogio, e o
reconhecedor da seq uencia 01110 dependia de uma unica entrada binaria. Em geral,
para uma maquina de estado com n entradas, em cada estado sao possveis 2
n
transicoes
distintas, isto e, de cada estado podem emergir ate 2
n
setas para outros estados.
Ha duas restricoes importantes que devem ser enfatizadas. Primeiro, os diagramas de
estado devem permitir a implementacao de maquinas de estado determinsticas e portanto
nao pode haver mais de um proximo estado para cada um dos possveis valores das en-
tradas. Segundo, para garantir que todos os estados sejam alcancaveis, alguma transicao
deve ser possvel para todas as combinacoes possveis das entradas. De todas as transicoes
para outros estados, pelo menos uma, e somente uma, deve ser possvel.
Os diagramas de estados sao uma representacao para maquinas de estado nitas, que por
sua vez pertencem ao conjunto dos automatos nitos
2
[HU79]. Formalmente, uma maquina
de estados nita M e denida pela sextupla mostrada na Equacao 3.8.
2
Automatos nitos sao estudados no curso de Teoria da Computacao.
Captulo 3. Circuitos Seq uenciais 40
M = (Q, I, f, q
0
, g, S)
q
0
Q estado inicial
f : (Q1) Q funcao de proximo estado
g : (Q1) o funcao de sada
(3.8)
Q e um conjunto nito de estados, I e um conjunto nito de smbolos de entrada, f e
a funcao de transicao ou funcao de proximo estado, S e um conjunto nito de smbolos
de sada, e g e a funcao de sada. A entrada para uma maquina de estados nita e uma
seq uencia de smbolos em I e quando ocorre uma mudanca de estado o smbolo associado
`aquela transicao e consumido.
Dependendo da funcao de sada, podem ser denidos dois tipos de maquinas de estado
nitas, as Maquinas de Moore e as Maquinas de Mealy. Numa Maquina de Moore e sada
depende apenas do estado atual e portanto
g : Q o Maquina de Moore. (3.9)
A sada produzida por uma Maquina de Moore, em resposta a uma seq uencia de entrada
e
1
, e
2
e
n
, n0 e
g(q
0
), g(q
1
) g(q
n
)
quando q
0
, q
1
q
n
e a seq uencia de estados tal que f(q
i1
, e
i
) = q
i
, 1 i n.
Numa maquina de Mealy a sada depende do estado atual e das entradas
g : (Q1) o Maquina de Mealy. (3.10)
Em resposta a uma seq uencia de entrada e
1
, e
2
e
n
, n 0, a sada produzida por uma
Maquina de Mealy e
g(q
0
, e
1
), g(q
1
, e
2
) g(q
n1
, e
n
)
quando q
0
, q
1
q
n
e a seq uencia de estados tal que f(q
i1
, e
i
) = q
i
, 1 i n. Note
que esta seq uencia de estados tem um estado a menos que a seq uencia correspondente
produzida por uma Maquina de Moore.
Uma especicacao do contador de 2 bits pode ser formalizada por uma maquina de estados
como a denida pela Equacao 3.11. O conjunto de quatro estados e representado em
binario, o conjunto de entrada e vazio porque as transicoes ocorrem independentemente
de qualquer sinal externo, a funcao de proximo estado e denida como um conjunto de
pares ordenados, o estado inicial e o estado 00, a funcao de sada e a funcao identidade
porque a sada do contador e o proprio estado, e o conjunto de sada e o conjunto de
estados.
M = (00, 01, 10, 11, , f, 00, =, 00, 01, 10, 11)
f : (00, 01), (01, 10), (10, 11), (11, 00)
(3.11)
Exerccios
Ex. 3.12 Especique formalmente o comportamento dos ip-ops tipo D, T e JK.
Captulo 3. Circuitos Seq uenciais 41
Ex. 3.13 Especique um contador de 2 bits usando um nvel maior de abstracao do que
aquele da Equacao 3.11.
Ex. 3.14 Especique formalmente o contador em anel da Secao 3.4.3. Especique a
funcao de proximo estado atraves de uma tabela com dois campos, (1) estado atual, e
(2) proximo estado.
Ex. 3.15 Especique formalmente o contador Johnson da Secao 3.4.4. Especique a
funcao de proximo estado atraves de uma tabela.
Ex. 3.16 Especique formalmente o detector de seq uencias da Figura 3.27.
Ex. 3.17 Especique a funcao de proximo estado do detector de seq uencias da Figura 3.27
atraves de uma tabela com tres colunas, (1) estado atual, (2) entrada, e (3) proximo estado.
Ex. 3.18 Projete um circuito seq uencial sncrono, com uma entrada de dados D, uma
sada N com 8 bits (contador), uma sada C (binaria), uma entrada de relogio rel, e uma
entrada de reset. Apos o reset, sempre que o circuito detectar a seq uencia 01111110
a sada C produz um pulso, e a sada N e incrementada, conforme mostrado abaixo. Faca
um diagrama detalhado de seu circuito, empregando componentes da famlia 74xxx, e
explique seu funcionamento.
entrada: 001110111110111110000000
sada: 000000000000100000100000
Ex. 3.19 Projete e implemente um contador Gray, cuja seq uencia de contagem e aquela
denida no Exerccio 2.17.
3.7.2 Implementacao de Maquinas de Estado
A Figura 3.28 mostra dois circuitos genericos que podem ser usados para implementar
Maquinas de Moore e de Mealy. Estas maquinas consistem de um registrador de estado,
de uma funcao de proximo estado, e de uma funcao de sada. O proximo estado (PE) da
maquina depende do estado atual (EA) e das entradas (E): PE = f(E, EA). As sadas
dependem do estado atual (Maquina de Moore: S = f(EA)), ou dependem do estado
atual e das entradas (Maquina de Mealy: S = f(E, EA)).
A metodologia de projeto de maquinas de estado depende de cinco passos:
1. compreensao e formalizacao do problema;
2. atribuicao de estados;
3. calculo da funcao de proximo estado;
4. calculo da funcao de sada; e
5. implementacao,
Captulo 3. Circuitos Seq uenciais 42
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...........................................................................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .............................................................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .......................................................
r
r
r .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .............................................................................................
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...........................................................................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .............................................................................................
r
r
r .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .............................................................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .......................................................
r
r
............................ . . . . . . . . . . . . . . . . . . . . . . . . . .
............................ . . . . . . . . . . . . . . . . . . . . . . . . . .
E
PE
EA
reg. de
estado
estado
de
funcao
proximo
clock
reset
de
funcao
saida
S
D Q
PE
EA
reg. de
estado
estado
de
funcao
proximo
clock
reset
de
funcao
saida
S
D Q
E
Maquina de Mealy
Maquina de Moore
Figura 3.28: Maquinas de Estados de Moore (topo) e de Mealy.
Considere o projeto de um contador modulo-10, similar ao 7493. Para implementar este
contador sao necessarios, no mnimo quatro ip ops (log
2
10 4). A atribuicao de es-
tados mais simples e associar a cada estado de um contador binario o n umero que lhe
corresponde. A funcao de proximo estado deve garantir que a seq uencia normal de con-
tagem seja obedecida, e ainda que quando o contador atinge o estado correspondente ao
n umero 9 a seq uencia re-inicie de 0. A funcao de sada e trivial porque a propria atribuicao
de estados a deniu implicitamente.
3.7.3 Maquina de Vender Chocolates
Suponha que o controlador de uma maquina de vender chocolates deva ser implementado
com uma maquina de estados. A maquina possui uma entrada para a insercao de moedas,
uma sada para a devolucao de moedas, uma sada para entregar os chocolates vendidos.
Para simplicar o problema, suponha que a maquina nao devolve troco se as moedas
recebidas excedem o preco do chocolate, todas as moedas sao devolvidas.
Captulo 3. Circuitos Seq uenciais 43
Cada chocolate custa $1, 00, e a maquina deve aceitar apenas moedas de $0, 50 e de $0, 25.
O detector de moedas e muito bem construdo e aceita e informa o valor de uma moeda de
cada vez, e e capaz de rejeitar moedas de valores fora da faixa aceitavel. Moedas rejeitadas
sao desviadas automaticamente para a sada de moedas. O controlador possui portanto
duas entradas correspondentes `a moedas de $0, 50 e de $0, 25c, e duas sadas, choc que
aciona a sada de chocolates, e dev que aciona a devolucao de moedas. A Figura 3.29
mostra um diagrama de blocos com os componentes da maquina de vender chocolates.
.................................... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
detector de moedas chocolates
dispensador de
maquina de estados
25 centavos
50 centavos
entrega choc
sada de moedas
devolve moedas
reset
clock
Figura 3.29: Diagrama de blocos do mecanismo da maquina de vender chocolates.
Formalizacao do problema A Figura 3.30 contem o diagrama de estados com a es-
pecicacao do comportamento da maquina de vender chocolates.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...................................................................................................................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...................................................................................................................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...................................................................................................................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ................................................................................................................................................... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...................................................................................................................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...................................................................................................................................................
....................................
....................................
..................................................................................................................................................................................................................
................... . . . . . . . . . . . . . . . . .
................................................................................................................................................................................................. ................... . . . . . . . . . . . . . . . . .
....................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . ...................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . ...................
...............................................................................................................................................................................................................................................................................................................................
................... . . . . . . . . . . . . . . . . .
. .. .. .. . .. . .. . .. . .. . .. . .. .. .. .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. .. .. .. .. .. . .. .. .. . .. . .. .. .. .. .. .. .. .. . .. .. . .. . .. . .. . .. . .. . . ............................................................................
................... . . . . . . . . . . . . . . . . .
. .. .. .. . .. . .. . .. . .. . .. . .. .. .. .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. .. .. .. .. .. . .. .. .. . .. . .. .. .. .. .. .. .. .. . .. .. . .. . .. . .. . .. . .. . . .............................................................................
................... . . . . . . . . . . . . . . . . .
........................................................................................................................... . . .. .. .. .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . . .. . . .. . . .. . . . .
. . . . . . . . . . . . . . . . . ...................
.......................................................................................................................................................................................................................................................................................................................................................................................................................
........
. . . . . . . .
. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . .. . . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . .. . . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . . . . . . .. . . .. . . .. . . .. . . .. . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . . .. . . . . .. . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . .. . . . . .. . . . .. . . . .. . .. . . . .
. . . . . . . . . . . . . . . . . ...................
. .. .. .. . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . .. . .. . .. . .. . .. . .. . .. . .. . . .. . . .. . . .. . . . . . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . . .. . . .. . . .. . . .. . . .. . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . . .. . . . . .. . . . . .
. . . . . .
.......
................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... ................... . . . . . . . . . . . . . . . . .
. .. .. .. . .. . .. . .. . .. . .. .. .. .. .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. .. .. .. .. .. . .. .. . .. .. . .. .. .. .. .. .. .. .. . .. .. . .. . .. . .. . .. . .. . . .............................................................................
................... . . . . . . . . . . . . . . . . .
.................................................................................
.....
....................................
50c
25c
75c
choc
25,50
25,50
25
50
25
50
50
25
100c
25,50
50
25
erro
dev
0c
25,50
Figura 3.30: Especicacao da maquina de vender chocolates.
Captulo 3. Circuitos Seq uenciais 44
Atribuicao de estados O diagrama de estados contem seis estados, sendo portanto
necessarios tres FFs para implementa-lo (no mnimo tres). Uma das possveis atribuicoes
de estados e mostrada na Tabela 3.5.
estado q
2
q
1
q
0
0c 000
25c 001
50c 010
75c 011
100c 100
erro 111
Tabela 3.5: Atribuicao de estados de maquina de vender chocolates.
Funcao de proximo estado Tomando por base a atribuicao de estados (Tabela 3.5) e a
especicacao do comportamento do controlador da Figura 3.30, a funcao de proximo estado
pode ser projetada. Note que duas decisoes de projeto estao implcitas nesta denicao.
A primeira, sinalizada por , indica uma preferencia por moedas de $0, 25 se existem
duas moedas disponveis, o controlador prefere consumir a moeda de $0, 25. A segunda
decisao de projeto, sinalizada por , dene o comportamento do controlador no caso em
que estados invalidos sao atingidos pelo controlador as moedas sao devolvidas e uma
nova transacao e iniciada. A funcao de proximo estado e mostrada na Tabela 3.6.
est EA entr PE
q
2
q
1
q
0
25 50 q
+
2
q
+
1
q
+
0
0c 000 0 0 000
000 1 X 001
000 0 1 010
25c 001 0 0 001
001 1 X 010
001 0 1 011
50c 010 0 0 010
010 1 X 011
010 0 1 100
75c 011 0 0 011
011 1 X 100
011 0 1 111
100c 100 X X 000
101 X X 111
110 X X 111
erro 111 X X 000
Tabela 3.6: Funcao de proximo estado de maquina de vender chocolates.
Captulo 3. Circuitos Seq uenciais 45
Funcao de sada A funcao de sada para uma Maquina de Moore. e mostrada na
Tabela 3.7. A sada choc e ativada no estado 100c para entregar um chocolate ao cliente,
e a sada dev e ativada no estado erro para devolver as moedas em caso de erro ou excesso
de moedas.
est EA sada
100c 100 choc
erro 111 dev
Tabela 3.7: Funcao de sada de maquina de vender chocolates.
Implementacao A funcao de proximo estado mostrada na Tabela 3.6 pode ser im-
plementada com logica combinacional. Sao necessarias tres funcoes, uma para cada um
dos FFs (q
+
2
, q
+
1
, q
+
0
). Cada funcao pode ser calculada com um Mapa de Karnaugh de 5
variaveis tres FFs de estado (q
i
) e duas entradas (25,50). As funcoes de sada podem ser
implementadas diretamente pela simples decodicacao dos estados: choc = q
2
q
1
q
0
,
e dev = q
2
q
1
q
0
.
Exerccios
Ex. 3.20 Desenhe outro diagrama de estados para a maquina de vender chocolates
considerando que a implementacao sera com uma Maquina de Mealy.
Ex. 3.21 Estenda o projeto da maquina de vender chocolates adicionando um botao que
permita ao comprador abortar a operacao a qualquer instante, causando a devolucao das
moedas.
3.8 Micro-controladores
Micro-controladores sao maquinas de estado implementadas com contadores e memoria
ROM. Esta secao discute algumas tecnicas poderosas de projeto de micro-controladores
que possibilitam desvios condicionais no uxo de controle.
3.8.1 Mem oria ROM
O comportamento de um circuito integrado de memoria ROM pode ser descrito de maneira
muito simplicada como uma tabela, ou um vetor da linguagem C. Um elemento da tabela
pode ser examinado aplicando-se o ndice `a tabela e observando seu conte udo. Em C, isso
equivale a indexar um vetor para acessar o conte udo da posicao 4 do vetor e entao atribu-lo
`a variavel escalar:
vetor[8] = 12,6,8,13,1,0,3,9;
escalar = vetor[4];
Captulo 3. Circuitos Seq uenciais 46
No caso de uma memoria ROM, o ndice e chamado de endereco e o conte udo da posicao
indexada e o valor gravado naquela posicao. A Figura 3.31 contem um diagrama de blocos
de uma memoria ROM de 8 palavras, cada palavra com 4 bits de largura. Esta memoria
e chamada de uma memoria ROM8x4, isto e com 8 palavras de 4 bits.
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
0
1
2
3
5
6
4
7
e0
e1
e2
d0 d1 d2 d3
conte udo
endereco
ROM
Figura 3.31: Diagrama de blocos de memoria ROM.
Supondo que o conte udo da memoria ROM na Figura 3.31 seja o mesmo que o do ve-
tor acima, entao aplicando-se o n umero 4 `as linhas de endereco e2,e1,e0=100, a sada
apresentara o n umero 1, d3,d2,d1,d0=0001.
3.8.2 Micro-controlador Baseado em ROM
Suponha que uma determinada aplicacao necessite de 4 sinais para controlar o circuito
de dados e que a seq uencia de controle possui oito passos, que se repetem continuamente.
Esta seq uencia e denida abaixo.
c[ ] c
0
c
1
c
2
c
3
0 1100
1 0110
2 1000
3 1101
4 0001
5 0000
6 0011
7 1001
Tabela 3.8: Seq uencia de estados do controlador primeira versao.
Se um contador de 3 bits for ligado `as linhas de endereco de uma memoria ROM cujo
conte udo seja aquele do vetor c[ ], a cada tic do relogio a sada da ROM apresentara os
sinais de controle com os nveis apropriados. A Figura 3.32 mostra uma implementacao
deste controlador. Apos a ativacao do reset, o contador percorre a memoria e os sinais de
controle sao aplicados aos pontos apropriados do circuito de dados.
Captulo 3. Circuitos Seq uenciais 47
Cada palavra da ROMe chamada de uma microinstrucao e a seq uencia das microinstrucoes
e chamada de microprograma. O contador que varre o microprograma e chamado de
microPC ou micro Program Counter.
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
.................................. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
reset
clock
e0
e1
e2
q1
q2
q0 e0
e1
e2
d0 d1 d2 d3
ROM8x4
c0 c1 c2 c3
Figura 3.32: Micro-controlador primeira versao.
3.8.3 Controle de Fluxo
O controlador do exemplo acima poderia ser implementado diretamente como uma
maquina de estados relativamente simples. Note que a funcao de proximo estado foi imple-
mentada na ROM. A tabela verdade da funcao de proximo estado e gravada diretamente
na ROM e nenhuma simplicacao e necessaria.
Considere a seq uencia mostrada acima mas com as restricoes mostradas na Tabela 3.9,
onde PE signica proximo estado.
c[ ] c
0
c
1
c
2
c
3
desvio?
0 1100
1 0110
2 1000 PE = 0 i0 3
3 1101
4 0001 PE = 0 i0 5
5 0000
6 0011
7 1001
Tabela 3.9: Seq uencia de estados do micro-controlador com controle de uxo.
Esta seq uencia pode ser implementada com o controlador da Figura 3.32, se ao sinal
de reset do contador for adicionado um circuito para provocar a alteracao na seq uencia
original, e a ROM possuir um bit de dados adicional para o controle de uxo, o sinal f.
Neste circuito, deve-se usar uma ROM 8x5 para acomodar o sinal f. O novo circuito de
controle e mostrado na Figura 3.33.
Captulo 3. Circuitos Seq uenciais 48
c[ ] c
0
c
1
c
2
c
3
f desvio?
0 1100 0
1 0110 0
2 1000 1 PE = 0 i0 3
3 1101 0
4 0001 1 PE = 0 i0 5
5 0000 0
6 0011 0
7 1001 0
Tabela 3.10: Funcao de proximo estado do micro-controlador com controle de uxo.
O sinal de reset do contador e ativado se o controlador estiver sendo reinicializado (reset=0)
ou se a entrada esta ativa (i0=1) e o controlador estiver nos estados 2 ou 4, porque nestes
estados o sinal f=1. Este circuito permite ao microprograma efetuar desvios condicionais
que dependem do valor de um sinal externo.
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
............................ . . . . . . . . . . . . . . . . . . . . . . . . . .
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
p p pp p pp p pp p pp pp pp pp pp p pp pp p pp p pp p pp pp pp pp pp pp pp p pp p pp p pp p pp p
ROM8x5
reset
i0
clock
q1
q2
q0 e0
e1
e2 clr
c0 c1 c2 c3 f
d0 d1 d2 d3 d4
Figura 3.33: Micro-controlador segunda versao.
Considere outra modicacao na seq uencia de controle. No estado 2, se o sinal in=1,
o proximo estado deve ser 5. No estado 5, enquanto in=1, o controlador permanece
naquele estado. Esta nova seq uencia e mostrada abaixo. Uma possvel implementacao
deste controlador emprega um contador 74163, conforme a Figura 3.34. O sinal ld=0
carrega um novo estado no contador permitindo assim alterar a seq uencia de contagem.
Quando f=0, ld=1 e o contador e incrementado. Quando f=1, dependendo do valor de in,
um novo valor e carregado no contador, alterando-se sua seq uencia de contagem.
Exerccios
Ex. 3.22 Considere o controlador da Figura 3.34. Qual um possvel uso para o quarto
bit do contador (Qd)? Qual seria a vantagem de usar uma ROM 16x8 e deixar o bit Qa
sem ligacao `as sadas do contador?
Ex. 3.23 Considere um micro-controlador que pode seguir uma de varias seq uencias
distintas, sendo que uma entrada de 4 bits de largura determina uma de 16 possveis
Captulo 3. Circuitos Seq uenciais 49
seq uencias. Projete o circuito que seleciona qual das seq uencias sera seguida. Suponha
que cada seq uencia possui no maximo 32 microinstrucoes.
c[ ] s
2
s
1
s
0
f c
0
c
1
c
2
c
3
desvio?
0 0 1100
1 0 0110
2 1 0 1 1 1000 PE = 5 in 3
3 0 1101
4 0 0001
5 1 0 1 1 0000 PE = 5 in 6
6 0 0011
7 0 1001
Tabela 3.11: Funcao de proximo estado do micro-controlador da terceira versao.
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppppppppppppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p pppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
...................... . . . . . . . . . . . . . . . . . . . .
c1 c2 c3 c0
ROM8x8
s0
s1
s2
rco
163
p,t
clock
A
B
C
reset
D
Qa
Qb
Qc
Qd
ld
clr
f
1
1
in
nc
nc
e0
e1
e2
d1 d2 d3 d0 d4 d5 d6 d7
Figura 3.34: Micro-controlador terceira versao.
Ex. 3.24 No circuito do exerccio anterior, existem algumas seq uencias nas quais a porcao
nal e comum a elas. Esta porcao comum e chamada de microrrotina. Projete o circuito
que permite desvios para a microrrotina. Suponha que uma microrrotina possui no maximo
32 microinstrucoes.
Ex. 3.25 Estenda o projeto do exerccio anterior para permitir o desvio condicional para
a microrrotina.
Ex. 3.26 Estenda o projeto do exerccio anterior para permitir o desvio condicional para
uma de varias microrrotinas. Suponha que existem ate 8 microrrotinas distintas.
Captulo 3. Circuitos Seq uenciais 50
3.8.4 Maquina de Vender Chocolates Versao 2
Considere outra possvel implementacao do circuito de controle da maquina de vender
chocolates. A funcao de proximo estado e repetida na Tabela 3.12, com as quatro com-
binacoes possveis das entradas 25 e 50.
Esta implementacao do controlador da maquina de vender chocolates emprega uma
memoria ROM para implementar a funcao de proximo estado. A ideia e preencher a
memoria ROM diretamente com a funcao de proximo estado de tal forma que o seq uen-
ciamento e gravado na ROM, conforme mostra a Tabela 3.13 (pag. 51). A coluna EA
corresponde ao estado atual, a coluna 25 50 corresponde `as duas entradas, a coluna PE
corresponde ao proximo estado, e as sadas sao mostradas nas duas colunas `a direita.
est EA entr PE
q
2
q
1
q
0
25 50 q
+
2
q
+
1
q
+
0
0c 000 0 0 000
000 0 1 010
000 1 0 001
000 1 1 001
25c 001 0 0 001
001 0 1 011
001 1 0 010
001 1 1 010
50c 010 0 0 010
010 0 1 100
010 1 0 011
010 1 1 011
75c 011 0 0 011
011 0 1 111
011 1 0 100
011 1 1 111
100c 100 X X 000
101 X X 111
110 X X 111
erro 111 X X 000
Tabela 3.12: Funcao de proximo estado de maquina de vender chocolates.
A ROM e logicamente dividida em oito faixas de enderecos, com 4 enderecos em cada
faixa. O estado atual e determinado pelos 3 bits mais signicativos do endereco (e
4
e
3
e
2
).
As entradas sao ligadas aos 2 bits menos signicativos do endereco (50 e
0
e 25 e
1
).
Dependendo das combinacoes de estado atual e entradas, o proximo estado e determinado
pelos bits d
4
d
3
d
2
da ROM. A Figura 3.35 mostra a implementacao do controlador. A cada
tic do relogio o registrador 74174 e atualizado em funcao do estado atual e das entradas.
Note que as entradas sao sincronizadas pelo relogio.
As duas principais vantagens desta implementacao com relacao `aquela discutida na
Secao 3.7.3 sao a simplicidade do projeto o calculo da funcao de proximo estado com
Mapas de Karnaugh com mais de 4 variaveis e complexo e sujeito a erros e a possibili-
dade de se alterar a logica do controlador sem grandes mudancas no circuito bastando
ajustar o conte udo da ROM para que este corresponda ao novo diagrama de estados.
Captulo 3. Circuitos Seq uenciais 51
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .......................................................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ......................................................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..............................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...............................................................
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
............................ . . . . . . . . . . . . . . . . . . . . . . . . . .
choc
dev
50
25
clock
reset
ROM32x5
e1
e2
e0
e3
e4
d0 d3 d4 d2 d1
PE
EA
entradas
sadas
D
174
clr
Q
Figura 3.35: Controlador da maquina de vender chocolates.
est EA 25 50 PE choc dev
e
4
e
3
e
2
e
1
e
0
d
4
d
3
d
2
d
1
d
0
0c 000 00 000 0 0
000 01 010 0 0
000 10 001 0 0
000 11 001 0 0
25c 001 00 001 0 0
001 01 011 0 0
001 10 010 0 0
001 11 010 0 0
50c 010 00 010 0 0
010 01 100 0 0
010 10 011 0 0
010 11 011 0 0
75c 011 00 011 0 0
011 01 111 0 0
011 10 100 0 0
011 11 111 0 0
100c 100 00 000 1 0
100 01 000 1 0
100 10 000 1 0
100 11 000 1 0
101 X X 111 0 0
110 X X 111 0 0
erro 111 00 000 0 1
111 01 000 0 1
111 10 000 0 1
111 11 000 0 1
Tabela 3.13: Codicacao da ROM da maquina de vender chocolates.
Captulo 3. Circuitos Seq uenciais 52
3.9 Circuitos Complexos
As proximas secoes contem exemplos de circuitos seq uenciais relativamente complexos
que podem ser implementados pela composicao de componentes mais simples tais como
memoria, contadores, registradores e maquinas de estado. Os controladores dos circuitos
desta secao podem ser implementados segundo a metodologia apresentada na Secao 3.7 ou
com micro-controladores. A escolha depende dos requisitos de projeto de cada aplicacao,
tais como custo, tempo de projeto e depuracao, e velocidade mnima de operacao. Os
circuitos foram escolhidos por serem componentes importantes de dispositivos sosticados
e sao desenvolvidos visando expandir as tecnicas apresentadas nas secoes anteriores.
3.9.1 Bloco de Registradores
O bloco de registradores e um dos componentes mais importantes do circuito de dados de
um processador. Os registradores de uso geral do processador sao o nvel mais elevado da
hierarquia de armazenamento de dados de um computador
3
. Na sua versao mais simples,
um bloco de registradores contem duas portas de sada ou de leitura (A,B) e uma porta
de entrada ou de escrita (C), alem de sinais de controle.
A Figura 3.36 mostra uma parte do circuito de dados de um processador com a Unidade de
Logica e Aritmetica (ULA) e um bloco de registradores com quatro registradores de 8 bits
cada. As duas portas de sada A, B permitem a leitura do conte udo dos registradores
apontados por selA, selB respectivamente, enquanto que a porta C permite a escrita
sncrona do registrador apontado por selC quando o sinal escr esta ativo. Os sinais de
controle sao gerados pelo controlador do processador, enquanto que os valores armazenados
nos registradores sao transformados na medida em que as instrucoes do programa sao
executadas pelo processador. A operacao a ser efetuada pela ULA tambem e determinada
pelo circuito de controle.
3
Os demais nveis sao memoria cache, memoria principal (RAM) e disco.
Captulo 3. Circuitos Seq uenciais 53
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
q q q
q
q
q
q
q
q
q
q
q
q q q q q
q
q
q
q
q
q
q q q
q
............................ . . . . . . . . . . . . . . . . . . . . . . . . . .
pppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
. . . . . . . . . . . . . . . . . . .
...................
. . . . . . . . . . . . . . . . . . .
...................
. . . . . . . . . . . . . . . . . . .
...................
..
c0
c1
c6
c7
enEsc
sB1
sB0
sA1
sA0
sC1
sC0
a1
a6
a7
a0
b0
b1
b6
b7
A
B
r0
r1
r6
r7
selC
selB
selA
escr
rel
4regs8
ULA
oper
Figura 3.36: Bloco de registradores e Unidade de Logica e Aritmetica.
A Equacao 3.12 dene o comportamento do circuito da Figura 3.36. O bloco de reg-
istradores e um vetor de 4 elementos de 8 bits cada, e os sinais de selecao tem 2 bits para
permitirem a escolha de um dos quatro registradores. A operacao da ULA, representada
por , produz um octeto C a partir de dois octetos A, B.
regs-4x8 : (IB
2
IB
8
)
A, B, C : IB
8
selA, selB, selC : IB
2
escr : IB
: (
8

8
)
8
C := A B escr regs-4x8[selC] := regs-4x8[selA] regs-4x8[selB]
(3.12)
A Figura 3.37 mostra parte da implementacao do bloco de registradores. Para simplicar
o diagrama, e mostrado somente o plano correspondente ao bit 0 do bloco de registradores.
Os outros sete planos, correspondentes aos bits 1 a 7 sao identicos ao plano do bit 0. A
cada tic do relogio os valores dos registradores sao atualizados. Se o sinal escr estiver
inativo, todos os seletores nas entradas dos FFs escolhem a sada do FF e o conte udo dos
registradores nao se altera. Se o sinal escr estiver ativo, o registrador selecionado por selC
sera atualizado com o valor presente na porta C. Os sinais selA e selB selecionam os
registradores cujos conte udos serao apresentados nas portas A e B, respectivamente.
Captulo 3. Circuitos Seq uenciais 54
s
s
s
s
s
s
s
s s
s s
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppp
...................... . . . . . . . . . . . . . . . . . . . .
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppp
...................... . . . . . . . . . . . . . . . . . . . .
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppp
...................... . . . . . . . . . . . . . . . . . . . .
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppp
...................... . . . . . . . . . . . . . . . . . . . .
ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
Q D
1
0
Q D
1
0
Q D
1
0
r
Q D
1
0
0
1
2
3
0
1
2
3
0
1
3
2
c0
escr
selC0
selC1
r
r
r
sa1
sa0
a0
b0
sb0
sb1
selB1
selA0
selA1
selB0
rel r
sa0
sa1
sb0
sb1
r00
r10
r20
r30
Figura 3.37: Plano do bit 0 do bloco de registradores.
3.9.2 Mem oria RAM
Esta secao contem uma brevssima descricao de memorias tipo RAM (Ramdom Access
Memory) para permitir que estes componentes sejam usados nos exemplos de circuitos
seq uenciais que sao discutidos a seguir. Mais detalhes no Captulo 4.
a0
a2
a1
a3
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
. . . . . . . . . . . . . . . . . . .
...................
...................
. . . . . . . . . . . . . . . . . . .
wr
cs
oe
d2
d4
d3
d7
d6
d5
d1
d0
ram16x8
E
D
Figura 3.38: Diagrama de blocos de memoria RAM 16x8.
O comportamento de um circuito integrado de memoria RAM e similar ao da memoria
ROM mas existe a possibilidade de que o conte udo de cada posicao enderecavel seja
modicado. O conte udo de uma posicao pode ser examinado ou alterado. A Figura 3.38
Captulo 3. Circuitos Seq uenciais 55
mostra o diagrama de blocos de uma memoria RAM de 16 palavras, cada palavra com
8 bits de largura. Esta memoria e chamada de memoria RAM16x8, isto e com 16 palavras
de 8 bits.
Memorias RAM geralmente possuem tres sinais de controle: cs, oe e wr. O sinal cs, ou
chip select, habilita a operacao do circuito se inativo, o CI de memoria nao reage a
nenhum dos outros sinais de controle. O sinal oe, ou output enable, habilita a sada de
dados se oe esta inativo, a sada ca em tri-state e o conte udo da posicao enderecada
nao e acessvel para leitura. O sinal wr dene o tipo da referencia: wr=0 indica escrita
e a posicao enderecada e atualizada com o conte udo das linhas de dados, e wr=1 indica
leitura e a posicao enderecada e exibida nas linhas de dados quando oe=0. As relacoes
entre os sinais de controle sao denidas na Equacao 3.13.
ram16x8 : (IB
4
IB
8
)
D : IB
8
E : IB
4
cs, oe, wr : IB
cs oe wr D = ram16x8[E]
cs oe wr ram16x8[E] = D
cs inativo
(3.13)
3.9.3 Pilha
A implementacao de uma pilha de dados deve suportar tres operacoes que sao a (1) ini-
cializacao e a (2) insercao e (3) retirada, como um mnimo. Elementos sao inseridos na
pilha atraves da operacao push, e removidos da pilha atraves da operacao pop. Inicial-
izacao deixa a pilha no estado vazio. Novos elementos sao inseridos no topo da pilha, e
o elemento inserido com ultimo push e removido pelo proximo pop. Se a pilha esta vazia
um elemento nao pode ser retirado, e se a pilha esta cheia um novo elemento nao pode
ser inserido. A Figura 3.39 mostra uma pilha com capacidade para 16 elementos, e com
14 posicoes ja preenchidas.
q q q
q
q
q
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
................... . . . . . . . . . . . . . . . . .
0
1
14
15
y
13 w
x
topo
Figura 3.39: Pilha com capacidade para 16 elementos.
O topo da pilha e o endereco da ultima posicao preenchida. O apontador de pilha aponta
para a proxima posicao vazia. e imediatamente acima do topo. Na pilha da Figura 3.39,
apos a proxima insercao o topo estara na posicao 14 e somente mais uma insercao e
possvel. Se o topo da pilha esta na posicao 1, somente uma retirada e possvel porque
esta ultima esvaziara a pilha. A operacao push deve armazenar o novo valor no endereco
Captulo 3. Circuitos Seq uenciais 56
imediatamente acima do topo e entao incrementar o apontador. A operacao pop deve
decrementar o apontador e entao exibir o valor que e o novo topo da pilha.
Uma pilha como esta pode ser facilmente implementada com um circuito seq uencial. Os
valores mantidos na pilha devem ser armazenados em uma memoria que permita tanto a
leitura como a atualizacao de seu conte udo este tipo de memoria e descrito na Secao 3.9.2.
A implementacao da pilha descrita a seguir possui tres sinais de controle reset, push, pop,
tres sinais de status vazia, cheia, valido, e um barramento de dados D atraves do qual os
elementos da pilha sao inseridos e removidos. O comportamento da pilha e especicado
pelas Equacoes 3.14.
pilha16x8 : (IB
4
IB
8
)
D : IB
8
topo : IB
4
reset, push, pop, vazia, cheia : IB
reset vazia = 1, cheia = 0, topo = 0
push pilha16x8[topo] := D; topo := topo + 1
pop topo := topo 1; D pilha16x8[topo]
repouso cheia = 1 topo = 15 cheia = 0
repouso vazia = 1 topo = 0 vazia = 0
(3.14)
A Figura 3.40 mostra os componentes principais da implementacao da pilha. O conta-
dor 74191 e o apontador da pilha, e aponta sempre para a proxima posicao disponvel.
Quando reset e ativado, o valor nas entradas e carregado no contador e este passa a en-
derecar a primeira posicao da memoria, esvaziando assim a pilha.
Numa insercao, o valor a ser inserido na pilha e gravado na memoria e entao o contador e
incrementado, para que aponte para a proxima posicao vazia. Numa remocao, o contador
deve ser decrementado para que aponte para a ultima posicao que foi preenchida, e entao
o conte udo daquele endereco e exibido no barramento de dados. Os sinais cheia e vazia
informam ao circuito externo sobre o estado da pilha. O sinal valido indica que o valor no
barramento e valido e pode ser lido.
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
s
s s
s
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
s
s
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
s
s
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
s
...................... . . . . . . . . . . . . . . . . . . . .
...................
. . . . . . . . . . . . . . . . . . .
ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
p pp p pp p pp p pp pp pp pp pp pp pp p pp p pp p pp p pp pp pp pp pp pp p pp p pp p pp p pp p
ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
p pp p pp p pp p pp pp pp pp pp pp pp p pp p pp p pp p pp pp pp pp pp pp p pp p pp p pp p pp p
Qd
Qc
Qb
D
C
B
A Qa
191
en
D/u
rck
ld
wr
cs
oe
d2
d4
d3
d7
d6
d5
d1
d0
ram16x8
D
a0
a2
a1
a3
0
relog
0
0
0
0
reset
decr
habil
Mm
escr
leit
vazia
cheia
valido
Figura 3.40: Circuito de dados da pilha.
Captulo 3. Circuitos Seq uenciais 57
A Figura 3.41 contem a maquina de estados (tipo Moore) que determina o comportamento
da pilha conforme descrito acima. Os sinais ativos em cada estado sao mostrados `a direita.
Normalmente o barramento esta em tri-state (leit=1) e o contador esta desabilitado. Uma
operacao de remocao (pop) faz com que o contador seja decrementado no estado rem
(habil=0,decr=1) e entao o valor no topo da pilha e exibido no estado val (leit=0). Uma
operacao de insercao (push) causa uma escrita na memoria (escr=0) e entao o incremento
no contador (habil=0, decr=0). Note que a escrita na posicao vazia ocorre ao longo de
todo o ciclo de relogio do estado ins e que o contador somente e incrementado na borda
do relogio ao nal do ciclo/estado.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...................................................................................................................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...................................................................................................................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...................................................................................................................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...................................................................................................................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . ...................
....................................................................................................................................................
................... . . . . . . . . . . . . . . . . .
....................................
. .. .. .. . .. . .. . .. . .. . .. .. .. .. .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. .. .. .. .. .. . .. .. . .. .. . .. .. .. .. .. .. .. .. . .. .. . .. . .. . .. . .. . .. . .............................................................................
................... . . . . . . . . . . . . . . . . .
..................................................................................................................................................................................................................................
.....
. . . .
. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . . .. . . . . .. . . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . .. . . .. . . .. . . .. . . .. . . . .. . . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . . . . . .. . . .. . .. . .. . .. . .. . .. . . .. . . .. . . .. . . .. . . .. . . .. . . . .. . . . .. . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . .. . . .. . . . . . .
. . . . . . . . . . . . . . . . . ...................
.......................................................................
....................................
. .. .. . .. . . .. . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . .. . . .. . .. . .. . .. . .. . .. . .. . .. . .. . . . . .. . .. . .. . .. . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .
................................................................................................................................................................................................................................................................................................................................................................................................................................................. ................... . . . . . . . . . . . . . . . . .
pop, push
push pop
val
C
B D
B: habil=0, decr=1
A
D: escr=habil=decr=0
C: leit=0, habil=1
A: leit=escr=habil=1
rem ins
nada
reset
Figura 3.41: Maquina de estados da pilha.
A interface da pilha com o circuito da qual ela e um componente se da atraves dos sinais de
controle push,pop e dos sinais de status cheia,vazia,valido.

E responsabilidade do projetista
garantir que o barramento contem dados validos durante uma insercao e que o valor do topo
da pilha sera copiado enquanto o sinal valido estiver ativo. Tambem e responsabilidade
do projetista garantir que o perodo do relogio seja sucientemente longo para a correta
operacao do contador e da memoria.
Exerccios
Ex. 3.27 Desenhe os diagramas de tempo com os sinais de controle do contador e da
memoria, e certique-se de que os sinais gerados pela maquina de estados da Figura 3.41
produzem os efeitos esperados.
Ex. 3.28

E possvel usar a sada Max/min do 74191 para produzir os sinais cheia e vazia?
Mostre como faze-lo.
Ex. 3.29

E possvel simplicar a maquina de estados da pilha? Pista: projete uma
Maquina de Mealy.
Captulo 3. Circuitos Seq uenciais 58
Ex. 3.30 Projete um circuito combinacional que efetua a comparacao de magnitude de
dois n umeros positivos de 8 bits. Este circuito tem duas entradas P e Q, de 8 bits cada,
e tres sadas que sao menor, igual e maior.
P, Q : IB
8
menor, igual, maior : IB
menor = num(P) < num(Q)
igual = num(P) = num(Q)
maior = num(P) > num(Q)
(3.15)
Ex. 3.31 Projete um circuito seq uencial sncrono que aceita uma seq uencia de n umeros E
positivos de 8 bits, e a cada novo valor recebido as duas sadas, chamadas de MAX e min,
mostram os valores maximos e mnimos ja observados na seq uencia de entrada.
E : IN IB
8
MAX, min : IB
8
t MAX E(t)
t min E(t)
(3.16)
Ex. 3.32 Projete um circuito que executa a divisao inteira de dois n umeros inteiros
positivos de 8 bits. O circuito deve implementar a divisao por subtracoes repetidas.
Sua resposta deve conter o circuito do divisor e um diagrama de estados que descreva
o funcionamento do divisor.
Ex. 3.33 Um circuito captura dados emitidos por um sensor, os armazena e mantem em
um circuito de memoria com 1024 palavras de 16 bits. Os dados sao gravados e mantidos
em ordem crescente. Projete um circuito eciente que, dado um n umero qualquer, retorna
a posicao na memoria onde este valor se encontra. Seu projeto deve conter o circuito de
dados e uma descricao detalhada de como ele funciona uma maquina de estados pode
ajudar na descricao.
3.9.4 Fila Circular
Uma la circular pode ser implementada com um circuito seq uencial similar ao da pilha
vista na Secao 3.9.3. Ao contrario da pilha, insercoes ocorrem no m da la enquanto
que remocoes ocorrem no incio da la, tambem chamado de cabeca da la. A la de que
trata esta secao e chamada de circular porque os apontadores de incio e de m da la sao
implementados com contadores modulo N. Quando a contagem ultrapassa o modulo, a
posicao apontada pelo contador fecha o crculo, como indica a Figura 3.42.
Estas las sao geralmente empregadas para amortecer diferencas entre as velocidades de
dois componentes, um produtor de dados e um consumidor de dados. O tamanho da la
deve ser tal que o produtor possa produzir dados a uma taxa ligeiramente diferente daquela
em que eles sao consumidos. A la deve suportar tres operacoes, que sao (1) inicializacao,
(2) insercao e (3) retirada. Elementos sao inseridos no nal da la com a operacao insere,
e removidos da cabeca da la atraves da operacao remove. A inicializacao deixa a la
vazia. Se a la esta vazia a retirada de um elemento nao e possvel, e se a la esta cheia
um novo elemento nao pode ser inserido.
Captulo 3. Circuitos Seq uenciais 59
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ................................................................................................................................................................................................................................................................................................................. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....................................................................................................................................................................................................................................................................................................................................................................................................................
..............................
............................ ...............................
...............................
3 4
5
6
7
2
1
0
x
y z
w ini m
Figura 3.42: Fila circular com capacidade para 8 elementos.
Para implementar uma la sao necessarios memoria e dois contadores, um que aponta
para o endereco do incio da la, e outro que aponta para o nal da la. A diferenca
entre os dois enderecos e o tamanho da la o calculo do endereco pode ser problematico
porque os dois contadores tem modulo nito. Assim, um terceiro contador pode ser usado
para manter o n umero de elementos na la. A contagem e incrementada na insercao e
decrementada na remocao. O comportamento da la e especicado pelas Equacoes 3.17.
fila16x8 : (IB
4
IB
8
)
D : IB
8
ini, fim, tam : IB
4
reset, ins, rem, vazia, cheia : IB
reset vazia = 1, cheia = 0, tam = 0
ins fila[fim] := D; fim := fim+ 1
rem D fila[ini]; ini := ini + 1
repouso cheia = 1 tam = 15 cheia = 0
repouso vazia = 1 tam = 0 vazia = 0
(3.17)
A Figura 3.43 mostra os componentes principais de uma possvel implementacao da la
denida na Equacao 3.17, para N = 15. A la possui tres sinais de controle reset, ins,
e rem, dois sinais de status vazia e cheia e um barramento de dados D atraves do qual novos
valores sao inseridos e removidos. O sinal valido indica que o valor no barramento e valido e
pode ser capturado pelo circuito externo. O 74191 mantem o n umero de elementos na la.
Os dois 74163 apontam um para o incio e o outro para o m da la, e o seletor de enderecos
determina qual dos dois apontadores e usado para indexar a memoria. Quando reset e
ativado, os tres contadores sao inicializados em zero, esvaziando assim a la.
Numa insercao, o valor a ser inserido e gravado no endereco apontado pelo contador de m
da la, e este e incrementado para que aponte para uma posicao vazia. Numa remocao,
o conte udo do endereco apontado pelo contador de incio de la e exibido no barramento,
e entao este contador e incrementado para que aponte para nova cabeca da la. Os
sinais cheia e vazia informam ao circuito externo sobre o estado da la.
Da mesma forma que no projeto da pilha, e responsabilidade do usuario deste circuito
garantir que o barramento contem dados validos durante uma insercao e que o valor da
cabeca da la sera copiado enquanto o sinal valido estiver ativo. Tambem e responsabili-
dade do usuario garantir que o perodo do relogio seja tao longo quanto o necessario para
a correta operacao dos contadores e da memoria.
Captulo 3. Circuitos Seq uenciais 60
ppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
s
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
s
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
s
s
s
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
s
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
............................
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
...................... . . . . . . . . . . . . . . . . . . . .
...................... . . . . . . . . . . . . . . . . . . . .
...................... . . . . . . . . . . . . . . . . . . . .
wr
cs
oe
d2
d4
d3
d7
d6
d5
d1
a0
a2
a1
sram16x8
d0
a3
a0
a3
a2
a1
b3
b2
b1
b0
0
habM
escM
D
reset
reset
1
1
incFim
incIni
ini3
ini2
ini1
ini0
m3
m2
m1
m0
rco
t
Qd
Qc
Qb
D
C
B
A
p
Qa
ld
clr
163
rco
t
Qd
Qc
Qb
D
C
B
A
p
Qa
ld
clr
163
vazia
cheia
selEnd
relog
relog
relog
incDec
habTam
reset
Qd
Qc
Qb
D
C
B
A Qa
191
en
D/u
rck
M/m
ld
0
0
0
0
0
0
0
0
0
0
0
0
tam3
tam2
tam1
tam0
Figura 3.43: Circuito de dados da la.
Exerccios
Ex. 3.34 Desenhe diagramas de tempo com os sinais de controle dos tres contadores e
da memoria.
Ex. 3.35 Com base nos diagramas de tempo do Exerccio 3.34, projete a maquina de
estados que controla as operacoes da la.
Ex. 3.36 Projete uma la que permita insercoes e retiradas simultaneas. Pista: a escrita
em memoria pode se dar em duas fases, na primeira o novo valor e gravado num registrador,
e na segunda fase o conte udo do registrador e gravado na memoria.
Captulo 4
Memoria
4.1 Tipos de Mem oria
As duas classes principais de memoria implementadas em estruturas de estado solido (cir-
cuitos integrados) sao ROM ou Read-Only Memory e RAM ou Random Access Memory
1
.
Em operacao normal, memorias da classe ROM permitem somente acessos para a leitura
de seu conte udo. A alteracao de conte udo somente pode ocorrer em situacoes especiais
como na fabricacao ou em ciclos de atualizacao. A memoria ROM e chamada de memoria
nao-volatil porque seu conte udo permanece inalterado mesmo se o circuito estiver sem
alimentacao. As memorias da classe RAM podem ser acessadas para leitura e atualizacao
do conte udo com igual facilidade e sao chamadas de memoria volatil porque seu conte udo
se perde quando o circuito ca sem alimentacao. Para cada classe existem in umeras tec-
nologias de implementacao.
Dentre as tecnologias de memoria ROM, as mais importantes (em nov02) sao:
ROM o conte udo de uma ROM somente pode ser gravado quando da fabricacao do
circuito integrado;
PROM o conte udo de uma Programmable ROM pode ser gravado uma unica vez com
um programador de PROMs;
EPROM memorias tipo Eraseable Programmable ROM podem ser apagadas pela ex-
posicao `a luz ultra-violeta e entao re-gravadas com um programador de EPROMs;
EEPROM memorias do tipo Electrically Eraseable Programmable ROM podem ser apa-
gadas eletricamente e entao re-gravadas. Dependendo da tecnologia, a re-gravacao
pode ser efetuada sem que a EEPROM seja removida da placa ou soquete; e
FLASH memorias ash tambem podem ser apagadas e re-gravadas eletricamente mas es-
tas operacoes sao muito mais rapidas do que em memorias tipo EEPROM. Operacoes
de escrita sao mais demoradas que leituras.
Dentre as tecnologias de memoria RAM, as mais importantes sao [CJDM99]:
1
A traducao correta para o Portugues e memoria de escrita e leitura e nao o ridculo memoria de
acesso randomico.
61
Captulo 4. Memoria 62
SRAM memorias estaticas (Static RAM) sao compostas por celulas similares `aquelas da
Figura 3.1;
DRAM memorias dinamicas (Dynamic RAM) sao implementadas com celulas que es-
quecem seus conte udos com o passar do tempo. O conte udo das celulas deve ser
refrescado periodicamente para que nao se perca, e os ciclos de refresh devem ocorrer
de 10 a 100 vezes por segundo;
Page Mode RAM memorias do tipo Fast Page Mode (FPM) e Extended Data Out
(EDO) tiram proveito da organizacao das matrizes de memoria para obter melhor
desempenho que memorias DRAM. Detalhes na Secao 4.3.6;
SDRAM memorias DRAM sncronas (Synchronous DRAM) sao versoes melhoradas de
memorias FPM que usam um sinal de relogio para obter maior vazao de dados; e
Ram{Bus,Link} memorias com tecnologia RamBus e RamLink empregam barramentos
de alta velocidade para transferir dados entre memoria e processador, obedecendo a
protocolos relativamente sosticados.
4.2 Interface ProcessadorMem oria
A interface de um processador com sua memoria consiste de um conjunto de linhas de
dados, um conjunto de linhas de endereco e varios sinais de controle. Dependendo do
processador, as linhas de dados tem largura 8, 16, 32, 64 ou 128 bits, enquanto que as
linhas de endereco podem ter largura de 16 a 40 bits. As linhas de dados transportam
dados do processador para a memoria nas escritas, e da memoria para o processador nas
leituras e na busca de instrucoes. As linhas de controle garantem o seq uenciamento dos
eventos na interface entre processador e memoria ou perifericos. A Figura 4.1 mostra o
diagrama de blocos da interface de memoria, no qual a memoria e o sistema como visto
pelo processador. Exceto nas linhas de dados que sao bi-direcionais, os sinais de controle
e os enderecos sao gerados pelo processador.
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
eVal
D00-Dnn
E00-Enn
dVal
wr wr
E00-Enn
eVal
D00-Dnn
dVal
processador memoria
Figura 4.1: Interface entre processador e memoria.
A interface entre processador e memoria consiste de linhas de endereco, linhas de dados e
sinais de controle. Os sinais de controle determinam o tipo de movimentacao de dados entre
o processador e a memoria. Por exemplo, o sinal wr (write) e controlado pelo processador e
determina que a transferencia e no sentido do processador para a memoria, ou seja, se wr=0
Captulo 4. Memoria 63
entao o processador esta efetuando uma referencia de escrita. O sinal eVal (endereco valido)
indica que os sinais nas linhas de endereco estao estaveis e contem um endereco valido.
O sinal dVal (dados validos) indica que as linhas de dados contem um valor estavel e que
este pode ser armazenado em memoria ou copiado pelo processador.
4.2.1 Intertravamento dos Sinais na Interface
O comportamento dos sinais da interface entre processador e memoria e precisamente es-
pecicado pelos fabricantes destes componentes para que os projetistas consigam interligar
os dispositivos e construir sistemas de comportamento bem determinado e conavel. Uma
interface entre processador e memoria e denida no que segue.
Os sinais eVal e wr sao controlados pelo processador. Normalmente, o sinal dVal e contro-
lado pelo processador e indica que os dados estao disponveis e podem ser copiados pelo
processador (leitura) ou memoria (escrita). Dependendo da implementacao, a memoria
tambem pode indicar quando os dados estao disponveis. Neste caso, a linha dVal e con-
trolada pelo processador na escrita, e e controlada pela memoria na leitura.
D00-Dnn linhas de dados, bi-direcionais;
dVal dados validos, indica que o valor nas linhas de dados e valido e pode ser
usado pela memoria. Ativo em zero;
E00-Enn linhas de endereco, uni-direcionais;
eVal endereco valido, indica que o valor nas linhas de endereco e valido e
pode ser usado pela memoria. Ativo em zero;
wr write, quando ativo signica que dados em D00-Dnn serao gravados no
endereco E00-Enn. Ativo em zero.
Um ciclo de barramento consiste de uma fase de enderecamento, quando as linhas de
endereco mostram o n umero da posicao de memoria requisitada, e de uma fase de trans-
ferencia de dados, quando as linhas de dados contem os dados a serem copiados da memoria
para o processador (leitura) ou do processador para a memoria (escrita).
Um acesso `a memoria pelo processador se da em um ciclo de memoria. Normalmente os
ciclos de memoria sao de quatro tipos, (1) busca, (2) leitura, (3) escrita e (4) especiais.
Os ciclos especiais nao sao ciclos de acesso `a memoria mas ciclos de barramento para o
atendimento a interrupcoes e inicializacao do processador, por exemplo. Estes ultimos sao
discutidos na Secao 5.6.
Nos diagramas de tempo que seguem, o relacionamento temporal entre os sinais e aproxi-
mado por um ordenamento parcial dos eventos. O ordenamento total dos eventos depende
dos detalhes dos dispositivos reais e da implementacao.
Os CIs de memoria simulados no Diglog tem tempo de acesso igual ao tempo de propagacao Diglog
de uma porta logica, que e um ciclo de simulacao. CIs reais tem tempos de acesso `a
memoria da ordem de 100 a 1000 vezes o tempo de propagacao de uma porta logica.
Assim, tanto as implementacoes como simulacoes realistas de sistemas de memoria devem
levar em conta o tempo de acesso de memorias reais e nao o das simuladas.
Captulo 4. Memoria 64
4.2.2 Ciclo de Leitura
O diagrama na Figura 4.2 mostra um ciclo de leitura, provocado pela execucao de uma
instrucao como ld $r,desloc($in). O endereco efetivo e $in+desloc e a posicao de
memoria indexada e copiada para o registrador $r. Num ciclo de leitura, o sinal wr per-
manece inativo (wr=1).
................................... ...................................
................................... ...................................
................................... ...................................
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . . . . . ................... ................... . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. ...................................... ...................................
...................................... ...................................
................................... ...................................
tempo de acesso `a memoria
$in+desloc E00-Emm
eVal
mem[$in+desloc] D00-Dnn
dVal
Figura 4.2: Diagrama de tempo de ciclo de leitura.
O sinal eVal e ativado quando as linhas de endereco contem um endereco valido. A borda
de subida de dVal indica o momento em que os sinais nas linhas de dados podem ser
capturados e armazenados pelo processador. O atraso de dVal com relacao a eVal depende
do tipo de memoria empregado e e um parametro de projeto do barramento. Geralmente,
o atraso depende do tempo de acesso `a memoria e e um n umero inteiro de ciclos do relogio
do processador.
4.2.3 Ciclo de Escrita
O diagrama na Figura 4.3 mostra um ciclo de escrita correspondente `a execucao da in-
strucao st $r,desloc($in). Da mesma forma que no ciclo de leitura, o endereco efetivo
e $in+desloc e a posicao de memoria indexada recebe o conte udo do registrador $r. Num
ciclo de escrita o sinal wr ca ativo enquanto eVal for ativo, para sinalizar `a memoria, o
mais cedo possvel, da chegada da palavra a ser gravada em memoria.
................................... ...................................
................................... ...................................
................................... ...................................
. . . . . . . . . . . . . . . . . ................... ................... . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
................................... ...................................
................................... ...................................
................................... ...................................
................................. .................................
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
$in+desloc E00-Emm
eVal
$r D00-Dnn
dVal
wr
tempo de acesso `a memoria
Figura 4.3: Diagrama de tempo de ciclo de escrita.
Captulo 4. Memoria 65
4.3 Circuitos Integrados de Mem oria
Como qualquer trabalho em engenharia, o projeto de um circuito integrado de memoria e
condicionado por uma serie de fatores, nao necessariamente associados ao projeto logico
em si. As restricoes ao projeto e implementacao de um circuito integrado de memoria sao
de tres ordens:
1. o custo de um CI e proporcional `a capacidade (n umero de bits) e ao n umero de seus
terminais ou pinos;
2. tempo de acesso ao conte udo; e
3. facilidade de implementacao.
Um CI de memoria e composto por um certo n umero de celulas de memoria, de tal forma
que cada celula armazena um bit. Alem das celulas de memoria, varios seletores sao usados
para escolher as celulas referenciadas num dado instante.
O custo por bit de um CI e minimizado se ele contiver um grande n umero de celulas,
ou seja, se sua capacidade for grande. Isso implica em agregar o maior n umero possvel
de bits num mesmo CI. Geralmente, os bits de memoria sao organizados numa matriz
quadrada com n umero de elementos que sao potencias de quatro (2
n
2
n
) para facilitar
o enderecamento dos bits na matriz.
CIs de memoria sao denominados em funcao das dimensoes da matriz de dados: pelo
n umero de palavras (a altura do CI), e pelo n umero de bits em cada palavra (a largura
do CI). No exemplo que segue, o CI possui 1Mega palavras (2
20
palavras) de 1 bit cada
palavra, sendo portanto um CI de 1Mx1 (leia-se um mega por um). Supondo a mesma
capacidade de 1Mbits, outras dimensoes possveis seriam 256Kx4 (4 bits de largura) ou
128Kx8 (8 bits de largura). Estas tres organizacoes sao na verdade vetores com largura
um bit, quatro bits e oito bits e altura de 1M, 256K e 128K, respectivamente. No exemplo,
a matriz de armazenamento consiste de 1024 linhas com 1024 bits em cada linha. Note
que a visao externa de um CI e um vetor de N palavras de M bits, e esta visao externa e
independente de como a matriz de armazenamento interna e implementada. A Figura 4.4 Diglog
mostra um circuito integrado de memoria SRAM com 8K bytes de capacidade, que e o
circuito basico de memoria disponvel no Diglog.
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
q q q
. . . . . . . . . . . . . . . . . . .
...................
. . . . . . . . . . . . . . . . . . .
...................
...................
. . . . . . . . . . . . . . . . . . .
wr
cs
oe
d2
d4
d3
d7
d6
d5
d1
a12
a11
...
a0
a2
a1
sram8K
d0
dados
controle
enderecos
Figura 4.4: Memoria RAM 8Kx8.
Captulo 4. Memoria 66
4.3.1 Um Bit
A Figura 4.5 mostra um diagrama de uma celula capaz de armazenar um bit de memoria.
A celula possui um sinal de entrada in, um de sada tri-state out, um sinal de escrita wrb
e um sinal de habilitacao da sada enr. Dentro da celula ha um ip-op, cuja sada e
invisvel mas cujo estado e o valor do bit de memoria, armazenado na variavel FF. O
comportamento da celula e especicado pela Equacao 4.1.
wrb en FF := in
en out = FF
(4.1)
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
en
wrb
out
*
in wrb
en
in
out
Figura 4.5: Diagrama de uma celula com um bit de memoria.
4.3.2 Varios Bits
A Figura 4.6 mostra um circuito incompleto de memoria com oito bits, organizado como
uma matriz de duas linhas por quatro colunas, com interface externa tipo 8x1 (oito-
por-um). A gura mostra os circuitos de enderecamento da interface externa ao CI, que
consiste das tres linhas de enderecamento e2,e1,e0, da entrada in e da sada out. O sinal wr
habilita a escrita.
Os sinais e0,e1, ligados `as entradas selc0,selc1 do seletor de coluna, escolhem uma das
quatro colunas. O sinal e2, ligado ao decodicador de linha, atraves dos sinais enr0,enr1
seleciona uma das duas linhas. A combinacao dos sinais e2, e e0,e1 com wr, produz
os sinais wrb0,wrb1,wrb2,wrb3 que permitem a selecao de uma unica celula quando da es-
crita. Note que os sinais das sadas das duas celulas de cada coluna compartilham os
os o00,o01,o02,o03, e que isso e possvel porque a sada de cada celula e tri-state e e
habilitada pela entrada en. Esta combinacao de sadas tri-state equivale a um seletor que
escolhe uma dentre as linhas de sada.
4.3.3 Muitos Bits
O diagrama na Figura 4.7 (pag. 68) mostra o smbolo de um CI de memoria tipo 1Mx1.
Os sinais de controle permitem a ligacao de varios destes CIs na construcao de sistemas
de memoria com grande capacidade, como discutido mais adiante.
O sinal cs e o chip select, e quando inativo o CI nao responde a nenhum dos demais sinais
de controle, cando efetivamente congelado. O sinal oe e o output enable e quando ativo
conecta a sada da celula de memoria selecionada `a sada do CI no sinal d, que e tri-state.
Quando o sinal wr esta ativo, o bit no sinal d e armazenado na celula selecionada.
Captulo 4. Memoria 67
r
r
r
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
r r
r
r
r r
r r
r r
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
r r
r
r
r r r r
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
o00
o00
o01
o01
o02
o02
o03
o03
e2
enr0
enr1
en
wrb
*
out
in
en
wrb
*
out
in
en
wrb
*
out
in
en
wrb
*
out
in
en
wrb
*
out
in
en
wrb
*
out
in
en
wrb
*
out
in
en
wrb
*
out
in
selc0
selc1
in
wrb0 wrb1 wrb2 wrb3
selw1 e1
e0 selw0
wr
out
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
e0
e1
hab
Figura 4.6: Diagrama de blocos de memoria 8x1.
O sinal ras e o row address strobe e o cas e o column address strobe. Os row e column sao
relacionados `as linhas e colunas da matriz de armazenamento, que neste caso e organizada
como uma matriz de 1024x1024 celulas. Note que o CI somente contem 10 linhas de en-
dereco (a0-a9) ao inves das 20 linhas necessarias para enderecar 2
20
bits. O enderecamento
de cada celula ocorre em duas fases, primeiro uma linha e selecionada quando ras esta ativo,
e entao uma coluna e selecionada enquanto cas esta ativo. Dessa forma, o n umero de pinos
do CI e minimizado `a custa de tempo de acesso mais longo por causa da multiplexacao
das linhas de endereco.
Captulo 4. Memoria 68
p p p p p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppppppp
. . . . . . . . . . . . . . . . . . . . . . . . . . .
10
cas
ras
oe
cs
dram1Mx1
*
d
a0-a9
wr
Figura 4.7: Smbolo do CI de memoria dinamica de 1Mx1.
A seq uencia de enderecamento consiste de duas fases e e mostrada na Figura 4.8. O CI
e selecionado enquanto cs esta ativo. Quando ras e pulsado, os 10 bits mais signicativos
do endereco da celula devem ser apresentados nas linhas a0-a9. Estes sao os 10 bits que
selecionam uma das linhas da matriz, mostrados como A10-A19 na gura. Na segunda fase,
cas e ativo enquanto que as linhas de endereco devem conter os 10 bits menos signicativos
do endereco, correspondentes `a coluna da celula desejada, mostrados como A00-A09 no
diagrama. A linha pontilhada indica o instante em que a parte mais signicativa do
endereco (A10-A19) e armazenada internamente ao CI.
................................... ...................................
................................... ...................................
...................................... ...................................
...................................... ...................................... ................................... ...................................... ......................................... ...................................
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
X mnA10-A19 mnA00-A09
cs
ras
cas
a0-a9 X
Figura 4.8: Enderecamento em duas fases.
Uma possvel implementacao de um subsistema de memoria baseado em memoria RAM
dinamica (DRAM) e mostrado no diagrama na Figura 4.9. O circuito controlador de
memoria adapta os sinais de controle necessarios aos CIs de memoria, que sao genericos
e padronizados, aos sinais de controle gerados pelos diferentes processadores, que sao
particulares a cada tipo de processador.
O diagrama na Figura 4.10 mostra a mesma seq uencia de enderecamento do diagrama da
Figura 4.8, com a adicao dos sinais de controle da interface de memoria do processador. A
conversao do seq uenciamento de sinais entre as duas interfaces, processador-controlador e
controlador-DRAM e efetuada pelo controlador de memoria em funcao das caractersticas
dos dispositivos a serem interligados. O sinal cs e derivado do sinal eVal e do valor das
linhas de endereco, isto e, cs e a imagem da funcao que mapeia faixas de enderecos em
(sub-)conjuntos de CIs de memoria, como mostra a Equacao 4.2.
cs : IB
eVal : IB
ender : IB
n
f : (
n
)
cs = f(eVal , ender)
(4.2)
Captulo 4. Memoria 69
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
wr ras
wr
processador
controlador
de DRAM
DRAM
addr
ender
dados
dVal
cas
oe
eVal
Figura 4.9: Interface entre processador e memoria DRAM.
................................... ...................................
................................... ...................................
...................................... ...................................
...................................... ...................................... ................................... ...................................... ...................................... ...................................
X A00-A09 X
E00-E19
eVal
ender
wr
cs
ras
cas
addr A10-A19
.
.
. .
.
.
. .
.
.
.
. .
.
.
. .
.
.
.
. .
.
.
. .
.
.
.
. .
.
.
. .
.
................................. ...................................
................................... ......................................
................................... ......................................
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
....................................
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
..
.
.
.
.
.
.
.
.
.
....................................
interface processador-controlador
interface controlador-DRAM
Figura 4.10: Enderecamento nas interfaces de memoria.
A Figura 4.11 mostra o circuito completo do CI de memoria. A matriz de armazenamento
contem 1024 linhas por 1024 colunas.
`
A esquerda da matriz esta o seletor de linhas que e
um seletor de 101024. Os 10 bits mais signicativos do endereco da celula correspondem
ao n umero da linha onde a celula se encontra e sao armazenados nos ip-ops na borda
ascendente do sinal ras. Quando cas esta ativo, os bits menos signicativos do endereco
sao usados para selecionar uma das 1024 colunas atraves do seletor 101024 abaixo da
matriz. Quando os sinais cs e oe estao ativos e nao e uma escrita (wr inativo), o buer
tri-state da sada e habilitado e o conte udo da celula selecionada e apresentado no o d.
Captulo 4. Memoria 70
................................................... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
................................................... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
t
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp . . . . . . . . . . . . . . . . . . . . .....................
r
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
......................................................
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .
....................................
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p pp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
. . . . . . . . . . . . . . . . . ................... ................... . . . . . . . . . . . . . . . . .
cas
cs
wr
a0-a9
ras
cas
en
A00-A09
A00-A09
s0-s10
en
s0-s10
10 ip-ops
out1023
1024
A19
A10-
enr0
enr1023
d
wrb1023
wrb0
oe
cs
*
wr
d
1024
out0
q
q
q
q
q q q
q q
Figura 4.11: Diagrama de blocos completo de um CI de memoria.
A Figura 4.12 mostra o diagrama de tempo de um ciclo de leitura. O enderecamento
ocorre como discutido acima, com a seq uencia de ras, cas e cs. O sinal oe somente e ativado
apos o enderecamento ter se completado. O sinal em d passa de tri-state para zero ou um,
dependendo do conte udo da celula selecionada.
O circuito de escrita e mostrado acima da matriz de armazenamento na Figura 4.11. A
atualizacao da celula e efetuada quando os sinais cs, cas, e wr estao todos ativos. Note
que ambas a entrada (escritas) e a sada (leituras) do CI estao ligadas ao mesmo o d. O
sinal wr e usado para evitar curto-circuitos entre os circuitos internos de leitura e gravacao
das celulas. A Figura 4.13 mostra um diagrama de tempo de um ciclo de escrita.
Captulo 4. Memoria 71
................................... ...................................
................................... ...................................
................................. ...................................
...................................... ...................................... ...................................... ...................................... ...................................... ......................................
................................... ...................................
............................ ........................
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
........................ ...................
. . . . . . . . . . . . . . . . . ................... ................... . . . . . . . . . . . . . . . . .
X A10-A19 A00-A09 X
d
oe
a0-a9
cas
ras
cs
tempo de acesso
Figura 4.12: Ciclo de leitura.
................................... ......................................
................................... ...................................
................................. ...................................
...................................... ...................................... ...................................... ...................................... ...................................... ......................................
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
........................ ........................ ................... ...................
................................... ...................................
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . . . . . ................... ................... . . . . . . . . . . . . . . . . .
X X
tempo de acesso
cs
ras
cas
a0-a9
oe
wr
d
A00-A09 A10-A19
Figura 4.13: Ciclo de escrita.
4.3.4 Mem oria com Largura Nao-unitaria
Os exemplos discutidos ate agora mostram CIs de memoria com largura unitaria. Isso
pode nao ser pratico para sistemas com microprocessadores com palavras de 32 ou 64 bits
de largura (por que?). CIs disponveis comercialmente tem largura de 4, 8 ou 16 bits. O
CI mostrado na Figura 4.11 pode ser facilmente convertido para larguras maiores do que 1
ligando-se os seletores de leitura e de escrita de forma diferente do mostrado acima. Por
exemplo, se ao inves de um unico seletor de 10241 fossem usados quatro seletores de
2561, o CI teria largura quatro. O mesmo raciocnio vale para largura oito ou maior.
4.3.5 Milh oes de Bits
A Figura 4.14 contem um diagrama incompleto de um sistema de memoria com 16Mbits,
organizado como um vetor de quatro bits de largura com 2
22
elementos. As duas linhas de
Captulo 4. Memoria 72
endereco mais signicativas, A20,A21 selecionam um dos quatro CIs de 1Mx4. As demais
linhas de endereco sao apresentadas aos CIs em funcao do estado dos sinais ras e cas.
Embora nao seja mostrado na gura, os sinais de controle ras, cas, wr e oe sao ligados em
todos os quatro CIs. O mesmo acontece com as linhas de endereco e de dados.
t
r
t
t
t
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp t
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
r
r
r
r
r
r p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp r
r
t
t
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.............................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.............................................................
*
*
A00-A09
A10-A19
A20-A21
ras
cas
wr
eVal
a0-a9
ras,cas
wr
cs d0-3
*
a0-a9
wr
cs d0-3
*
a0-a9
wr
cs d0-3
*
a0-a9
ras,cas
wr
cs d0-3
*
d0-d3
ras,cas
a0-a9
en
ras,cas
cs0
cs3
cs2
cs1
buer
buer
Figura 4.14: Diagrama de blocos de um sistema memoria com largura de 4 bits.
Um componente importante do sistema de memoria que foi mencionado no incio desta
secao e o controlador de memoria, que e o circuito responsavel por gerar os sinais de
controle necessarios para o acesso `a memoria. O controlador de memoria deve gerar a
seq uencia apropriada de cs, ras, cas e wr bem como aplicar as linhas de endereco apropriadas
(A10-A19 com ras e A00-A09 com cas). Geralmente, os sinais de controle gerados pelo
processador obedecem a um protocolo diferente daquele dos CIs de memoria e o controlador
de memoria compatibiliza os protocolos de processador e subsistema de memoria.
Captulo 4. Memoria 73
Exerccios
Ex. 4.1 A medida em que cresce a densidade dos CIs de memoria, maior e a probabilidade
de ocorrerem erros internos ao CI de memoria, na inversao dos bits armazenados. Usando
paridade, projete um circuito que seja capaz de detectar a ocorrencia de um bit em erro
em uma memoria. O CI de memoria tem largura de 9 bits, mas o processador acessa a
memoria em palavras de 8 bits. Note que o intervalo entre a escrita em um certo endereco
da memoria, e a leitura do conte udo deste mesmo endereco e arbitrariamente longo.
4.3.6 Mem oria Rapida
Existe a possibilidade de reduzir o tempo de acesso `a memoria ao se aproveitar a propria
organizacao interna da matriz de armazenamento. No nosso exemplo, a matriz contem
1024 bits em cada linha. Se, a cada vez que uma linha for enderecada, todos os 1024 bits
forem copiados para um registrador, enquanto as referencias `a memoria permanecerem
na mesma linha, variando apenas de coluna, a duracao dos ciclos de memoria podem
ser reduzida porque a fase de enderecamento de linha da matriz (pulso em ras) se torna
desnecessaria. A Figura 4.15 mostra a organizacao de um CI do tipo fast page mode, no
qual um registrador de 1024 bits e usado para capturar e manter o conte udo de toda uma
linha da matriz de armazenamento. Quando um acesso referencia uma linha pela primeira
vez, ao concluir o acesso com a borda ascendente de cas, o conte udo da linha inteira e
copiado para o registrador. Acessos subseq uentes `a mesma linha necessitam somente da
selecao da coluna.
O diagrama de tempos na Figura 4.16 mostra a reducao no tempo de acesso T
a
que se
obtem ao referenciar varios bits na mesma linha. Com pequenas variacoes, os CIs de
memoria empregam tecnicas semelhantes a fast page mode para obter reducoes signica-
tivas no tempo de acesso, como a memoria tipo EDO (extended data out). O tempo de
acesso especicado para memoria para PCs (em torno de 60ns) e para acessos com ciclo
parcial como os segundo e terceiro ciclos do diagrama de tempo. Um ciclo completo como
o primeiro no diagrama dura em torno de 100ns. A freq uencia de acessos na mesma linha
e alta e na media o tempo de acesso se aproxima dos 60ns.
Captulo 4. Memoria 74
................................................... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
................................................... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
t
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp r
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp . . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
r
......................................................
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .
....................................
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p pp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
. . . . . . . . . . . . . . . . . ................... ................... . . . . . . . . . . . . . . . . .
cas
cs
wr
a0-a9
ras
10 ip-ops
A00-A09
s0-s10
en
cas
en
A00-A09
s0-s10
1024 ip-ops
1024
A19
A10..
enr0
enr1023
d
wrb1023
wrb0
o0
b0
o1023
b1023
oe
cs
*
wr
d
1024
q
q
q
q q q
q q q
q q q
............................ . . . . . . . . . . . . . . . . . . . . . . . . . .
Figura 4.15: Diagrama de blocos de memoria com fast page mode.
................................. .................................
................................... ................................... ................................... ................................... ...................................
. . . . . . . . . . . . . . . . . ................... ................... . . . . . . . . . . . . . . . . .
................................. ................................. ................................. ................................. ................................. .................................
................................... ................................... ................................... ................................... ...................................
................................. ................................. ................................. ................................. ................................. .................................
. . . . . . . . . . . . . . . . . ................... ................... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ................... ................... . . . . . . . . . . . . . . . . .
cs
ras
cas
a0-a9
linha
T
a
linha+coluna T
a
col
coluna
i
T
a
col
coluna
i+1
coluna
i+2
n n+1 n+2
Figura 4.16: Ciclos de leitura em fast page mode.
Captulo 5
O Microprocessador Mico
Um computador pode ser encarado de tres maneiras diferentes, dependendo do ponto de
vista. A parte visvel ao programador inclui o conjunto de instrucoes, os registradores
e os enderecos e registradores dos perifericos. O arquiteto e projetista do processador
deve organizar e projetar os componentes logicos de forma a que estes implementem as
instrucoes, modos de enderecamento e registradores conforme a visao do programador. Ao
engenheiro de hardware responsavel pela integracao de processador, memoria e perifericos,
a parte visvel dos componentes sao suas interfaces logicas e eletricas, sinais de controle,
barramentos e o suprimento de energia aos circuitos integrados.
Este captulo trata de duas visoes, aquela do ponto de vista do programador e aquela
do arquiteto e projetista do processador. Para tanto, e descrita a arquitetura e a im-
plementacao de um microprocessador de 16 bits chamado de Mico. A arquitetura deste
processador e uma versao muito reduzida daquela do processador MIPS R4000 [PH00].
Os aspectos de implementacao dos circuitos logicos do processador foram tratados nos
Captulos 2 e 3. A implementacao de sistemas de memoria e tratada nos Captulos 4 e 6,
enquanto que perifericos sao tratados no Captulo 7. A Figura 5.1 mostra as convencoes
usadas para nomes de sinais e para representar varias operacoes.
5.1 Organizacao de um Computador com o Mico
O diagrama na Figura 5.2 mostra uma possvel aplicacao para um processador como o
Mico. No computador mostrado na gura, alem do processador existe uma certa quan-
tidade de memoria ROM e de memoria RAM, e no mnimo um circuito periferico, que
neste caso e uma interface do tipo porta paralela (detalhes na Secao 7.2). O diagrama
mostra tambem o circuito de selecao de enderecos para habilitar os acessos `a memoria ou
perifericos. As secoes seguintes descrevem o funcionamento e a implementacao do Mico.
Detalhes quanto a implementacao do subsistema de memoria, barramentos e perifericos
serao estudados nos Captulos 4, 6 e 7, respectivamente.
75
Captulo 5. O Microprocessador Mico 76
X := y indica que o registrador X recebe o valor y sincronamente;
A b indica que a sada do circuito combinacional denominado A apresenta
o valor b;
[p,q] seq uencia de valores inteiros no intervalo fechado que inclui os valores
p e q. Se p > q entao o intervalo e vazio. Esta notacao e equivalente
a p..q.
(p,q) seq uencia de valores inteiros no intervalo aberto que exclui os valores
p e q;
Z/n..m/ denota os bits de n a m do sinal Z (registrador, p.ex);
X/11..0/ := Y/15..4/ indica que a X/0/ e atribudo Y /4/, a X/1/ e atribudo
Y /5/, e assim por diante;
Ax,y denota a expressao regular cuja expansao resulta em Ax e Ay;
X/11..0/.Y/5..4/ denota a concatenacao de 12 bits de X com 2 bits de Y , os
12 bits de X na parte mais signicativa;
pc
+
valor do registrador pcimediatamente apos a transicao do relogio;
x := a | z := m a carga de x ocorre no mesmo ciclo de relogio em que a carga
de z;
A n o valor de A e deslocado de n posicoes para a esquerda (multiplicacao
de A por 2
n
);
A n o valor de A e deslocado de n posicoes para a direita (divisao de
A por 2
n
);
(S?C
0
:C
1
:C
2
: . . . :C
n
) extensao do comando (s?a:b) da linguagem C para mais de
duas condicoes. Esta construcao e similar ao comando switch(S)....
Figura 5.1: Convencoes quanto a smbolos, nomes e sinais.
5.2 Organizacao do Processador
O Mico possui um conjunto de instrucoes com instrucoes (i) de logica e aritmetica
[add, mult], (ii) de acesso `a memoria [ld, st], (iii) de controle de uxo de execucao como
saltos e desvios, (iv) para suporte a funcoes [jal, jr], (v) de controle, e (vi) de entrada e
sada [in, out]. As instrucoes do Mico empregam cinco formas de computar enderecos dos
operandos das instrucoes, ou cinco modos de enderecamento. A codicacao das instrucoes
e regular, o que possibilita uma implementacao simples e eciente.
Captulo 5. O Microprocessador Mico 77
t
t
t
t
t
r
r
r
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
en
MICO
eVal
Ender
dVal
Dados
wr
dados
end
cs
end
dVal
dados
dVal
wr
cs
dados
wr
dVal
end
Pparal
RAM
ROM
csPar
csROM
csROM
csRAM
csPar
cs
csRAM
Figura 5.2: Exemplo de aplicacao do Mico.
A Figura 5.3 contem um diagrama de blocos do Mico. O Mico e um processador com
circuito de dados baseado em registradores. O circuito de dados tem 16 bits de largura e
portanto o tipo basico de dados e o short. O espaco de enderecamento e de 64K palavras
de 16 bits, e portanto o Mico possui 16 bits de endereco (log
2
(64K) = 16). O Mico
possui oito registradores de uso geral e visveis ao programador, chamados de $0 a $7, e
que servem para armazenar resultados temporarios, ou indexar estruturas de dados em
memoria. Os principais componentes do Mico sao os seguintes:
$0-$7 registradores de uso geral;
pc contador de programa, aponta a proxima instrucao a ser executada;
ri registrador de instrucao, contem a instrucao que esta sendo executada;
stat registrador de status, mantem status da ultima operacao da ula;
re,rlm,rem registradores de interface com memoria; e
ula,mult,concat blocos funcionais.
Captulo 5. O Microprocessador Mico 78
................... . . . . . . . . . . . . . . . . .
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
................... . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .
....................................
....................................
....................................
................... . . . . . . . . . . . . . . . . .
p p p p p p p p p p p p p p p p p ppppppppppppppppppp ppppppppppppppppppp p p p p p p p p p p p p p p p p p
....................................
....................................
....................................
.................................... ....................................
....................................
p p p p p p p p p p p p p p p p p ppppppppppppppppppp ppppppppppppppppppp p p p p p p p p p p p p p p p p p
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .
RI
PC
PI REM RE
RESULT
regs
RLM
DADOS
ENDER
STAT
ULA
R
A
B
S
ext
r
r
r
r
r r
r
r
r
r
......................................
............... . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .
............... . . . . . . . . . . . . .
............... . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .
ppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppp
. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .
............... . . . . . . . . . . . . .
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppppp
............... . . . . . . . . . . . . .
.......... .......... .......... ..........
.......... .......... .......... ..........
ppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p pp p p p p p p p p p p p p p p p p p p ppppppppppppppppppppppppppppppppppppppppp
. . . . . . . . . . . . . ...............
. . . . . . . . . . . . . .. . . . . . . . . . . . . .
. . . . . . . . . . . . . .. . . . . . . . . . . . . .
oper
ULAout
regOpDest
CONCAT
0
1
selB
regOp2
$7
$0
MULT
Figura 5.3: Organizacao do Mico.
5.3 Unidade de L ogica e Aritmetica
As operacoes de logica e aritmetica unarias (um operando) tem como argumento o
conte udo do registrador indicado na instrucao, que e tambem o destinatario do resul-
tado. As operacoes binarias (dois operandos) tem como primeiro operando e destinatario
um dos registradores, e o segundo operando e um registrador ou uma constante.
..................................................
................... . . . . . . . . . . . . . . . . . ...............
...............
...............
...............
...............
stat
A
B
S
R
16
16
4
3
16
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q
................... . . . . . . . . . . . . . . . . .
................... . . . . . . . . . . . . . . . . .
....................................
................... . . . . . . . . . . . . . . . . .
r1
r2
r1
add r1, r2 # r1 := r1+r2
oper=add
Figura 5.4: Execucao de operacoes de logica e aritmetica.
A Unidade de Logica e Aritmetica (ula) possui duas entradas para os operandos, A e B de
16 bits, e que sao usados nas operacoes binarias, enquanto que nas nas operacoes unarias
Captulo 5. O Microprocessador Mico 79
o operando e A. A entrada oper tem 3 bits de largura
1
e determina qual a e operacao a
ser efetuada. A ula possui uma sada R de 16 bits com o resultado da operacao, e uma
sada S de 4 bits que indica o status da ultima operacao executada, conforme mostra a
Figura 5.4. A Tabela 5.1 dene as operacoes de logica e aritmetica implementadas na ula.
O resultado das operacoes NOT, AND, OR e XOR e computado bit-a-bit. Note que as
operacoes de deslocamento e de rotacao usam os mesmos codigos 2 para desl/rot para
esquerda e 3 para desl/rot para a direita porque os circuitos que as implementam sao
identicos exceto para os bits nos extremos das palavras.
cod operacao semantica descricao
0 ADD r a + b adicao
1 SUB r a b subtracao
2d LSL r a 1 deslocamento para esquerda
R
n
:= A
n1
; R
0
:= 0, n [1..15]
3d LSR r a 1 deslocamento para direita
R
n
:= A
n+1
; R
15
:= 0, n [0..14]
2r ROL r a 1 rotacao para esquerda
R
n
:= A
n1
; R
0
:= A
15
, n [1..15]
3r ROR r a ~ 1 rotacao para direita
R
n
:= A
n+1
; R
15
:= A
0
, n [0..14]
4 NOT r a complemento de um
5 AND r a b conjuncao bit a bit
6 XOR r a b ou-exclusivo bit a bit
7 OR r a b disjuncao bit a bit
Tabela 5.1: Operacoes de logica e aritmetica.
Os operandos sao codicados em complemento de 2, representando portanto valores pos-
itivos e negativos. Os bits de status sao alterados como parte do resultado da execucao
da operacao e sao armazenados no registrador stat, que e atualizado ao nal de cada
operacao. Os bits de status da Unidade de Logica e Aritmetica sao listados abaixo.
v oVerow em complemento de 2, suporta operacoes aritmeticas em comple-
mento de 2;
n Negativo, indica um resultado negativo proveniente de operacao aritmetica
ou logica;
z Zero, indica se o resultado de operacao aritmetica ou logica e igual a zero;
c Carry, indica se houve vai-um em operacao aritmetica ou logica.
operacao status afetado
ADD,SUB z,n,c,v
LSL,LSR,ROL,ROR z,n,c
NOT,AND,OR,XOR z,n
Tabela 5.2: Status das operacoes de logica e aritmetica.
1
Mais adiante esta entrada sera modicada para quatro bits.
Captulo 5. O Microprocessador Mico 80
5.4 Conjunto de Instruc oes
Do ponto de vista de quem escreve programas, a arquitetura de um processador e denida
(i) pelo conjunto de instrucoes, (ii) pelos modos de enderecamento, e (iii) pelos reg-
istradores visveis. O conjunto de instrucoes determina quais as possveis formas de trans-
forma cao dos dados, enquanto que os modos de enderecamento determinam as formas de
acesso aos dados e ate mesmo as formas de executar trechos do codigo. Os registradores
visveis sao o primeiro nvel de armazenamento de dados disponvel ao programador, en-
quanto que a memoria corresponde ao segundo nvel. Esta secao dene o conjunto de
instrucoes do Mico.
5.4.1 Instruc oes de L ogica e Aritmetica
As instrucoes de logica e aritmetica unarias tem como argumento o conte udo do registrador
indicado na instrucao, que e tambem o destinatario do resultado. As operacoes binarias
tem como primeiro operando e destinatario um dos registradores e o segundo operando e
um registrador ou uma constante. A Tabela 5.3 contem as instrucoes de logica e aritmetica.
Alguns dos codigos sao compostos porque existem mais de uma versao da instrucao. Por
exemplo, a adicao simples tem codigo 0 enquanto que a adicao com carry tem codigo 0c.
Esta codicacao e similar `a codicacao dos deslocamentos e rotacoes vista na Tabela 5.1.
cod instrucao semantica descricao
0 ADD $p,$q $p := $p + $q adicao
0c ADDC $p,$q $p := $p+$q+c adicao com carry
1 SUB $p,$q $p := $p$q subtracao
1c SUBC $p,$q $p := $p$q+c subtracao com carry
2d LSL $p $p := $p 1 deslocamento para esquerda
R
n
:= A
n1
| R
0
:= 0; c := A
15
2c LSLC $p $p := $p 1 desloc. para esq. com carry
R
n
:= A
n1
| R
0
:= c | c := A
15
3d LSR $p $p := $p 1 deslocamento para direita
R
n
:= A
n+1
| R
15
:= 0 | c := A
0
3c LSRC $p $p := $p 1 desloc. para dir. com carry
R
n
:= A
n+1
| R
15
:= c | c := A
0
2r ROL $p $p = $p 1 rotacao para esquerda
R
n
:= A
n1
| R
0
:= A
15
| c := A
15
3r ROR $p $p = $p ~ 1 rotacao para direita
R
n
:= A
n+1
| R
15
:= A
0
| c := A
0
4 NOT $p $p := $p complemento
5 AND $p,$q $p := $p$q conjuncao
6 XOR $p,$q $p := $p$q ou-exclusivo
7 OR $p,$q $p := $p$q disjuncao
Tabela 5.3: Instrucoes de logica e aritmetica.
Algumas das instrucoes sao denidas na versao simples e na versao com carry, como
as duas versoes da instrucao de soma, add e addc. A versao com carry permite a imple-
mentacao de aritmetica com palavras de largura arbitraria porque o vai-um produzido por
Captulo 5. O Microprocessador Mico 81
uma instrucao pode ser usado como vem-um por instrucao subseq uente. Por exemplo, para
efetuar somas em 32 bits usando um processador com palavras de 16 bits, deve-se somar
a parte menos signicativa dos dois operandos, o que produz 16 bits de resultado mais o
vai-um que e armazenado no bit carry do registrador de status. A soma da parte mais
signicativa dos operandos deve incluir o vem-um da parte menos signicativa, conforme
mostra o trecho de programa abaixo.
soma32: # r3 e r4 contem parte mais signicativa dos operandos
add $r1,$r2 # r1 := r1+r2, carry := vai-um
addc $r3,$r4 # r3 := r3+r4+carry
Este trecho de programa ilustra algumas das convencoes normalmente usadas em progra-
mas em linguagem de maquina (assembly language). Cada linha do programa e dividida
em tres campos opcionais. O primeiro campo e limitado `a direita pelos dois pontos e
contem um nome simbolico (label) para o endereco da instrucao daquela linha, ou da
proxima, caso o nome esteja isolado. O segundo campo contem uma instrucao da lin-
guagem do processador, e o terceiro campo contem um comentario, delimitado `a esquerda
pelo caracter #, estendendo-se ate o nal da linha. Os tres campos sao opcionais, mas
tenta-se manter a segunda coluna alinhada para facilitar a leitura do codigo.
Na descricao das instrucoes de deslocamento, c indica o bit do registrador de status
correspondente ao bit de carry. Suponha que A=0x6f f6 e c=1 antes da execucao da
instrucao lsl (A=0110 1111 1111 0110, c=1). Apos a execucao de lsl, o bit c=0 e
R=1101 1111 1110 1100.
Algumas instrucoes aritmeticas mais complexas que aquelas disponveis diretamente da
ula sao denidas nas Tabelas 5.4 e 5.5. A instrucao const carrega o registrador com
uma constante. A instrucao addi permite adicionar uma constante ao conte udo de um
registrador, e esta constante pode ser negativa ou positiva. A instrucao mul efetua a multi-
plicacao de dois operandos positivos de 8 bits e produz resultado de 16 bits. As instrucoes
hi e low efetuam a concatenacao de uma constante com a parte mais signicativa do
registrador (hi), e menos signicativa do registrador (low).
instrucao semantica descricao
CONST $p,const $p := ext(const) carrega constante
ADDI $p,const $p := $p+ext(const) adicao de imediato
ADDIC $p,const $p := $p+ext(const)+c adicao de imediato com carry
MUL $p,$q $p := $p$q multiplicacao
HI $p,const $p := (const/7..0/ 8) .$p/7..0/ concatenacao, parte alta
LOW $p,const $p := ($p/15..8/ .const/7..0/) concatenacao, parte baixa
Tabela 5.4: Instrucoes aritmeticas complexas.
Note que existe uma diferenca entre uma operacao implementada no circuito da ula e
as instrucoes do processador baseadas nesta operacao. Por exemplo, a operacao soma,
no somador da ula e usada nas instrucoes add, addc, addi e addic. Dependendo da
implementacao do circuito de dados, este somador tambem pode ser usado para calcular
o endereco nas instrucoes ld e st.
Captulo 5. O Microprocessador Mico 82
instrucao status restricoes
CONST nao altera status, const. estendida para 16 bits
ADDI,ADDIC z,n,c,v constante de 8 bits estendida para 16 bits
MUL z,n dois operandos positivos de 8 bits
HI,LOW nao altera status
Tabela 5.5: Status das instrucoes aritmeticas complexas.
5.4.2 Movimentacao de Dados Entre Mem oria e Registradores
A instrucao ld (load) copia uma palavra da memoria para o registrador destino, e a
instrucao st (store) copia o conte udo do registrador fonte para a posicao indicada da
memoria. Nos dois casos, o endereco efetivo e a soma do conte udo do registrador base (ou
ndice) e de um deslocamento, que e um n umero representado em complemento de dois.
O calculo do endereco efetivo e mostrado na Figura 5.5. Note que a memoria e indexada
como um vetor de palavras, e que o ndice corresponde ao endereco efetivo.
instrucao semantica descricao
LD $d, desl($b) $d:=M[$b+desl] load from memory
ST $f, desl($b) M[$b+desl] := $f store to memory
Tabela 5.6: Instrucoes de acesso `a memoria.
ld
deslocamento
base
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
. . . . . . . . . . . . . ...............
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . ...............
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . ...............
ld $1,3($2) # $1:=M[$2+3]
0x03
M[ ]
2 1
&(V[0])
&(V[1])
&(V[2])
&(V[3])
&(V[0]) $2
Figura 5.5: Calculo do endereco efetivo em referencias `a memoria.
5.4.3 Saltos e Desvios
A instrucao j, ou salto, provoca uma alteracao incondicional no uxo de busca de in-
strucoes porque carrega o endereco de uma instrucao no pc, endereco este que nao e o
da proxima instrucao. Os enderecos no processador sao de 16 bits mas o operando das
instrucoes de salto incondicional e de 12 bits. Os 4 bits mais signicativos do pc devem
ser concatenados com os 12 bits do operando das instrucoes de salto para que seja pro-
duzido um endereco com o tamanho correto. Este modo de enderecamento e chamado
de enderecamento pseudo-absoluto. Quais as implicacoes que enderecos de 12 bits tem na
geracao de codigo para este processador?
Captulo 5. O Microprocessador Mico 83
instrucao semantica descricao
J ender pc:=pc/15..12/. ender salto incondicional
Dcd desl pc:=pc
+
+ext16(desl) cd pc
+
desvio condicional
Tabela 5.7: Instrucoes para alteracao no uxo de controle.
Os desvios sao condicionais e a alteracao no uxo de execucao depende do valor dos bits
do registrador de status (stat). O resultado de uma operacao de logica ou aritmetica e
armazenado no registrador destino, e os quatro bits de estado da operacao, que sao zero,
neg, carry e ov, sao atualizados no registrador de status, indicando respectivamente
que o resultado da ultima operacao realizada e zero ou negativo, ou que ocorreu um vai-um
do bit 15 da ula, ou que a combinacao dos bits mais signicativos na ula e tal que pode
ter ocorrido overow. Os codigos das condicoes de desvio sao mostrados na Tabela 5.8, e
a Tabela 5.9 mostra o conjunto das instrucoes de desvio.
CD condicao
00 zero
01 negativo
10 carry
11 overow
Tabela 5.8: Condicoes de desvio (CD).
instrucao semantica
Dzero ender desvia se ultima operacao resultou em zero
Dneg ender desvia se ultima operacao produziu n umero negativo
Dcarry ender desvia se ultima operacao produziu vai-um ou carry
Dov ender desvia se ultima operacao resultou em overow
DNzero ender desvia se ultima operacao nao resultou em zero
Dpos ender desvia se ultima operacao produziu n umero nao-negativo
DNcarry ender desvia se ultima operacao nao produziu vai-um ou carry
DNov ender desvia se ultima operacao nao resultou em overow
Tabela 5.9: Instrucoes de desvio condicional.
O enderecamento nos desvios e relativo ao valor no pc como mostra a Figura 5.6. O
operando da instrucao e um n umero em complemento de dois e desvios podem ocorrer
para instrucoes que estejam alguns enderecos adiante ou atras do endereco da instrucao
de desvio. O operando deve ser estendido para 16 bits, atraves da funcao ext16(). Note
que o valor do PC adicionado ao operando e aquele obtido apos o incremento na fase de
busca (pc
+
+ext16(desl)). Isso cara mais claro adiante, na Secao 5.5.
Captulo 5. O Microprocessador Mico 84
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...............
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . ...............
. . . . . . . . . . . . . ...............
. . . . . . . . . . . . . ...............
ender. efetivo
absoluto
PC
cond desl D relativo a PC
destino
ender. efetivo
J, JAL
Figura 5.6: Calculo do endereco efetivo, relativo ao PC e absoluto.
5.4.4 Suporte `a Func oes
Por convencao, a pilha de chamada de funcoes tem seu topo no endereco mais alto da
memoria e cresce na direcao de enderecos menores. O apontador de pilha e o registrador $6,
que tambem e chamado de $sp ou stack pointer. O $sp aponta sempre para a ultima posicao
preenchida na pilha, que e uma posicao nao-vazia.
Duas instrucoes implementam o suporte `a funcoes ou subrotinas, denidas na Tabela 5.10.
A instrucao jal (jump and link) desvia para o endereco especicado no operando da in-
strucao (como num salto) e armazena o endereco da instrucao subseq uente `a jal no
registrador $7, que e o endereco da instrucao imediatamente posterior `a jal, que a aquele
apontado por pc
+
. O registrador $7 e chamado de $ra por manter o endereco de retorno (re-
turn address). A instrucao jr (jump register) atribui o conte udo de um registrador ao pc.
instrucao semantica descricao
JAL ender $ra := pc
+
| pc:= pc/15..12/. ender jump and link
JR $r pc:= $r jump register
Tabela 5.10: Instrucoes de suporte `a funcoes.
Note que a instrucao jal e similar `a instrucao call de outros processadores, mas a jal nao
salva o endereco de retorno na pilha e sim no $ra. A instrucao jr e similar `a instrucao ret,
mas ao contrario desta, jr nao retira o endereco de retorno da pilha, mas sim de um
registrador. O programador e responsavel por salvar na pilha o endereco de retorno,
depositado no registrador $ra pela instrucao jal.
5.4.5 Instruc oes de Entrada e Sada
A instrucao in (input) permite ler de um periferico para um registrador. Durante a
execucao desta instrucao, o sinal do barramento es ca ativo. A instrucao out (output)
permite escrever o conte udo de um registrador em um periferico. Durante a execucao desta
instrucao, o sinal do barramento es ca ativo. O endereco do periferico tem 8 bits, que sao
os 8 bits menos signicativos do barramento de enderecos. O espaco de enderecamento dos
Captulo 5. O Microprocessador Mico 85
perifericos e indexado como um vetor de palavras, e que o ndice do vetor P corresponde
ao endereco do periferico mais detalhes na Secao 5.9.
instrucao semantica descricao
IN $r, ender $r := P[ender] input from peripheral
OUT $r, ender P[ender] := $r output to peripheral
Tabela 5.11: Instrucoes de entrada e sada
5.4.6 Instruc oes de Controle
A instrucao nop (no operation) nao tem efeito algum. A instrucao halt paraliza o pro-
cessador. A busca de novas instrucoes cessa e o processador deve ser re-inicializado para
voltar a executar instrucoes.
5.4.7 Modos de Enderecamento
O Mico possui cinco modos de especicar os enderecos dos operandos das instrucoes, ou
cinco modos de enderecamento, mostrados nas Figuras 5.5, 5.6 e 5.7, e descritos abaixo.
a registrador os operandos estao em registradores, como nas instrucoes sub
e jr (Figura 5.7);
imediato um dos operandos e uma constante que e parte da instrucao, como
na instrucao addi (Figura 5.7);
basedeslocamento conte udo do registrador base adicionado `a uma con-
stante que e parte da instrucao, como nas instrucoes ld e st (Figura 5.5);
relativo ao pc o endereco do destino e um deslocamento com relacao ao valor
no pc, como nas instrucoes de desvio (Figura 5.6); e
absoluto o endereco de destino e especicado na instrucao, como nas in-
strucoes j e jal (Figura 5.6).
ADDI imediato
a registrador r2 r1
constante r1
SUB
Figura 5.7: Modos de enderecamento a registrador e imediato.
5.4.8 Codicacao das Instruc oes
As instrucoes do Mico tem 16 bits de largura e sao divididas em campos. Os quatro bits
mais signicativos contem o opcode (operation code) no primeiro campo da instrucao. Os
segundo e terceiro campos podem conter n umeros de registradores; e o terceiro campo
contem uma constante. Os formatos das instrucoes sao mostrados na Figura 5.8. O
Captulo 5. O Microprocessador Mico 86
formato R e usado nas instrucoes cujos operandos sejam registradores, tipicamente as
instrucoes de ula. O formato C e usado nas instrucoes com um operando que e uma
constante, como addi por exemplo. Os formatos S e D sao usados nas instrucoes de salto
e desvio, respectivamente.
Ha uma relacao entre os formatos das instrucoes e os modos de enderecamento, embora
estes sejam conceitos distintos. A cada modo de enderecamento correspondem um certo
n umero de operandos, e estes sao codicados de forma regular nas instrucoes.
8 11 15 2 0 6 9 12
reg formato C (constante) opcode constante
formato S (salto) opcode endereco
formato D (desvio) opcode endereco CD
opcode reg reg oper formato R (registrador)
Figura 5.8: Formatos das instrucoes.
A codicacao de todas as instrucoes e denida na Tabela 5.12. Os bits 15..12 da instrucao
denem o opcode, que distingue as instrucoes. Os bits 11..9 denem qual e o registrador
fonte-destino, e os bits 8..6 denem o segundo operando. No caso de operacoes de ula,
os bits 2..0 denem a operacao da ula. Dependendo da instrucao, os bits 7..0 podem
conter constantes. Constantes e enderecos podem ter 6 ou 8 bits de largura e representam
n umeros em complemento de dois. Enderecos em 12 bits representam n umeros positivos. A
primeira coluna da Tabela 5.12 contem uma indicacao do opcode e das variacoes possveis
naquelas instrucoes que compartilham um mesmo opcode.
Exerccios
Ex. 5.1 Dena as funcoes extN() que estende um n umero de N bits para 16 bits. Ela
deve produzir o valor correto para argumentos positivos e negativos.
Ex. 5.2 Qual e o n umero maximo de instrucoes possveis de se implementar com a
codicacao de instrucoes na Tabela 5.12?
Ex. 5.3 Qual o efeito da instrucao dzero N com operandos N 1, 0, 1?
Ex. 5.4 Qual o efeito da instrucao jal N com operandos N 1, 0, 1?
Ex. 5.5 Que outras instrucoes podem ser usadas para obter-se o efeito da instrucao nop?
Ex. 5.6 Como se pode implementar desvios para distancias maiores que 2
7
instrucoes?
Ex. 5.7 Como se pode implementar saltos para distancias maiores que 2
12
instrucoes?
Ex. 5.8 Qual seria uma codicacao para as instrucoes j e jal, para que o operando seja
especicado em 16 bits?
Captulo 5. O Microprocessador Mico 87
instr opcd regs/op const comentario
# b
15..12
b
11,9
-b
8,6
b
5..0
(xxx = dont care)
formato R
1.c ULA d,v 0001 ddd vvv cxx ooo O denidos na Tabela 5.1
c = 1 comCarry 0
4 mul d,o 0100 ddd ooo xx xxxx operandos de 8 bits
a jr r 1010 rrr rrr xx xxxx r contem end. de destino
6 ld r,D(b) 0110 rrr bbb dd dddd D = deslocamento de 6 bits
7 st r,D(b) 0111 rrr bbb dd dddd r = registrador de dados
b = registrador base
formato C
2.0 addi d,N 0010 ddd 0 nnnn nnnn $d :=$d+N [N de 8 bits]
2.1 addic d,N 0010 ddd 1 nnnn nnnn $d :=$d+N+c [N de 8 bits]
3 const r,N 0011 rrr x nnnn nnnn $r := N
b.0 hi d,N 1011 ddd 0 nnnn nnnn
b.1 low d,N 1011 ddd 1 nnnn nnnn
c.0 in d,E 1100 ddd 0 eeee eeee E = endereco do periferico
c.1 out d,E 1100 ddd 1 eeee eeee
formato D
5.0 dCD N 0101 CD x0 nnnn nnnn CD na Tabela 5.8
5.1 dnCD N 0101 CD x1 nnnn nnnn
formato J
8 j E 1000 eeee eeee eeee E = end. destino
9 jal E 1001 eeee eeee eeee E = end. destino
e nop 1110 xxxx xxxx xxxx
f halt 1111 xxxx xxxx xxxx
Campos de bits (ooo) aparecem como O na descricao/comentario.
Tabela 5.12: Codicacao das instrucoes.
Ex. 5.9 Quais cuidados o programador deve tomar com relacao ao conte udo do registrador
de status?
Ex. 5.10 Traduza os trechos de codigo abaixo para a linguagem de montagem do Mico.
void strcpy(short *f, short *d)
while ((*d = *f) != 0x0000) d++; f++;

short reduz(short N, short *V)


short i, soma;
for (soma=0,i=0 ; i<N ; i++) soma += V[i];
return(soma);

short fat2(short n)
short i;
for (i=(n-1); i>0 ; i--) n = n * i;
return n;

Captulo 5. O Microprocessador Mico 88


short fat(short n)
if (n==0) then return 1;
else return (n * fat(n-1));

5.5 Execucao das Instruc oes


A Figura 5.3, na pag. 78, mostra a organizacao do Mico. O processador contem oito
registradores visveis ao programador ($0-$7) e varios registradores que nao podem ser
acessados diretamente pelo programador, sendo portanto registradores invisveis.
Os registradores $0-$7 podem ser carregados com constantes e seus valores alterados pelas
instru coes, conforme a vontade do programador. Note que o pc e acessado pelo progra-
mador apenas indiretamente atraves das instrucoes de salto e desvio. O registrador de
status tambem e acessado apenas indiretamente, quando o resultado das operacoes de ula
e nele gravado, e usado posteriormente como condicao para desvio.
O bloco de registradores contem duas portas de leitura (ligadas `as entradas A e B da ula)
e uma porta de escrita (ligada ao barramento de resultado). Qualquer um dos registradores
pode ser selecionado para leitura em qualquer das duas portas. O registrador selecionado
para a porta A da ula sera necessariamente o destinatario do resultado.
O bloco com o pc e detalhado na Secao 5.7.2. Este bloco contem um somador para
computar desvios relativos ao pc.
Os registradores invisveis sao o Registrador de Instrucao (ri) e os registradores da inter-
face com memoria. Os registradores do Mico sao denidos abaixo.
$0-$7 registradores de uso geral;
pc contador de programa, aponta a proxima instrucao a ser executada;
ri registrador de instrucao, contem a instrucao que esta sendo executada;
stat registrador de status, mantem status da ultima operacao da ula;
pi endereco da Proxima Instrucao durante fase de busca;
re Registrador de Endereco para indexar dados em memoria;
rlm Registrador de Leitura em Memoria, mantem palavra lida da memoria;
rem Registrador de Escrita em Memoria, mantem palavra a ser escrita em
memoria.
5.5.1 Fases de Execucao das Instruc oes
Cada instrucao executada pelo processador passa por duas fases iniciais que sao a busca
e a decodicacao. Na fase de busca, o conte udo do contador de programa e usado para
indexar a memoria durante um ciclo de leitura. A palavra de memoria indexada pelo
pc e a proxima instrucao a ser executada e esta palavra e copiada da memoria para o
Registrador de Instrucao (ri). Ao nal da busca o pc e incrementado, em preparacao
Captulo 5. O Microprocessador Mico 89
para a busca da proxima instrucao. Na fase de decodicacao, o seq uenciador que controla
o processador examina a instrucao e decide quais as proximas fases de execucao.
As fases seguintes podem ser (1) execucao, quando sao efetuadas operacoes na ula,
(2) acesso `a memoria, quando sao efetuados acessos `a memoria para escrita ou leitura
de dados, ou (3) resultado, quando o resultado das fases anteriores e armazenado num
registrador. Estas fases serao descritas em mais detalhe na Secao 5.5.
Apos a fase de busca, a instrucao ca armazenada no Registrador de Instrucao ate que
a instrucao complete sua execucao. Algumas das constantes e enderecos usados como
operandos pelas instrucoes sao parte da instrucao, e portanto alguns dos bits da instrucao
representam a constante ou endereco. Quantos e quais sao bits usados como constante
dependem de cada instrucao.
As seq uencias de fases das instrucoes do Mico sao discutidas a seguir. As fases de busca e
decodicacao sao comuns a todas as instrucoes e sao descritas isoladamente. A seq uencia
das demais fases e descrita para cada classe de instrucao.
Busca
A execucao de uma instrucao se inicia na busca. Buscar uma instrucao signica efetuar
um ciclo de leitura em memoria para copiar a palavra que contem a proxima instrucao a
ser executada para o Registrador de Instrucao. A busca se inicia quando o conte udo do
pc e copiado para o registrador pi e este endereco e usado em um ciclo de leitura. Quando
a memoria entrega a palavra solicitada, esta e armazenada no ri. O conte udo do pc e
incrementado logo que seu conte udo e copiado para o pi. Assim que uma busca e iniciada,
o pc passa a apontar para a proxima instrucao. Esta seq uencia de eventos e formalizada
na Tabela 5.13.
instrucao semantica descricao
todas pi:= pc; pc:= pc+1 enderecamento
ender pi ciclo de leitura
ri:= M[pi] leitura (busca) em memoria
Tabela 5.13: Fase de busca.
Decodicacao
Na fase de Decodicacao, o seq uenciador que controla o processador examina a instrucao
e decide quais as proximas fases de execucao. Dependendo da implementacao do seq uen-
ciador, alguns dos sinais de controle internos ao processador ja podem ser acionados nesta
fase. Os conte udos dos registradores (operandos) sao apresentados `as entradas da ula.
Os eventos da fase de decodicacao sao mostrados na Tabela 5.14.
instrucao semantica descricao
todas A regOpDest entrada A da ula
B ri/7..0/ selB regOp2 entrada B da ula
oper ri/2..0/ operacao na ula
Tabela 5.14: Fase de Decodicacao.
Captulo 5. O Microprocessador Mico 90
Execucao de Instrucoes de Logica e Aritmetica
As instrucoes de logica e aritmetica unarias tem como argumento o conte udo de um
registrador e depositam o resultado no mesmo registrador. As operacoes binarias tem
como operandos dois registradores, e o resultado e depositado no primeiro operando. As
operacoes desta fase sao mostradas na Tabela 5.15.
instrucao semantica descricao
ulaUn result ula( oper, ula.A ) oper. unaria
oper ri/2..0/
ulaBin result ula( oper, ula.A, ula.B ) oper. binaria
oper ri/2..0/
mult result mult( regOpDEst, regOp2 ) multiplicacao
hi,low result concat( regOpDEst, ri/7..0/ ) concatenacao
const result concat( regOpDEst, ri/7..0/ ) atribuicao
Tabela 5.15: Execucao de operacoes unarias e binarias.
Movimentacao de Dados Entre Memoria e Registradores
A instrucao ld (load) copia uma palavra da memoria para o registrador destino, e a
instrucao st (store) copia uma palavra do registrador fonte para a memoria. Nos dois
casos, o endereco efetivo e a soma do conte udo de um dos registradores, base ou ndice,
e de um deslocamento, que e um n umero representado em complemento de dois. As
operacoes desta fase sao mostradas na Tabela 5.16.
instrucao semantica descricao
ld s,d(i) re soma(regOp2, ext(ri/5..0/)) calculo do endereco efetivo
ender re ciclo de enderecamento
rlm:= M[re] valor lido da memoria
st s,d(i) re soma(regOp2, ext(ri/5..0/)) calculo do endereco efetivo
ender re| rem $s ciclo de enderecamento
M[re]:= rem escrita em memoria
Tabela 5.16: Calculo de endereco efetivo na execucao de acessos `a memoria.
Resultado
Na fase de resultado, o resultado da operacao de logica e aritmetica, ou o de uma leitura da
memoria (ld), e armazenado no registrador de destino, conforme denido na Tabela 5.17.
O barramento result transporta o resultado das operacoes ate o bloco de registradores e
se comporta como um seletor de cinco entradas e 16 bits de largura.
instrucao semantica descricao
alu s,r s:= result| stat:= S operacao de ula
ld s,d(i) s:= rlm leitura da memoria
Tabela 5.17: Fase de Resultado.
Captulo 5. O Microprocessador Mico 91
Saltos e Desvios
O salto e incondicional e carrega um novo endereco no pc, que e obtido do operando da
instrucao j ou jal. Note que o operando de j ou jal contem 12 bits, mas os enderecos
sao de 16 bits. Para completar o tamanho do endereco, os 4 bits mais signicativos do pc
sao concatenados com os 12 bits do operando, com o resultado sendo um endereco valido
de 16 bits.
Os desvios sao condicionais e dependem das condicoes registradas no registrador de status.
O enderecamento nos desvios e relativo ao valor no pc, e o operando da instrucao e um
n umero em complemento de dois representado em 8 bits. Note que o pc foi incrementado
na fase de Busca.
instrucao semantica descricao
j end pc:= pc/15..12/.ri/11..0/ salto incondicional
dCD end pc:= (pc
+
+ext16(ri/7..0/)) CD (pc
+
) desvio condicional
dnCD end pc:= (pc
+
) CD (pc
+
+ext16(ri/7..0/))
Tabela 5.18: Execucao de saltos e desvios.
Suporte `a Funcoes
A instrucao jal desvia para o endereco especicado no operando da instrucao (como num
salto) e armazena o endereco da instrucao subseq uente `a jal (pc+1) no registrador $ra.
A instrucao jr atribui o conte udo do registrador $r ao pc.
instrucao semantica descricao
jal end $ra:= pc| pc:= pc/15..12/.ri/11..0/ jump and link
jr r pc:= $r jump register
Tabela 5.19: Execucao das instrucoes de suporte a funcoes.
Instrucoes de Controle
A instrucao nop nao tem efeito algum, e a instrucao halt paraliza o processador.
5.5.2 Diagrama de Estados
O circuito de controle do Mico deve garantir que as todas operacoes necessarias a cada
instrucao acontecam na ordem correta. Na implementacao do Mico descrita aqui, a ex-
ecucao de cada instrucao compreende varios ciclos de relogio, conforme mostra o diagrama
de estados da Figura 5.9. Por exemplo, a instrucao add necessita de dois ciclos de busca
(estados busca1 e busca2), e dois ciclos de execucao (estados exec1 e res1). A instrucao ld
necessita dos dois ciclos de busca, um ciclo para calcular o endereco efetivo (exec2), e dois
ciclos para a leitura do conte udo da posicao de memoria (mem1 e mem2).
Note que a decodicacao das instrucoes acontece no incio do terceiro ciclo de relogio, e
que nao e necessario dispender um ciclo de relogio para decodicar as instrucoes. Isso e
Captulo 5. O Microprocessador Mico 92
possvel porque a codicacao das instrucoes e regular e portanto o circuito que identica
as instrucoes e simples e rapido. O circuito com a maquina de estados que implementa o
diagrama de estados e descrito na Secao 5.7.
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
................... . . . . . . . . . . . . . . . . .
.............................................................................................................................................................................................
................... . . . . . . . . . . . . . . . . . ................... . . . . . . . . . . . . . . . . .
............................................................................................................................................................. ................... . . . . . . . . . . . . . . . . .
......................................................................................................................................................................................................................................................................
................... . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . ...................
....................................................
................... . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . ...................
. . . . . . . . . . . . . . . . . ...................
. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .
......................................................................
................... . . . . . . . . . . . . . . . . .
..................................................................................................................................................................................
................... . . . . . . . . . . . . . . . . .
................... . . . . . . . . . . . . . . . . .
................... . . . . . . . . . . . . . . . . .
................... . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .
....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
................... . . . . . . . . . . . . . . . . .
........................................................................................................................................................................................................................................................................................................................................................................................
................... . . . . . . . . . . . . . . . . .
busca2
exec1
exec4
halt
NOP
reset
busca1
res1
LD
exec2 mem1 res2
mem2 mem3
ST
exec3
ULA
J,JR
Dcc
HALT
LD,ST
Figura 5.9: Diagrama de estados da execucao das instrucoes.
O simulador Diglog e um programa que simula a funcao dos circuitos logicos, mas nao e um Diglog
simulador de comportamento temporal. Por isso, neste simulador e possvel implementar
a busca num unico ciclo de relogio, e as demais fases das instrucoes em outro ciclo. O
Diglog e adequado para simular o comportamento estatico de um circuito complexo como
o Mico, mas nao e adequado para vericar seu comportamento temporal.
Exerccios
Ex. 5.11 Faca varias copias do diagrama na pagina 110. Para cada uma das instrucoes
descritas nesta secao, simule todos os passos da sua execucao e assinale em cores no
diagrama de blocos do Mico quais circuitos sao ativados. Em cada passo, use cores distintas
para distinguir sinais de controle, vias (os ou barramentos) que transportam dados e vias
que transportam enderecos.
Ex. 5.12 Repita o exerccio anterior, agora colorindo o diagrama de estados da Figura 5.9.
Ex. 5.13 O diagrama de blocos do Mico, na Fig. 5.3, contem um somador para efetuar o
calculo de endereco efetivo nas instrucoes ld e st. Quais seriam as alteracoes necessarias
Captulo 5. O Microprocessador Mico 93
no circuito de dados, e no diagrama de estados, se o endereco efetivo fosse computado
atraves da ula?
Ex. 5.14 Dena os eventos associados a execucao das instrucoes in e out. Acrescente ao
diagrama de estados da Fig. 5.9 os dois ramos correspondentes a estas instrucoes.
Ex. 5.15 Compare a implementacao do Mico com um barramento interno para o resul-
tado, com outra que emprega um multiplexador com n > 4 entradas e 16 bits de largura.
Considere o n umero de portas logicas para implementar um Mux5:1, com o n umero de
buers tri-state, com um buer por bit, por bloco funcional.
5.6 Interface com Mem oria
A interface de memoria do Mico consiste de um conjunto de 16 linhas de dados, um
conjunto de 16 linhas de endereco e um conjunto de sinais de controle. As linhas de dados
transportam dados do Mico para a memoria nas escritas, e da memoria para o Mico na
busca e nas leituras. As linhas de controle garantem o seq uenciamento dos eventos na
interface. A Figura 5.10 mostra o diagrama de blocos da interface de memoria do Mico.
bi bi
wr
Memoria MICO
wr
E00-E15
eVal
E00-E15
eVal
D00-D15
dVal
D00-D15
dVal
es es
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
Figura 5.10: Interface de memoria do Mico.
5.6.1 Inter-travamento dos Sinais na Interface
Os sinais da interface e suas funcoes sao denidos abaixo.
wr write, quando ativo signica que dados em D00-D15 devem ser gravados na
posicao de memoria indexada por E00-E15;
bi busca de instrucao, ca ativo durante a busca de uma instrucao;
es entrada/sada, ca ativo durante a execucao de uma instrucao de en-
trada/sada;
E00-E15 linhas de endereco;
eVal endereco valido, indica que o valor nas linhas de endereco e valido e pode
ser usado pela memoria;
D00-D15 linhas de dados; e
dVal dados validos, indica que o valor nas linhas de dados e valido e pode ser
usado pela memoria.
Captulo 5. O Microprocessador Mico 94
A Figura 5.11 mostra a ligacao dos circuitos de memoria aos barramentos de dados e
de enderecos do Mico. Note que o diagrama contem somente os 8 bits menos signica-
tivos de dados, e os 13 bits menos signicativos de endereco. As linhas de dados sao
ligadas aos dois CIs de memoria, e estas linhas bi-direcionais possuem sadas tri-state
controladas pelo sinal output enable (oe). Num ciclo de busca, a ROM fornece a in-
strucao que e armazenada no ri. Em ciclos de leitura e escrita, a RAM fornece o dado
que e armazenado no rlm (leitura), ou recebe o dado apresentado em rem (escrita). Os
sinais de controle do barramento, indicados na gura como o bloco controle de acesso,
devem ser combinados para produzir os sinais de controle dos circuitos integrados de
memoria csROM, csRAM, oeROM, oeRAM, wrRAM.
p p p p p p p p p p p p p ppppppppppppppp ppppppppppppppp p p p p p p p p p p p p p
p p p p p p p p p p p p p ppppppppppppppp ppppppppppppppp p p p p p p p p p p p p p
REM RE RLM RI PI
DADOS
ENDER
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
t
t
t
t
t t t
t
.............................................. .............................................. ..............................................
..............................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..............................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
..........
..........
..........
..........
..........
..........
..........
..........
..........
.......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... ...... .........
..........
..........
..........
..........
..........
..........
..........
..........
.............................................. .............................................. ..............................................
.............................................. .............................................. .............................................. .............................................. ..............................................
wr
cs
oe
d2
d1
...
a0
a2
a1
sram8K
d0
a12
a11
wr
oe
d2
d4
d3
d7
d6
d5
d1
...
a0
a2
a1
sram8K
d0
a12
a11
csRAM
nc
ROM RAM
cs
wrRAM
oeRAM
csROM
oeROM
wrRAM
csROM
eVal
dVal
wr
bi
es
oeROM
oeRAM
csRAM
controle de acesso
d3
d4
d5
d6
d7
Figura 5.11: Ligacoes ao barramento de memoria do Mico.
Um acesso `a memoria, ou ciclo de memoria, consiste de uma fase de enderecamento,
quando as linhas de endereco transportam o endereco da posicao de memoria requisitada,
e de uma fase de transferencia, quando as linhas de dados transportam os dados a serem
copiados entre memoria e processador.
No Mico os tipos de ciclos de memoria sao tres, (i) busca, (ii) leitura e (iii) escrita. Ha
outros tipos de ciclos que nao sao de memoria, mas ciclos especiais de barramento, sendo
eles ciclos de atendimento a interrupcoes e ciclos de inicializacao. O tratamento de inter-
rupcoes e discutido na Secao 7.1. Os ciclos de inicializacao sao aqueles ciclos necessarios
para inicializar o processador, imediatamente apos a desativacao do sinal reset. Logo apos
a inicializacao, o programador e responsavel por inicializar o apontador para a pilha de
funcoes e quaisquer perifericos que necessitem ser congurados. Apos a inicializacao os
registradores tem valores indeterminados. O Mico prescinde de um ciclo de inicializacao
por ser um processador extremamente simples. Processadores usados em computadores
pessoais necessitam de milhares de ciclos de relogio para sua correta inicializacao [Sha96].
Note que os CIs de memoria simulados no Diglog tem tempo de acesso igual ao tempo Diglog
de propagacao de uma porta logica, que e um ciclo de simulacao. CIs reais tem tempo
Captulo 5. O Microprocessador Mico 95
de acesso `a memoria da ordem de 100 a 1000 vezes o tempo de propagacao de uma porta
logica. Assim, simulacoes realistas de sistemas de memoria devem levar em conta o tempo
de acesso de memorias reais e nao o das simuladas.
5.6.2 Ciclo de Busca
A busca de uma instrucao consiste de um acesso para leitura da memoria, e ao nal do
ciclo de busca, o registrador ri contem a instrucao que deve ser executada. A Figura 5.12
mostra o diagrama de tempo de um ciclo de busca.
........................ ........................
................................... ...................................
................... ...................
................................... ...................................
..................... ..................... ............... ...............
................................... .................................
eVal
E00-E15
bi
rel
dVal
D00-D15 M[pi]
pi
................................... ......................................................................
...................................
................................... ...................................
...................................
...................................
...................................
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
busca1 busca2
Figura 5.12: Ciclo de busca.
O sinal dVal e controlado pelo processador. A borda de subida de dVal indica o momento
em que os sinais nas linhas de dados podem ser capturados e armazenados no ri (ou
no rlm). O atraso de dVal com relacao a eVal depende do tipo de memoria empregado e
e um parametro de projeto do barramento. Geralmente, o atraso depende do tempo de
acesso `a memoria e e um n umero inteiro de tics do relogio do processador.
5.6.3 Ciclo de Leitura
Um ciclo de leitura e provocado pela execucao de uma instrucao como ld $r,desl($i). O
endereco efetivo e ($i+desl) e a posicao de memoria indexada e copiada para o Registrador
de Leitura de Memoria (rlm). Num ciclo de leitura, o sinal wr permanece inativo.
5.6.4 Ciclo de Escrita
Um ciclo de escrita e provocado pela execucao da instrucao st $r,desl($i). Da mesma
forma que no ciclo de leitura, o endereco efetivo e ($i+desl) e a posicao de memoria
indexada recebe o conte udo do Registrador de Escrita em Memoria (rem). Num ciclo de
escrita o sinal wr ca ativo enquanto eVal for ativo. A Figura 5.13 mostra o diagrama de
tempo de um ciclo de escrita.
Captulo 5. O Microprocessador Mico 96
........................ .....................
................................... ...................................
................... ...............
................................... ...................................
........................ ..................... ................... ...............
................................... .................................
eVal
E00-E15
wr
rel
dVal
D00-D15 rem= $r
$i + desloc
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
mem3 mem4
Figura 5.13: Ciclo de escrita.
5.6.5 Ciclos de Entrada/Sada
Um ciclo de entrada e similar a um ciclo de leitura e e provocado pela execucao de uma
instrucao in $r, end. O endereco efetivo e end e o conte udo do registrador de periferico
indexado e copiado para o Registrador de Leitura de Memoria (rlm). Num ciclo de
entrada, o sinal es permanece ativo enquanto eVal for ativo.
Um ciclo de sada e simular a um ciclo de escrita e e provocado pela execucao da in-
strucao out $r, end. O endereco efetivo e end e o registrador de periferico indexado
recebe o conte udo do Registrador de Escrita em Memoria (rem). Num ciclo de sada os
sinais wr e es cam ativos enquanto eVal for ativo.
5.6.6 Circuito de Mem oria
Nos CIs que contem instrucoes, o sinal RD ca desconectado (sem ligacao nenhuma) para
que aqueles se comportem como ROM, conforme documentacao do Diglog. Os sinais da Diglog
interface dos CIs de memoria disponveis no Diglog sao listados abaixo.
RD read quando ativo (em 1), os sinais D0-D7 mostram o conte udo da posicao
enderecada se CE=OE=0;
CE chip enable habilita acesso aos conte udos da memoria;
OE output enable permite leitura da posicao indexada por a00-a12
As equacoes que denem o comportamento dos CIs SRAM8K sao:
RD=1 CE=0 OE=0 = D0-D7 M[a00-a12]
RD=0 CE=0 OE=1 = M[a00-a12] := D0-D7
O sinal RD=0 na verdade se comporta como wr. Se o CI esta habilitado, RD=0 permite a
atualizacao da posicao indexada por a00-a12.
Os CIs devem ser habilitados quando o endereco e valido (eVal=0). O sinal bi=0 seleciona
os CIs que contem codigo (ROM) enquanto que bi=1 seleciona os CIs que contem dados
(RAM). A sada dos CIs e habilitada quando os dados sao validos na leitura (dVal=0
e RD=1). Na escrita, o sinal RD para a RAM e a combinacao de wr e dVal, indicando que
os dados estao validos e e um ciclo de escrita.
Captulo 5. O Microprocessador Mico 97
5.7 Circuito de Controle
As seguintes convencoes sao usadas para denir os nomes dos sinais de controle. Os sinais
sao compostos de um prexo de uma letra e de um suxo que e o nome do registrador ou
seletor. Alguns sinais sao representados por apenas um bit (um o) enquanto que outros
sao representados em varios bits. Os prexos tem os signicados listados abaixo.
e sinais que habilitam a escrita no registrador. Note que a escrita e sempre
sncrona; os sinais eXXX apenas habilitam a escrita, que ocorre de fato
na proxima borda do relogio;
s sinais que controlam a sada de seletores e multiplexadores;
h sinais que habilitam a sada de circuitos com sada tri-state; e
c para outros sinais de controle.
Na descricao que segue, sao denidos apenas os nveis logicos dos sinais (ativo ou inativo). Atencao
Se um dado sinal e ativo em nvel 1 ou em nvel 0, isso depende dos detalhes da imple-
mentacao. A Figura 5.14 mostra o Mico com o circuito de controle. Os sinais de controle
de todos os componentes serao discutidos a seguir.
................... . . . . . . . . . . . . . . . . .
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
................... . . . . . . . . . . . . . . . . .
p p p p p p p p p p p p p p p p p ppppppppppppppppppp ppppppppppppppppppp p p p p p p p p p p p p p p p p p
....................................
....................................
....................................
p p p p p p p p p p p p p p p p p ppppppppppppppppppp ppppppppppppppppppp p p p p p p p p p p p p p p p p p
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .
....................................
. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .
................... . . . . . . . . . . . . . . . . .
....................................
....................................
....................................
. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .
....................................
....................................
B
A
PC
STAT
PI
ENDER
REM RLM
DADOS
RESULT
RE
ROM
RI
PC
ext
r
r
r
r r
r r
r
r
q q q
q q q
r
r
......................................
............... . . . . . . . . . . . . .
. . . . . . . . . . . . . .. . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .
............... . . . . . . . . . . . . .
............... . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .
ppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppp
. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .
............... . . . . . . . . . . . . .
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppppp
. . . . . . . . . . . . . .. . . . . . . . . . . . . .
............... . . . . . . . . . . . . .
.......... .......... .......... ..........
.......... .......... .......... ..........
. . . . . . . . . . . . . ...............
ppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p pp p p p p p p p p p p p p p p p p p p ppppppppppppppppppppppppppppppppppppppppp
. . . . . . . . . . . . . ...............
. . . . . . . . . . . . . ...............
. . . . . . . . . . . . . ...............
. . . . . . . . . . . . . ...............
. . . . . . . . . . . . . ...............
. . . . . . . . . . . . . ...............
oper
ULAout
regOpDest
CONCAT MULT
0
1
selB
regOp2
$0
$7
incPC
selB
eRI
ePI
Figura 5.14: Circuito de controle do Mico.
5.7.1 Sinais da Interface com Mem oria
A interface com o barramento de memoria consiste dos sinais eVal, dVal, bi, wr denidos
na Se cao 5.6. Estes sinais deverao ser ativados dependendo da instrucao que esta sendo
Captulo 5. O Microprocessador Mico 98
executada. Os registradores que implementam a interface com os barramentos de dados e
enderecos sao descritos a seguir.
re Registrador de Endereco de Dados, mantem o endereco efetivo a ser
usado em ciclos de escrita e leitura de dados. Seus sinais de controle
sao:
eRE habilita atualizacao do re com novo endereco efetivo;
hRE habilita sada tri-state do re.
rlm Registrador de Leitura de Memoria, mantem o valor obtido da memoria
da posicao indexada por re. Seus sinais de controle sao:
eRLM habilita atualizacao do rlm com novo dado;
hRLM habilita sada tri-state do rlm.
rem Registrador de Escrita em Memoria, mantem o valor a ser gravado na
memoria, na posicao indexada por re. Seus sinais de controle sao:
eREM habilita atualizacao do rem com novo dado;
hREM habilita sada tri-state do rem.
pi endereco da Proxima Instrucao, mantem o endereco da instrucao que
esta sendo buscada. Seus sinais de controle sao:
ePI habilita atualizacao do pi com novo endereco de instrucao;
hPI habilita sada tri-state do pi.
ri Registrador de Instrucao, contem a instrucao que esta sendo executada.
Seu sinal de controle e:
eRI habilita atualizacao do ri.
Do ponto de vista do circuito de controle, uma parte do ri e tambem parte do pc (de-
scrito abaixo) e a outra parte contem os operandos imediatos. Embora esta descricao da
interface com a memoria mencione registradores, re, rlm, rem, e pi devem ser imple-
mentados como buers tri-state e nao como registradores. Se estes fossem implementados
como registradores, as operacoes que envolvem estes registradores necessitariam de cic-
los adicionais de relogio para gravar o conte udo no registrador. Se implementados como
buers tri-state, o tempo necessario para habilitar as sadas e muito menor que um ciclo
de relogio.
5.7.2 Sinais de controle do circuito de dados
Os sinais de controle dos demais componentes do Mico sao discutidos abaixo. Note que
a descricao abaixo e generica e cada implementacao do Mico podera empregar sinais de
controle distintos dos descritos no que segue.

E responsabilidade dos projetistas garantir
que os sinais de controle de seus projetos controlem o processador adequadamente.
PC O contador de programa (pc) e mostrado na Figura 5.15. O pc consiste de um
contador de 16 bits que muda de estado na borda ascendente do relogio, nas quatro
situacoes denidas na Tabela 5.20. A construcao ( x ? a : b : c : d ) e uma variante do
comando de selecao da linguagem C, simular ao comando switch(x) a: ....
Captulo 5. O Microprocessador Mico 99
sinal efeito no pc instrucao/obs.
(1) reset pc := 0 inicializacao do processador
(2) carPC pc := (sPC sncrono
? pc/15..12/.ri/11..0/ j, jal
: $r jr
: (pc
+
+ ext(ri/7..0/)) desvios
: pc nada acontece
)
(3) habPC pc := pc+1 nal da busca, sncrono
Tabela 5.20: Atribuicao de valores ao pc.
......................................................................
....................................
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
.................................... ....................................
....................................
rel
habPC en
ld
clr
sPC
carPC
reset
PC
$r
RI/7..0/
contador-16
PC/15..12/.RI/11..0/
0 1 2 3
somador
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
r
r
....................................
....................................
....................................
....................................
................... . . . . . . . . . . . . . . . . .
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ext
j,jal jr desv
Figura 5.15: Contador de Programa e circuito para controle de uxo.
RI O Registrador de Instrucao contem a instrucao que esta sendo executada pelo pro-
cessador. O sinal eRI faz com que ri receba uma copia do que esta no barramento de
dados.
STAT O registrador de status mantem status da ultima operacao da ula. stat e
atualizado no mesmo ciclo de relogio em que o valor em result e armazenado em seu
destino.
Bloco de registradores O Bloco de Registradores contem registradores de 16 bits,
duas sadas de leitura (A e B) e uma entrada para escrita (D=destino). Os registradores
de leitura sao selecionados por sa0-sa2 e sb0-sb2. O registrador de destino e selecionado
por sd0-sd2, e a escrita ocorre sincronamente quando escR esta ativo.
Captulo 5. O Microprocessador Mico 100
A entrada B da ula depende da instrucao que esta sendo executada. O controle do seletor
nesta entrada da ula e denido por
B (ri/7..0/ selB regOp2) .
O sinal que controla a operacao da ula, oper, provem de ri/2..0/. O registrador stat
deve receber o status da operacao da ula na mesma borda do relogio em que o resultado
e gravado no seu destino: result ALUout.
O sinal que especica a origem do valor a ser gravado no registrador destino (que e o
barramento result) depende da instrucao que esta sendo executada, conforme denido
na Tabela 5.21.
sinais em result instrucao/obs.
D := (sRESULT controla sadas tri-state
? ULAout operacoes de ULA
: rlm ld
: pc
+
jal
: concat hi,low,const
: mult mul
)
Tabela 5.21: Escolha do resultado.
5.7.3 Controle Microprogramado
A Figura 5.16 mostra o circuito de controle do Mico. A tecnica de controle empregada
no Mico e chamada de microprogramacao porque os sinais de controle de processador sao
gerados a partir de uma memoria de microprograma. Cada posicao desta memoria contem
uma microinstrucao (I) e cada instrucao da linguagem de maquina do Mico e implemen-
tada por uma seq uencia de microinstrucoes, ou uma micro-rotina. O contador pc indexa
a memoria de microprograma e a percorre na seq uencia apropriada para cada instrucao.
A execucao de um programa no Mico e equivalente a uma caminhada pelos estados do
diagrama na Figura 5.9. A cada estado daquele diagrama corresponde uma microinstrucao,
e a cada ramo do diagrama de estados corresponde uma micro-rotina. O microcontrolador
descrito nesta secao e uma implementacao do diagrama de estados, embora esta nao seja
a unica forma, nem talvez a mais eciente.
A memoria de microprograma (rom) e geralmente larga no Mico tem pelo menos 24 bits
de largura e possui algumas centenas de palavras, dependendo da complexidade do con-
junto de instrucoes do processador.
Na implementacao do Mico, a memoria de microprograma e simulada com tres ou quatro
memorias SRAM8K ligadas para compartilhar os enderecos. A cada faixa de enderecos
da rom e associada a micro-rotina que implementa uma instrucao. Como os opcodes
do Mico sao de 4 bits, a divisao obvia e 8K/16, o que resulta em uma faixa de ate 512
microinstrucoes para implementar as operacoes necessarias para completar cada instrucao.
Como esta faixa e larga demais, uma escolha mais razoavel e empregar uma faixa de
32 microinstrucoes/instrucao. Note que o n umero de microinstrucoes reservados para
Captulo 5. O Microprocessador Mico 101
cada instrucao deve ser maior ou igual ao n umero de ciclos necessarios para executar a
instrucao mais demorada, e deve ser uma potencia de 2.
........................................ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
................................................... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
r r r
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . ..................... p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
.................................... .................................... .................................... .................................... ....................................
............................ . . . . . . . . . . . . . . . . . . . . . . . . . .
reset
clr
e4-e0 0
ri/15..12/ e8-e5
ld
rel
ROM
4 x SRAM8K
microPC
eRI
busca
E4..0
Q4-Q0
E8..5
Q8-Q5
........................ ........................
sinais de controle do Mico
a4-a0
a8-a5
Figura 5.16: Controlador do Mico.
A primeira faixa de microinstrucoes corresponde `a fase de busca (opcode=0000) e e imple-
mentada nas 32 posicoes iniciais da memoria de microprograma, embora sejam necessarias,
e usadas, umas poucas microinstrucoes de cada faixa.
Cada microinstrucao consiste de varios campos e cada campo corresponde a um sinal de
controle do processador. Por exemplo, uma possvel codicacao da memoria de micro-
programa do Mico seria aquela mostrada na Figura 5.17. As primeiras microinstrucoes
implementam as acoes necessarias para a busca de uma instrucao, que sao a carga do pi,
um ciclo de leitura na memoria para busca da instrucao, e carga desta instrucao no ri.
Esta seq uencia de acoes e mostrada na Figura 5.17 e na Figura 5.18.
Ao nal do segundo ciclo da busca, ri contem a nova instrucao. Nas primeiras duas mi-
croinstrucoes (B
0
, B
1
) ocorre um ciclo de acesso `a memoria para buscar a parte mais sig-
nicativa da instrucao, e ao nal da fase de busca (B
1
), a nova instrucao esta armazenada
em ri. Apos a busca, a proxima microinstrucao a ser executada e escolhida pelo opcode
da instrucao recem-buscada, que e mostrada como I
64
= E
0
no topo da Figura 5.17.
Na I
1
o sinal eRI e ativado para gravar o opcode da nova instrucao na parte mais sig-
nicativa do pc. No proximo tic do relogio, a seq uencia de microinstrucoes associada
`a instrucao recem-buscada passa a ser executada. Note que o opcode e carregado nos
bits mais signicativos do pc, quando entao a execucao do microprograma salta para o
endereco da primeira microinstrucao (opcode32) da micro-rotina correspondente `a in-
strucao recem-buscada.
Captulo 5. O Microprocessador Mico 102
tempo
campo I
226
I
0
I
1
I
64
comentario
R
1
B
0
B
1
E
0
busca 0 1 1 1 faz PC = 0 ao nal da instrucao
habPC 1 0 1 1 incrementa PC
carPC 1 1 1 1 nao e instrucao de desvio
ePI 0 0 0 1 grava novo endereco no pi
hPI 0 1 1 0 coloca endereco no barramento
eRI 0 0 1 0 grava nova instrucao no ri
eRLM 0 0 0 0 nao e ciclo de leitura
...
wr 1 1 1 1 nao e ciclo de escrita
eVal 1 0 0 1 endereco valido na busca
dVal 1 1 0 1 dado valido para copia-lo no RI
bi 1 0 0 1 sinaliza ciclos de busca
es 1 1 1 1 nao e ciclo de E/S
Figura 5.17: Micro-rotina de busca de instrucoes.
Na ultima microinstrucao de cada instrucao, o sinal busca deve ser ativado para provocar
a busca de uma nova instrucao. No diagrama de tempos da Figura 5.18 e na Figura 5.17,
e mostrada a ultima microinstrucao (I
226
= R
1
) da instrucao que esta completando,
quando e entao disparada a busca pela ativacao do sinal busca. O sinal busca pode ser
ligado `a entrada de inicializacao do pc.
................................... ................................... ................................... ...................................
................................... ...................................
................................. .................................
................................. .................................
................................... ...................................
................................. .................................
................................... ...................................
................................... ...................................
................................. ................................. ................................. ................................. ................................. .................................
................................. ................................. ................................. ................................. ................................. ................................. ................................. ................................. ................................. .................................
................................. ................................. ................................. .................................
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
................................. .................................
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
rel
eRI
busca
RI15..12
E8..0
instrucao anterior
64 65 66 67 68
instrucao corrente
0 1 97
execucao
1 0 226
busca
225
execucao busca
96
execucao
Figura 5.18: Temporizacao do microcontrolador.
Aspectos da Implementacao Ha duas maneiras de se implementar microprogra-
macao, ambas relacionadas com a largura da memoria de microprograma. Com micropro-
grama largo, a memoria de microprograma contem um bit para cada sinal de controle do
processador. Com microprograma estreito, sinais de controle relacionados sao agrupados,
ou codicadas, e os sinais individuais de controle sao gerados por circuitos decodicadores
como o 74138.
Se o n umero de sinais de controle e menor que a largura adequada da memoria de
microprograma, nao ha necessidade de codicacao. Se, por outro lado, o n umero de sinais
Captulo 5. O Microprocessador Mico 103
de controle e excessivamente grande [ (8n + 1)], pode ser necessario que alguns sinais
sejam codicados no microprograma e decodicadores sejam usados para controlar os
componentes.
Exerccios
Ex. 5.16 Dena todos bits da memoria de microprograma que correspondem a sinais de
controle do Mico e escreva o microcodigo para a fase de busca.
Ex. 5.17 Escreva o microcodigo para todas as instrucoes do Mico.
Ex. 5.18 Rene o projeto do pc esbocado na Secao 5.7.3. Os bits mais signicativos
do pc correspondem `a parte mais signicativa do ri. Note tambem que parte dos bits
do pc nao se altera durante a execucao de uma instrucao, enquanto que uma parte dos
bits e incrementada de modo a percorrer a micro-rotina que implementa a instrucao.
Ex. 5.19 Dena o mapeamento na memoria de microprograma das seq uencias de mi-
croinstrucoes para todas as instrucoes do Mico. Note que a busca e implementada nas
primeiras microinstrucoes (opcode=0000).
Ex. 5.20 Compare a complexidade da implementacao do microcontrolador do Mico com
a complexidade de uma maquina de estados implementada com ip-ops. A comparacao
deve ser quanto ao n umero de bits de memoria e n umero de portas logicas necessarias em
cada uma das implementacoes.
5.7.4 Busca Antecipada
O tempo de execucao de um programa num computador e determinado pelo tempo con-
sumido pelas instrucoes que sao efetivamente executadas. O n umero de instrucoes que sao
executadas e diferente do n umero de instrucoes constantes do codigo fonte do programa.
As instrucoes do codigo fonte sao chamadas de instrucoes estaticas porque seu n umero nao
muda em diferentes execucoes do mesmo programa. O n umero de instrucoes dinamicas
pode diferir a cada execucao do programa porque os dados de entrada mudam, ou podem
acontecer erros que necessitam de tratamento, por exemplo.
Para um certo programa p, seu tempo de execucao num computador C e determinado por
tres fatores: (i) o n umero de instrucoes dinamicas executadas, (ii) o n umero de ciclos de
relogio dispendido em cada instrucao, e (iii) a duracao do ciclo de relogio. O n umero de in-
strucoes dinamicas e determinado pelo programador ou pelo compilador que gerou o codigo
de maquina. O n umero de ciclos dispendidos em cada instrucao depende da implementacao
do processador. A duracao do ciclo de relogio depende da implementacao e tambem da
tecnologia de circuitos integrados. A Equacao 5.1 relaciona o tempo de execucao t
p
do
programa p ao n umero de instrucoes I, ao n umero de ciclos por instrucao (CPI) e ao
perodo T do relogio do processador.
t
p
= I CPI T (5.1)
O tempo medio de execucao de uma instrucao depende da freq uencia com que ela ocorre
durante a execucao do programa e do n umero de ciclos necessario para executa-la.
Captulo 5. O Microprocessador Mico 104
Freq uencias tpicas para as instrucoes mais comuns sao mostradas na Tabela 5.22, que
tambem mostra o n umero de ciclos de relogio para completar cada instrucao segundo o
diagrama de estados da Figura 5.9 (pag. 92).
instrucao freq uencia ciclos comentario
ALU 30-35 4 exclui multiplicacoes
mul 0-1 18 implementacao pessimista
ld 20-25 5
st 5-10 5
D 20 3 todos os desvios
j 1-3 3 todos os saltos
Tabela 5.22: Freq uencias tpicas [%] de execucao das instrucoes.
Considere, para ns de exemplo, dois programas p
1
e p
2
que executam instrucoes com as
freq uencias nos dois extremos das faixas indicadas na Tabela 5.22. O n umero medio de
ciclos de relogio (CPI) dispendido na execucao das instrucoes destes programas e com-
putado abaixo. Note que a soma das freq uencias e menor que 100%, e portanto os valores
de CPI estao subestimados pela parcela que multiplica n, que e o complemento dos 100%.
CPI
p
1
= 0, 30 4 + 0 18 + 0, 20 5 + 0, 05 5 + 0, 20 3 + 0, 01 3 + 0, 24n
= 1, 2 + 0 + 1, 0 + 0, 25 + 0, 6 + 0, 03 + 0, 24n
= 3, 08 + 0, 24n
CPI
p
2
= 0, 35 4 + 0, 01 18 + 0, 25 5 + 0, 10 5 + 0, 20 3 + 0, 03 3 + 0, 06n
= 1, 4 + 0, 18 + 1, 25 + 0, 5 + 0, 6 + 0, 09 + 0, 06n
= 4, 02 + 0, 06n
O programa p
1
dispende mais de 3 ciclos por instrucao, enquanto que p
2
dispende aprox-
imadamente 4 ciclos por instrucao no mesmo processador. Estes valores de CPI podem
ser reduzidos, causando uma reducao proporcional no tempo de execucao dos programas,
e portanto melhoria no desempenho do Mico
2
.
Uma tecnica relativamente simples para melhorar o desempenho do Mico e antecipar a
busca da proxima instrucao. Veja o diagrama de estados da Figura 5.9. As instrucoes que
usam a ula dispendem dois ciclos sem usar o barramento de memoria, e estes dois ciclos
poderiam ser usados para buscar a proxima instrucao. Na mesma borda do relogio em
que a instrucao de ula completa, a nova instrucao e carregada no registrador de instrucao
e e decodicada imediatamente. O efeito desta mudanca e fazer com que as instrucoes
de ula completem em dois ciclos ao inves de quatro ciclos neste caso considera-se que os
dois ciclos para a busca da proxima instrucao foram eliminados da execucao da instrucao
de ula.
A implementacao da busca antecipada no Mico e simples. Basta ativar os sinais de controle
do barramento nas duas microinstrucoes que correspondem aos estados exec1 e res1. O CPI
com busca antecipada e CPI
ba
= 2, 48 + 0, 24n, representando um ganho de desempenho
da ordem de 20%, mantidas as demais condicoes.
2
Na disciplina de Arquitetura de Computadores serao estudadas outras tecnicas para reduzir substan-
cialmente o CPI.
Captulo 5. O Microprocessador Mico 105
A busca antecipada nao e viavel nas instrucoes de saltos ou desvios porque nao ha tempo
para completar a busca. Alem disso, nas instrucoes de desvio o endereco de destino deve ser
computado em funcao da condicao de desvio. No caso das instrucoes de acesso `a memoria,
a busca antecipada nao e possvel porque o barramento de memoria ca ocupado para o
acesso `a memoria.
Harvard versus Princeton O Mico usa um unico barramento para a busca de in-
strucoes e para acessos a dados. Esta organizacao e chamada de Arquitetura de Princeton
por causa do computador desenvolvido pelo grupo de Von Neumann na Universidade de
Princeton, entre 1944-46. Na mesma epoca, Howard Aiken estava trabalhando em um
computador que empregava memorias separadas para instrucoes e para dados, na Univer-
sidade de Harvard. Maquinas que empregam dois barramentos distintos para acessos `a
instrucoes e a dados sao chamados de maquinas com Arquitetura de Harvard.
Do ponto de vista da busca antecipada, a arquitetura Harvard permite que ocorra a
busca de uma instrucao ao mesmo tempo em que instrucoes ld e st sao executadas. Isso
e possvel porque os barramentos de dados e de instrucoes operam independentemente
atraves de dois conjuntos completos de sinais de controle, linhas de dados e linhas de
enderecos.
Exerccios
Ex. 5.21 O que e necessario acrescentar ao registrador de instrucao para efetuar a busca
antecipada de instrucoes?
Ex. 5.22 Qual o custo, em termos de circuitos, para adicionar mais um barramento ao
Mico, transformando-o numa arquitetura de Harvard?
Ex. 5.23 Qual o ganho de desempenho na busca antecipada num processador com ar-
quitetura Harvard quando comparado com o Mico? Calcule o CPI dos programas p
1
e p
2
considerando que a busca antecipada tambem ocorre durante as instrucoes de acesso `a
memoria.
5.8 Espacos de Enderecamento
Sao tres as maneiras de alocar enderecos aos dispositivos perifericos ao processador:
(i) perifericos mapeados como memoria, (ii) perifericos mapeados em espaco de en-
derecamento de Entrada/Sada (E/S), e (iii) hbridos dos dois anteriores.
E/S como memoria Quando perifericos sao mapeados como memoria, estes podem ser
acessados atraves das instrucoes ld e st. Neste caso, o projetista do computador deve
reservar uma faixa de enderecos `a qual serao alocados os enderecos dos perifericos. Do
ponto de vista da programacao de um sistema operacional esta e a melhor opcao porque
um periferico e representado por uma estrutura de dados e o codigo que trata dos eventos
relacionados ao dispositivo pode ser (quase) todo escrito numa linguagem como C. O
Captulo 7 contem alguns exemplos simples de tratadores de dispositivos.
Captulo 5. O Microprocessador Mico 106
E/S como E/S Se os perifericos sao mapeados num espaco de enderecamento sepa-
rado do espaco de memoria, o processador deve prover instrucoes especiais para acesso ao
espaco de enderecamento de Entrada/Sada. Neste caso, os perifericos devem ser acessa-
dos atraves de instrucoes de E/S como in e out e nao e possvel ao codigo que acessa os
dispositivos representar os registradores do dispositivo como componentes de uma estru-
tura de dados. Os enderecos dos registradores devem ser explicitados no codigo, o que
complica sobremaneira o porte deste codigo para outros processadores, ou para disposi-
tivos ligeiramente diferentes. Os microprocessadores da Intel (8085, 8086) e Zilog (Z80)
empregam esta forma de mapeamento de perifericos.
Tipicamente, o espaco de enderecamento de E/S e menor que o espaco de memoria, porque
o n umero de perifericos e menor que o de posicoes de memoria e as instrucoes de E/S
possuem modos de enderecamento muito simples. Quando o processador executa uma
instrucao de E/S, um sinal externo e ativado para informar aos circuitos de decodicacao de
endereco que o ciclo de barramento e um ciclo de E/S e nao um ciclo de acesso `a memoria.
Mapeamento hbrido Os computadores pessoais baseados em processadores mais re-
centes da Intel (a partir do 80486), empregam os dois modos de mapeamento. Alguns
registradores dos perifericos devem ser acessados atraves de instrucoes de E/S, enquanto
que areas para transferencia de dados, tais como las ou armazenadores de entrada ou de
sada, sao mapeadas em memoria.
5.9 Perifericos
A Figura 5.19 mostra um diagrama de blocos com um computador equipado com
8K palavras de ROM, 16K palavras de RAM e dois perifericos, uma porta paralela e
uma interface serial.
O sistema de Entrada e Sada do Mico emprega enderecamento mapeado como memoria
e portanto os dispositivos perifericos sao acessados como se fossem circuitos de memoria,
embora estas memorias tenham um comportamento que difere de memoria propriamente
dita. As faixas de enderecos destes componentes sao denidas na Tabela 5.23.
Exerccios
Ex. 5.24 Escreva uma seq uencia curta de codigo que permita determinar o valor corrente
do PC.
Ex. 5.25 Suponha que o circuito do Mico deva ser modicado de forma a que todas as
instrucoes executem em dois ciclos de relogio. No primeiro ciclo, a instrucao e buscada,
e no segundo ciclo e executada. Suponha que o tempo de acesso `a memoria e igual ao
tempo necessario para produzir o resultado de uma soma. Como e determinado o perodo
mnimo do relogio do processador? Justique cuidadosa e concisamente sua resposta.
Ignore multiplicacoes.
Ex. 5.26 Mostre como implementar a instrucao addm, denida na Tabela 5.24. Descreva
o comportamento do processador durante a execucao desta instrucao atraves de um novo
ramo da maquina de estados. Indique claramente quais sinais de controle sao ativos em
Captulo 5. O Microprocessador Mico 107
cada estado.
t
t
r
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
t
r
r
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
t
r
r
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
t
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
t
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
t
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
t
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
r
r
r
t
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
..
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
MICO
eVal
Ender
dVal
Dados
wr
cs
end
dVal
dados
ROM
csROM
dados
dVal
wr
RAM
dados
dVal
wr
RAM
dados
wr
dVal
Pparal
end
cs
csRAM2
end
cs
csRAM1
csPar
end
cs
dados
wr
dVal
Serial
end
cs
csSer

i[15,8]
E
i
= 1
csROM
csRAM1
csRAM2
csM3
csM4
csM5
csM6
csM7
e1
csPar
csSer
e2
e1
E15..E13
E7..E5
Figura 5.19: Diagrama de blocos de um computador com o Mico.
Captulo 5. O Microprocessador Mico 108
sinal inicial nal descricao
csROM 0000 1f ROM com codigo
csRAM1 2000 3f RAM - heap
csRAM2 4000 5f RAM - pilha
csM3 6000 7f nao usado
csM4 8000 9f nao usado
csM5 a000 bf nao usado
csM6 c000 df nao usado
csM7 e000 fe nao usado
csPar 00 1f porta paralela
csSer 20 3f interface serial
csP2 40 5f nao usado
csP3 60 7f nao usado
csP4 80 9f nao usado
csP5 a0 bf nao usado
csP6 c0 df nao usado
csP7 e0 nao usado
Tabela 5.23: Mapa de enderecamento
Ex. 5.27 Deseja-se aumentar a exibilidade do Mico atraves da adicao de instrucoes
que permitam a manipulacao de bytes. Para tanto, sao necessarias versoes para byte das
instrucoes ld e st, alem de uma instrucao similar a const que permita carregar uma
constante de 8 bits em um registrador, mas sem estender o sinal.
a) Dena cuidadosamente a semantica das instrucoes lb, sb, constb, respectivamente
load-byte, store-byte, e load-byte imediato.
b) Desenhe dois diagramas de tempo, um para uma carga do byte no endereco 1024
(lb r1,0(r2), r2=1024), e outro para uma atualizacao do byte no endereco 1025
(sb r4,1(r2)).
c) Desenhe um diagrama de blocos do sistema de memoria do Mico mostrando claramente
as modicacoes necessarias para a execucao das instrucoes lb e sb.
d) Quais os problemas com o acesso a palavras de 2 bytes instrucoes ld e st para 16 bits
que podem ocorrer por causa das modicacoes necessarias para as instrucoes lb e sb?
instrucao semantica descricao
lb $a,desl($b) ? load-byte (Ex. 5.27)
sb $a,desl($b) ? store-byte (Ex. 5.27)
constb $a,N ? byte-imediato (Ex. 5.27)
ldm $a, [$b(desl)] $a:= M[M[$b+desl]] load-indirect (Ex. 5.28)
addm $a, desl($b) $a:= $a + M[($b+desl)] add-memory indirect (Ex. 5.26)
lds ? load-scaled (Ex. 5.31)
sds ? store-scaled (Ex. 5.31)
Tabela 5.24: Instrucoes complexas adicionais.
Ex. 5.28 Deseja-se adicionar um novo modo de enderecamento aos modos disponveis
Captulo 5. O Microprocessador Mico 109
no Mico. O novo modo e chamado de indireto a memoria, e nele o endereco efetivo e
obtido a partir de um indexador armazenado em memoria. A instrucao ldm esta denida
na Tabela 5.24.
a) Desenhe um diagrama de blocos do Mico mostrando claramente as adicoes necessarias
para a execucao da instrucao ldm.
b) Desenhe um diagrama de estados desta instrucao, indicando claramente as operacoes
efetuadas em cada estado.
Ex. 5.29 Existem varias condicoes passveis de ocorrer durante a execucao de um pro-
grama que podem indicar situacoes anormais, geralmente decorrentes de erros de pro-
gramacao. Tres possibilidades sao (i) uma tentativa de acesso `a um endereco de memoria
no qual nao existe memoria RAM, (ii) a busca de uma instrucao em endereco onde nao
existe memoria ROM, e (iii) a tentativa de executar uma instrucao com opcode invalido.
Estas condicoes sao chamadas de excecoes e sao similares a interrupcoes, mas ao contrario
daquelas, sao eventos internos ao processador
3
.
a) Descreva os mecanismos para a deteccao dos tres tipos de excecao.
b) Indique as alteracoes necessarias nos circuitos de dados e de controle para que seja
possvel o tratamento das excecoes.
c) Indique (em pseudo-codigo) as acoes do microcodigo que trata as excecoes.
Ex. 5.30 Para as tres instrucoes abaixo, (i) dena a sintaxe da instrucao, (ii) mostre
uma codicacao eciente para a mesma, e (iii) mostre como implementa-la, indicando o
circuito e as ligacoes necessarias para inclu-lo no circuito de dados do Mico.
a) setStatus, liga UM dos 4 bits do registrador de status;
b) clrStatus, desliga UM dos 4 bits do registrador de status; e
c) leStatus, copia o conte udo do registrador de status para um registrador visvel.
Ex. 5.31 Mostre como implementar duas novas instrucoes, lds e e sts, que implemen-
tam um novo modo de enderecamento, chamado de base-deslocamento escalado e denido
como E
ef
= regBase + 2
escala
desloc. A escala e um n umero positivo de 2 bits, e o
deslocamento um n umero de 4 bits representado em complemento de 2.
a) Dena a sintaxe destas instrucoes;
b) Dena uma codicacao eciente para as mesmas; e
c) Mostre como implementa-las, indicando o circuito que computa o endereco efetivo e as
ligacoes necessarias para inclu-lo no circuito de dados do Mico.
3
Outras excessoes importantes sao overow e divisao por zero.
Captulo 5. O Microprocessador Mico 110
................... . . . . . . . . . . . . . . . . .
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
p p p p p p p p p p p p p p p p p ppppppppppppppppppp ppppppppppppppppppp p p p p p p p p p p p p p p p p p
....................................
....................................
................... . . . . . . . . . . . . . . . . .
p p p p p p p p p p p p p p p p p ppppppppppppppppppp ppppppppppppppppppp p p p p p p p p p p p p p p p p p
....................................
B
A
RI
PC
STAT
PI
ENDER
REM RLM RE
DADOS
RESULT
r
r
r
r
r r
r
r
r
r
ppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppp
............... . . . . . . . . . . . . .
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppppp
............... . . . . . . . . . . . . .
.......... .......... .......... ..........
.......... .......... .......... ..........
ppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p pp p p p p p p p p p p p p p p p p p p ppppppppppppppppppppppppppppppppppppppppp
. . . . . . . . . . . . . ...............
. . . . . . . . . . . . . .. . . . . . . . . . . . . .
. . . . . . . . . . . . . .. . . . . . . . . . . . . .
oper
ULAout
regOpDest
CONCAT MULT
0
1
selB
regOp2
$0
$7
................... . . . . . . . . . . . . . . . . .
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
p p p p p p p p p p p p p p p p p ppppppppppppppppppp ppppppppppppppppppp p p p p p p p p p p p p p p p p p
....................................
....................................
................... . . . . . . . . . . . . . . . . .
p p p p p p p p p p p p p p p p p ppppppppppppppppppp ppppppppppppppppppp p p p p p p p p p p p p p p p p p
....................................
B
A
RI
PC
STAT
PI
ENDER
REM RLM RE
DADOS
RESULT
r
r
r
r
r r
r
r
r
r
ppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppp
............... . . . . . . . . . . . . .
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppppp
............... . . . . . . . . . . . . .
.......... .......... .......... ..........
.......... .......... .......... ..........
ppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p pp p p p p p p p p p p p p p p p p p p ppppppppppppppppppppppppppppppppppppppppp
. . . . . . . . . . . . . ...............
. . . . . . . . . . . . . .. . . . . . . . . . . . . .
. . . . . . . . . . . . . .. . . . . . . . . . . . . .
oper
ULAout
regOpDest
CONCAT MULT
0
1
selB
regOp2
$0
$7
Captulo 6
Sistemas de Memoria
Um sistema de memoria contem os circuitos integrados de memoria (que e a memoria pro-
priamente dita), circuitos de controle, barramentos e interfaces entre seus componentes.
Um barramento e um conjunto de os que transporta sinais que sao funcionalmente rela-
cionados. A interface entre dois subsistemas consiste de um conjunto de sinais e de um
protocolo que dene o relacionamento logico e temporal entre os sinais da interface de
forma a sincronizar as interacoes dos subsistemas. Os circuitos de controle contem im-
plementacoes dos protocolos e gerenciam a comunicacao entre os varios componentes. As
funcoes destes subsistemas sao detalhadas nas secoes que seguem.
6.1 Implementacao de Sistemas de Mem oria
Considere o sistema de memoria, que chamaremos de projeto basico, de um computador
pessoal com capacidade de 128Mbytes, barramento de dados com largura de 32 bits, igual
`a largura de palavra do processador. A memoria e implementada com CIs de memoria com
64Mbits, organizados como 8Mx8. O diagrama na Figura 6.1 mostra uma implementacao
muito simplicada deste sistema. Em especial, sao mostrados apenas os sinais da interface
do processador, enquanto que os sinais de controle dos CIs de memoria (ras e cas) sao
omitidos. Na discussao que se segue, por dados entenda-se dados ou instrucoes, ja que do
ponto de vista do sistema de memoria, nao ha diferencas signicativas entre aqueles.
No exemplo em questao, sao necessarios 16 CIs de 8Mbytes para totalizar os 128Mbytes
de capacidade total. O sistema e organizado em quatro grupos de 4 CIs e cada grupo tem
largura de 32 bits (D00-D31), e cada um dos 4 grupos armazena 8M palavras de 32 bits.
Os grupos comportam as posicoes de memoria das faixas listadas na Tabela 6.1. Note
que os bits E23 e E24, qualicados pelo sinal eVal, selecionam o grupo referenciado qual
o log
2
(128M)?.
grupo cs faixa de enderecos de bytes [hexa]
0 cs0 0000 0000 a 007f
1 cs1 0080 0000 a 00
2 cs2 0100 0000 a 017f
3 cs3 0180 0000 a 01
Tabela 6.1: Faixas de endereco dos grupos de CIs.
111
Captulo 6. Sistemas de Memoria 112
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.........................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.........................................................
t t t t
t t t
t t t t
t t t t
t
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
D31-00
E00-22
grupo-2
grupo-3
D31-00
E00-22
grupo-0
grupo-1
eVal
E24
E23
en
E D
wr oe cs
wr rd cs0
D31-24
E D
wr oe cs
wr rd cs0
D23-16
E D
wr oe cs
wr rd cs0
D15-08
E D
wr oe cs
E D
wr oe cs
E D
wr oe cs
D15-08 D23-16 D31-24
E D
wr oe cs
rd cs2 wr
E D
wr oe cs
rd cs2 wr
E D
wr oe cs
rd cs2 wr
E D
D07-00
wr oe cs
E D
wr oe cs
rd cs2
D07-00
wr
D31-24 D23-16 D15-08
E D
wr oe cs
E D
wr oe cs
E D
wr oe cs
D31-24 D23-16 D15-08
E D
D07-00
wr oe cs
E D
wr oe cs
rd cs0
D07-00
wr
dVal
rd
WR
WR
wr
dVal
cs1 wr rd cs1 wr rd cs1 wr rd cs1 wr rd
cs3 wr rd cs3 wr rd cs3 wr rd cs3 wr rd
cs0
cs1
cs2
cs3
Figura 6.1: Projeto basico do sistema de memoria.
6.1.1 Sistema de Mem oria com Referencias Fracionarias
Os processadores com palavras mais largas que um byte possuem instrucoes que permitem
a atualizacao (STore) ou a carga (LoaD) de fracoes da palavra basica. Assim, um proces-
sador de 32 bits como o MIPS possui quatro versoes das instrucoes load e store, com
tamanhos de 32 bits (load word LW), 16 bits (load half: LH), 8 bits (load byte: LB) e
64 bits (load double: LD). Para efetuar referencias fracionarias, o processador informa ao
sistema de memoria qual a largura da referencia. Dois sinais adicionais na interface de
memoria, r0 e r1, qualicam e denem o tipo de referencia, como indicado na Tabela 6.2.
Captulo 6. Sistemas de Memoria 113
instr #bytes r1,r0 E02-E01-E00
LWord 4 00 0,100
LHalf 2 01 0,10,10
LByte 1 10 0,10,10,1
LDouble 8 11 000
Tabela 6.2: Qualicadores de referencias `a memoria.
Para simplicar a interface de memoria, e aumentar a velocidade das transferencias, a ar-
quitetura do processador pode proibir referencias nao-alinhadas. Uma referencia a palavra
e alinhada se o endereco de cada um dos quatro bytes da palavra compartilham todos os
bits de endereco exceto E01-E00. Posto de outra forma, uma referencia `a palavra que reside
no endereco E e alinhada se E%4 = 0. Da mesma forma, referencias a meias-palavras ou
a palavras duplas sao alinhadas se Eh%2 = 0, e Ed%8 = 0, respectivamente. Isso implica
em que a palavra-dupla no endereco 1024 contenha 2 palavras (em quais enderecos de
palavra?), 4 meias-palavras (em quais enderecos de meia palavra?) e 8 bytes (em quais
enderecos de byte?).
No projeto basico da pagina 112 a unidade de acesso `a memoria e uma palavra de 32 bits
e portanto 25 bits de endereco sao usados para escolher uma palavra dentre 32M palavras.
Num sistema de memoria como o do MIPS no qual cada byte da memoria e enderecado
individualmente sao necessarios 27 bits para selecionar um dentre 128Mbytes.
A Figura 6.2 (pag. 114) mostra um diagrama de tempo com tres referencias `a mesma
regiao da memoria, sendo uma referencia `a palavra no endereco 0x8000, outra ao byte no
endereco 0x8001, e a terceira `a meia-palavra no endereco 0x8002. Note que os sinais r1,r0
identicam a largura da referencia e que os quatro sinais dVal
i
permitem selecionar as
parcelas da largura correta. Os sinais r1,r0 e dVal
1..4
sao gerados a partir da instrucao que
dene a largura do acesso e dos bits E00-E01 do endereco. Os bits E02-E24 selecionam
uma palavra dentre 8M, e os bits E25-E26 selecionam um dos quatro grupos de 8M.

E necessaria uma convencao que dena a posicao das fracoes nas palavras. A convencao do
processador MIPS e big endian: o byte de endereco xxxx00 esta na posicao mais signicativa
da palavra (big end). Assim, o endereco de uma palavra e o endereco do byte mais signi-
cativo, conforme mostra a Tabela 6.3. Os processadores da famlia x86 sao little endian
e a posicao do byte em xxxx00 esta na posicao menos signicativa (little end).
ender. de bytes
palavra correspondentes
0 0 1 2 3
1 4 5 6 7
Tabela 6.3: Posicoes de bytes no enderecamento big endian.
Exerccios
Ex. 6.1 Desenhe os diagramas de tempo com todos os sinais da interface do processador,
para os ciclos de leitura no grupo 1 e de escrita no grupo 3, para os valores da Tabela 6.1.
Captulo 6. Sistemas de Memoria 114
................................. ................................. ................................. ................................. ................................. .................................
..................... ..................... ............... ............... ..................... ..................... ............... ............... ..................... ..................... ............... ...............
..................... ..................... ............... ............... ..................... ..................... ............... ............... ..................... ..................... ............... ...............
..................... ..................... ............... ............... ..................... ..................... ............... ...............
..................... ..................... ............... ............... ..................... ..................... ............... ...............
..................... ..................... ............... ............... ..................... ..................... ............... ...............
..................... ..................... ............... ...............
................................. .................................
..
................................. ................................. ................................. .................................
..
................................. ................................. ................................. .................................
..
................................. ................................. ................................. .................................
..
r1,r0
E02-E26
eVal
8000 8001 8002
01 10 00
dVal3
D07-D00
dVal2
D15-D08
dVal1
D23-D16
dVal0
D31-D24 44
55
33
00
55
33
00
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
palavra
0x44553300
byte
0x55
meia-palavra
0x3300
Figura 6.2: Acesso a palavra (0x44553300), byte (0x55) e meia-palavra (0x3300).
Ex. 6.2 Adapte o sistema de memoria do projeto basico para acomodar acessos fra-
cionarios alinhados. Os sinais rd e wr deverao ser ativados somente nos CIs que acomodam
a fracao solicitada pelo processador. Voce deve projetar um circuito de decodicacao de
enderecos, e tipos de acessos, que gera 8 novos sinais (4 rds e 4 wrs) a partir de r1-r0,
dVal e wr.
Ex. 6.3 Mesmo que no exerccio anterior, porem permitindo acessos nao-alinhados. Por
exemplo, considere um acesso a uma meia-palavra com um byte na palavra 1024 e o outro
byte na palavra 1025. Este comportamento e similar ao barramento dos processadores da
famlia x86.
6.1.2 Sistema de Mem oria com Capacidade Conguravel

E interessante que um computador possa ser equipado com mais ou menos capacidade
de memoria, em funcao de seu custo e/ou aplicacao. Isso implica em que o circuito de
decodicacao de enderecos deve ser projetado de forma a acomodar mais ou menos CIs
de memoria (de 1 a 4 grupos, por exemplo), bem como a CIs de diferentes capacidades
(2Mx8, 8Mx8, 32Mx8, por exemplo). O barramento de enderecos deve conter todas as
linhas necessarias para indexar 2M (2
21
), 8M (2
23
) ou 32M (2
25
) palavras. O decodi-
cador de enderecos deve ser capaz de gerar os sinais de selecao de grupos com todos os
tamanhos previstos. Com os dados acima, o sistema de memoria poderia ser congurado
Captulo 6. Sistemas de Memoria 115
com as capacidades listadas na Tabela 6.4. Normalmente, os sistemas sao projetados para
acomodar faixas menores que aquelas listadas na Tabela 6.4.
CIs tamanho capacidade
4 2Mx8 8 Mbytes
16 2Mx8 32 Mbytes
4 8Mx8 32 Mbytes
4 32Mx8 128 Mbytes
16 32Mx8 512 Mbytes
Tabela 6.4: Conguracoes de memoria com diferentes capacidades.
Exerccios
Ex. 6.4 Projete o circuito de decodicacao de enderecos para acomodar CIs de 8Mx8 e
32Mx8, em grupos de 4 CIS, com um ou dois grupos. Use chaves para fazer as ligacoes
das linhas de endereco apropriadas ao circuito de decodicacao.
Ex. 6.5 Repita o exerccio anterior mas use seletores no lugar das chaves, e registradores
para manter os seletores interligando os sinais corretos. Os registradores tem a funcao das
alavancas e molas das chaves do exerccio acima. Quais sao as combinacoes de estados dos
registradores que geram enderecamento correto?
Ex. 6.6 Escreva um programa que permita detectar a quantidade de memoria instalada na
maquina e que grave os valores apropriados nos registradores do circuito de decodicacao
de enderecos.
6.2 Barramentos
As se coes anteriores discutem o projeto de sistemas de memoria e apresentam algumas
das tecnicas que sao empregadas para aumentar o desempenho do sistema de memoria.
Esta secao introduz tecnicas de projeto de barramentos que podem ser empregadas para
reduzir o custo do projeto e/ou aumentar a desempenho da transferencia de dados entre
processador e memoria.
6.2.1 Barramento Multiplexado
O barramento descrito na Secao 4.2 contem conjuntos de linhas separadas para dados e
enderecos. Em aplicacoes de baixo custo, nas quais o mais importante nao e alto desem-
penho, algumas implementacoes empregam um unico conjunto de linhas para transportar
dados e enderecos. Os sinais eVal e dVal indicam `a memoria e perifericos os instantes em que
as linhas contem enderecos ou dados. Este tipo de barramento e chamado de barramento
multiplexado porque a informacao de endereco ou dado e multiplexada no tempo sobre um
mesmo conjunto de sinais. A Figura 6.3 mostra a interface do circuito de memoria com o
barramento multiplexado.
Captulo 6. Sistemas de Memoria 116
. . . . . . . . . . . . . . . . . . . . ..................... r
t
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
............................ . . . . . . . . . . . . . . . . . . . . . . . . . . eVal
E/D
Dval
D00-Dnn
dVal
memoria
Eval
Q
N
E00-Enn
D
N
Figura 6.3: Diagrama de blocos de um barramento multiplexado.
O diagrama de tempos na Figura 6.4 mostra um ciclo de memoria num barramento mul-
tiplexado. O circuito de memoria deve conter um registrador para manter o endereco
efetivo durante todo o ciclo. A fase de enderecamento e indicada por eVal ativo. Na borda
descendente de eVal, o endereco efetivo deve ser capturado pelo circuito de memoria e
gravado no registrador de endereco. A sada deste registrador e usada para enderecar os
CIs de memoria.
................................... ...................................
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . . . . . ................... ................... . . . . . . . . . . . . . . . . .
................................... ...................................
................... ................... ............................ ........................ ........................ ........................ ........................ ...................
. . . . . . . . . . . . . . . . . ................... ................... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ................... ................... . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
fase de enderecamento
eVal
E/D
dVal
tempo de acesso `a memoria
fase de transferencia
Figura 6.4: Diagrama de tempo de barramento multiplexado.
Durante a fase de enderecamento o sinal dVal ca inativo e isso impede que a memoria
tente capturar, ou alterar, os sinais nas linhas de endereco/dados. Durante a fase de
enderecamento, o circuito de memoria se comporta apenas como o registrador de endereco.
Durante a fase de transferencia de dados, o circuito de memoria e comporta como um
circuito de memoria. Entre as fases de enderecamento e de transferencia de dados, os
sinais nas linhas E/D do barramento sao invalidos e possivelmente cam em tri-state.
Exerccios
Ex. 6.7 Suponha que o Mico suporta um sistema de interrupcoes como o descrito na
Secao 7.1, com 3 linhas de pedido e 1 linha de aceitacao. Suponha ainda que o Mico e
vendido em um encapsulamento de 48 pinos e que todos os 48 pinos sao utilizados (16 para
dados, 16 para enderecos, 6 para controle, 4 para interrupcoes, e seis para alimentacao
(3 para VCC, e 3 para GND). (a) Mostre como implementar uma versao do Mico com
barramento multiplexado, de forma a que seja possvel encapsula-lo em 28 pinos, empre-
gando somente dois pinos para alimentacao. (b) Desenhe diagramas de tempo detalhados
Captulo 6. Sistemas de Memoria 117
mostrando como o seu projeto modicado efetua os ciclos de barramento. Desenhe tres
diagramas, para os ciclos de busca, leitura e escrita.
6.2.2 Barramento com Sobreposicao de Fases
O barramento multiplexado e de baixo custo e tambem de baixo desempenho porque nao ha
nenhuma sobreposicao no tempo entre as duas fases. Num barramento nao-multiplexado
e possvel uma certa sobreposicao entre as fases de enderecamento e de transferencia. Por
exemplo, num ciclo de escrita, o processador dispoe dos dados no mesmo momento em
que dispoe do endereco efetivo. Assim, num ciclo de escrita o processador pode emitir,
ao mesmo tempo, o endereco dos dados e os dados que devem ser armazenados. Se o
circuito de memoria for projetado para tirar proveito disso, pode ocorrer sobreposicao
completa entre as duas fases. Basta que exista um registrador para capturar os dados
assim que estes sejam disponibilizados pelo processador, como mostrado na Figura 6.5. O
controlador do circuito de memoria entao se responsabiliza por completar a escrita sem
necessitar de interferencia pelo processador.
r
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
r
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
................................. ...................................
................................... ...................................
................................... ...................................
................................. ...................................
................................... ...................................
. . . . . . . . . . . . . . . . . ................... ................... . . . . . . . . . . . . . . . . .
................................. .................................
................................. .................................
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...................... . . . . . . . . . . . . . . . . . . . .
...................... . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . . . . . ................... ................... . . . . . . . . . . . . . . . . .
tempo de acesso `a memoria
fase de transferencia
eVal
dVal
E00-Enn
D00-Dnn
E00-Enn
D00-Dnn
Dval
WR
dVal
WR
D00-Dnn
E00-Enn
eVal
fase de enderecamento
Eval
memoria
Q D
D Q
ciclo de escrita
Figura 6.5: Barramento com sobreposicao de fases.
Note que o tempo de acesso `a memoria permanece o mesmo mas o tempo em que o
barramento ca ocupado pela transacao e mais curto, o que reduz o tempo medio de
acesso `a memoria.
Captulo 6. Sistemas de Memoria 118
6.2.3 Barramento Assncrono
Os barramentos discutidos nas secoes anteriores sao chamados de barramentos sncronos
porque todas as transicoes nos sinais de controle ocorrem sincronamente ao relogio do pro-
cessador. Por exemplo, o processador e que decide quando os dados estarao disponveis
no barramento porque o sinal dVal e ativado um ou dois ciclos apos a ativacao do sinal eVal.
Existem situacoes nas quais a estrita sincronia entre as acoes no barramento nao e de-
sejavel, por exemplo quando se deseja interligar alguns perifericos de baixo custo a um
processador de alto desempenho. Neste caso, a faixa das velocidades de operacao dos
dispositivos ligados ao barramento pode ser ampla, variando da memoria que responde
dentro de uns poucos ciclos do relogio do processador, ate os perifericos mais lentos que
respondem apos dezenas de ciclos. Neste caso, e conveniente projetar o sistema com
um barramento assncrono cujo comportamento acomoda naturalmente componentes com
diferentes velocidades de operacao.
Considere a transferencia de um endereco entre o processador e um periferico lento. O
processador emite o endereco e informa a todos os dispositivos no barramento que o
endereco e valido ativando o sinal ePto ou endereco pronto. Os dispositivos iniciam a
decodicacao do endereco e o dispositivo mais lento e o ultimo a detectar que o endereco
e o seu proprio. Este ativa entao o sinal eAct, ou endereco aceito, e amostra os bits do
endereco que lhe sao relevantes. Quando o processador percebe que o endereco foi aceito
(eAct=0) este encerra a transferencia desativando o sinal ePto. A Figura 6.6 mostra um
diagrama de tempos com duas transacoes de enderecamento, uma com um dispositivo que
responde rapidamente, e a outra com um dispositivo lento.
. . . . . . . . . . . . . . . . . ................... ................... . . . . . . . . . . . . . . . . .
.......
.......
.......
.......
.......
.......
.......
.......
.......
.......
.......
.......
.......
.......
...
................... ...................
.......
.......
.......
.......
.......
.......
.......
.......
.......
.......
.......
.......
.......
.......
...
................................... ................................... ................................... ...................................
........................ ........................ ................... ...............
................................... ................................... ................................... ...................................
.......
.......
.......
.......
.......
.......
.......
.......
.......
.......
.......
.......
.......
.......
...
.......
.......
.......
.......
.......
.......
.......
.......
.......
.......
.......
.......
.......
.......
...
. . . . . . . . . . . . . . . . . ................... ................... . . . . . . . . . . . . . . . . .
ePto
E
eAct
.
.
. . .
.
.
.
. ..
.
.
.
.
. .
.
.
.
.
...
.
.
.
.
. . .
.
.
.
...
.
.
.
.
. .
.
.
.
.
...
.
.
.
.
. . .
.
.
.
...
.
.
.
. . .
.
.
.
...
.
.
.
.
.
.
.
.
.
.
.
.
.
..
.
.
.
.
.
.
....................................
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
..
.
.
.
.
.
.
.
.
................... . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
................... . . . . . . . . . . . . . . . . .
........................ .....................
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
..
.
.
.
.
.
.
.
.
................... . . . . . . . . . . . . . . . . .
.....................................
.
.
.
.
.
.
................... . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
................... . . . . . . . . . . . . . . . . .
transacao rapida
3
2 2
3
transacao lenta
1 1
Figura 6.6: Diagrama de tempo da transferencia de endereco.
O dispositivo que inicia a transacao e chamado de mestre e o dispositivo que responde aos
comandos do mestre e o escravo. As linhas pontilhadas no diagrama da Figura 6.6 indicam
os tres eventos relevantes da transacao: (1) o mestre inicia a transacao, (2) o escravo
responde que vai participar da transacao, e (3) o mestre informa que detectou a resposta
do escravo. Estes tres eventos garantem que os dois participantes da transacao estao
sincronizados apos o terceiro evento. A Figura 6.7 contem as maquinas de estado que
denem o comportamento do mestre e o do escravo.
A transacao de enderecamento e uni-direcional porque e (sempre) o processador que emite
o endereco e portanto neste barramento os perifericos se comportam como escravos
1
. No
barramento de dados a situacao e mais complicada porque num ciclo de escrita o pro-
cessador e quem fornece o dado, enquanto que num ciclo de leitura um periferico ou a
1
Em sistemas que contem um controlador de acesso direto `a memoria (ADM, veja Secao 6.4.1), este
dispositivo tambem se comporta como mestre no barramento de enderecos.
Captulo 6. Sistemas de Memoria 119
memoria e quem fornece o dado ao processador. Assim, todos os dispositivos ligados ao
barramento de dados que permitem escritas e leituras devem ser capazes de se comportar
como mestre e como escravo.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...............................................................................................................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...............................................................................................................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...............................................................................................................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...............................................................................................................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...............................................................................................................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...............................................................................................................................................
....................................
....................................
....................................
....................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
................... . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . ...................
. .. .. . .. . . .. . . .. . . . .. . . . .. . . . .. . . .. . . .. . . .. . .. . .. . .. . .. . .. .. . .. .. . .. . .. . . . . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . . .. . .. . . .. . .. . .. . .. . .. . .. . .. . . .. . . .. . . .. . . .. . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .
. . . . . . .
.......
......................................................................................................................................................................................................................................................................................................
................... . . . . . . . . . . . . . . . . .
............................................................................................................................ . .. .. .. .. .. .. .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . . .. . . .. . . .. . . .. . .. . . . .
. . . . . . . . . . . . . . . . . ...................
............................................................................................................................. . .. .. .. .. .. .. .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . . .. . . .. . . .. . . .. . .. . . . .
. . . . . . . . . . . . . . . . . ...................
. .. .. .. . .. . .. . .. . .. . .. .. .. .. .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. .. .. .. .. .. . .. .. .. . .. . .. . .. .. .. .. .. .. .. . .. . .. . .. . .. . .. . .. . .. . ........................................................................................ ................... . . . . . . . . . . . . . . . . .
...............................................................................................................................................................................................................................................................................................................................................................................
.......
. . . . . . .
. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . .. . . . .. . . . .. . . . .. . . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . .. . . .. . . .. . . .. . .. . .. . .. . .. . .. . .. . .. .. .. .. .. . .. . .. . .. . .. . .. . . .. . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . .. . . . . . . .
. . . . . . . . . . . . . . . . . ...................
. .. .. . .. . .. . .. . .. . .. . .. . .. .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. .. .. .. .. .. .. .. .. . .. . .. .. .. .. .. .. .. .. . .. .. . .. . .. . .. . .. . .. . ...................................................................................... ................... . . . . . . . . . . . . . . . . .
ePto
ePto
eAct
inic
espera
inic
mestre escravo
eAct
ePto
espera
eAct
emite
endereco
ePto
endereco
armazena
ePto
ePto
eAct
Figura 6.7: Maquinas de estado do barramento de endereco, de mestre e escravo.
A Figura 6.8 mostra um diagrama de tempos com quatro transacoes, duas de en-
derecamento, uma de escrita e uma de leitura. Na transacao de escrita o processador
e o mestre do barramento de dados alem de ser o mestre no barramento de endereco,
enquanto que na transacao de leitura o processador e escravo no barramento de dados
apesar de ser o mestre do barramento de endereco. A maquina de estado completa do
processador e mostrada na Figura 6.9.
................... ...................
................................... ................................... ................................... ...................................
................................... ................................... ................................... ...................................
........................ ........................ ................... ...............
..................... ..................... ................... ................... ............... ...............
ePto
E
eAct
wr
dPto
dAct
D
........................ .....................
................................. .................................
................................. ................................. ................................. .................................
........................ ........................
................................... ................................. ................................... .................................
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . . . . . ................... ................... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ................... ................... . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
ciclo de escrita ciclo de leitura
mestre
escravo
Figura 6.8: Transacoes de escrita e de leitura.
Captulo 6. Sistemas de Memoria 120
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...............................................................................................................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...............................................................................................................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...............................................................................................................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...............................................................................................................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...............................................................................................................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...............................................................................................................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...............................................................................................................................................
....................................
....................................
......................................................................................................
................... . . . . . . . . . . . . . . . . .
....................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . ...................
....................................
..................................................................................
................... . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . ...................
......................................................................................................................... . .. .. .. .. .. .. .. .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . . .. . . .. . . .. . . .. . .. . . . .
. . . . . . . . . . . . . . . . . ...................
........................................................................................................................... . . .. .. .. .. .. .. .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . . .. . . .. . . .. . . .. . .. . . . .
. . . . . . . . . . . . . . . . . ...................
. .. .. .. . .. . .. . .. . .. . .. .. .. .. .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. .. .. .. .. .. . .. .. . .. .. . .. .. .. .. .. .. .. .. . .. .. . .. . .. . .. . .. . .. . ....................................................................................... ................... . . . . . . . . . . . . . . . . .
. .. .. . .. . .. . .. . .. . .. . .. .. .. .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. .. .. .. .. .. . .. .. . .. . .. . .. .. .. .. .. .. .. .. . .. .. . .. . .. . .. . .. . .. . ....................................................................................... ................... . . . . . . . . . . . . . . . . .
.................................................................................................................................
. .. .. .. .. .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. .. .. . .. .. .. . .. . .. . .. . . . .
. . . . . . . . . . . . . . . . . ...................
ePto
inic
espera
dPto
dPto
dAct
ePto
eAct
dAct
eAct wr eAct wr
dPto
dAct
dPto
dPto
inic
processador
dPto
copia
dado
(leitura)
escravo mestre
(escrita)
Figura 6.9: Maquina de estado completa do processador barramento assncrono.
6.2.4 Sistema de Mem oria com Referencias em Rajadas
Existem situacoes em que e necessario transferir varias palavras da, ou para a, memoria.
Tipicamente, as transferencias envolvem 4 palavras armazenadas em enderecos contguos
em memoria (as palavras nos enderecos 1024, 1025, 1026 e 1027, por exemplo). No projeto
basico, estas transferencias necessitariam de quatro ciclos de memoria completos, um ciclo
para cada palavra.

E possvel reduzir o tempo medio de acesso se a seguinte otimizacao for empregada. No


projeto basico os bits E23 e E24 selecionam o grupo referenciado. Se os bits E02 e E03
forem usados para selecionar o grupo, palavras indexadas por enderecos consecutivos sao
armazenadas em grupos distintos. No exemplo acima, a palavra no endereco 1024 e ar-
mazenada no grupo 0, a palavra em 1025 no grupo 1, em 1026 no 2 e em 1027 no 3, como
mostra o diagrama na Figura 6.10.
Captulo 6. Sistemas de Memoria 121
t t t
t t t
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
D31-00
E04-26
0,4,8,...
1024,1028
1,5,9,...
1025,1029
2,6,A,...
1026,102A
3,7,B,...
1027,102B
eVal
E03
E02
cs2 cs0 cs1 cs3
E D E D E D E D
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
3
2
1
0
Figura 6.10: Organizacao de memoria intercalada.
Alem de identicar a largura de referencia (sinais r1-r0), o processador deve informar
ao sistema de memoria se a transferencia e em rajada ou de uma palavra individual.
Para isso, o sinal r2, juntamente com r1-r0, e emitido pelo processador para qualicar o
tipo de transferencia. Neste caso, a palavra na posicao 1024 e acessada simultaneamente
nos quatro grupos (E04-E26=1024) e as transferencias ocorrem em seq uencia, variando-se
apenas as linhas E02 e E03, como mostra o diagrama de tempos na Figura 6.11.
Uma transferencia em rajada consiste de duas fases, enderecamento e transferencia. Na
fase de enderecamento, o endereco das posicoes referenciadas e transmitido `a memoria
juntamente com o qualicador da transferencia. Decorrido o tempo de acesso `a memoria,
a fase de transferencia tem incio, com a transferencia das quatro palavras sem necessidade
de novas fases de enderecamento.
O conjunto com as quatro palavras que sao transferidas numa rajada chama-se de linha
de memoria.

E possvel que o processador solicite uma palavra que nao esteja alinhada
com a primeira posicao da linha, na fronteira da rajada (endereco de palavra modulo 4
igual a zero). Neste caso, iniciando a transferencia pela primeira palavra da linha faz com
que o processador que bloqueado, esperando pela palavra solicitada. Uma otimizacao
relativamente simples resolve este problema. Ao inves de entregar a primeira palavra da
linha, o sistema de memoria transfere a palavra requisitada em primeiro lugar, seguindo-se
as restantes na ordem da contagem modulo quatro. Por exemplo, se o processador solicita
a palavra 1025, a transferencia se dara na seguinte ordem: 1025, 1026, 1027, 1024. Esta
tecnica e chamada de critical word rst [PH00].
Captulo 6. Sistemas de Memoria 122
................................. .................................
................................. .................................
................................. .................................
................................. ...................................
................................. ...................................
................................. ................................... ................................. ................................. ................................... ................................. ................................... ................................. ................................. ...................................
................................. ................................. ................................. ................................. ................................. ................................. ................................. .................................
..................... ................................. ................................. ................................. ............... ............... ................................. ................................. ................................. .....................
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . ............... ............... . . . . . . . . . . . . .
. . . . . . . . . . . . . ............... ............... . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
r2,r1,r0
E04-E26
D00-D32
eVal
E02-E03 00 01
M[1024] M[1026]
M[1025] M[1027]
100
1024
tempo de acesso
tempo de rajada
11 10
dVal
Figura 6.11: Diagrama de tempos de um acesso em rajada.
6.2.5 Sistema de Mem oria com Referencias Concorrentes
Note que uma referencia `a memoria pode ser encarada como uma transacao, na qual um
cliente (processador) efetua uma requisicao ao servidor (memoria), que a atende assim que
possvel, apos o decurso do tempo de acesso `a memoria. A requisicao ocorre na fase de
enderecamento e o seu atendimento ocorre na fase de transferencia.

E possvel reduzir o tempo medio de acesso `a memoria ainda mais ao sobrepor-se a fase
de enderecamento de uma rajada com a fase de transferencia de outra, como mostra o
diagrama na Figura 6.12.
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
..........
..........
..........
.......... ..........
..........
..........
..........
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
..........
..........
..........
.......... ..........
..........
..........
..........
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
..........
..........
..........
.......... ..........
..........
..........
..........
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
..........
..........
..........
.......... ..........
..........
..........
..........
................................. ................................. ................................. ................................. ................................. ................................. ................................. .................................
........................ ................................. ................................. ................................. ............... ................... ................................. ................................. ................................. .....................
................................... ...................................
................................... ...................................
................................. ................................... ................................. ................................. ................................. ................................... ................................. .................................
................................... ................................... ................................... ................................... ................................... ...................................... ................................... ................................... ................................... ...................................
................................. ................................. ................................. ................................. ................................. ................................. ................................. ................................. ................................. .................................
..........
..........
..........
..........
..........
..........
.....
............... . . . . . . . . . . . . .
..........
..........
..........
..........
..........
..........
..........
..........
..........
..........
..........
.. ............... . . . . . . . . . . . . .
..........
..........
..........
..........
..........
..........
..........
..........
..........
..........
... ............... . . . . . . . . . . . . .
..................... ........................ ............... ................................. ................................. ................................. ..................... ............... ................... ..................... ................................. ................................. ................................. ...............
..........
..........
..........
..........
..........
..........
..........
..........
..........
...... ............... . . . . . . . . . . . . .
D00-D32
E04-E26
eVal
dVal
B C A D
M[A+2] M[A] M[B] M[C] M[C+2]
M[A+3] M[C+1] M[C+3] M[A+1]
Figura 6.12: Acessos `a memoria com sobreposicao de fases.
Se a transferencia de uma rajada for, em media, mais demorada que o tempo de acesso `a
memoria, esta tecnica de implementacao permite `a memoria fornecer dados continuamente
sem que o processador que bloqueado enquanto espera por uma transferencia. Neste
caso, o desempenho do sistema de memoria e limitado somente pelo projeto eletrico do
barramento. Considere o diagrama de tempos na Figura 6.12. A duracao mnima de cada
transferencia e um dos fatores que limitam a velocidade de operacao do barramento. Uma
possvel implementacao e fazer o ciclo do relogio do barramento ter duracao igual ao de
Captulo 6. Sistemas de Memoria 123
uma transferencia, de tal forma que durante o semi-ciclo em 1, o sinal dVal seja inativo, e
no semi-ciclo em 0 dVal seja ativo e ocorra uma transferencia. O intervalo com dVal inativo
e necessario para que os nveis eletricos dos sinais estabilizem nos nveis logicos adequados.
O desacoplamento entre uma solicitacao (enderecamento) e sua satisfacao (transferencia)
implica em circuitos separados para o enderecamento e o seq uenciamento da transferencia.
O endereco da linha referenciada pelo processador deve ser armazenado num registrador
ate que os dados estejam disponveis para sua transferencia. Da mesma forma, os dados
cam armazenados em registradores ate o momento da transferencia atraves do barra-
mento. A Figura 6.13 mostra esta organizacao. Os sinais que indicam dados prontos,
pt0,pt1,pt2,pt3, sao ativados pelo controlador de memoria, assim que os dados estejam
disponveis. Os sinais dVal0,dVal01,dVal02,dVal03 habilitam as sadas tri-state dos reg-
istradores de dados.
t
t
t
t
t
t
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
..........................................
...................... . . . . . . . . . . . . . . . . . . . .
..........................................
...................... . . . . . . . . . . . . . . . . . . . .
..........................................
...................... . . . . . . . . . . . . . . . . . . . .
..........................................
...................... . . . . . . . . . . . . . . . . . . . .
D31-00
E04-26
pt0
E
Q
D
D
Q*
D
dVal0
eVal0
E
Q
D
D
Q*
D
dVal1
eVal1
pt1
E
Q
D
D
Q*
D
dVal2
eVal2
pt2
E
Q
D
D
Q*
D
dVal3
eVal3
pt3
Figura 6.13: Diagrama de blocos de memoria para acessos concorrentes.
Na fase de enderecamento, o endereco da linha e armazenado nos quatro grupos. Assim
que decorrer o tempo de acesso, os quatro registradores de dados sao carregados simul-
taneamente com o conte udo das posicoes indexadas (sinais pt0,pt1,pt2,pt3 ativos). As
transferencias sao seq uenciadas com os sinais dVal0,dVal01,dVal02,dVal03.
Processadores modernos geram referencias `a memoria com taxas muito maiores que aquelas
com que o sistema de memoria pode atender `as requisicoes. Uma forma de acomodar esta
diferenca e permitir que o processador emita uma serie de requisicoes, que serao atendidas
pelo sistema de memoria na medida do possvel, sempre tentando minimizar o tempo em
que o processador ca bloqueado a espera por dados. Os detalhes da implementacao deste
tipo de processador serao discutidos no curso de Arquitetura.
Do ponto de vista da implementacao de um sistema de memoria, isso implica em substi-
tuir cada registrador na gura anterior por uma la. Cada requisicao emitida pelo pro-
cessador recebe um identicador de transacao. O identicador e enleirado juntamente
com o endereco cujo conte udo e requisitado. Quando o pedido e satisfeito, e os dados
sao transferidos pelo barramento, estes sao acompanhados pelo identicador da transacao
para permitir que o processador possa casar respostas com requisicoes. Note que isso
permite que o sistema de memoria satisfaca requisicoes em ordem diferente daquela em
que elas foram emitidas pelo processador. Por exemplo, o barramento do PentiumPro e
capaz de manter oito transacoes simultaneas no barramento de memoria, cada uma em
fase diferente de execucao [Sha96].
Captulo 6. Sistemas de Memoria 124
6.3 Desempenho de Sistemas de Mem oria
As duas metricas de desempenho de sistemas de memoria sao vazao e latencia. Vazao
e denida como a quantidade de bytes ou palavras transferidas por unidade de tempo,
expressa em mega-bytes por segundo. Esta denicao de vazao e equivalente aos termos
bandwidth e throughput, embora geralmente bandwidth refere-se `a vazao potencial, que e
o maximo teorico, enquanto que throughput refere-se `a vazao efetiva, ou `a taxa que pode
ser atingida na pratica. A latencia e o tempo de espera pela satisfacao de uma requisicao,
expressa em micro- ou nano-segundos, 10
6
e 10
9
segundos respectivamente.
Nas secoes anteriores, a latencia das transferencias e mostrada como o tempo de acesso
`a memoria nos diagramas de tempo. A vazao e o n umero de bytes transferidos durante
o tempo de acesso `a memoria. Considere o diagrama de tempo da Figura 6.11. Existem
duas denicoes possveis para a latencia neste caso. Se o que se deseja e medir o tempo
dispendido ate que a primeira palavra seja disponibilizada pelo sistema de memoria, a
latencia e o intervalo indicado como tempo de acesso (T
a
). Se o interesse e na transferencia
de uma linha completa de memoria, a latencia neste caso e dada pelo tempo de rajada (T
r
).
No primeiro caso, a vazao e V
a
= 4/T
a
, enquanto que no segundo caso a vazao para a rajada
e V
r
= 16/T
r
. Nos dois casos, a unidade da vazao e bytes por segundo.
Estas duas metricas devem ser avaliadas em conjunto porque a combinacao das duas e que
garante a qualidade de um projeto. O que se deseja e um sistema com alta vazao e baixa
latencia, e geralmente estes dois objetivos sao conitantes. Vazao melhora-se com dinheiro,
com projetos mais sosticados (maior nvel de concorrencia) e caros (barramentos mais
largos), enquanto que latencia depende da velocidade de propagacao da luz, o que deve
permanecer imutavel no futuro proximo. Contudo, a latencia pode ser escondida pelo
emprego de paralelismo, como demonstrado pelas tecnicas descritas neste captulo.
Exerccios
Ex. 6.8 A discussao ate o momento concentrou-se em ciclos de leitura. Qual a diferenca
entre ciclos de leitura e de escrita? Como isso se reete no projeto do sistema de memoria
discutido ate aqui?
Ex. 6.9 Suponha um sistema com tempo de acesso `a memoria de 55ns e relogio de
barramento com ciclo de 10ns (100MHz). No melhor caso, tanto a fase de enderecamento
quanto a transferencia de uma palavra, podem ser efetuados em um ciclo de relogio do
barramento. Calcule vazao e latencia para ciclos de leitura e de escrita para o sistema de
memoria do projeto basico. Considere somente palavras.
Ex. 6.10 Calcule vazao e latencia para ciclos de leitura e de escrita para o sistema de
memoria do projeto basico. Compare os valores obtidos acima com aqueles de trans-
ferencias com larguras de byte, meia-palavra e palavra-dupla.
Ex. 6.11 Calcule vazao e latencia para ciclos de leitura e de escrita para o sistema de
memoria com rajadas nao-sobrepostas. Considere somente palavras.
Ex. 6.12 Calcule vazao e latencia para ciclos de leitura e de escrita para o sistema de
memoria com rajadas sobrepostas. Considere somente palavras.
Captulo 6. Sistemas de Memoria 125
6.4 Barramento Multi-mestre
Como mencionado na Secao 6.2.3, geralmente o processador e o mestre no barramento
de enderecos. Existem sistemas em que e necessario ligar mais de um dispositivo com
capacidade de iniciar transacoes de transferencia de dados no barramento. Em caso de
competicao pelo uso do barramento, o arbitro de barramento deve resolver o conito conce-
dendo o direito de uso a somente um dos competidores. Nestes sistemas, cada possvel
mestre deve participar de uma rodada de arbitragem antes de poder iniciar uma transacao
no barramento. Se nao houver competicao, o direito de transmitir e concedido imediata-
mente. Caso contrario, um dos competidores e escolhido pelo arbitro e os demais devem
esperar pela proxima rodada. Evidentemente, o arbitro deve ser capaz de decidir rapida-
mente para que o desempenho do sistema nao se degrade por causa da competicao pelo
recurso compartilhado.
Um dos sistemas mais simples de arbitragem atribui prioridades xas aos possveis mestres
e esta prioridade e denida pela posicao de cada dispositivo no barramento. O dispositivo
mais proximo ao arbitro tem a maior prioridade enquanto que o dispositivo mais distante
tem a menor prioridade. Este metodo e portanto chamado de prioridade posicional.
Cada dispositivo usa dois sinais para negociar o uso do barramento. O sinal req
i
e ativo
em 1 e sinaliza a necessidade de usar o barramento. O sinal act
i
indica que o dispositivo
i
obteve a permissao de usar o barramento e pode iniciar a transacao. O sinal pend
i
e ligado
a req
i
e impede a passagem do sinal de aceitacao act
i
para os dispositivos de prioridade
mais baixa. Quando o candidato detecta act
i
=0, este pode remover req
i
porque ja obteve
permissao para usar o barramento.
ppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppp
ppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppp
ppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppp
ppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppp
s
s s
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
act
0
act
1
act
2
act
3
pend
0
pend
1
pend
2
mestre
0
mestre
1
mestre
2
mestre
3
act
req
3
req
2
req
1
req
0
Figura 6.14: Atendimento de interrupcao com cadeia de aceitacao.
6.4.1 Acesso Direto a Mem oria
Em sistemas com dispositivos que transferem grandes volumes de dados entre o mundo
externo e a memoria do computador, freq uentemente o processador ca preso em um laco
copiando dados de um registrador do dispositivo para uma area em memoria, como na
leitura de um bloco de dados de uma unidade de disco, por exemplo. O trecho de codigo
abaixo copia o conte udo do endereco apontado por fonte para o endereco apontado por
destino, e a cada volta do laco o contador e decrementado enquanto que os dois aponta-
dores sao incrementados. No caso da transferencia entre um periferico e memoria, geral-
mente um dois dois apontadores contem o endereco do registrador de dados do periferico.
Captulo 6. Sistemas de Memoria 126
while (tamanho-- > 0) loop:
*destino++ = *fonte++ ; ld r, 0(rf)
st r, 0(rd)
addi rf,1
addi rd,1
addi rt,-1
dnz rt, loop
Se o volume de dados e grande, o processador pode dispender muito tempo na copia
e enquanto esta efetuando a copia, este nao executa codigo mais util do que a mera
movimentacao entre dois enderecos. Um controlador de Acesso Direto a Memoria (ADM)
e um dispositivo que e capaz de efetuar copias entre duas areas de memoria, liberando o
processador para que este execute tarefas mais nobres.
A Figura 6.15 mostra um sistema com um controlador de ADM que e capaz de efetuar
copias entre o periferico e a memoria. Para isso, o processador programa o controlador
de ADM com o endereco fonte registrador de dados do periferico, o endereco destino
incio de um vetor em memoria, e o n umero de palavras a serem transferidas. Isso feito,
o controlador efetua uma serie de ciclos com uma leitura do periferico (1) seguida de uma
escrita na memoria (2). Apos a ultima transferencia, o controlador de ADM interrompe o
processador para informa-lo de que a transferencia esta completa.
..........
..........
..........
..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .........
..........
..........
....
....................................
..........
..........
..........
..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .........
..........
..........
....
....................................
.
.
.
.
.
.
.
.
.
.
.
.
.
.. . . . . . . . . . . . . . . . . . ..
.
.
.
.
.
.
.
.
.
.
.
.
.
....................................
.
.
.
.
.
.
.
.
.
.
.
.
.
.. . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
....................................
D
E
memoria
contr ADM
periferico
processador
1 - leitura 2 - escrita
Figura 6.15: Sistema com controlador de acesso direto a memoria.
Um controlador de ADM consiste de dois contadores que mantem os enderecos fonte e
destino, um contador que transferencias, um registrador de dados que mantem a palavra
no intervalo entre uma leitura e a escrita, e um circuito de controle que seq uencia os
acessos no barramento e gera a interrupcao. O diagrama de blocos de um controlador de
ADM e mostrado na Figura 6.16.
Exerccios
Ex. 6.13 Dena o comportamento da maquina de estados de um controlador de ADM que
seq uencia as transferencias no barramento. Lembre que cada transferencia compreende
um ciclo de leitura e um ciclo de escrita.
Ex. 6.14 Num barramento multi-mestre o uso do barramento deve ser arbitrado a cada
acesso. Isso signica que a cada transferencia por ADM sao necessarias duas rodadas
de arbitragem. Projete um arbitro que permita a posse do barramento durante uma
transferencia completa, ou dois ciclos contguos (leitura escrita).
Captulo 6. Sistemas de Memoria 127
. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .
....................................
. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .
....................................
. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .
Ender
Dados
Controle
reg fonte reg destino reg dados
controle contador
Figura 6.16: Diagrama de blocos de um controlador de acesso direto a memoria.
Ex. 6.15 Levando a ideia do exerccio anterior mais adiante, um controlador de ADM
poderia efetuar transferencias em rajadas. Discuta as vantagens e/ou desvantagens de
rajadas de 4, 8, 16, 32 e 256 palavras.
Ex. 6.16 Mostre como projetar um barramento sncrono (com linhas de dados, de controle
e de enderecos) capaz de suportar dois dispositivos que se comportem como mestre, tais
como um processador e um controlador de ADM, por exemplo.
a) Especique o comportamento de um arbitro que implementa a poltica de prioridade
posicional, e dos dispositivos que podem solicitar a posse do barramento para uma trans-
ferencia.
b) Desenhe um diagrama de tempo mostrando duas transacoes completas, cada uma ini-
ciada por um dispositivo diferente.
c) Especique e mostre como projetar um arbitro que implementa uma poltica de priori-
dade com alternancia circular (round robin), na qual a prioridade se alterna entre os dois
mestres (A B A B ).
Captulo 7
Interfaces
Este captulo trata das interfaces de um processador com o mundo externo a ele. A
discussao inicia pelo que deveria ser o nal do assunto, que e o tratamento de interrupcoes,
na Se cao 7.1. Este topico deveria ser o ultimo por ser o mais complexo, mas como os demais
assuntos dependem de interrupcoes, e melhor tratar logo do maior problema. As Secoes 7.2,
7.3, e 7.4 apresentam interfaces paralelas (todos os bits de uma so vez), interfaces seriais
(um bit a cada vez), e interfaces analogicas (bits nao sao o suciente). A Secao 7.5 contem
uma breve discussao sobre contadores e temporizadores.
7.1 Interrupc oes
O subsistema de interrupcoes do processador permite aos perifericos solicitar a atencao
do processador para que este trate os eventos externos que estao sendo sinalizado pelo/s
periferico/s.
Por exemplo, quando a interface serial tem um caracter disponvel, este caracter deve ser
copiado pelo processador do registrador da interface serial para uma posicao de memoria
apropriada. Se o caracter nao for copiado antes da recepcao de novo caracter, o primeiro
caracter e sobre-escrito pelo segundo e aquele e perdido. Para evitar que isso ocorra, o
periferico solicita a atencao imediata do processador atraves de uma interrupcao. Assim
que possvel, o processador atende ao pedido e executa o tratador de interrupcao associado
`aquela interrupcao.
O tratador de interrupcao e um trecho de codigo, estruturado de forma similar a uma
funcao, que efetua o tratamento do evento sinalizado. No nosso exemplo, o tratador le o
registrador de dados da interface serial, e o caracter lido e copiado para a la, em memoria,
de caracteres recebidos e o apontador da la de caracteres recebidos e incrementado.
Este mecanismo se chama de interrupcao porque a seq uencia normal de execucao de in-
strucoes e interrompida para que o evento externo seja atendido. A execucao do tratador
de interrupcoes e similar a uma chamada de funcao. Ao inves de o programador inserir
no codigo o comando que invoca o tratador, e o periferico, ao interromper, que dispara a
execu cao do tratador de forma assncrona. Quando o tratador completa sua tarefa, este
executa uma instrucao de retorno de interrupcao, que e similar ao retorno de uma funcao,
causando a busca daquela instrucao que seria executada, nao fosse pela ocorrencia da
interrupcao.
A Figura 7.1 mostra os eventos associados `a ocorrencia de uma interrupcao. A linha
128
Captulo 7. Interfaces 129
na esquerda corresponde ao uxo de execucao normal do programa que e interrompido.
Quando o processador detecta e atende a interrupcao, o atendimento se inicia com um
salto para o endereco inicial do codigo do tratador. Quando o tratador termina, o uxo
de execucao retorna ao ponto em que a interrupcao foi atendida.
.......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... ....
................... . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . ...................
interrupcao
tratador da
uxo de execucao normal
interrupcao
retorno da interrupcao
Figura 7.1: Fluxo de controle no tratamento de uma interrupcao.
7.1.1 Sinais de Interrupc oes
Do ponto de vista dos circuitos do sistema de interrupcoes, um sistema representativo
do empregado em microprocessadores e discutido no que se segue. Como mostra a
Figura 7.2, o processador possui tres linhas de interrupcao, as entradas i0, i1 e i2, us-
adas pelos perifericos para sinalizar ao processador a necessidade de atencao. O n umero
representado pelos sinais i2,i1,i0 e o nvel N da interrupcao, e a cada nvel corresponde
um tratador diferente. Quando nao ha nenhuma interrupcao esperando por atendimento,
o n umero representado pelos sinais i2,i1,i0 e zero. A prioridade dos sinais de interrupcao
e estabelecida ao ligar-se cada uma das linhas `a entrada apropriada do decodicador de
prioridades, cujas sadas sao ligadas `as linhas i2,i1,i0. O processador sinaliza ao periferico
que a interrupcao sera prontamente atendida ao ativar o sinal iAcept.
7.1.2 Vetor de Interrupc oes
Imediatamente antes de iniciar a busca da proxima instrucao, o circuito de controle do
processador verica se ha alguma interrupcao pendente. Se nao ha nenhum pedido de
interrupcao, i2,i1,i0=0, e a proxima instrucao e buscada e executada. Se ha uma inter-
rupcao pendente, o processador interrompe a seq uencia normal de execucao das instrucoes
do programa e desvia para o codigo do tratador associado ao nvel daquela interrupcao. O
endereco da instrucao que seria executada e armazenado na pilha e a primeira instrucao
do tratador e buscada e executada. A ultima instrucao executada pelo tratador deve ser
Retorna de Interrupcao (RETI), que retira da pilha o endereco daquela instrucao que fora
armazenado, e o insere no contador de programa. A proxima instrucao a ser executada
sera portanto aquela que seria buscada nao fosse o atendimento `a interrupcao.
O vetor de tratadores de interrupcoes, e mantido em memoria, a partir do endereco 0x0000,
por exemplo. Supondo que o processador empregue enderecos de instrucoes de 32 bits, nas
posicoes 0x0004 a 0x0007 ca armazenado o endereco da primeira instrucao da funcao que
trata da interrupcao de nvel 1. Nas posicoes de enderecos 4N a 4N+3 cam o endereco do
codigo da funcao que trata da interrupcao de nvel N. Quando uma interrupcao de nvel N
e atendida, o endereco do tratador e buscado no vetor de interrupcoes e carregado no PC,
e a execucao e entao desviada para o tratador associado `a interrupcao. A inicializacao do
Captulo 7. Interfaces 130
processador ocorre quando o sinal reset e ativado, o que e considerado um caso especial
de interrupcao. O endereco da rotina de inicializacao tambem e armazenado no vetor de
interrupcoes, esta rotina e chamada de boot() no que se segue.
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp r
r
t
t t
r
r
t
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
r r
r r
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
E00-E31
eVal
D00-D31
dVal
wr
processador
iAcpt
iAcpt
i2
i1
i0
7
6
5
4
3
2
1
0
iNoBr
nc
iYYY
iXXX
iRelog
iDisco
int iAceit
interf. Paralela
E ev D wr dv
iAceit int
interf. Serial
E ev D wr dv
iPar
iSer
reset
reset
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
codicador de
prioridade
Figura 7.2: Sinais do subsistema de interrupcoes.
Por exemplo, o vetor de interrupcoes poderia ser organizado como o mostrado na
Tabela 7.1. Note que cada elemento do vetor contem o endereco de um tratador. Este
endereco e carregado no contador de programa para que a primeira instrucao do tratador
seja executada.
ender. tratador N funcao do tratador
0000 0 sem interrupcao (busca normal)
0004 &(tratSerial()) 1 tratador da interface serial
0008 &(tratParalela()) 2 tratador da interface paralela
000c &(tratDisco()) 3 tratador do controlador de discos
0010 &(tratRelogio()) 4 tratador do relogio de tempo real
0014 &(tratXXX()) 5 tratador do evento XXX
0018 &(tratYYY()) 6 tratador do evento YYY
001c &(tratNoBreak()) 7 tratador de falta de energia
0020 &(boot()) - inicializacao do processador no reset
0030 &(init()) - endereco inicial do sistema operacional
Tabela 7.1: Vetor de Interrupcoes.
A prioridade relativa dos tratadores reete a aplicacao do sistema bem como as carac-
tersticas de cada periferico. Por exemplo, a interface serial, por sua propria natureza, e
Captulo 7. Interfaces 131
capaz de tolerar atrasos no atendimento `as suas interrupcoes, enquanto que a falta de en-
ergia deve ser atendida imediatamente para que o sistema possa ser desligado de maneira
segura.
A funcao init() e executada apos a inicializacao a frio do sistema (bootstrapping) e
geralmente inicializa os perifericos, atribui um valor ao topo da pilha, inicializa e monta
o sistema de arquivos, dispara a execucao de uma ou mais shells, etc.
7.1.3 Transac oes de Barramento
A diagrama de tempos na Figura 7.3 mostra uma transacao de atendimento de interrupcao
no barramento do processador. Como exemplo, o diagrama mostra uma interrupcao pela
interface paralela. Antes de iniciar a busca da proxima instrucao, o processador examina
o estado das linhas de interrupcao. Se ha uma interrupcao pendente, esta sera atendida.
No caso, a interface paralela solicita atencao ao fazer i2,i1,i0=2. O processador sinaliza o
incio do atendimento atraves do sinal iAcept e das linhas de dados, que contem o nvel da
interrupcao que sera tratada.
. . . . . . . . . .
. . . . . . . . . .
. . . . ......
..........
........
................................... ...................................
................................... ...................................
................................... ...................................
................................... ............... ............... ................... ........................
................................... ..................... ..................... ........................ ...................
........................ ...................................
................................... ................................. ................................. ................................. ................................. .................................
................................... .................................
........................ ................... ...................................
................................. ................................... ................................. ................................. ...................................
&(topo da pilha) E00-E31
eVal
D00-D31
dVal
wr
i2,i1,i0
iAcept
ultima instr.
pedido
aceitacao
000 010 000
salva ender. de retorno
atendera 010 ender de retorno &(tratParal())
0x0008 X
endereco do tratador
. . . . . . . . . . . . . . . . . . .
..........
..........
..........
..........
..........
..........
..........
..........
..........
........
................... . . . . . . . . . . . . . . . . .
..........
..........
..........
.....
................... . . . . . . . . . . . . . . . . .
Figura 7.3: Transacao de atendimento de interrupcao.
Cada periferico que esta interrompendo deve vericar se o atendimento sinalizado
por iAcept e o da sua propria requisicao, examinando os tres bits menos signicativos das
linhas de dados. Aquele dispositivo que reconhecer seu proprio identicador prepara-se
para o atendimento pelo processador.
O tratamento da interrupcao propriamente dita se inicia com um ciclo de escrita no qual
o conte udo do PC e armazenado na pilha. O valor do PC armazenado e o endereco da
instrucao que seria executada caso nao tivesse ocorrido a interrupcao, e de onde o proces-
samento sera retomado apos o tratamento do evento que deu causa `a interrupcao. Uma
vez que o endereco de retorno e armazenado na pilha, o atendimento consiste de um ciclo
de busca na posicao apropriada do vetor de interrupcoes. O endereco do tratador e entao
carregado no PC e a primeira instrucao do tratador e buscada e executada. Neste exem-
plo a segunda posicao do vetor, correspondente ao endereco 0x0008, contem o endereco
do tratador da interrupcao pela porta paralela.
Captulo 7. Interfaces 132
7.1.4 Cadeia de Aceitacao
O protocolo que sinaliza o incio do tratamento da interrupcao pelo processador discu-
tido acima pressupoe que os dispositivos sao relativamente sosticados porque cada dis-
positivo deve ser capaz de reconhecer seu identicador no barramento de dados, quando
iAcpt=dVal=0. Para que isso seja possvel, durante a inicializacao do sistema o processador
deve informar a cada dispositivo o seu nvel de prioridade.
Um mecanismo mais simples que este e baseado em uma cadeia de portas or, chamada
de daisy chain. Cada dispositivo necessita de tres sinais para participar da cadeia de
aceita cao: uma sada interr para sinalizar a interrupcao ao processador; e duas entradas,
a primeira e aceit ativada pelo processador quando este inicia o tratando da interrupcao,
e a segunda e pend que ca em 0 sempre que o dispositivo nao estiver esperando pelo
atendimento de uma interrupcao que tenha sinalizado.
Quando uma interrupcao deve ser sinalizada ao processador, os sinais interr e pend cam
ativos em 0 e 1, respectivamente. Como pode ser visto na Figura 7.4, o dispositivo que
esta com uma interrupcao pendente bloqueia a passagem do sinal de aceitacao (pend=1)
para os dispositivos que o seguem na cadeia. Note que os dispositivos mais a esquerda
possuem maior prioridade de atendimento que os dispositivos a direita.
ppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppp
ppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppp
ppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppp
ppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppp
ppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppp
ppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppp
s
s s s s s
noBreak YYY XXX Relog Disco Paralela Serial
iAcpt iA6 iA5 iA4 iA3 iA2 iA1
iAcpt
pend7 pend6 pend5 pend4 pend3 pend2
Figura 7.4: Atendimento de interrupcao com cadeia de aceitacao.
Quando o dispositivo detecta iAcpt=0, este remove o pedido de interrupcao porque o
processador ja iniciou o atendimento `aquele pedido. O sinal pend e desativado quando o
processador efetuar uma leitura do registrador de status do dispositivo. O Exerccio 7.3
explora algumas alternativas de implementacao.
7.1.5 Salvamento do Contexto de Execucao
O contexto de execucao de um programa
1
e o conte udo de todos os registradores do pro-
cessador pc, sp, registrador de status e registradores de dados. O tratador contem
instrucoes que podem, e provavelmente irao, alterar o conte udo dos registradores. Como
as interrupcoes sao eventos assncronos, e responsabilidade do programador que escreve o
codigo do tratador evitar que o conte udo dos registradores seja adulterado pela execucao
do tratador. Isso e necessario para garantir que, do ponto de vista do programa que foi
interrompido, a execucao do tratador nao cause nenhum efeito colateral. Por efeito colat-
eral entenda-se a alteracao dos valores contidos nos registradores, valores esses computados
pela execucao normal do programa ate o momento da interrupcao, e necessarios para que
o programa complete e produza resultados corretos.
1
Estritamente falando, contexto de execucao de um processo.
Captulo 7. Interfaces 133
Para evitar efeitos colaterais, os registradores que serao utilizados pelo tratador devem ser
salvados na pilha no incio do codigo do tratador. Uma vez que haja copia do conte udo
dos registradores a salvo na pilha, o tratador pode altera-los se necessario. Antes de
retornar, o tratador deve re-compor o conte udo dos registradores que alterou, a partir das
copias salvadas na pilha. Dessa forma, garante-se que o tratador nao deixa marcas de sua
execu cao, exceto pela alteracao no estado do/s periferico/s atendido/s.
O trecho de codigo abaixo mostra os protocolos de entrada e de sada de um tratador de
interrupcao muito simplicado.
tratXX: # protocolo de entrada
DI # desabilita interrupc~oes
push(r1) # salva registrador r1
push(r2) # salva registrador r2
EI # re-habilita interrupc~oes
# trata evento XX, alterando r1 e r2
fimXX: # protocolo de saida
DI # desabilita interrupc~oes
pop(r2) # recomp~oe registrador r2
pop(r1) # recomp~oe registrador r1
EI # re-habilita interrupc~oes
RETI # retorna da interrupc~ao
As instrucoes DI (desabilita interrupcoes) e EI (habilita interrupcoes) sao necessarias no
incio e nal do salvamento ou recomposicao para evitar que o tratador seja interrompido
por outra interrupcao. Caso estas instrucoes nao estejam no codigo, e possvel que uma
segunda interrupcao interrompa a execucao do tratador, que e ele proprio um programa
(quase) normal. Note que isso e um pouco similar a recursao, com duas diferencas funda-
mentais:
1. a segunda invocacao sera (quase sempre) de um tratador diferente; e
2. um tratador (geralmente) nao invoca outro tratador.
Codigo que permite a execucao de varias encarnacoes de si proprio ao mesmo tempo e
chamado de reentrante. Note que ao mesmo tempo nao signica paralelismo verdadeiro,
mas do ponto de vista da assincronia dos eventos externos ao processador podem acontecer
varias interrupcoes virtualmente ao mesmo tempo, e os tratadores serao iniciados em uma
ordem arbitraria, a menos de suas prioridades relativas.
Exerccios
Ex. 7.1 Desenhe o diagrama de tempos da transacao de barramento de retorno de inter-
rupcao.
Ex. 7.2 Dena uma maneira de processador e perifericos identicarem qual a interrupcao
que esta sendo atendida, diferente daquela descrita na Secao 7.1.3.
Ex. 7.3 Modique o protocolo de atendimento de interrupcoes com uma cadeia de
aceitacao, denido na Secao 7.1.4, para permitir que o processador use somente uma
Captulo 7. Interfaces 134
entrada de interrupcao. Isso e possvel porque a prioridade de atendimento e denida
pelas ligacoes `a cadeia de aceitacao. Pistas: (1) Cuidado com o tratamento de varios
pedidos simultaneos. (2) Qual efeito as instrucoes EI e DI devem ter no sinal iAcpt?
Ex. 7.4 Explique as diferencas entre codigo reentrante e funcoes recursivas.
Ex. 7.5 O que voce pode dizer quanto a duracao do intervalo de tempo no qual as
interrupcoes estao desabilitadas? Este intervalo pode ser arbitrariamente longo? Por que?
Ex. 7.6 O que voce pode dizer quanto ao tamanho (n umero de instrucoes executadas)
de um tratador de interrupcoes? Eles podem ser arbitrariamente grandes? Por que?
7.2 Interface Paralela
A Interface Paralela, ou Porta Paralela, do computador permite a comunicacao entre o
processador e o mundo externo de forma paralela, isto e, a cada evento de comunicacao,
varios bits sao transferidos de forma paralela entre computador e mundo externo. Por
exemplo, a ligacao entre computador e impressora normalmente ocorre atraves da porta
paralela porque a impressora naturalmente aceita os dados por imprimir caracter a carac-
ter, com caracteres representados em codigos com 7 ou 8 bits por caracter (ASCII, CBII
ou ISO-8851).
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
. . . . . . . . . . . . . . . . . . . . .....................
t
t
t
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
0
2
1
3
en
reg, de
sada
reg. de
entrada
reg. de
status
reg. de
controle
wr
E0
D0-D7
cs
leEnt
entInterr
entPronto
entAceita
entExt
saiInterr
saiAceita
saiPronto
saiExt
escCtl
leStat
escSai
processador
interf. com
interf. externa
Figura 7.5: Diagrama de blocos da interface paralela.
A Figura 7.5 contem um diagrama de blocos simplicado de uma interface paralela
hipotetica. Esta interface contem um registrador de sada, que mantem o valor gravado
Captulo 7. Interfaces 135
pelo processador, um registrador de entrada e registradores de status e controle. As funcoes
destes sao descritas adiante. O registrador de controle permite ao programador escolher um
de varios modos de operacao do dispositivo. O registrador de status mantem informacao
corrente sobre o estado de operacao do dispositivo.
7.2.1 Ligacao ao mundo externo
A maioria dos dispositivos externos ao computador opera a velocidades mais baixas que o
processador, como dispositivos eletro-mecanicos, por exemplo. Uma porta paralela geral-
mente possui linhas que permitem ao processador controlar a velocidade do envio ou re-
cepcao de dados atraves da porta paralela, como mostra o diagrama na Figura 7.6. Estes
sinais operam segundo um protocolo (handshake) e denem os eventos que devem ocorrer
nos sinais de dados e de controle, bem como a sua ordem.
............... . . . . . . . . . . . . .
. . . . . . . . . . . . . ...............
dados
saiPronto
saiAceito
novo
aceito
entDados saiExt
pronto
aceito
computador periferico
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
Figura 7.6: Diagrama de blocos da interface com um impressora.
O protocolo para a porta de sada pode ser denido da seguinte forma: (1) processador
escreve na porta de sada; (2) porta paralela sinaliza presenca de dados em saiPronto; e
(3) periferico sinaliza captura dos dados em saiAceito. O diagrama de tempo na Figura 7.7
mostra uma transacao completa de transferencia de dados atraves da porta de sada.
...................................... ...................................
...................................... ...................................
..........
..........
..........
.......... .......... ..........
................... . . . . . . . . . . . . . . . . .
..........
..........
..........
..........
................ .......... ...
................... . . . . . . . . . . . . . . . . .
..........
..........
..........
..........
..........
..........
................... . . . . . . . . . . . . . . . . .
...................................... ......................................
...................................... ......................................
saiExt
saiAceito
saiPronto
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
.......... ..........
.
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
.......... ..........
.
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
.......... ..........
.
Figura 7.7: Diagrama de tempo com transacao de transferencia de sada.
O protocolo contem cinco eventos. A alteracao no valor da porta paralela (saiExt) e cau-
sada pelo acesso de escrita pelo processador ao registrador de sada. Isso causa a transicao
para zero em saiPronto, sinalizando que ha dados novos (saiPronto 0). A aceitacao pelo
periferico dos dados novos se da pela transicao em saiAceito (saiAceito 0). Quanto o com-
putador detecta saiAceito, este reconhece a aceitacao pelo periferico e desativa saiPronto
(saiPronto 1). Finalmente, o periferico sinaliza o nal da transacao e desativa saiAceito
(saiAceito 1). As setas indicam as transacoes nos sinais da interface e portanto o seq uen-
ciamento de eventos.
Captulo 7. Interfaces 136
Este protocolo e chamado de assncrono porque nao ha nenhuma informacao de sin-
cronizacao explcita nos sinais da interface. A seq uencia de transicoes nos sinais e quem
sincroniza as duas interfaces (do computador e do periferico). Protocolos assncronos
acomodam a interligacao de dispositivos com grande disparidade nas velocidades de fun-
cionamento, como um computador rapido ligado `a um impressora de linha eletro-mecanica,
por exemplo.
Exerccios
Ex. 7.7 Projete as maquinas de estado do computador e do periferico que implementam
o protocolo assncrono mostrado na Figura 7.7.
Ex. 7.8 Prove que o protocolo na Figura 7.7 e bastante e suciente para garantir a
sincronizacao entre os dois dispositivos.
Ex. 7.9 Dena um protocolo assncrono para a porta de entrada.
Ex. 7.10 Projete um circuito que capture bordas ascendentes e descendentes em um sinal.
A ocorrencia de uma borda e armazenada numa bascula. Ha um sinal para inicializar a
bascula (reset).
Ex. 7.11 Projete um circuito que se comporte como porta de entrada ou de sada,
dependendo do sinal sentido. Se sentido=1 a porta comporta-se como porta de sada.
7.2.2 Ligacao ao Processador
O diagrama do circuito da porta paralela mostrado na Figura 7.5 contem uma versao
muito simplicada da interface que liga um CI com uma porta paralela ao barramento
de um processador. As oito linhas de dados (D0-D7) permitem a carga e a leitura dos
registradores pelo processador. O sinal cs (chip select) habilita o acesso ao periferico pelo
processador. Quando o processador deseja ler atraves da, ou escrever na, porta paralela,
ele emite comandos de leitura ou escrita para o endereco apropriado, associado ao sinal
ligado `a entrada cs. O circuito de controle e decodicacao de enderecos dos perifericos
ativa o sinal csIntPar sempre que a porta paralela for acessada pelo processador. O sinal wr
determina a direcao da referencia pelo processador.
Quando cs esta ativo, as linhas de endereco E0 e wr escolhem um dos quatro registradores
de acordo com a Tabela 7.2.
E0 wr registrador
0 0 controle
0 1 status
1 0 sada
1 1 entrada
Tabela 7.2: Enderecamento dos registradores.
Apos uma escrita pelo processador (cs=0 wr=0), o octeto a ser emitido pela porta
paralela e gravado no registrador de sada. Apos a aceitacao do octeto pela porta paralela,
uma nova escrita pelo processador dispara a emissao de novo octeto.
Captulo 7. Interfaces 137
Quando um octeto e amostrado na porta de entrada, ele ca disponvel para leitura pelo
processador no registrador de leitura. Quando o processador efetua uma leitura no reg-
istrador de entrada da porta paralela, o octeto e copiado do registrador para a memoria.
Duas perguntas (um tanto obvias) necessitam de resposta.
1. Como o processador detecta que o octeto ja foi emitido e portanto que ha espaco
para um novo octeto no registrador sada?
2. Como o processador detecta que um novo octeto foi apresentado `a porta de entrada
e que este deve ser copiado para memoria?
As respostas sao fornecidas pelo registrador de status, que contem um bit que indica se o
conte udo do registrador foi aceito pelo periferico (status.saiAceito) e um bit que indica
a presenca de um novo octeto na porta de entrada (status.entPronto).
O diagrama de tempos na Figura 7.7 mostra o protocolo assncrono usado na interface
externa entre computador e periferico. Aquele diagrama indica apenas o relacionamento
entre os sinais externos ao computador. O diagrama na Figura 7.8 mostra o relacionamento
entre os sinais externos (entre computador e impressora) e internos (entre processador e
porta paralela) num ciclo de escrita (sada) seguido da leitura do registrador de status
pelo processador.
...................................... ...................................
...................................... ...................................
..........
..........
..........
.................... .......... ..........
................... . . . . . . . . . . . . . . . . .
..........
..........
..........
..........
..........
.......... .......... ...
................... . . . . . . . . . . . . . . . . .
..........
..........
..........
.................
..........
..........
................... . . . . . . . . . . . . . . . . .
...................................... ......................................
............... ...............
................................... ...................................
................................. ................................... ................................... ...................................
............... ............... ..................... ..................... ..................... .....................
escrita leitura
status
de dados de status
sada
saiPronto
saiAceito
cs
wr
D0-D7
saiExt
sada
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
..........
..........
..........
..........
..........
..........
..........
..........
..........
..........
..........
..........
..........
..........
..........
..........
....
................... . . . . . . . . . . . . . . . . .
sinais externos
sinais internos
Figura 7.8: Diagrama de tempo do protocolo assncrono, sinais externos e internos.
7.2.3 Modos de Operacao
Ate o momento, a descricao da porta paralela pressupoe o uso de um protocolo assncrono
para a transferencia de dados entre computador e periferico. Outros modos de operacao
sao possveis. Dentre eles, os mais uteis sao listados abaixo.
1. Modo com protocolo: exemplo mostrado na Secao 7.2.1. Existe a opcao de provocar
uma interrupcao ao processador quando ocorre a aceitacao ou a emissao de um octeto
pelo periferico.
Captulo 7. Interfaces 138
2. Modo de sada sem protocolo: o processador escreve um octeto no registrador de
sada e este octeto e apresentado nas sada externa da porta sada. No modo de
entrada sem protocolo o processador le o registrador de entrada e obtem uma amostra
dos sinais externos ligados `a porta de entrada no instante da leitura.
3. Modo com deteccao de borda: o valor no registrador de leitura indica a ocorrencia de
alteracao no nvel dos sinais na porta de entrada, isto e, se ocorreu alguma mudanca
de estado no bit n, o n-esimo bit do registrador de leitura ca em 1. A leitura do
registrador de entrada pelo processador coloca zero em todos os seus bits.
4. Modo bi-direcional: a porta paralela se comporta como porta de entrada ou de sada,
dependendo de controle pelo processador ou de um sinal externo.
7.2.4 Programacao
Os registradores da porta paralela podem ser descritos por uma estrutura de dados da
linguagem C com os componentes abaixo.
Registrador de controle O registrador de controle possui quatro campos, dois para
controlar a operacao da porta de sada, e outros dois para controlar a porta de entrada.
typedef struct controle / campos do reg. de controle /
uchar saiProt : 2, / quatro modos de sada /
saiInt : 1, / sada com interrupcao /
entProt : 2, / quatro modos de entrada /
entInt : 1, / entrada com interrupcao /
resto : 2 ; / completa 8 bits /
Tcontrole;
Registrador de status O registrador de status contem um bit que indica se o reg-
istrador de entrada contem um novo octeto que deve ser copiado pelo processador, bit
entCheio; um bit que indica se o registrador de sada esta vazio e pode receber novo
octeto, bit saiVazio. Apos a leitura do registrador de status pelo processador, a porta
paralela limpa todos os bits de status. Os bits saiInt e entInt indicam se ha uma
interrupcao pendente por causa de eventos na respectiva porta.
typedef struct status / campos do reg. de status /
uchar entCheio : 1, / octeto no reg. entrada /
saiVazio : 1, / espaco no reg. de sada /
entInt : 1, / interrupcao na porta de entrada /
saiInt : 1, / interrupcao na porta de sada /
resto : 4 ; / completa 8 bits /
Tstatus;
O endereco dos registradores de controle e status e o mesmo (E0=0) e o que diferencia o
acesso e se leitura ou escrita. A uniao TctlStat permite acessar os dois registradores no
mesmo endereco.
Captulo 7. Interfaces 139
typedef union ctlStat
Tcontrole ctl;
Tstatus stat;
TctlStat;
Registradores de entrada e sada O endereco dos registradores de sada e de entrada
e o mesmo (E0=1) e o que diferencia o acesso e se este e uma leitura ou escrita. A uniao
Tdados permite acessar os dois registradores no mesmo endereco.
typedef union dados
uchar saiReg;
uchar entReg;
Tdados;
A estrutura abaixo contem as descricoes dos 4 registradores da porta paralela.
typedef struct paral / porta paralela /
TctlStat cs; / controle (wr) e status (rd) /
Tdados d; / sada (wr) e entrada (rd) /
Tparal;
O fragmento de codigo abaixo grava o modo de operacao da porta paralela no registrador
de controle, escreve a mensagem hello worldn, e espera por um octeto, possivelmente com
um caracter de aceitacao da mensagem pelo dispositivo ligado `a porta paralela.
Tparal paral;/ interface paralela /
uchar c;
int i;
char msgm[12] = hello worldn;
/ programa modo de operacao /
paral.cs.ctl = MODO DE OPERACAO COM PROTOCOLO;
/ escreve mensagem /
for (i=0; i < 12; i++)
while ( ! paral.cs.stat.saiVazio )
; / espera por espaco na p. sada /
paral.d.saiReg = msgm[i]; / emite octeto /

/ amostra octeto /
while ( ! paral.cs.stat.entCheio )
; / espera por octeto na p. entrada /
c = paral.d.entReg; / atribui `a c novo octeto /
7.2.5 Interrupc oes
Uma versao muito simplicada de um tratador de interrupcao para a porta paralela teria
uma estrutura como a mostrada abaixo. A copia do conte udo do registrador de status
para uma variavel local e necessaria porque a leitura deste registrador re-inicializa os bits
indicadores de status.
Captulo 7. Interfaces 140
void interrParal(void)
Tstatus stat;
stat = parall.cs.stat; / faz copia e limpa reg. status /
if (stat.entCheio)
entChar[i++] = parall.d.entReg; / variavel global /
if (stat.saiVazio)
paral.d.saiReg = msgm[j++]; / variavel global /
return();

7.3 Interface Serial


Suponha que se deseje interligar dois computadores de forma a permitir que partes da
memoria de um sejam visveis pelo outro. A maneira mais imediata seria implementar um
barramento de memoria que fosse compartilhado pelos dois computadores. Isso de fato
e usado em multi-processadores e clusters, e o barramento e geralmente o componente
mais complexo, e portanto o mais caro, de maquinas que custam centenas de milhares de
dolares.
Sendo mais modesto, suponha que se deseje a troca de informacoes entre duas maquinas
de baixo custo. A interligacao deve custar uma pequena fracao do custo de cada uma
das maquinas. Neste caso, ao inves de uma extensao do barramento de memoria, que
poderia ser um cabo com muitas vias 8, 16 ou 32 vias de dados, mais controle estamos
interessados num cabo com o menor n umero possvel de vias, se possvel, uma via so ou um
o. No mnimo sao necessarios dois os, um que transporta os sinais eletricos propriamente
ditos e outro que serve de referencia de potencial eletrico para os sinais no primeiro o.
7.3.1 Comunicacao Serial
A comunicacao entre as duas maquinas se da quando uma certa area de memoria do reme-
tente (a mensagem) e copiada para a memoria do destinatario. No caso da comunicacao
serial, sao necessarios uma interface de comunicacao serial em cada maquina e o cabo que
interconecta as duas interfaces.
Se a interligacao pode ser feita com dois os, como e a transferencia dos dados da memoria
do primeiro computador para a do segundo? Dados sao armazenados em formato paralelo
na memoria, como bytes ou palavras de 16, 32 ou 64 bits de largura. Como e que se
transmite um octeto atraves de um unico o? A solucao e transmitir um bit de cada vez...
O circuito de transmissao consiste de um registrador de deslocamento que e carregado
em paralelo pelo processador e cujo conte udo e deslocado bit a bit para a sada serial. O
circuito de recepcao consiste de outro registrador de deslocamento, que amostra os bits
pela entrada serial e os entrega em paralelo ao processador.
Alguns parametros devem ser xados de antemao para que o esquema delineado acima
funcione bem. Primeiro, a duracao de cada bit deve ser a mesma no sistema que envia
e no que recebe. Segundo, o n umero de bits transferido deve ser pre-denido para que o
receptor consiga recuperar a informacao contida nos dados enviados.
A duracao de cada bit e determinada pela velocidade de transmissao. As velocidades
Captulo 7. Interfaces 141
tpicas sao m ultiplos de 75 bits por segundo (75, 150, 300, 600, 1200, 2400, 4800, 9600,
19200). A unidade da velocidade de transmissao e bits por segundo, abreviada bps. Assim,
para transmissoes a 9600 bps, cada bit dura 1/9600 segundos, e este tempo e chamado de
tempo de bit ou intervalo de bit. A unidade de transferencia em interfaces seriais padrao
EIA-232 e um caracter, tipicamente de 8 bits, embora 5 e 7 bits tambem sejam usados.
A Figura 7.9 mostra os registradores de deslocamento do computador transmissor e o do
receptor. No transmissor, um registrador que faz a conversao do formato paralelo para o
serial e usado enquanto que no receptor, e usado um registrador que faz a conversao do
formato serial para o paralelo. Quando o transmissor deseja enviar um caracter, o octeto e
apresentado pelo processador nas linhas D0-7 e o sinal carga e ativado. No primeiro pulso
do sinal que e o relogio de transmissao, chamado de txClk, o valor do bit D0 e apresentado
em Q0 e no sinal txD, que e o cabo de comunicacao. O transmissor gera mais 7 pulsos no
sinal txClk para transferir os bits D1 a D7 para a sada Q0 e para o receptor.
O receptor amostra o sinal rxD e desloca os valores nele existentes nas bordas do relogio
de recepcao, rxClk. A cada tic do relogio de recepcao, um novo bit e capturado em D7 do
registrador serie-paralelo enquanto que os bits amostrados anteriormente sao deslocados
para a direita. Note que o primeiro bit transmitido e o bit D0; ao nal da seq uencia de
transmissao, o valor do bit D0 emitido pelo transmissor esta na posicao mais `a direita no
receptor, tambem na posicao correspondente ao D0.
D0 D1 D2 D3 D4 D5 D6 D7
D0 D1 D2 D3 D4 D5 D6 D7
. . . . . . . . . . . . . . . . . . . . .....................
...................... . . . . . . . . . . . . . . . . . . . .
....................................
. . . . . . . . . . . . . . . . . . . . ......................
carga
reg. serie-paralelo
registrador
paralelo-serie
receptor
rxClk
transmissor
txClk
ld
rxD
txD
D
0
D
1
D
2
D
3
D
6
D
7
D
5
D
4
Q
0
Q
1
Q
2
Q
3
Q
6
Q
7
Q
5
Q
4
D
0
D
1
D
2
D
3
D
6
D
7
D
5
D
4
Q
0
Figura 7.9: Diagrama de blocos da interface serial.
A Figura 7.10 mostra um diagrama de tempo mostrando a transmissao de um caracter no
circuito descrito anteriormente. O caracter 0x6a (0110 1010) e transmitido, o bit menos
signicativo primeiro. A cada borda ascendente de txClk, um novo bit e deslocado para
a direita e exibido em txD. Note que o sinal rxClk esta atrasado de meio ciclo em relacao
`a txClk. A melhor posicao para a amostragem pelo receptor e no meio do intervalo de
bit. Isso garante que o sinal ja esta estabilizado no nvel de tensao que corresponde ao bit
transmitido. Se a amostragem pelo receptor fosse no mesmo instante em que o transmissor
Captulo 7. Interfaces 142
emite um novo bit, poderia ser difcil discriminar o valor amostrado. Se a transicao no
sinal nao for perfeita como na gura (na pratica nunca o e), o receptor pode amostrar o
valor errado para todos os bits na gura, exceto D6.
................................... ...................................
..........
..........
..........
..........
........................ ........................ ................... ...................
0x6a
D0 D1 D2 D3 D4 D6 D7 D5
D0-D7
carga
txClk
rxClk
txD=rxD
Figura 7.10: Diagrama de tempo da transmissao de um octeto.
Ha um problema serio com este circuito. Como o receptor descobre que um novo carac-
ter esta sendo enviado? Lembre que nao ha um sinal/o que transporte informacao de
sincronismo entre transmissor e receptor. O incio e o nal de um caracter devem ser de-
marcados claramente para evitar ambig uidade na recepcao de dois caracteres transmitidos
em seguida. Isso e obtido acrescentando-se uma moldura ao caracter, como se ele fosse
um quadro. Em repouso, a linha permanece sempre em nvel logico 1. O incio de um
caracter e demarcado por um bit em 0, chamado de bit de incio (start bit). O nal de
um caracter e demarcado por um bit em 1, o que coloca a linha em repouso. Este bit e
o bit de nal (stop bit). O circuito de transmissao se encarrega de acrescentar os bits de
incio e de nal a cada caracter transmitido. A Figura 7.11 abaixo mostra o diagrama de
tempo da transmissao de um caracter com o enquadramento com bits de incio e de nal.
................................... ...................................
.......
.......
.....
.......
.......
.....
................... ................... ........................ ........................
0x6a D0-D7
carga
txClk
txD=rxD
rxClk
D0 D1 D2 D3 D4 D6 D7 D5 incio nal
repouso repouso
Figura 7.11: Enquadramento de um caracter para transmissao serial.
O circuito de recepcao ca a espera de uma transicao descendente em rxD porque esta
transicao demarca o incio de um caracter. Apos a borda do bit de incio, o receptor
espera meio intervalo de bit e passa a amostrar os bits recebidos a cada intervalo de bit
completo. O receptor descarta os bits de incio e de nal e entrega somente o caracter
recebido ao processador.
Note que um protocolo de comunicacao esta sendo denido quando velocidade de trans-
missao, n umero de bits por caracter, enquadramento, e o comportamento dos circuitos que
Captulo 7. Interfaces 143
implementam este protocolo. Em particular, o protocolo descrito aqui e conhecido como
serial assncrono e partes dele sao denidos pelo padrao EIA 232-D, que e o protocolo
usado na interface serial de computadores pessoais.
Exerccios
Ex. 7.12 Projete as maquinas de estado para os circuitos completos do transmissor e do
receptor.
Ex. 7.13 O que voce pode dizer quanto `a eciencia desta forma de comunicacao?
Ex. 7.14 Na descricao do circuito de recepcao e dito que o receptor espera meio intervalo
de bit apos a borda do bit de incio. Isso implica em que o relogio da maquina de estados
do circuito receptor deve operar com uma velocidade que e, no mnimo, o dobro da veloci-
dade do relogio de recepcao. Supondo que o relogio da maquina de estados opera numa
velocidade 8 vezes maior que a velocidade de recepcao, projete uma maquina de estados
para o circuito receptor que detecte a borda do bit de incio e entao passa a amostrar
os bits recebidos no meio do intervalo de bit, como mostra o diagrama de tempos na
Figura 7.11.
Ex. 7.15 Suponha que interferencia eletromagnetica cause um pulso de rudo eletrico de
curta duracao no cabo, enquanto este esta em repouso. O que pode ser feito para detectar
a ocorrencia de falsos bits de incio?
Ex. 7.16 O circuito descrito permite a comunicacao numa unica direcao. O que e
necessario para permitir a comunicacao nas duas direcoes ao mesmo tempo (com 3 os)?
E nas duas direcoes, mas alternadamente (2 os)?
Ex. 7.17 A paridade de uma seq uencia de bits e a contagem de bits em 1 na seq uencia.
Se a paridade e mpar em uma seq uencia com n 1 bits, entao o bit de paridade, que e o
n-esimo bit, deve ser tal que o n umero de bits em 1 na seq uencia seja mpar.
Projete uma maquina de estados que computa a paridade mpar de uma seq uencia de
bits. Esta maquina de estados possui tres entradas e uma sada: a entrada din recebe a
seq uencia de bits cuja paridade deve ser computada. A entrada rel e o sinal que cadencia
a operacao do circuito. A sada parid contem a paridade mpar da seq uencia apresentada
em din ate o tick anterior de rel. A entrada reset coloca a sada em zero. (a) Desenhe
um diagrama de tempos mostrando a operacao do circuito. (b) Faca um diagrama com o
circuito e explique seu funcionamento.
7.3.2 Ligacao ao Processador
Ate o momento, discussao se concentrou no funcionamento dos circuitos de transmissao
e recepcao da interface de comunicacao serial. Os dois registradores de deslocamento
(paralelo-serie e serie-paralelo) e o circuito de controle sao normalmente encapsulados em
um unico CI. No PC, este CI e chamado de Universal Asynchrhonous Receiver-Transmitter
(UART). O universal e devido `a versatilidade do dispositivo; ele pode operar em um
de varios modos diferentes, com as opcoes selecionadas pelo programador. Alem dos
registradores de deslocamento, uma UART possui um registrador de controle que mantem
o modo de operacao selecionado pelo programador.
Captulo 7. Interfaces 144
A Figura 7.12 uma versao muito simplicada da interface que interliga uma UART ao
barramento de um processador. As oito linhas de dados (D0-D7) permitem a carga e a
leitura dos registradores de deslocamento da UART pelo processador. O sinal cs habilita
o acesso ao periferico pelo processador. Quando o processador deseja ler ou escrever na
UART, ele emite instrucoes de leitura ou escrita para o endereco apropriado. O circuito
de controle dos perifericos ativa o sinal csIntSer sempre que a UART for acessada pelo
processador. O sinal wr determina a direcao da referencia pelo processador.
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
............... . . . . . . . . . . . . .
. . . . . . . . . . . . . ...............
D1
D2
D3
D4
D5
D6
D7
rxD
wr
csIntSer
d
1
d
2
d
3
d
4
d
5
d
6
d
7
D0
interfSerial
txD
cs
wr
d
0
txD
rxD
E0 e
0
Figura 7.12: Sinais da interface com processador.
Apos uma escrita pelo processador (cs=0 wr=0), o caracter por transmitir e gravado no
registrador de transmissao e os bits sao emitidos pela sada txD da UART. Apos a emissao
do bit de nal, uma nova escrita pelo processador dispara a transmissao de outro caracter.
Quando um caracter e recebido pela linha rxD, ele ca disponvel para leitura pelo pro-
cessador. Quando o processador efetua uma leitura na UART, ele remove o caracter do
registrador serie-paralelo e o transfere para a memoria.
Alem do registrador de controle, e necessario um registrador que mantenha informacao
atualizada sobre o estado de operacao do periferico, chamado de registrador de status.
No mnimo, este registrador contem um bit que informa se ha espaco no registrador de
transmissao e se ha um novo caracter no registrador de recepcao.
A Figura 7.13 contem um diagrama da versao (quase) completa da UART. Alem dos reg-
istradores de transmissao e recepcao, os registradores de status e controle sao mostrados.
Quando cs esta ativo, as linhas de endereco E0 e wr escolhem um dos quatro registradores
de acordo com a Tabela 7.3.
A Figura 7.13 mostra ainda o circuito de geracao dos sinais de relogio para a recepcao e
a transmissao. A velocidade de operacao da UART pode ser programada gravando-se os
valores adequados nos bits D5-D7 do registrador de controle, por exemplo. O circuito de
relogio e pouco mais complexo do que um contador programavel.
E0 wr registrador
0 0 controle
0 1 status
1 0 transmissao
1 1 recepcao
Captulo 7. Interfaces 145
Tabela 7.3: Enderecamento dos registradores.
r
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
r
r
r
r
r
r
r
r
r
r
r
r
r
r
r
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
...................... . . . . . . . . . . . . . . . . . . . .
1
2
3
0
pronto
rxClk
carga
txClk
wr
E0
cs
ld
D7
D6
D5
D4
D3
D2
D1
D0
registrador
paralelo-serie
selContr
selStatus
selRecep
en
en en
selTransm
en
reg. de controle
reg. de status
reg. serie-paralelo
rxClk
txClk
txD
rxD
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
............................ . . . . . . . . . . . . . . . . . . . . . . . . . .
............. . . . . . . . . . . .
. . . . . . . . . . . .............
D
0
Q
0
gerador de relogio
Q
0
Q
1
Q
2
Q
3
Q
6
Q
7
Q
5
Q
4
Q
0
Q
1
Q
2
Q
3
Q
6
Q
7
Q
5
Q
4
D
0
D
1
D
2
D
3
D
6
D
7
D
5
D
4
D
0
D
1
D
2
D
3
D
6
D
7
D
5
D
4
Figura 7.13: Diagrama de blocos detalhado da UART.
7.3.3 Programacao
Os registradores da UART podem ser descritos por uma estrutura de dados da linguagem
C com os seguintes componentes.
typedef unsigned char uchar; / abreviatura /
O registrador de controle possui dois campos. O campo veloc permite a programacao da
velocidade de operacao da interface serial. O campo final2 permite denir o n umero de
bits de nal: se final2=0 a UART transmite um bit de nal apos cada caracter valido;
se final2=1 a UART transmite dois bits de nal apos cada caracter valido.
typedef struct controle / campos do reg. de controle /
uchar veloc : 3 , / velocidade de operacao /
final2 : 1 , / n umero de bits de nal /
resto : 4 ; / completa 8 bits /
Tcontrole;
Captulo 7. Interfaces 146
O registrador de status contem um bit que indica se o registrador de recepcao contem um
novo caracter que deve ser copiado pelo processador, bit rxCheio; um bit que indica se
o registrador de transmissao esta vazio e pode receber novo caracter, bit txVazio; um
bit que indica erro de operacao, bit erro. Apos a leitura do registrador de status pelo
processador, a UART limpa todos os bits de status.
typedef struct status / campos do reg. de status /
uchar rxCheio : 1 , / caracter no reg. de recepcao /
txVazio : 1 , / espaco no reg. transmissao /
erro : 1 , / erro de operacao /
resto : 5 ; / completa 8 bits /
Tstatus;
O endereco dos registradores de controle e status e o mesmo (E0=0); o que diferencia o
acesso e se leitura ou escrita. A uniao TctlStat permite acessar os dois registradores no
mesmo endereco.
typedef union ctlStat
Tcontrole ctl;
Tstatus stat;
TctlStat;
O endereco dos registradores de transmissao e recepcao e o mesmo (E0=1); o que diferencia
o acesso e se leitura ou escrita. A uniao Tdados permite acessar os dois registradores no
mesmo endereco.
typedef union dados
uchar txReg;
uchar rxReg;
Tdados;
A estrutura abaixo contem as descricoes dos 4 registradores da UART.
typedef struct serial / UART /
TctlStat cs; / controle (wr) e status (rd) /
Tdados d; / transmissao (wr) e recepcao (rd) /
Tserial;
O fragmento de codigo abaixo grava o modo de operacao da UART no registrador de
controle, envia um caracter e espera por um caracter.
Tserial serial; / interface serial /
char c;
/ programa modo de operacao /
serial.cs.ctl = MODO DE OPERACAO;
/ envia caracter /
while ( ! serial.cs.stat.txVazio )
; / espera por espaco no registrador tx /
serial.d.txReg = a;
Captulo 7. Interfaces 147
/ espera por caracter /
while ( ! serial.cs.stat.rxCheio )
; / espera por caracter no registrador rx /
c = serial.d.rxReg; / atribui `a c caracter recebido /
7.3.4 Double Buering
Nossa UART ainda tem uma deciencia. Apos escrever um caracter no registrador de
transmissao, o processador deve car em um loop, testando o registrador de status con-
tinuamente ate que o oitavo bit do caracter seja transmitido. Somente quando a UART
emite o bit de nal e que o processador pode escrever um novo caracter no registrador de
transmissao. Esta situacao e mostrada no diagrama de tempos na Figura 7.14.
.......
.......
.....
.......
.......
.....
................................. ................................... ................................. ................................... ................................. ................................... ................................. ................................... ................................. .................................
................................... ................................... ................................. .................................
D0 D1 D2 D3 D4 D6 D7 D5 incio nal
leitura
reg. status
leitura
reg. status
leitura
reg. status
escrita
reg. transm.
escrita
reg. transm.
txClk
txD
cs
wr
Figura 7.14: Espera pelo nal de transmissao.
Do ponto de vista do desempenho do sistema, esta situacao e indesejavel porque o pro-
cessador ca ocupado tentando descobrir se ja e possvel enviar o proximo caracter da
mensagem. A solucao para este problema consiste em inserir um registrador entre o reg-
istrador de transmissao propriamente dito e o processador, como mostrado na Figura 7.15.
Esse registrador e chamado de buer de transmissao. O circuito de controle da UART
copia o caracter gravado pelo processador no buer para o registrador de deslocamento
(paralelo-serie) e imediatamente indica no registrador de status que ha espaco disponvel
no buer de transmissao. Assim que o oitavo bit de um caracter e emitido, se o buer nao
esta vazio, o controlador copia o caracter do buer para o registrador de deslocamento e
inicia nova transmissao imediatamente. Dessa forma, o processador pode gravar dois car-
acteres em rapida sucessao na UART e usar o tempo de transmissao destes para efetuar
outras tarefas.
Captulo 7. Interfaces 148
...................... . . . . . . . . . . . . . . . . . . . .
ld
registrador
paralelo-serie
txD
envia
txClk
buer de transmissao
ld carga
D0 D1 D2 D3 D4 D5 D6 D7
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
Q
0
D
0
D
1
D
2
D
3
D
6
D
7
D
5
D
4
Figura 7.15: Circuito de transmissao com double buering.
Exerccios
Ex. 7.18 Projete o circuito de double buering para a recepcao.
Ex. 7.19 Projete os circuitos de controle para transmissao e recepcao com double buer-
ing.
Ex. 7.20 O que voce pode dizer quanto `a eciencia do codigo de transmissao e recepcao
de caracteres mostrado na pagina 147? O que aconteceria com o computador que executa
este programa se o cabo fosse desconectado?
7.3.5 Interrupc oes
O codigo mostrado acima esta escrito em modo espera ocupada, isto e, o processador ca
preso no loop esperando pela ocorrencia de um evento no periferico. Por exemplo, no
loop de espera por um caracter, o processador pode car eternamente preso se o cabo
for rompido. O nome generico para operacoes de Entrada/Sada (E/S) com interferencia
constante do processador e E/S por programa pois o processador permanece `a espera dos
eventos nos perifericos.
Uma alternativa `a E/S por programa e o uso de E/S por interrupcao. Este modo de
operacao e similar ao atendimento de chamadas telefonicas. Quando toca o telefone,
deixa-se de lado o que se esta fazendo para atender ao chamado. Finda a ligacao, retoma-
se `a tarefa interrompida.
Os perifericos que operam com interrupcao possuem um sinal de interrupcao que e ligado
ao processador. Quando ocorre um evento interessante, o periferico ativa a linha de
interrupcao solicitando a atencao do processador. Este para de executar a seq uencia
normal de instrucoes e se comporta como numa chamada de funcao: desvia para a primeira
instrucao da funcao que trata do evento associado `a interrupcao (salvando o endereco de
retorno na pilha), executa o codigo do tratador da interrupcao, e retorna para o ponto do
codigo onde ocorreu a interrupcao do processamento.
Normalmente, o processador examina o estado das linhas de interrupcao antes de iniciar
a execucao de uma nova instrucao. O ponto exato depende da implementacao, mas geral-
Captulo 7. Interfaces 149
mente as interrupcoes sao aceitas no(s) primeiro(s) ciclo(s) de busca de instrucoes. O
endereco de retorno do tratador da interrupcao e o da instrucao que nao foi executada por
causa do atendimento da interrupcao.
Uma versao muito simplicada de um tratador de interrupcao para nossa UART poderia
ser como o mostrado abaixo.
void interrSerial(void)
Tstatus stat;
stat = serial.cs.stat; / limpa reg. de status /
if (stat.rxCheio)
rxChar = serial.d.rxReg; / variavel global /
if (stat.txVazio)
serial.d.txReg = txChar; / variavel global /
if (stat.erro)
panico();
return();

Este trecho de codigo, ao ser executado, deixa alguns dos registradores do processador com
conte udo diferente daqueles encontrados no momento em que o tratador de interrupcao foi
invocado. Ao retornar da interrupcao, estes valores causariam erros no programa que foi
interrompido. Para evitar que isso ocorra, os tratadores de interrupcao devem salvar na
pilha o conte udo de todos os registradores que sao alterados pelo tratador. Imediatamente
antes de retornar, o tratador repoe os valores originais nos registradores.
Um esqueleto de tratador de interrupcao e mostrado abaixo.
void interrSerial(void)
DI; / desabilita novas interrupcoes /
SALVA REGS;
EI; / re-habilita interrupcoes /
TRATA EVENTO;
DI; / desabilita novas interrupcoes /
RECOMPOE REGS;
EI; / re-habilita interrupcoes /

As instrucoes para desabilitar novas interrupcoes sao necessarias para garantir que o salva-
mento dos registradores na pilha ocorra sem que outra interrupcao atrapalhe. O intervalo
de tempo em que interrupcoes cam desabilitadas deve ser minimizado para garantir que
o processador nao deixe de tratar nenhum evento importante.
7.4 Interfaces Anal ogicas
O mundo se comporta de modo analogico e pode ser modelado por sinais representados
por n umeros Reais. Por exemplo, velocidade e temperatura variam de forma contnua
e estas grandezas sao geralmente representadas por funcoes com domnio e imagem
(temperaturatempo) nos Reais. Sinais representaveis por n umeros reais sao geralmente
chamados de sinais analogicos.
Captulo 7. Interfaces 150
O universo digital consiste de modelos que representam de forma mais ou menos precisa o
universo analogico. Por exemplo, n umeros representados com notacao de ponto utuante
(float ou double) sao apenas aproximacoes nao muito boas dos n umeros Reais. Um
n umero representado por um float corresponde a uma faixa de valores na reta dos Reais,
faixa esta com largura aproximada de [2.0 10
38
, 2.0 10
+38
] (mantissa de 23 bits e
expoente de 8 bits).
Para muitas aplicacoes, uma faixa restrita de valores discretos e suciente para representar
as grandezas fsicas de interesse. Por exemplo, CDs armazenam informacao sonora de alta
qualidade como seq uencias de n umeros de 16 bits. Aplicacoes mais ou menos sosticadas
empregam representacoes com 8, 12 ou 16 bits, representando intervalos divididos em
2
8
= 256, 2
12
= 4096 e 2
16
= 65536 faixas, respectivamente. O n umero de faixas dene
a resolucao da representacao, e quanto maior o n umero de faixas, maior a resolucao. A
resolucao, e portanto o n umero de divisoes do intervalo de interesse, depende da precisao
necessaria e do custo do produto.
7.4.1 Representacao Digital de Sinais Anal ogicos
A Figura 7.16 abaixo mostra um sinal contnuo em amplitude, e no tempo, represen-
tado pela linha contnua e uma serie de valores com sua representacao discreta no ve-
tor s[ ]. As linhas verticais pontilhadas representam os instantes em que as amostras sao
tomadas. O intervalo de tempo entre duas amostras consecutivas e chamado de intervalo
de amostragem e e representado por T.
................... . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . ............... ............... . . . . . . . . . . . . .
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
10
20
30
40
60
50
T
tempo
representacao digital discreta
s[0]=28 s[1]=39 s[2]=30 s[3]=20 s[4]=51
1 2 3 4 0
amplitude
representacao analogica contnua
Figura 7.16: Sinal contnuo e sua representacao discreta.
7.4.2 Conversor DigitalAnal ogico
Um diagrama de blocos com o circuito de conversao da representacao digital para a repre-
sentacao analogica e mostrado na Figura 7.17. O conversor digital-analogico (conversor-
DA) possui uma entrada digital de 8 bits, nos sinais d0-d7, e produz uma tensao Vsai que
e proporcional ao n umero em d0-d7. Veja [TS89] para detalhes.
Captulo 7. Interfaces 151
Vsai sada
D0 D1 D2 D3 D4 D5 D6 D7
d
0
d
1
d
2
d
3
d
6
d
7
d
5
d
4
conversor-DA
Figura 7.17: Interface de um conversor Digital-Analogico.
O valor em Vsai e a soma ponderada dos bits na entrada. Suponha uma faixa de tensoes na
sada no intervalo entre 0 e 2 volts, similar `a sada analogica de toca-CDs. O valor maximo
na faixa e chamado de Vmax. Os fatores de ponderacao para os 8 bits sao mostrados na
Tabela 7.4. Os fatores de ponderacao sao proporcionais `a posicao do bit. Por exemplo, se
somente o bit d7 e 1 e todos os demais sao 0, a sada e 1.0 volt; se os bits d6 e d5 estao
em 1 e os demais em 0, a sada e 0.75 volts.
bit peso tensao na sada [V]
d7 1/2 1.0
d6 1/4 0.5
d5 1/8 0.25
d4 1/16 0.125
d3 1/32 0.0625
d2 1/64 0.03125
d1 1/128 0.015625
d0 1/256 0.0078125
Tabela 7.4: Valores associados aos 8 bits de um conversor D-A.
A Figura 7.18 mostra a funcao de transferencia do conversor-DA. O eixo horizontal denota
a faixa de valores na entrada, e o eixo vertical a faixa de valores na sada. O tamanho
de cada degrau na escada dene a resolucao do conversor. A resolucao do conversor e
denida pelo n umero de bits na sua entrada. Para um conversor de 8 bits, a resolucao e
1/256 enquanto que para um conversor de 16 bits, a resolucao e 1/65536.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
0V
2V
. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .
................... . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
conversor linear
analogica
sada
digital
entrada
0 ... FD FF 1 3 2 6 4 5 FE
Figura 7.18: Funcao de transferencia de um conversor D-A de 8 bits.
Captulo 7. Interfaces 152
A precisao de um conversor depende da exatidao com que os pesos de cada bit sao imple-
mentados no conversor. A Figura 7.19 mostra a funcao de transferencia onde os pesos dos
bits nao sao os corretos. Esta funcao de transferencia e dita nao-linear porque a altura
dos degraus da escada varia de forma nao linear ao longo da faixa de valores de entrada.
No exemplo da gura, no incio da faixa digital os degraus sao muito altos, e no nal da
faixa sao muito baixos.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
0V
2V
. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .
................... . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
conversor nao-linear
analogica
sada
digital
entrada
0 ... FD FF 1 3 2 6 4 5 FE
...
Figura 7.19: Funcao de transferencia nao-linear.
7.4.3 Conversor Anal ogicoDigital
A Figura 7.20 mostra um conversor analogico-digital (conversor-AD). O conversor possui
uma entrada analogica Vin e produz uma sada digital com 8 bits de largura em d0-d7.
O n umero na sada do conversor-AD e proporcional `a tensao no sinal Vin. O circuito
deste conversor e descrito abaixo. Uma conversao se inicia quando o sinal inicia e ativado;
apos um certo n umero de ciclos do relogio o valor de sada e apresentado nos bits d0-d7.
Quando a conversao esta completa e o valor em d0-d7 e valido e estavel, o sinal pronto e
ativado.
......................................................
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ............................................... .. . . . . . .. ...........................................
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
relogio
inicia
Vin
conversor A-D
pronto
d7-d0
interface digital
Figura 7.20: Interface do conversor Analogico-Digital.
Um componente importante da implementacao mostrada abaixo e um circuito chamado de
comparador. A sada do comparador e um sinal digital e suas duas entradas sao analogicas.
O comportamento do comparador e descrito pela expressao s ==(Vpos >= Vneg) onde
Vpos corresponde `a entrada marcada + e Vneg `a entrada no desenho do comparador.
Captulo 7. Interfaces 153
ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
s
Vpos
Vneg
+
s = (Vpos Vneg)
Figura 7.21: Especicacao e smbolo do comparador.
Uma possvel implementacao de um conversor-AD e descrita no que segue. Este conversor
emprega uma tecnica similar `a busca seq uencial para produzir sua sada digital. O sinal
em Vent e comparado com Vcomp que e a sada de um conversor-DA. Quando uma
conversao e iniciada, o contador inicia a contagem em zero e e incrementado a cada pulso
do relogio. Enquanto Vcomp e menor que Vent, o sinal habilita ca ativo e o contador
segue incrementando. Quando a contagem e tal que Vcomp se iguala a Vent, a sada
do comparador se inverte e a contagem e paralisada. O sinal pronto e ativado indicando
que d0-d7 contem o n umero que corresponde `a tensao em Vent. As mesmas observacoes
quanto `a resolucao e precisao em conversores-DA valem para conversores-AD.
q q q
p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppp
............................ . . . . . . . . . . . . . . . . . . . . . . . . . .
Q
7
Q
6
Q
5
Q
4
Q
3
Q
2
Q
1
Q
0
b
4
b
3
b
2
b
1
b
0
b
7
b
6
b
5
r
r
r
r
r
ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
habilita
conversor D-A
hab
Vent
-
+
Vcomp
inicia
relogio
reset
contador
b1
b0
b6
b7
pronto
Figura 7.22: Conversor Analogico-Digital.
Exerccios
Ex. 7.21 Este conversor necessita, em media, 128 pulsos de relogio para efetuar uma
conversao ja que ele e baseado em pesquisa seq uencial. Projete um circuito que substi-
tua o contador de forma a que a pesquisa seja similar `a pesquisa binaria. Podem ser
necessarios dois comparadores. Qual o n umero maximo de ciclos de relogio para produzir
um resultado? Qual o n umero medio?
Ex. 7.22 Considere um sistema em que a grandeza analogica varia, em cada intervalo
de amostragem, no maximo o equivalente a 8/256 da faixa de valores. Desenvolva uma
Captulo 7. Interfaces 154
tecnica de conversao de analogico para digital que leve este fato em consideracao para
reduzir a largura dos conversores.
Ex. 7.23 Suponha que sua solucao para o Exerccio 7.22 implique em duplicar a freq uencia
de amostragem para garantir que as variacoes nao excedam `a taxa maxima do novo con-
versor. Esta e uma solucao vantajosa, do ponto de vista do espaco de memoria necessario
para armazenar as seq uencias que representam os dados analogicos amostrados?
7.5 Contadores e Temporizadores
Existem muitas aplicacoes nas quais algumas das grandezas externas que devem ser con-
troladas pelo computador sao representadas por sinais digitais que variam no tempo. A
variavel de controle externa pode ser o n umero de pulsos, representando o n umero de
carros que passaram por um sensor, por exemplo. A variavel de controle poderia ser
expressa por uma taxa ou velocidade, representada pelo n umero de pulsos durante um
certo intervalo. Nestes dois casos, a medida da variavel externa pode ser efetuada por um
contador, e o valor da contagem representa a variavel de controle. No caso de medida de
velocidade, a velocidade e representada pelo n umero de pulsos acumulados durante uma
unidade de tempo.
Um periferico contador tipicamente dispoe de recursos que exibilizam seu uso. A entrada
de contagem pode ser um sinal externo que e ligado como sinal de relogio do contador, ou
pode ser o relogio do sistema, possivelmente dividido por uma potencia de 2 porque sua
freq uencia e muito elevada para a maioria das aplicacoes.
O contador pode ser carregado com um valor inicial e a cada pulso de seu sinal de relogio
e incrementado ate que a contagem chegue no valor de nal de faixa ou vire para zero.
Este evento e sinalizado no registrador de status do periferico ou causa uma interrupcao.
Neste caso, quando se deseja observar C pulsos no sinal de entrada, o valor inicial que
deve ser carregado no contador deve ser 2
n
C, se o contador tem n bits.
O diagrama de blocos da Figura 7.23 mostra alguns dos sinais de controle de um contador.
O sinal selFonte permite escolher a fonte do sinal de relogio do contador dentre o relogio do
computador (rel) ou um sinal externo (ext). Este sinal pode ser dividido por uma potencia
de 2, que e uma funcao do valor em escala. O valor inicial de contagem pode ser carregado,
e observado, pelo processador atraves do barramento interno. O sinal m indica o nal de
contagem e este sinal pode ser usado para provocar uma interrupcao.
7.5.1 Modos de Operacao
Os modos de operacao de um contador dependem dos recursos disponveis no periferico.
O uso mais simples e direto e a contagem de pulsos do sinal de entrada. Usos mais
sosticados envolvem a contagem de um n umero pre-denido de pulsos, ou a medida de
um intervalo de tempo. Note que o valor maximo de contagem e limitado pelo n umero de
bits do contador n, que determina o conjunto de valores e o nal de faixa que e 2
n
1.
Captulo 7. Interfaces 155
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
............................ . . . . . . . . . . . . . . . . . . . . . . . . . .
clr
ld
Q
n
D
n
dados-ent
dados-sai
Q
e
D
e
selFonte
rel
ext
reset
carga
escala
m
cont
e
0
1
vai
cont
n
Figura 7.23: Diagrama de blocos de um contador.
Contagem O contador e inicializado em zero e os pulsos na entrada do contador sao
acumulados e o valor da contagem e lido pelo processador quando necessario. No caso de
medida de velocidade, o valor da contagem e observado periodicamente e a cada incio de
intervalo, a contagem e re-inicializada em zero.
Contagem de valor xo O contador e inicializado com o valor que se deseja observar
e cada pulso na entrada causa um decremento no contador. Quando a contagem chega
em zero, este evento deve ser sinalizado ao processador, possivelmente atraves de uma
interrupcao. Alternativamente, o contador pode ser inicializado com a diferenca entre o
nal de faixa e o valor a ser observado. Cada pulso na entrada incrementa o contador
e quando a contagem chegar no m da faixa, ou virar para zero, o processador deve
ser avisado ou por uma interrupcao, ou a condicao deve ser assinalada no registrador de
status.
Temporizacao Quando se deseja medir um intervalo xo de tempo, a entrada do conta-
dor e ligada a um sinal com perodo conhecido, possivelmente derivado do sinal de relogio.
O intervalo de tempo a ser medido e proporcional ao n umero de pulsos do sinal de entrada.
Quando a contagem atinge o valor desejado, este evento deve ser sinalizado ao processador.
Exerccios
Ex. 7.24 Projete o circuito que permite dividir o sinal de contagem pela escala denida
por 2
e
, e 0, 4, 16.
Ex. 7.25 Suponha que o relogio do sistema tenha freq uencia de 1MHz (perodo de 1s)
e que o contador seja de 32 bits. Qual a faixa (max, mn) de intervalos de tempo que
podem ser medidos, considerando-se o circuito de escala do exerccio anterior.
Captulo 8
Programacao
Este captulo discute algumas das questoes relacionadas a implementacao em linguagem de
maquina de construcoes denidas na linguagem C como tais estruturas de dados simples
e funcoes. O enfoque das proximas secoes nao e mostrar como projetar e construir o
gerador de codigo de um compilador, mas sim indicar como as construcoes de linguagem
de alto nvel podem ser usadas na programacao em linguagem de maquina. A Secao 8.1
apresenta as instrucoes para ler e escrever em memoria e introduz o calculo do endereco
efetivo para acesso aos componentes de estruturas de dados denidas pelo programador, e
para o acesso aos elementos de vetores e matrizes. A Secao 8.2 mostra uma implementacao
dos mecanismos necessarios para o uso de funcoes em linguagem de maquina, em especial
os protocolos envolvidos na chamada e retorno de funcoes, e no uso da pilha. A secao
conclui com um exame mais detalhado da implementacao recursiva do calculo do fatorial.
Os exerccios do nal do captulo sao uma parte importante deste material.
8.1 Acesso a Estruturas de Dados
A instrucao ld (load) copia uma palavra da memoria para o registrador destino. O en-
dereco efetivo e a soma do conte udo de um registrador e de um deslocamento. Este
registrador e chamado de base ou ndice, e o deslocamento e um n umero representado em
complemento de dois. A instrucao st (store) copia o conte udo do registrador fonte para a
posicao indicada da memoria, e o endereco efetivo e calculado como para a instrucao ld.
A Tabela 8.1 dene estas duas instrucoes e a Figura 8.1 mostra o calculo do endereco efe-
tivo. A instrucao la (load address) permite carregar um endereco num registrador, para
servir de base ou ndice para instrucoes subseq uentes.
instrucao semantica descricao
ld $d, desl($i) $d:=mem[$i+desl] load from memory
st $f, desl($i) mem[$i+desl] := $f store to memory
la $d, ender $d := ender load address
Tabela 8.1: Instrucoes de acesso `a memoria.
156
Captulo 8. Programacao 157
ld
deslocamento
base
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
. . . . . . . . . . . . . ...............
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . ...............
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . ...............
ld $1,3($2) # $1:=M[$2+3]
0x03
M[ ]
2 1
&(V[0])
&(V[1])
&(V[2])
&(V[3])
&(V[0]) $2
Figura 8.1: Calculo do endereco efetivo em referencias `a memoria
Considere a estrutura E com 4 componentes do tipo int e um vetor com 16 elementos de
tipo E. O trecho de codigo abaixo contem as declaracoes da estrutura e do vetor, e mostra
a traducao para linguagem de maquina de comandos que acessam a elementos do vetor.
Programa 8.1
typedef struct E
int x; / inteiro de 32 bits = 4 bytes /
int y;
int z;
int w;
eType;
...
eType VE[16]; / compilador alocou VE em 0x8000 /
...
ePtr = &(VE[3]); la $1, 0x8030 # 3 elementos 4 pals/elmto 4 bytes/pal
m = ePtr->y; ld $2, 4($1)
n = ePtr->w; ld $3, 12($1)
ePtr->x = m+n; add $3, $2
st $3, 0($1)
O compilador, ao examinar o codigo fonte, determina o layout das estruturas de dados e
portanto os tamanhos de seus elementos e os deslocamentos necessarios para acessa-los. O
programador de linguagem de maquina e o responsavel por denir as estruturas de dados
e fazer todos os calculos de endereco que sejam necessarios para o acesso aos componentes
das estruturas.
8.1.1 Calculo de enderecos
O compilador gcc aloca memoria para vetores de tal forma que elementos contguos sao gcc
armazenados em enderecos contguos. A Equacao 8.1 pode ser usada para calcular o
endereco em memoria do i-esimo elemento de um vetor de elementos de tipo . O tamanho
de um elemento do vetor e o n umero de bytes de um objeto do tipo e pode ser obtido
com a funcao sizeof(). O tamanho de um elemento do tipo e denotado por [[, e para
a estrutura E do Programa 8.1, [[ = 4 4 = 16.
O endereco do elemento i do vetor V e um deslocamento de i [[ bytes com relacao ao en-
dereco do primeiro elemento do vetor, denotado pelo operador & da linguagem C, &(V [0]).
Captulo 8. Programacao 158
&(V [i]) = &(V [0]) +i [[ (8.1)
Uma matriz e alocada em memoria como um vetor de vetores. A Equacao 8.2 permite cal-
cular o endereco em memoria do i-esimo elemento da j-esima linha da matriz M, tambem
como um deslocamento com relacao ao endereco de M[0][0]. O n umero de elementos de
uma linha e denotado por .
&(M[i][j]) = &(M[0][0]) +[[( i +j) (8.2)
O tipo dos elementos de um vetor dene a largura do passo que deve ser dado ao percorre-
lo. Para os tipos inteiros char, short, int, e long long, o passo tem largura 1, 2, 4 e 8,
respectivamente. Da mesma forma, para um vetor de estruturas de tipo , o passo tem
largura [[.
8.1.2 Segmentos de C odigo, Dados e Pilha
A Figura 8.2 mostra a alocacao dos quatro segmentos de memoria tpicos de um programa
em C os enderecos dos segmentos foram escolhidos apenas para tornar a descricao mais
concreta. O segmento com o codigo executavel do programa e alocado nos enderecos mais
baixos (0x0000 a 0x5f). As variaveis globais sao alocadas na faixa imediatamente acima
do codigo (0x6000 a 0x7f), e acima desta faixa ca o segmento do heap que e a area
reservada para a alocacao dinamica de memoria atraves de chamadas `as funcoes alloc()
ou malloc(). O segmento da pilha e alocado a partir do endereco de memoria mais alto,
e portanto a pilha cresce de cima para baixo. Como as duas setas indicam, a pilha cresce
dos enderecos mais altos para os mais baixos, enquanto que o heap cresce dos enderecos
mais baixos para os mais altos. A area entre pilha e heap deve ser grande o bastante para
acomodar estes dois segmentos em seus tamanhos maximos.
............................
.......... .......... .......... .......... .......... ......
. . . . . . . . . . . . . .. . . . . . . . . . . . . .
pilha
variaveis globais
codigo
0x6000
0x0000
0x
heap
0x8000
Figura 8.2: Alocacao de pilha e heap em memoria.
8.2 Func oes
O suporte ao uso funcoes depende de varios componentes de hardware e de software. Os
componentes de hardware sao as instrucoes do processador que permitem saltar para as
funcoes e delas retornar, alem de registradores como o apontador da pilha de funcoes. Os
componentes de software devem ser implementados pelo programador ou compilador, e sao
a pilha de funcoes e os trechos de codigo que devem ser executados no incio e no nal de
Captulo 8. Programacao 159
uma funcao. As proximas secoes mostram a implementacao em linguagem de maquina dos
mecanismos associados ao suporte a funcoes, como o suporte a variaveis locais, a avaliacao
e a passagem de parametros, e convencoes que devem ser seguidas por programadores e
compiladores.
8.2.1 Variaveis Locais
No trecho de codigo mostrado no Programa 8.2, as variaveis x,y,z nas funcoes main(),
f(), g() e h(), embora tenham o mesmo nome nas quatro funcoes, sao variaveis distintas
e portanto devem ser armazenadas em enderecos distintos. Na linguagem C, as variaveis
locais sao alocadas na pilha de funcoes.
Programa 8.2
1 void main(int argc, char **argv)
2 int x, y, z, w;
3 z = f(x);
4 w = h(y);
5 y = g(w, z);
6
7
8 int f(int x)
9 int z;
10 z = h(x) ... ;
11 return z;
12
13
14 int g(int x, int y)
15 int z;
16 z = h(x) ...
17 ... h(y) ... ;
18 return z;
19
20
21 int h(int x)
22 int z;
23 z = x ... ;
24 return z;
25
Outra variavel importante que tambem deve ser armazenada na pilha de funcoes e o
endereco da instrucao em que a execucao deve retomada apos o codigo da funcao ser
executado. Apos executar o codigo da funcao, o uxo de controle deve retornar para o
ponto em que a funcao foi invocada. Considere a funcao h() no Programa 8.2. Esta
funcao e invocada em varios pontos do programa. Em main(), h() e invocada na linha 4,
e na linha 10 durante a execucao de f(), e nas linhas 16 e 17 durante a execucao de g().
A pilha registra implicitamente a ordem de execucao das funcoes, e para que isso seja
possvel, o endereco de retorno deve ser empilhado a cada nova invocacao.
Captulo 8. Programacao 160
8.2.2 Avaliacao de parametros
O Programa 8.3 indica a ordem em que sao tratados os parametros e valores de retorno
das funcoes. A linguagem C dene que os parametros sao computados da esquerda para
a direita, na ordem em que aparecem no codigo fonte.
Programa 8.3
void main(int argc, char **argv)
int x, y, z, w;
z = f(x);
/ carrega o parametro de f() /
/ salta para codigo de f() /
/ computa valor de retorno /
/ retorna e atribui valor de retorno `a z /
y = g(x, z) + h(y, z);
/ carrega os dois parametros de g() /
/ salta para codigo de g() /
/ computa valor de retorno de g() /
/ retorna e atribui valor retornado `a temp1 /
/ carrega os dois parametros de h() /
/ salta para codigo de h() /
/ computa valor de retorno de h() /
/ retorna e atribui valor retornado `a temp2 /
/ computa (temp1 + temp2) /
/ atribui resultado `a y /

8.2.3 Instruc oes de Chamada e de Retorno


Por convencao, a pilha de chamada de funcoes e alocada nos enderecos mais altos da
memoria e cresce na direcao de enderecos menores. O apontador de pilha e o registrador $sp
ou stack pointer. O $sp aponta sempre para a ultima posicao preenchida na pilha, que e a
ultima posicao nao-vazia.
Duas instrucoes implementam o suporte `a funcoes ou subrotinas. A instrucao jal (jump
and link) desvia para o endereco especicado no operando da instrucao (como num salto)
e armazena o endereco da instrucao subseq uente `a jal no registrador $ra, que a instrucao
que esta em pc+1 com relacao `a jal. A instrucao jr (jump register) atribui o conte udo
do registrador $r ao pc. A Tabela 8.2 dene estas duas instrucoes.
instrucao semantica descricao
jal ender $ra := pc
+
; pc:= ender jump and link
jr $r pc:= $r jump register
Tabela 8.2: Instrucoes de suporte `a funcoes.
Note que a instrucao jal e similar `a instrucao call, que faz parte do conjunto de instrucoes
de alguns processadores e e denida na Tabela 8.3, mas a jal nao salva o endereco de
retorno na pilha e sim no registrador $ra. A instrucao jr e similar `a instrucao ret, mas
Captulo 8. Programacao 161
ao contrario de ret, aquela nao retira o endereco de retorno da pilha, mas sim de um
registrador. O programador e responsavel por salvar na pilha o endereco de retorno,
depositado em $ra por jal. Note que pilha na Tabela 8.3 e a pilha de chamada de
funcoes e e alocada em memoria. As instrucoes push e pop permitem empilhar (salvar) e
desempilhar (recompor) o conte udo de registradores.
instrucao semantica descricao
call ender pilha[--$sp] := pc
+
; pc:= ender subroutine call
ret pc:= pilha[$sp++] return from subroutine
push $r pilha[--$sp] := $r push onto stack
pop $r $r := pilha[$sp++] pop from stack
Tabela 8.3: Instrucoes complexas de suporte `a funcoes.
8.2.4 Convenc oes
As seguintes convencoes devem ser adotadas por programadores e compiladores para garan-
tir trechos de codigo produzidos por varios autores possam ser usados em uma mesma
aplicacao. Esta e uma de muitas convencoes possveis de serem empregadas. Mais detal-
hes no Apendice A de [PH00].
parametros: o primeiro parametro da funcao e passado no registrador $r1; os
demais parametros sao passados atraves da pilha;
valor de retorno: o valor de retorno e passado no registrador $r0;
endereco de retorno: a instrucao jal deposita o endereco de retorno no
registrador $ra;
apontador de pilha: o apontador da pilha de funcoes e o registrador $sp, e
aponta para a ultima posicao nao-vazia;
registradores: os registradores que sao alterados pela funcao chamada devem
ser armazenados temporariamente na pilha; e
variaveis locais: o espaco para as variaveis locais e alocado na pilha.
Considere a funcao fun(), no Programa 8.4, com tres parametros de entrada x, y e w,
duas variaveis locais p e q, e que retorna um resultado de tipo short.
Programa 8.4
short fun(short x, short y, short w)
short p=0; short q=0;
p = (x & 0xff) | (y & 0xff00);
q = (x>>4) | (w>>12);
return p*q;

A funcao que invoca fun() deve empilhar y e w, e mover o valor associado `a variavel x
para o registrador $r1, antes de efetuar a chamada de fun(). Note que o segundo e terceiro
parametros sao armazenados abaixo do apontador de pilha, antes da invocacao de fun().
Captulo 8. Programacao 162
var. ender. comentario
7b topo da pilha antes da chamada de fun()
y 7a segundo parametro
w 79 terceiro parametro
ra 78 endereco de retorno
r1 77 primeiro parametro = variavel local
r4 76 variavel local implcita
p 75 variavel local
q 74 variavel local, topo da pilha durante execucao de fun()
Figura 8.3: Registro de ativacao de fun().
O codigo de fun() deve salvar o endereco de retorno na pilha, e nela alocar espaco para as
variaveis locais p e q e para o registrador $r4, como mostra a Figura 8.3. O registrador $r4
e modicado por fun() mas seu conte udo deve ser preservado, para nao alterar o estado
de execucao da funcao que invocou fun(). A area de memoria alocada na pilha por uma
funcao e chamada de registro de ativacao ou stack frame. Na Figura 8.3, o registro de
ativacao de fun() se estende do endereco 0x7b ate 0x74.
O trecho de codigo no Programa 8.5 contem as instrucoes que implementam o protocolo
de chamada de funcao. A funcao que invoca fun() empilha as duas variaveis locais, move
o primeiro parametro para o registrador $r1 e salta para a primeira instrucao de fun().
Programa 8.5
/ $sp aponta para 0x7b /
st r5, -1(sp) / empilha y /
st r4, -2(sp) / empilha w /
addi sp, -2 / ajusta apontador de pilha /
move r1, r3 / primeiro parametro /
4000 jal fun / o endereco de retorno e 0x4001 /
4001 add r2, r0 / usa valor retornado por fun() /
...
fun: addi sp, -5 / aloca espaco para 5 palavras: sp-5=0x7ff4 /
st ra, 4(sp) / empilha endereco de retorno /
st r1, 3(sp) / salva primeiro parametro /
st r4, 2(sp) / salva conte udo de $r4 /
...
move r0, r2 / prepara valor de retorno /
ld ra, 4(sp) / recompoe endereco de retorno /
ld r4, 2(sp) / recompoe $r4 /
addi sp, 7 / recompoe apontador de pilha: sp+7=0x7ffb /
jr ra / retorna para 0x4001 /
O protocolo de entrada e implementado pelas quatro primeiras instrucoes no codigo
de fun(), que alocam espaco na pilha para as variaveis locais e para o endereco de re-
torno, alem de salvar o valor do primeiro parametro na pilha, embora nesta funcao isso
seja desnecessario.
Apos computar o resultado da funcao, que e seu valor de retorno, este e movido para
o registrador $r0, o endereco de retorno e carregado em $ra, e o apontador de pilha e
Captulo 8. Programacao 163
ajustado para seu valor de antes que os dois parametros de fun() fossem empilhados.
As 5 instrucoes nais implementam o protocolo de sada desta funcao.
O conte udo do registrador $r4 e usado pela funcao que invocou fun(). e portanto seu
conte udo nao pode ser alterado durante a execucao de fun(). Por isso, $r4 e empilhado
no protocolo de entrada e desempilhado no protocolo de sada, garantindo-se que seu
conte udo original seja preservado durante a execucao do codigo de fun().
8.2.5 Recursao
Uma funcao recursiva e uma funcao que invoca a si propria. Um exemplo simples de
recursao e o calculo do fatorial atraves de uma funcao recursiva, como aquela mostrada
no Programa 8.6. A linha 5 contem uma chamada da funcao fat() com um parametro
que e 1 menor que o parametro de invocacao.
Programa 8.6
1 short fat(short n)
2 if (n==0)
3 return 1;
4 else
5 return (n * fat(n-1));
6
O calculo de 4! pela execucao de fat(4) evolui como mostrado abaixo. A recursao se
desenrola enquanto nao for denido um valor de retorno, que neste caso e fat(0)=1. A
partir de entao, a recursao e re-enrolada ate a primeira chamada da funcao recursiva.
fat(4) 4 fat(3) desenrola enquanto n ,= 0
fat(3) 3 fat(2)
fat(2) 2 fat(1)
fat(1) 1 fat(0)
fat(0) 1 re-enrola
fat(1) 1 1
fat(2) 2 1
fat(3) 3 2
fat(4) 4 6
O Programa 8.7 e uma versao em assembly do Programa 8.6. As tres primeiras instrucoes
implementam o protocolo de entrada, empilhando o registro de ativacao de fat() que e
composto pelo parametro de ativacao e pelo endereco de retorno. As instrucoes and e dnz
testam o valor de n, e se n=0 o valor de retorno e atribudo a $r0, o endereco de retorno
e re-inserido em $ra, o registro de ativacao e removido da pilha pelo incremento de 2 no
apontador de pilha (addi sp,2) e a funcao retorna ao executar jr ra.
Captulo 8. Programacao 164
Programa 8.7
fat:
st ra, -1(sp) # empilha endereco de retorno
st r1, -2(sp) # empilha parametro de ativacao
addi sp, -2 # ajusta apontador da pilha
if: and r1, r1 # if(n==0)
dnz else
clr r0
addi r0, 1 # retorna 1 em r0
addi sp, 2 # remove registro de ativacao
jr ra
else: addi r1, -1 # n-1
jal fat # fat(n-1)
eRet: ld r1, 0(sp) # recupera valor de n
mul r0, r1 # n fat(n-1) r0=fat(n-1), r1=n
ld ra, 1(sp) # recupera endereco de retorno
addi sp, 2 # remove registro de ativacao
jr ra # retorna fat(n)
Se n e maior que zero (else:), ocorre uma chamada a fat(n-1). O endereco de retorno
e denotado pela etiqueta eRet:, e nele o valor de n que foi o parametro desta invocacao
de fat() e recuperado da pilha e multiplicado pelo valor retornado por fat(n-1). O
endereco de retorno e retirado da pilha e atribudo a $ra, o registro de ativacao e removido,
e a funcao retorna. A Figura 8.4 mostra os estados da pilha durante a fase em que
a recursao e desenrolada, ate a execucao de fat(0). As linhas horizontais delimitam
registros de ativacao e a seta indica o endereco apontado pelo apontador da pilha. Note
que o endereco de retorno de fat(4) e diferente daquele de fat(3).
main() fat(4) fat(3) fat(2) fat(1) fat(0) apontador de pilha
x x x x x x
retM retM retM retM retM ender. retorno de fat(4)
4 4 4 4 4
eRet eRet eRet eRet ender. retorno de fat(3)
3 3 3 3
eRet eRet eRet
2 2 2
eRet eRet
1 1
eRet
0
Figura 8.4: Estados da pilha durante execucao de fat(4).
Captulo 8. Programacao 165
Exerccios
Ex. 8.1 A linguagem C permite que uma funcao seja passada como parametro para
outra funcao, como mostra o prototipo de fun1(): int fun1(int x, (void *)fun2()).
Neste exemplo, o parametro de entrada deve ser o endereco da funcao fun2() que sera
invocada por fun1(). Escreva, em assembly, as seq uencias de codigo necessarias para
implementar a chamada de fun1() preparacao do segundo parametro e a chamada
de fun2() em fun1() calculo do endereco de retorno de fun2().
Ex. 8.2 Escreva um programa em C que copie uma cadeia (string). O endereco
da cadeia fonte e apontado por char *f, e o endereco de destino por char *d. O
prototipo da funcao copiaCad() e mostrado abaixo. Traduza seu programa para assembly.
void copiaCad(char *f, char *d)
Ex. 8.3 Escreva um programa em C que concatena duas cadeias e produz uma nova
cadeia. O endereco das cadeias fonte e apontado por char *a e char *b, e o endereco de
destino por char *d. O prototipo de catCad() e mostrado abaixo. Traduza seu programa
para assembly. void catCad(char *a, char *b, short *d)
Ex. 8.4 Escreva um programa em C que reduz um vetor `a soma de todos os seus elementos
r =

i[0,n)
V
i
. O prototipo da funcao reduzSoma() e mostrado abaixo. Traduza seu
programa para assembly. short reduzSoma(short V[short], short n)
Ex. 8.5 Escreva um programa em C que reduz um vetor pela aplicacao de um operador
binario associativo a todos os seus elementos r =
i[0,n)
V
i
. O prototipo da funcao
reduz() e mostrado abaixo. A funcao com o operador binario e um parametro de
reduz(). Traduza seu programa para assembly.
short op(short a, short b)
short reduz(short V[short], short n, (void *)op())
Ex. 8.6 Escreva um programa que inverte a ordem dos caracteres de uma cadeia, de
forma que o primeiro caracter que na ultima posicao. O prototipo da funcao inverte()
e mostrado abaixo. O valor retornado e o tamanho da cadeia, incluindo o 0. Traduza
seu programa para assembly. short inverte(char *a)
Ex. 8.7 Traduza o programa abaixo para assembly.
short fat2(short n)
short i;
for (i=(n-1); i>0; i--)
n = n*i;
return n;

Ex. 8.8 Simule a execucao do Programa 8.7 e da sua solucao ao Exerccio 8.7 e compare o
n umero de instrucoes executadas nos dois programas para computar o fatorial de 4. Qual
a razao da diferenca?
Referencias Bibliogracas
[CJDM99] V Cuppu, B Jacob, B Davis, and T Mudge. A performance comparison of
contemporary DRAM architectures. In Proc. 26th Intl. Symp. on Computer
Arch., May 1999.
[Fle80] W I Fletcher. An Engineering Approach to Digital Design. Prentice-Hall, 1980.
[HU79] John E Hopcroft and Jerey D Ullman. Introduction to Automata Theory,
Languages and Computation. Addison-Wesley, 1979. ISBN 0-201-02988-X.
[Kat94] Randy H Katz. Contemporary Logic Design. Benjamin-Cummings, 1994. ISBN
080532703-7.
[KL96] Sung-Mo Kang and Yusuf Leblebici. CMOS Digital Integrated Circuits: Anal-
ysis and Design. McGraw-Hill, 1996. ISBN 0-07-038046-5.
[PH00] David A Patterson and John L Hennessy. Organizacao e Projeto de Computa-
dores - A Interface Hardware/Software. LTC Editora, 2nd edition, 2000. ISBN
8521612125.
[Rab96] Jan M Rabaey. Digital Integrated Circuits A Design Perspective. Prentice
Hall, 1996. ISBN 0-13-178609-1.
[San90] Je W Sanders. Lectures on the foundations of hardware design. Lecture
notes, Programming Research Group, Oxford University Computing Labora-
tory, 1990.
[Sha96] Tom Shanley. Pentium Pro Processor System Architecture. MindShare
Addison-Wesley, 1996. ISBN 0-201-47953-2.
[SS90] Adel S Sedra and Kenneth C Smith. Microeletronic Circuits. Holt, Rinehart
& Winston, third edition, 1990. ISBN 003051648-X.
[TS89] Herbert Taub and Donald Schilling. Digital Integrated Electronics. McGraw-
Hill, 1989. ISBN 0-07-Y85788-1.
[WE85] Neil H E Weste and Kamran Eshraghian. Principles of CMOS VLSI Design:
A Systems Perspective. Addison-Wesley, 1985. ISBN 020108222-5.
166

Indice Remissivo
Smbolos
, 5
, 5
, 5
, 5
, 5
, 5
, 5
N umeros
7400, 10
7402, 10
7404, 10
7474, 10
7493, 42
74138, 12, 102
74151, 10
74154, 11
74163, 27, 59
74164, 31
74174, 50
74191, 29, 56, 57, 59
74194, 31
74374, 38
8085, 106
8086, 106
80486, 106
80x86, 113, 114
A
Acesso Direto a Memoria, veja ADM
ADM, 126
Algebra Booleana, 2
apontador de pilha, 84
arbitragem de barramento, 125
arquitetura, 80
Harvard, 105
Princeton, 105
assembly language, 81
automatos nitos, 39
B
bascula, 23
barramento, 20, 111
assncrono, 118
do Mico, 94
multiplexado, 115
RESULT, 90
sobreposicao de fases, 117
barrel shifter, 16
big endian, 113
bloco de registradores, 52, 77, 99
bootstrapping, 131
buer, 20
tri-state, 20, 98
busca, 88, 95, 101, 103
busca antecipada, 104
C
codigo,
ASCII, 134
Gray, 13, 33, 41
recursivo, 133
reentrante, 133
cadeia de aceitacao, 132
CI, 10
ciclo,
ADM, 126
de barramento, 63
de busca, 95, 101
de entrada, 96
de escrita, 64, 70, 95
de leitura, 64, 70, 95
de memoria, 63, 94, 97
de sada, 96
interrupcao, 131
ciclo de trabalho, 36
ciclos por instrucao, veja CPI
circuito,
combinacional, 6, 22
dual, 19
seq uencial, 22
CMOS, 4, 17
inversor, 18
nand, 19
nor, 19
comparador, 152
Complementary Metal-Oxide Semiconductor,
veja CMOS
comunicacao,
d uplex, 143
167

Indice Remissivo 168


semi-d uplex, 143
serial, 140
conjunto de instrucoes, 76, 80
contador, 24, 154
7493, 42
74163, 27
74191, 29
assncrono, 25
em anel, 32, 36
Johnson, 33
sncrono, 26
contador de programa, veja PC
contexto de execucao, 132
controlador, 42, 46, 50
de ADM, 126
de memoria, 72
conversor,
analogico-digital, 152
digital-analogico, 150
paralelo-serie, 30, 141
serie-paralelo, 30, 141
CPI, 103, 105
D
daisy chain, 125, 132
decodicador, 11
demultiplexador, 8, 11
deslocador logartmico, 15
diagrama de estados, 38, 92, 109
divisao inteira, 58
divisor de freq uencia, 35, 154
DMA, veja ADM
double buering, 147
dual, 3, 19
E
enderecamento, 85
a byte, 108
bancos, 120
base-deslocamento, 82, 90
base-deslocamento escalado, 109
capacidade, 114
de perifericos, 84, 105, 106, 136
indireto a memoria, 109
memoria, 111
pseudo-absoluto, 82
relativo ao PC, 83
endereco,
de retorno, 84, 159
efetivo, 64, 82, 95, 96, 156
especicacao, 5
excecao, 109
extended data out, 73
F
fast page mode, 73
FIFO, 58
la circular, 58
ip-op, 24
comportamento, 24
funcao, 158
endereco de retorno, 159
parametros, 160
pilha, 158, 159, 164
protocolo de entrada, 162
protocolo de sada, 163
registro de ativacao, 162
valor de retorno, 160
variaveis locais, 159
H
handshake, veja protocolo
hold time, 36
I
implementacao, 5
instrucao,
addm, 106
busca, 89
call, 160
clrStatus, 109
codicacao, 86
const, 108
decodicacao, 89
desvio, 83
formato, 85
in, 106
jal, 160
jr, 160
la, 156
lb, 108
ld, 108, 112, 156
ldm, 109
lds, 109
leStatus, 109
out, 106
pop, 161
push, 161
ret, 160
salto, 82
sb, 108
setStatus, 109
st, 108, 112, 156
sts, 109
instrucoes,
dinamicas, 103
interface,
EIA232, 141, 143
paralela, 134

Indice Remissivo 169


interrupcao, 139
programacao, 138
processador-memoria, 62, 93, 111
processador-perifericos, 105
serial, 140
interrupcao, 148
programacao, 145
interrupcao, 109, 128, 139, 149
programacao, 133
L
largura do passo, 158
latencia, 124
latch, 23
LIFO, 55
linguagem de maquina, 81
linha de memoria, 121
little endian, 113
M
maquina de estados, 38, 91, 103
Mealy, 40, 41, 45, 57
Moore, 40, 41, 45, 57
projeto, 41
maquina de estados nita, 39
memoria, 93, 94
bit, 23
circuito integrado, 65
dinamica, 68
extended data out, 73
fast page mode, 73
nao-volatil, 61
RAM, 54, 61
ROM, 45, 61, 100
tipos de RAM, 61
tipos de ROM, 61
volatil, 61
meta-estabilidade, 23
micro-controlador, 45, 46
microcontrolador, 100
microinstrucao, 47, 101103
microprograma, 47, 101
estreito, 102
largo, 102
MIPS, 112, 113
R4000, 75
modos de enderecamento, 85
multiplexador, 6, 10, 20
multiplicador,
serial, 34
O
onda quadrada, 35
opcode, 85, 86
opera cao,
binaria, 78
com carry, 80
logica e aritmetica, 79
unaria, 78
operadores logicos, 4
P
paridade, 143
PC, 77, 88, 98
perifericos, 105, 128
pilha, 55, 159, 163
precisao, 152
prioridade,
alternancia circular, 127
posicional, 125, 127
protocolo,
assncrono, 118, 136
EIA232, 143
porta paralela, 135
serial assncrono, 142
pull-up, 21
R
recursao, 163, veja recursao
referencia em rajada, 120
referencias concorrentes, 122
registrador de deslocamento, 30
74164, 31
74194, 31
paralelo-serie, 141, 147
Registrador de Instrucao, veja RI
registradores,
invisvel, 88
visveis, 88
relogio, 34
ciclo de trabalho, 36
multi-fase, 32
resolucao, 150, 151
RI, 89, 99, 103105
S
salvamento de registradores, 133
seletor, 9, 12
setup time, 36
sinal analogico, 149
somador,
serial, 34
STAT, 79, 99, 100
T
temporizador, 155
Teorema,
DeMorgan, 3
Dualidade, 3, 20
Simplicacao, 3

Indice Remissivo 170


terceiro estado, 20
tipo, 5
transacao, 118
Transistor-Transistor Logic, veja TTL
transistores, 17
tri-state, 20
buer, 93
TTL, 4, 10
U
UART, 143
ULA, 52, 78, 81, 100
Unidade de Logica e Aritmetica, veja ULA
V
vazao, 124
velocidade de transmissao, 140
vetor de interrupcoes, 129
Z
Z80, 106

Você também pode gostar