Módulo 1

Propaganda
FACULDADE DE ENGENHARIA DE SOROCABA
ELETRÔNICA II
Prof. Sidney José Montebeller
Referências Bibliográficas e Internet
Referências Bibliográficas
1- TOCCI, R. J.; WIDMER, N.S.; Sistemas Digitais: Princípios e
Aplicações. Rio de Janeiro: LTC, 2000.
2- MALVINO, A. P.; LEACH, D. P.; Eletrônica Digital: Princípios e
Aplicações. São Paulo: McGraw-Hill, 1987.
3- TAUB, H.; Circuitos Digitais e Microprocessadores. São Paulo:
McGraw-Hill, 1984.
4- LOURENÇO, A. C.; Circuitos Digitais. São Paulo: Érica.
5- CAPUANO, F. G.; IDOETA, I. V.; Elementos de Eletrônica Digital. São
Paulo: Érica.
6- MELO, M.; Eletrônica Digital. São Paulo: Makron Books.
7- TOKHEIM, R. L.; Princípios Digitais. São Paulo: McGraw-Hill.
Internet
1- ALTERA – http://www.altera.com/ - Dispositivos de Lógica Programável
2- XILINX – http://www.xilinx.com/ - Dispositivos de Lógica Programável
3- ATMEL – http://www.atmel.com/ - Microcontroladores (AVR) e
Componentes Discretos
4- MICROCHIP – http://www.microchip.com/ - Microcontroladores (PIC) e
Componentes Discretos
5- NATIONAL – http://www.national.com/ - Microcontroladores (COP8) e
Componentes Discretos
6- TEXAS INSTRUMENTS – http://www.ti.com/ - Microcontroladores
(MSP430) e Componentes Discretos
7- BURR-BROWN – http://www.burrbrown.com/ - Conversores A/D e D/A e
Amplificadores Operacionais
8- INTEL – http://www.intel.com/ - Microcontroladores (8051) e
Componentes Discretos
9- ANALOG DEVICES – http://www.analog.com/ - Conversores A/D e D/A
e Componentes Discretos
10- MOTOROLA – http://e-www.motorola.com/ - Microcontroladores
(M68HC) e Componentes Discretos
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
I
Sumário
1. Revisão de Circuitos Combinatórios ............................................... 1
1.1- Conceitos Introdutórios ........................................................................... 1
1.2- Representação de Quantidades Binárias................................................ 2
1.3- Circuitos Digitais/Circuitos Lógicos ......................................................... 3
1.4- Sistemas de Numeração e Códigos........................................................ 3
1.5- Portas Lógicas e Álgebra Booleana ........................................................ 5
1.6- Teoremas da Álgebra de Boole............................................................... 8
1.7- Universalidade das Portas NAND e NOR ............................................... 9
1.8- Simplificação de Circuitos Lógicos.......................................................... 9
1.9- Projetando Circuitos Lógicos ................................................................ 10
1.10- Método do Mapa de Karnaugh para Simplificação Circuitos Lógicos ... 11
1.11- Outras Portas Lógicas........................................................................... 11
1.12- Circuitos Integrados Lógicos................................................................. 12
2. Famílias Lógicas de Circuitos Integrados.................................... 14
2.1- Introdução ............................................................................................. 14
2.2- Terminologia de Circuitos Integrados Digitais....................................... 14
2.3- Família Lógica TTL ............................................................................... 18
2.4- Características da Série TTL Padrão .................................................... 19
2.5- Séries TTL Aperfeiçoadas..................................................................... 20
2.6- Fan-Out e Carregamento para TTL....................................................... 22
2.7- Outras Características TTL ................................................................... 23
2.8- Conectando Saídas TTL Juntas............................................................ 24
2.9- Tristate (Terceiro Estado) para o TTL.................................................. 26
2.10- Circuitos Integrados Digitais MOS ........................................................ 27
2.11- O MOSFET ........................................................................................... 27
2.12- Circuitos Digitais com MOSFETs .......................................................... 27
2.13- Características da Lógica MOS............................................................. 29
2.14- Lógica MOS Complementar.................................................................. 30
2.15- Características da Série CMOS ............................................................ 31
2.16- Tecnologia de Baixa Tensão................................................................. 35
2.17- Saídas CMOS de Dreno Aberto e Tristate ............................................ 36
2.18- Interfaceamento de Circuitos Integrados .............................................. 37
2.19- TTL Acionando CMOS .......................................................................... 37
2.20- CMOS Acionando TTL .......................................................................... 38
3. Dispositivos de Lógica Programável (PLDs) .............................. 40
3.13.23.33.43.53.63.73.8-
Introdução ............................................................................................. 40
Conceito Básico .................................................................................... 41
Simbologia ............................................................................................ 42
Arquitetura de um PLD.......................................................................... 42
Outros Recursos Disponíveis................................................................ 44
Outros Tipos de PLDs........................................................................... 44
Programação......................................................................................... 45
PLDs Programáveis .............................................................................. 45
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
II
Sumário
4. Flip-Flops ................................................................................................. 46
4.1- Introdução ............................................................................................. 46
4.2- Flip-Flop R-S (Reset – Set)................................................................... 46
4.3- Flip-Flops com Clock............................................................................. 47
4.4- Flip-Flop R-S com Clock ....................................................................... 48
4.5- Flip-Flop J-K.......................................................................................... 49
4.6- Flip-Flop D ............................................................................................ 50
4.7- Latch D.................................................................................................. 50
4.8- Entradas Assíncronas ........................................................................... 51
4.9- Características de Temporizações dos Flip-Flops ................................ 51
4.10- Circuitos Integrados de Flip-Flops......................................................... 53
4.11- Problemas de Temporização em Flip-Flops.......................................... 53
4.12- Flip-Flops Mestre/Escravo .................................................................... 54
4.13- Dispositivos Schmitt-Trigger.................................................................. 54
4.14- Circuitos Geradores de Clock ............................................................... 55
5. Contadores .............................................................................................. 57
5.1- Introdução ............................................................................................. 57
5.2- Contadores Assíncronos....................................................................... 57
5.3- Contadores de Módulo < 2N .................................................................. 59
5.4- Diagrama de Transição de Estados ...................................................... 60
5.5- Contadores de Década ......................................................................... 60
5.6- Circuitos Integrados de Contadores Assíncronos ................................. 60
5.7- Contador Assíncrono Decrescente ....................................................... 61
5.8- Atrasos de Propagação de Contadores Assíncronos............................ 62
5.9- Contadores Síncronos .......................................................................... 63
5.10- Circuitos Integrados de Contadores Síncronos..................................... 64
5.11- Contadores Síncronos Decrescentes.................................................... 64
5.12- Contadores com Carga Paralela ........................................................... 64
5.13- Utilizando Contadores BCD .................................................................. 65
5.14- Projeto de Contadores Síncronos ......................................................... 66
5.15- O Flip-Flop J-K ...................................................................................... 66
5.16- Procedimento para Construção de Contadores Síncronos ................... 67
6. Registradores ......................................................................................... 70
6.16.26.36.46.56.66.7-
Introdução ............................................................................................. 70
Registradores de Deslocamento ........................................................... 70
Transferência Paralela de Dados entre Registradores ......................... 71
Transferência Serial de Dados entre Registradores ............................. 71
Comparação entre a Transferência Paralela e a Transferência Serial.. 72
Contadores com Registradores de Deslocamento................................ 72
Circuitos Integrados de Registradores .................................................. 74
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
III
Sumário
7. Decodificadores, Codificadores, Multiplexadores e
Demultiplexadores................................................................................. 75
7.17.27.37.4-
Decodificadores .................................................................................... 75
Codificadores ........................................................................................ 77
Multiplexadores ..................................................................................... 78
Demultiplexadores ................................................................................ 81
8. Aritmética Digital................................................................................... 83
8.1- Introdução ............................................................................................. 83
8.2- Adição Binária ....................................................................................... 83
8.3- Representação de Números com Sinal................................................. 83
8.4- Representação de Números com Sinal Usando Complemento a 2 ...... 85
8.5- Multiplicação de Números Binários ....................................................... 88
8.6- Divisão de Números Binários................................................................ 88
8.7- Adição de Números BCD ...................................................................... 89
8.8- Aritmética Hexadecimal ........................................................................ 89
8.9- Circuitos Aritméticos ............................................................................. 90
8.10- Somador Paralelo Integrado ................................................................. 95
8.11- Ligação em Cascata de Somadores Paralelos ..................................... 95
8.12- Circuito Integrados de ULAs ................................................................. 95
9. Conversão Digital-Analógica ............................................................ 97
9.1- Interface com o Mundo Analógico ........................................................... 97
9.2- Sistema Digital Interfaceando com Grandezas Analógicas ..................... 97
9.3- Conversão Digital Analógica (D/A) .......................................................... 98
9.4- Código de Entrada BCD ........................................................................ 100
9.5- Conversor D/A com Amplificador Operacional ...................................... 100
9.6- Fatores Importantes na Precisão da Conversão ................................... 102
9.7- Conversores D/A com Saída em Corrente ............................................ 103
9.8- Rede R/2R............................................................................................. 104
9.9- Especificações de Conversores D/A ..................................................... 104
9.10- Circuito Integrado de Conversão D/A – AD7524 ................................... 105
9.11- Aplicações de Conversores D/A ............................................................ 105
10. Conversão Analógico-Digital........................................................ 107
10.110.210.310.410.510.610.7-
Introdução ......................................................................................... 107
Conversor A/D de Rampa Digital ...................................................... 108
Precisão e Resolução de Conversores A/D ...................................... 108
Aquisição de Dados .......................................................................... 109
Reconstrução de Sinais Digitalizados ............................................... 110
Conversor A/D de Aproximações Sucessivas ................................... 111
ADC0804 – Conversor A/D de Aproximações Sucessivas ............... 112
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
IV
Sumário
10.8- Conversor A/D Flash......................................................................... 114
10.9- Outros Métodos de Conversão A/D .................................................. 115
11. Memórias ............................................................................................. 117
11.111.211.311.4-
Introdução ......................................................................................... 117
Definição de Termos Básicos............................................................ 117
Princípios de Operação das Memórias ............................................. 119
Conexões da Memória com a CPU................................................... 120
12. Memórias Somente de Leitura (ROM)........................................ 122
12.112.212.312.412.512.6-
Introdução ......................................................................................... 122
Diagrama em Blocos de uma ROM................................................... 122
Arquitetura de uma ROM .................................................................. 123
Temporização de uma ROM ............................................................. 124
Tipos de ROM ................................................................................... 124
Aplicações de ROMs......................................................................... 125
13. Memórias de Acesso Aleatório (RAM) ...................................... 126
13.113.213.313.4-
Introdução ......................................................................................... 126
Arquitetura de uma RAM................................................................... 126
RAM Estática (SRAM)....................................................................... 128
RAM Dinâmica (DRAM) .................................................................... 130
14. Expansão do Tamanho da Palavra e da Capacidade ........... 133
14.1- Introdução ......................................................................................... 133
14.2- Expansão do Tamanho da Palavra ................................................... 133
14.3- Expansão da Capacidade ................................................................. 134
15. Microcontrolador AT90S8515 ....................................................... 136
15.1- Introdução ......................................................................................... 136
15.2- Características do Microcontrolador AT90S8515.............................. 137
15.3- Encapsulamento ............................................................................... 137
15.4- Descrição Geral ................................................................................ 138
15.5- Diagrama em Blocos......................................................................... 139
15.6- Descrição dos Pinos ......................................................................... 140
15.7- Oscilador........................................................................................... 141
15.8- Arquitetura ........................................................................................ 141
15.9- Temporizadores/Contadores............................................................. 157
15.10- Watchdog Timer.............................................................................. 166
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
V
SUMÁRIO
15.1115.1215.1315.1415.15-
Acesso para Leitura/Escrita na EEPROM....................................... 168
UART .............................................................................................. 171
Comparador Analógico ................................................................... 176
Interface com SRAM Externa.......................................................... 178
Portas de Entrada/Saída................................................................. 179
16. Guia para Uso do Assembler AVR.............................................. 188
16.116.216.316.416.516.6-
Introdução ......................................................................................... 188
Código Fonte do Assembler.............................................................. 188
Registradores da Memória de I/O do AT90S8515 ............................ 189
Tabela de Instruções......................................................................... 190
Diretivas no Assembler ..................................................................... 196
Expressões ....................................................................................... 204
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
VI
Revisão de Circuitos Combinatórios
1. Revisão de Circuitos Combinatórios
1.1- Conceitos Introdutórios
Grandezas Analógicas e Digitais
Grandezas analógicas são aquelas que podem variar em um intervalo
contínuo de valores. Por exemplo, a velocidade de um veículo pode assumir
qualquer valor de 0 a 200 Km/h.
Grandezas digitais são aquelas que variam em passos discretos. Por
exemplo, o tempo varia continuamente mas a sua medição através de um
relógio digital é feita a cada minuto.
Sistemas Analógicos e Digitais
Um sistema analógico contém dispositivos que podem manipular
quantidades físicas analógicas. Por exemplo, a saída de um amplificador pode
variar continuamente dentro de um certo intervalo.
Um sistema digital contém dispositivos capazes de manipular
informações lógicas (representadas na forma digital). Um exemplo seria um
computador.
As vantagens das técnicas digitais são várias:
- Sistemas digitais são mais fáceis de projetar;
- Fácil armazenamento de informação;
- Maior exatidão e precisão;
- A operação do sistema pode ser programada;
- Circuitos digitais são menos afetados pelo ruído;
- Um maior número de circuitos digitais pode ser colocado em um circuito
integrado.
Sistemas de Numeração Digital
-
Sistema decimal – contém 10 algarismos (0 a 9).
Representação:
273,4110 = (2 x 102) + (7 x 101) + (3 x 100) + (4 x 10-1) + (1 x 10-2)
Pesos
-
102
2
101
7
100
3
10-1
4
10-2
1
Sistema binário – contém 2 algarismos (0 e 1).
Representação:
101,012 = (1 x 22) + (0 x 21) + (1 x 20) + (0 x 2-1) + (1 x 2-2) = 5,2510
Pesos
22
1
21
0
20
1
2-1
0
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
2-2
1
1
Revisão de Circuitos Combinatórios
-
Sistema octal – contém 8 algarismos (0 a 7).
Representação:
157,28 = (1 x 82) + (5 x 81) + (7 x 80) + (2 x 8-1) = 111,2510
Pesos
-
82
1
81
5
80
7
8-1
2
Sistema hexadecimal – contém 16 algarismos (0 a F).
Representação:
15A,216 = (1 x 162) + (5 x 161) + (10 x 160) + (2 x 16-1) = 346,12510
Pesos
162
1
161
5
160
10
16-1
2
1.2- Representação de Quantidades Binárias
Em sistemas digitais, a informação geralmente apresenta a forma
binária. Essas quantidades binárias podem ser representadas por qualquer
dispositivo que apresente dois estados de operação.
Uma chave, por exemplo, pode estar aberta ou fechada. Podemos dizer
que a chave aberta corresponde ao dígito binário “0” e a chave fechada
corresponde ao dígito binário “1”. Outros exemplos: uma lâmpada (acesa ou
apagada), um diodo (conduzindo ou não), um transistor (conduzindo ou não)
etc.
Em sistemas digitais eletrônicos, a informação binária é representada
por níveis de tensão (ou correntes). Por exemplo, zero volts poderia
representar o valor binário “0” e +5 volts poderia representar o valor binário
“1”. Mas, devido a variações nos circuitos, os valores binários são
representados por intervalos de tensões: o “0” digital corresponde a uma
tensão entre 0 e 0,8 volts enquanto o “1” digital corresponde a uma tensão
entre 2 e 5 volts.
Com isso percebemos uma diferença significativa entre um sistema
analógico e um sistema digital. Nos sistemas digitais, o valor exato da tensão
não é importante.
Fig. 1-1: Intervalos típicos de tensão para os binários 0 e 1.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
2
Revisão de Circuitos Combinatórios
1.3- Circuitos Digitais/Circuitos Lógicos
Circuitos digitais são projetados para produzir tensões de saída e
responder a tensões de entrada que estejam dentro do intervalo determinado
para os binários 0 e 1. A fig. 1-2 mostra isso:
Fig. 1-2: Resposta de um circuito digital
Praticamente todos os circuitos digitais existentes são circuitos
integrados (CIs), o que tornou possível a construção de sistemas digitais
complexos menores e mais confiáveis do que aqueles construídos com
circuitos lógicos discretos.
1.4- Sistemas de Numeração e Códigos
O sistema binário de numeração é o mais importante em sistemas
digitais. O sistema decimal também é importante porque é usado por todos nós
para representar quantidades. Já os sistemas octal e hexadecimal são usados
para representar números binários grandes de maneira eficiente.
-
Conversões Binário-Decimal – Cada dígito tem um peso correspondente
à sua posição.
110112 = (1 x 24) + (1 x 23) + (0 x 22) + (1 x 21) + (1 x 20) = 2710
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
3
Revisão de Circuitos Combinatórios
-
Conversões Decimal-Binário – O método usado é o das divisões
sucessivas:
-
Conversão Octal-Decimal – Cada dígito tem um peso correspondente à
sua posição.
3728 = (3 x 82) + (7 x 81) + (2 x 80) = 25010
-
Conversão Decimal-Octal – O método usado é o das divisões sucessivas:
-
Conversão Octal-Binário – Cada dígito octal é convertido para o seu
correspondente em binário.
Dígito Octal
Equivalente Binário
0
000
1
001
2
010
3
011
4
100
5
101
6
110
7
111
4728 = (100) (111) (010) = 1001110102
-
Conversão Binário-Octal – O número binário é dividido em grupos de 3
dígitos iniciando-se a partir do dígito de menor peso. Cada grupo é
convertido no seu correspondente octal.
1001110102 = (100) (111) (010) = 4728
-
Conversão Hexadecimal-Decimal – Cada dígito tem um peso
correspondente à sua posição.
2AF16 = (2 x 162) + (10 x 161) + (15 x 160) = 68710
-
Conversão Decimal-Hexadecimal – O método usado é o das divisões
sucessivas:
-
Conversão Hexadecimal-Binário – Cada dígito hexadecimal é convertido
para o seu correspondente em binário.
9F216 = (1001) (1111) (0010) = 1001111100102
-
Conversão Binário-Hexadecimal – O número binário é dividido em grupos
de 4 dígitos iniciando-se a partir do dígito de menor peso. Cada grupo é
convertido no seu correspondente hexadecimal.
11101001102 = (0011) (1010) (0110) = 3A616
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
4
Revisão de Circuitos Combinatórios
-
Código BCD – O código BCD não constitui um sistema de numeração. Ele
apenas relaciona cada dígito do sistema decimal com um grupo de 4 dígitos
do sistema binário.
87410 = (1000) (0111) (0100) = 100001110100 (BCD)
Relacionando as Representações
Tabela 1-1
Decimal
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Binário
0
1
10
11
100
101
110
111
1000
1001
1010
1011
1100
1101
1110
1111
Octal
0
1
2
3
4
5
6
7
10
11
12
13
14
15
16
17
Hexadecimal
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
BCD
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
0001 0000
0001 0001
0001 0010
0001 0011
0001 0100
0001 0101
1.5- Portas Lógicas e Álgebra Booleana
A álgebra booleana é a ferramenta fundamental para descrever a
relação entre as saídas de um circuito lógico e suas entradas através de uma
equação (expressão booleana). Existem três operações básicas: OR (OU),
AND (E) e NOT (NÃO).
Operação Lógica OR (OU)
Fig. 1-3: Porta OR (OU)
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
5
Revisão de Circuitos Combinatórios
Operação Lógica AND (E)
Fig. 1-4: Porta AND (E)
Operação Lógica NOT (INVERSORA)
Fig. 1-5: Porta NOT (INVERSORA)
Descrevendo Circuitos Lógicos Algebricamente
Qualquer circuito lógico pode ser descrito usando as portas AND, OR e
NOT. Essas três portas são os blocos básicos na construção de qualquer
sistema digital.
Fig. 1-6: Circuito Lógico e sua Expressão Lógica
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
6
Revisão de Circuitos Combinatórios
Implementando Circuitos Lógicos a partir de Expressões Booleanas
Podemos usar a expressão booleana para gerar o circuito lógico. Por
exemplo:
Fig. 1-7: Expressão Lógica e seu Circuito Lógico
Portas NOR e NAND
Outros tipos de portas lógicas existentes são as portas NOR e NAND,
que na verdade são combinações das portas OR, AND e NOT.
Fig. 1-8: Portas NOR e NAND
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
7
Revisão de Circuitos Combinatórios
1.6- Teoremas da Álgebra de Boole
Esses teoremas, aplicados na prática, visam simplificar as expressões
booleanas e consequentemente os circuitos gerados por estas expressões.
Teoremas Booleanos
Teoremas de DeMorgan
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
8
Revisão de Circuitos Combinatórios
1.7- Universalidade das Portas NAND e NOR
Qualquer expressão lógica pode ser implementada usando apenas
portas NAND ou portas NOR. Isso porque podemos representar portas OR,
AND ou NOT usando apenas portas NAND ou NOR.
Fig. 1-9: Uso de PORTAS NAND para implementar outras funções booleanas.
1.8- Simplificação de Circuitos Lógicos
Depois de encontrada a expressão de um circuito lógico, podemos
reduzi-la para uma forma mais simples. A intenção é diminuir o número de
variáveis nessa expressão, o que significa diminuir o número de portas lógicas
e conexões em um circuito lógico.
Simplificação Algébrica
A simplificação algébrica é feita com o uso dos teoremas da álgebra
booleana e de DeMorgan. Exemplo:
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
9
Revisão de Circuitos Combinatórios
1.9- Projetando Circuitos Lógicos
Passos para o projeto completo de um circuito lógico:
a) Montar a tabela-verdade:
A
0
0
0
0
1
1
1
1
B
0
0
1
1
0
0
1
1
C
0
1
0
1
0
1
0
1
x
0
0
0
1
0
1
1
1
b) Analisar a saída:
Quando qualquer entrada de uma porta OR for “1” então a saída será “1”.
Então podemos deduzir que a saída x é uma operação OR de todos os casos
em que a saída x é “1”. Cada caso corresponde a uma operação lógica AND
com todas as variáveis de entrada.
c) Simplificar a expressão lógica obtida:
A expressão pode ser reduzida a um número menor de termos se
aplicarmos os teoremas booleanos e de DeMorgan.
d) Implementar o circuito através da expressão lógico:
Fig. 1-10: Circuito lógico final
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
10
Revisão de Circuitos Combinatórios
1.10- Método do Mapa de Karnaugh para Simplificação
Circuitos Lógicos
Vamos usar a tabela anterior como exemplo.
1.11- Outras Portas Lógicas
Circuito XOR
Fig. 1-11: Porta XOR (OU-Exclusivo)
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
11
Revisão de Circuitos Combinatórios
Circuito XNOR
Fig. 1-12: Porta XNOR (NOU-Exclusivo)
1.12- Circuitos Integrados Lógicos
Exemplos de circuitos integrados lógicos:
Fig. 1-13: Circuito integrado 74LS08 (4 portas AND de 2 entradas)
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
12
Revisão de Circuitos Combinatórios
Fig. 1-14: Circuito integrado 74LS04 (6 portas inversoras)
Fig. 1-15: Circuito integrado 74LS32 (4 portas OR de 2 entradas)
Outros:
- 7400 – Quatro portas NAND
- 7402 – Quatro portas NOR
- 7486 – Quatro portas XOR
- 74266 – Quatro portas XNOR
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
13
Famílias Lógicas de Circuitos Integrados
2. Famílias Lógicas de Circuitos Integrados
2.1- Introdução
Circuitos integrados são amplamente usados na construção de sistemas
digitais. Isso porque eles têm muito mais circuitos em um pequeno
encapsulamento e são mais confiáveis.
2.2- Terminologia de Circuitos Integrados Digitais
Os fabricantes de circuitos integrados digitais seguem praticamente o
mesmo padrão de nomenclatura e terminologia:
a) Tensão e Corrente:
-
-
VIH(min) – Mínima Tensão de Entrada em Nível Alto.
VIL(max) – Máxima Tensão de Entrada em Nível Baixo.
VOH(min) – Mínima Tensão de Saída em Nível Alto.
VOL(max) – Máxima Tensão de Saída em Nível Baixo.
IIH – Corrente de Entrada em Nível Alto.
IIL – Corrente de Entrada em Nível Baixo.
IOH – Corrente de Saída em Nível Alto.
IOL – Corrente de Saída em Nível Baixo.
Fig. 2-1: Tensões e correntes em nível lógico 1 e 0
b) Fan-Out
O Fan-Out corresponde ao número máximo de entradas lógicas que
uma saída de um circuito lógico pode acionar. Se esse número for excedido, os
níveis de tensão e corrente não serão garantidos.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
14
Famílias Lógicas de Circuitos Integrados
c) Atrasos de Propagação
Um sinal lógico, ao atravessar um circuito, sofre um atraso. Existem dois
tipos de atraso:
-
tPLH – Tempo de atraso do estado lógico “0” para o “1”.
tPHL – Tempo de atraso do estado lógico “1” para o “0”.
Fig. 2-2: Atrasos de propagação
Os valores dos tempos de atrasos de propagação são usados para
medição de velocidade em circuitos lógicos.
d) Potência
Como todo circuito elétrico, um circuito lógico consome uma certa
quantidade de potência. Essa potência é fornecida por fontes de alimentação e
esse consumo deve ser levado em consideração em um sistema digital.
Se um circuito integrado consome menos potência poderemos ter uma
fonte de menor capacidade e com isso reduziremos os custos do projeto.
e) Velocidade x Potência
Um circuito digital ideal é aquele que possui o menor consumo de
potência e o menor atraso de propagação. Em outras palavras, o produto de
velocidade e potência deve ser o menor possível.
f) Imunidade ao Ruído
Ruídos são sinais indesejáveis gerados por campos eletromagnéticos
podem afetar o funcionamento de um circuito lógico. Esses sinais podem fazer
com que a tensão de entrada de um circuito lógico caia abaixo de VIH(min) ou
aumente além de VIL(max), gerando falsos sinais.
A imunidade ao ruído se refere à capacidade de um circuito lógico de
rejeitar esse ruído.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
15
Famílias Lógicas de Circuitos Integrados
Fig. 2-3: Margens de ruído
g) Níveis de Tensão Inválidos
Circuitos lógicos só trabalharão confiavelmente com níveis de tensão
especificados pelos fabricantes, ou seja, as tensões devem ser menores que
VIL(max) e maiores que VIH(min) – fora da faixa de indeterminação – e com
alimentação adequada.
h) Fornecimento de Corrente e de Absorção de Corrente
O fornecimento de corrente é mostrado na fig. 2-4. Quando a saída da
porta lógica 1 está em ALTO, ela fornece uma corrente IIH para a entrada da
porta lógica 2.
Fig. 2-4: Porta de acionamento fornecendo corrente para a porta de carga
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
16
Famílias Lógicas de Circuitos Integrados
A absorção de corrente é mostrada na fig. 2-5. Quando a saída da porta
lógica 1 está em BAIXO, ela absorve uma corrente IIL para a entrada da porta
lógica 2.
Fig. 2-5: Porta de acionamento absorvendo corrente da porta de carga
i) Encapsulamentos de Circuitos Integrados
Alguns tipos de encapsulamentos de circuitos integrados são mostrados na
fig. 2-6.
Fig. 2-6: Encapsulamentos mais comuns de circuitos integrados
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
17
Famílias Lógicas de Circuitos Integrados
2.3- Família Lógica TTL
Um circuito básico utilizado na lógica-transistor-transistor é mostrado na
fig. 2-7:
Fig. 2-7: Porta NAND básica TTL e equivalente a diodo para Q1
Esse circuito representa uma porta NAND TTL. Uma das principais
características desse circuito são os dois emissores do transistor Q1. Na
mesma figura está o circuito equivalente a diodo de Q1.
Outra característica construtiva importante desse circuito é sua saída
totem-pole, que impede que os dois transistores (Q3 e Q4) conduzam ao
mesmo tempo.
-
Operação do Circuito – Saída em Nível Baixo
A saída em nível baixo é conseqüência de entradas A e B em nível alto
(+ 5 V). Nesse caso, Q1 ficará cortado e Q2 conduzirá (ver circuito
equivalente). A corrente fluirá do emissor de Q2 para a base de Q4 e o faz
conduzir.
A tensão no coletor de Q2 é insuficiente para Q3 conduzir. Essa tensão
está em torno de 0,8 V (0,7 V da junção B-E de Q4 + 0,1 V de Vce (sat) de Q2).
Para o transistor Q3 conduzir é necessário que sua junção B-E e o diodo D1
esteja diretamente polarizado.
Com Q4 conduzindo, a tensão de saída é muito baixa (< 0,4 V), ou nível
baixo (“0”).
-
Operação do Circuito – Saída em Nível Alto
Para que a saída de uma porta NAND fique em alto, pelo menos uma
das entradas A ou B deverá ser zero. Nessa condição haverá condução de Q1
por um de seus emissores, ou pelos dois (ver circuito equivalente ), fazendo
com que Q2 fique cortado.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
18
Famílias Lógicas de Circuitos Integrados
Com Q2 cortado não haverá corrente na base de Q4 e ele ficará cortado
também. Sem corrente no coletor de Q2, a tensão na base de Q3 é suficiente
para que ele entre em condução.
Com Q3 conduzindo, a tensão na saída ficará em torno de 3,4 V a 3,8 V
(sem carga), devido às quedas na junção B-E de Q3 e ao diodo D1. Com carga
essa tensão deverá diminuir.
-
Absorção de Corrente
Uma saída TTL em nível baixo age como um absorvedor de corrente
pois ela recebe a corrente da entrada da porta que está acionando.
-
Fornecimento de Corrente
Uma saída TTL em nível alto age como fornecedora de corrente. Na
verdade essa corrente tem um valor muito baixo, causada pela fuga de
polarização reversa do “diodo” (junção B-E) de Q1.
-
Outras Portas TTL
Praticamente todas as outras portas lógicas possuem o mesmo circuito
básico da porta NAND TTL. Outros circuitos internos são colocados apenas
para implementar a lógica desejada.
2.4- Características da Série TTL Padrão
-
Faixas de Tensão de Alimentação e de Temperatura
Existem duas séries de TTL padrão diferenciadas pela faixa de tensão
de alimentação e temperatura: a série 74 e a série 54.
A série 74 utiliza alimentação entre 4,75 V e 5,25 V e opera entre 0º a
70º C. A série 54 utiliza alimentação entre 4,5 V e 5,5 V e opera entre -55º a
125º C.
-
Níveis de Tensão
VIL(max) – 0,8 V
VOL(max) – 0,4 V
Existe uma margem de segurança de uma saída para a entrada,
chamada de margem de ruído, de 0,4 V (0,8 V – 0,4 V).
VIH(min) – 2,0 V
VOH(min) – 2,4 V
A margem de ruído também é de 0,4 V (2,4 V – 2,0 V).
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
19
Famílias Lógicas de Circuitos Integrados
-
Faixas Máximas de Tensão
As tensões máximas de trabalho de um TTL padrão não devem
ultrapassar 5,5 V. Uma tensão maior de 5,5 V aplicada a um emissor de
entrada pode causar dano na junção B-E de Q1. Tensões menores que –0,5 V
também podem danificar o componente.
-
Dissipação de Potência
Uma porta NAND TTL padrão consome, em média, 10 mW.
-
Atrasos de Propagação
A porta AND TTL padrão tem atrasos de propagação típicos de
tPLH = 11 ns e tPHL = 7 ns, resultando num atraso de propagação médio tPD(med)
de 9 ns.
-
Fan-Out
Uma saída TTL padrão pode acionar 10 entradas TTL padrão.
2.5- Séries TTL Aperfeiçoadas
-
Séries 74L e 74H
Estas séries são versões TTL para baixa potência (74L) e alta
velocidade (74H). A primeira consumia 1 mW e tinha um tempo de atraso de
propagação de 33 ns e a segunda consumia 23 mW, com um tempo de atraso
de propagação de 6 ns.
Não são mais fabricadas atualmente.
-
TTL Schottky, Série 74S
Esta série utiliza diodos Schottky entre a base e o coletor dos seus
transistores, evitando que eles trabalhem saturados. Com isso o tempo de
resposta do circuito é mais rápido. Por exemplo, a porta NAND 74S00 tem um
atraso médio de 3 ns, mas um consumo de potência de 20 mW.
-
TTL Schottky de Baixa Potência, Série 74LS (LS-TTL)
A série 74LS é uma versão de menor potência e menor velocidade da
série 74S. Ela utiliza a combinação transistor/diodo Schottky, mas com valores
maiores de resistores de polarização, o que diminui o consumo.
Uma porta NAND 74LS tem um atraso típico de propagação de 9,5 ns e
dissipação média de potência de 2 mW.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
20
Famílias Lógicas de Circuitos Integrados
-
TTL Schottky Avançada, Série 74AS (AS-TTL)
A série 74AS surgiu como uma melhoria da série 74S. Possui velocidade
e fan-out maiores e um menor consumo se comparado com a série 74S.
-
TTL Schottky Avançada de Baixa Potência, Série 74ALS
Esta série surgiu como uma melhoria da série 74SL.
-
TTL Fast – 74F
Esta é a série TTL mais nova. Ela utiliza uma técnica de fabricação de
circuitos integrados que reduz as capacitâncias entre os dispositivos internos
visando reduzir os atrasos de propagação.
-
Comparação das Características das Séries TTL
Tabela 2-1:
Índices de performance
Atraso de propagação (ns)
Dissipação de potência (mW)
Produto velocidade-potência (pJ)
Taxa máxima de clock (MHz)
Fan-out (mesma série)
74
9
10
90
35
10
74S
3
20
60
125
20
74LS
9,5
2
19
45
20
74AS
1,7
8
13,6
200
40
74ALS
4
1,2
4,8
70
20
74F
3
6
18
100
33
Tabela 2-2:
Parâmetros de tensão
VOH (min)
VOL (max)
VIH (min)
VIL (max)
74
2,4
0,4
2,0
0,8
74S
2,7
0,5
2,0
0,8
74LS
2,7
0,5
2,0
0,8
74AS
2,5
0,5
2,0
0,8
74ALS
2,5
0,4
2,0
0,8
74F
2,5
0,5
2,0
0,8
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
21
Famílias Lógicas de Circuitos Integrados
2.6- Fan-Out e Carregamento para TTL
O fan-Out corresponde ao número máximo de entradas lógicas que uma
saída de um circuito lógico pode acionar. Esse número máximo está
diretamente ligado à capacidade do circuito integrado de absorver ou fornecer
corrente.
Fig. 2-8: Saída TTL padrão no estado BAIXO acionando várias entradas
Do circuito vemos que IOL é a soma das correntes IIL de cada entrada.
Essa corrente causa uma queda de tensão VOL, que não deve ser maior que
VOL(max). Isso limita a corrente IOL e o número de cargas que podem ser
acionadas.
Fig. 2-9: Saída TTL padrão no estado ALTO acionando várias entradas
Nas fig. 2-8 e fig. 2-9, vemos que IOH é a soma das correntes IIH de cada
entrada. Se cargas em excesso estiverem sendo acionadas, a corrente IOL
aumentará de tal forma que o nível VOH caia para valores menores que
VOH(min). Esse fato também limita o número de cargas acionadas e a corrente
IOH.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
22
Famílias Lógicas de Circuitos Integrados
-
Determinando o Fan-Out
Por exemplo, a série 74 possui:
IIL (max) = 1,6 mA
IOL (max) = 16 mA
IOL 16 mA
=
= 10
IIL 1,6 mA
Fan-out (BAIXO) =
IIH (max) = 40 µA
IOH (max) = 400 µA
Fan-out (ALTO) =
IOH 400 μA
=
= 10
IIH
40 μA
O fan-out é 10 para ambos os casos. Se os valores de fan-out forem
diferentes, o fan-out será o menor deles.
Importante:
- A soma das correntes IIH de todas as entradas conectadas em uma saída
deve ser menor do que a especificação do IOH da saída;
- A soma das correntes IIL de todas as entradas conectadas em uma saída
deve ser menor do que a especificação do IOL da saída;
2.7- Outras Características TTL
-
Entradas Desconectadas (Flutuando)
Entradas desconectadas (abertas) em circuitos TTL se comportam como
se o nível lógico “1” fosse aplicado à essa entrada. Embora a lógica esteja
correta, entradas desconectadas se comportam como captadoras de ruídos,
fazendo com que o circuito lógico não trabalhe corretamente.
-
Entradas Não-Usadas
Fig. 2-10: Três maneiras de tratar entradas lógicas não usadas
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
23
Famílias Lógicas de Circuitos Integrados
-
Transientes de Corrente
A configuração totem-pole usada nas saídas dos circuitos TTL tem um
inconveniente: durante a transição da saída de BAIXO para ALTO ocorre um
pico de corrente porque ambos os transistores de saída estão conduzindo.
Esse pico pode chegar a 50 mA, corrente que é drenada da fonte que alimenta
o circuito.
Em um sistema digital existem vários saídas TTL trocando de estado ao
mesmo tempo e drenando da fonte picos de corrente. Esse efeito causa uma
variação na tensão da fonte e se não for devidamente filtrado pode causar
sérios problemas ao sistema.
É usual a colocação de capacitores cerâmicos de 10 nF a 100 nF entre
os terminais Vcc e GND – alimentação e terra – dos circuitos integrados.
2.8- Conectando Saídas TTL Juntas
Existem situações nas quais é vantajoso conectar as saídas de dois ou
mais portas lógicas ou circuitos. Entretanto, configuração totem-pole não nos
permite conectar saídas TTL juntas. Para fazermos isso existem outros tipos de
estrutura de saída.
-
Saídas Coletor Aberto
Os circuitos TTL com saídas em coletor aberto só possuem um transistor
de saída. Quando esse transistor estiver acionado, a saída terá nível BAIXO.
Caso contrário, a saída estará flutuando. Para se obter o nível ALTO na saída
um resistor externo de pull-up é conectado.
Fig. 2-11: Circuito TTL coletor aberto com resistor de pull-up externo
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
24
Famílias Lógicas de Circuitos Integrados
-
Conexão Wired-AND
Dispositivos com saídas em coletor aberto podem ter suas saídas
conectadas juntas de maneira segura. Uma situação onde esse tipo de
conexão é usada é mostrada na fig. 2-12:
Fig. 2-12: Conexão wired-AND utilizando portas com coletor aberto
Esse tipo de conexão é chamado de conexão wired-AND porque é
equivalente à operação lógica AND. Esta configuração elimina a necessidade
de uma porta AND real.
-
Buffers/Drivers de Coletor Aberto
Todo circuito lógico que é chamado buffer, driver ou buffer/driver é
projetado para suportar uma corrente e/ou uma capacidade de tensão maior do
que um circuito lógico comum.
Por exemplo, o 7406 com saída em coletor aberto pode acionar cargas
de 24 V a 25 mA.
-
Simbologia para Saídas em Coletor Aberto
Fig. 2-13: Simbologia de portas lógicas com coletor aberto
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
25
Famílias Lógicas de Circuitos Integrados
2.9- Tristate (Terceiro Estado) para o TTL
O terceiro estado, ou tristate, ocorre quando a saída de um dispositivo
TTL apresenta alta impedância. Nessa condição, os dois transistores de saída
do dispositivo estarão cortados e o terminal de saída não terá nível alto nem
baixo (saída fica praticamente aberta). Para que o dispositivo lógico entre nesta
condição, uma entrada chamada Habilitação (Enable) é acionada.
Fig. 2-14: Simbologia de um inversor TTL tristate
-
CIs Tristate
Existem vários circuitos integrados lógicos tristate. Por exemplo, o
74LS125 e o 74LS126, que são buffers tristate. Os circuitos lógicos tristate são
bastante usados em sistemas que utilizam barramento de dados.
Fig. 2-15: Buffers tristates usados para conectar diversos sinais em um
barramento comum
-
Simbologia para as Saídas Tristate
Fig. 2-16: Simbologia de um buffer com saída tristate
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
26
Famílias Lógicas de Circuitos Integrados
2.10- Circuitos Integrados Digitais MOS
A maioria dos circuitos digitais MOS (metal oxide semiconductor –
semicondutor com óxido metálico) é constituída de transistores de efeito de
campo (MOSFET). Eles são menores, consomem pouco e são mais fáceis de
fabricar.
Dispositivos MOS podem conter um número maior de elementos de
circuitos em um único encapsulamento do que os circuitos integrados
bipolares. A grande desvantagem dessa tecnologia é sua susceptibilidade a
danos provocados por eletricidade estática.
2.11- O MOSFET
Fig. 2-17: Estados de comutação do MOSFET canal-N
2.12- Circuitos Digitais com MOSFETs
Os circuitos digitais que utilizam MOSFETs podem ser divididos em três
categorias: P-MOS, que utiliza MOSFETs com canal-P; N-MOS, que utiliza
MOSFETs com canal-N; e CMOS (MOS Complementar) que utiliza ambos. Os
circuitos P-MOS não são mais encontrados.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
27
Famílias Lógicas de Circuitos Integrados
-
Inversor N-MOS
A fig. 2-18 mostra um circuito básico de um INVERSOR N-MOS:
Fig. 2-18: Inversor N-MOS
O circuito acima mostra dois MOSFETs canal-N. O transistor Q1 é
chamado MOSFET de carga e Q2 é chamado de MOSFET de comutação. O
transistor Q1 está sempre conduzindo e funciona como se fosse um resistor de
carga.
-
NAND N-MOS e NOR N-MOS
A fig. 2-19 mostra os circuitos básicos das portas NAND N-MOS e NOR
N-MOS:
Fig. 2-19: Portas NAND N-MOS e NOR N-MOS
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
28
Famílias Lógicas de Circuitos Integrados
2.13- Características da Lógica MOS
Se comparadas com famílias lógicas bipolares, as famílias lógicas NMOS e P-MOS têm velocidade de operação menor, necessitam de menor
potência, têm uma margem de ruído melhor, possuem uma faixa maior para a
tensão de alimentação, um fan-out maior e menos espaço de área no chip.
-
Velocidade de Operação
O atraso de propagação típico de uma porta NAND N-MOS é de 50 ns.
A resistência de saída alta no estado ALTO e capacitâncias parasitas de
entrada contribuem para aumentar esse atraso.
-
Margem de Ruído
Para VDD = 5 V, as margens de ruído para a família N-MOS é de
aproximadamente 1,5 V. A margem de ruído aumenta proporcionalmente para
valores maiores de VDD.
-
Fan-Out
Devido à alta resistência de entrada do MOSFET, o fan-out da família
MOS é muito alto. O fan-out é limitado apenas pelas capacitâncias de entrada
da porta que, em altas freqüências, pode deteriorar o sinal digital. Mesmo
assim, o fan-out chega a 50 para a família MOS.
-
Consumo de Potência
Por usar altas resistências, os circuitos lógicos MOS consomem
pequenas quantidades de potência.
-
Complexidade do Processo de Fabricação
A família lógica MOS possui um processo de fabricação bem mais
simples do que a família TTL porque utiliza apenas MOSFETs.
-
Sensibilidade à Eletricidade Estática
A família lógica MOS é bastante susceptíveis a danos causados por
eletricidade estática. Uma descarga eletrostática supera a capacidade de
isolamento elétrico da camada de óxido danificando permanentemente o
dispositivo.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
29
Famílias Lógicas de Circuitos Integrados
Recomendações:
- Conecte todos os equipamentos que for manusear no terra da rede;
- Conecte-se ao terra com o uso de uma pulseira especial;
- Evite tocar os pinos dos circuitos integrados. Coloque-os imediatamente no
circuito;
- Mantenha os circuitos integrados em suas embalagens protetoras (espumas
condutoras). Não deixe-os fora de suas embalagens.
Todas essas recomendações também valem para placas de circuito
impresso (computadores, equipamentos etc).
2.14- Lógica MOS Complementar
A família lógica MOS Complementar (CMOS) utiliza MOSFETs tanto de
canal-P quanto de canal-N. Isso torna o CMOS mais rápido e com menor
consumo de potência em comparação com as outras famílias MOS. Em
contrapartida, os circuitos integrados CMOS têm maior grau de complexidade
para a fabricação e menor densidade de integração (ocupam maior área de
chip).
-
Inversor CMOS
O circuito básico do INVERSOR CMOS é mostrado na fig. 2-20:
Fig. 2-20: Inversor C-MOS
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
30
Famílias Lógicas de Circuitos Integrados
-
NAND CMOS e NOR CMOS
A fig. 2-21 mostra o circuito básico das portas NAND CMOS e NOR
CMOS:
Fig. 2-21: Portas NAND CMOS e NOR CMOS
2.15- Características da Série CMOS
-
Série 4000/14000
A série 4000 e a série 14000 são equivalentes. Os circuitos integrados
dessas duas séries têm um consumo muito baixo e podem operar de 3 a 15 V.
São muito lentos quando comparados com TTL e possuem corrente de saída
muito baixa.
-
Série 74C
Série CMOS compatível pino a pino e funcionalmente equivalente a
componentes TTL. Quanto à performance, a série 74C possui quase todas as
características da série 4000.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
31
Famílias Lógicas de Circuitos Integrados
-
74HC/HCT (High Speed CMOS – CMOS de Alta Velocidade)
Versão aperfeiçoada da série 74C. Possui maior velocidade e maior
capacidade de corrente. Componentes das séries 74HC e 74HCT são
compatíveis pino a pino com componentes da série TTL. A série 74HC não é
eletricamente compatível com TTL.
-
74AC/ACT (CMOS Avançado)
Esta série apresenta uma melhoria no que se refere a imunidade a ruído,
atraso de propagação e máxima freqüência de clock. Não são compatíveis pino
a pino com TTL. A série 74AC não é compatível eletricamente com TTL.
-
74AHC (Advanced High-Speed CMOS – CMOS Avançado de Alta
Velocidade)
Esta é a mais recente série utilizada em aplicações de alta velocidade,
baixo consumo e baixa capacidade de acionamento.
-
Tensão de Alimentação
As séries 4000/14000 e 74C podem operar com VDD de 3 a 15 V. As
séries 74HC/HCT e 74AC/ACT podem operar com VDD de 2 a 6 V.
-
Níveis de Tensão Lógicos
Tabela 2-3:
Parâmetro
VIH(min) VIL(max) VOH(min) VOL(max)
4000B
3,5
1,5
4,95
0,05
74HC
3,5
1,0
4,9
0,1
74HCT
2,0
0,8
4,9
0,1
CMOS
74AC
3,5
1,5
4,9
0,1
74ACT
2,0
0,8
4,9
0,1
74AHC
3,85
1,65
4,4
0,44
74AHCT
2,0
0,8
3,15
0,1
74
2,0
0,8
2,4
0,4
74LS
2,0
0,8
2,7
0,5
TTL
74AS
2,0
0,8
2,7
0,5
74ALS
2,0
0,8
2,7
0,4
VNH
1,45
1,4
2,9
1,4
2,9
0,55
1,15
0,4
0,7
0,7
0,7
VNL
1,45
0,9
0,7
1,4
0,7
1,21
0,7
0,4
0,3
0,3
0,4
Níveis de tensão (em volts) de entrada/saída com VDD = VCC = +5 V.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
32
Famílias Lógicas de Circuitos Integrados
-
Margens de Ruído
De um modo geral, os dispositivos CMOS têm margens de ruído maior
que os TTL (tabela anterior). As margens de ruído são calculadas a partir da
fórmula:
VNH = VOH(min) - VIH(min)
VNL = VOL(max) - VIL(max)
-
Dissipação de Potência
Quando o circuito lógico CMOS está estático (não está comutando), sua
dissipação de potência é muito baixa. Para VDD = +5 V, a dissipação típica de
potência DC é de 2,5 nW. Para VDD = +10 V, este valor aumenta para apenas
10 nW.
-
Dissipação de Potência Aumenta com a Freqüência
A dissipação de potência em um circuito lógico CMOS aumenta com a
freqüência de comutação de sua saída.
Quando uma saída CMOS comuta de BAIXO para ALTO, uma corrente
transiente deve ser fornecida para a capacitância de carga. Essa capacitância
corresponde a todas as capacitâncias parasitas das entradas das portas
lógicas que são acionadas por esta saída.
Fig. 2-22: Pulsos de corrente devido à capacitância parasita
A fig. 2-22 mostra o efeito da capacitância de carga no momento da
transição da saída de um circuito CMOS.
Um outro fator é que durante as transições, por um curto período de
tempo os dois transistores de saída estarão conduzindo juntos. Esse efeito
também contribui para o aumento da dissipação de potência.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
33
Famílias Lógicas de Circuitos Integrados
-
Fan-Out
O número de entradas CMOS que uma saída CMOS pode acionar é
limitado pela capacitância de entrada. Quanto maior for o número de entradas
CMOS, maior é a capacitância de carga vista pela saída CMOS e maior será o
seu tempo de comutação. Para freqüências menores que 1 MHz, o fan-out está
limitado a 50.
-
Velocidade de Comutação
Os dispositivos CMOS têm maior velocidade de comutação em relação
aos circuitos N-MOS e P-MOS. Isso porque a saída CMOS têm resistência
menor que as saídas N-MOS e P-MOS.
Uma porta NAND da série 4000 terá tipicamente um tpd de 50 ns com
VDD = 5 V, e 25 ns com VDD = 10 V.
Uma porta NAND da série 74HC/HCT tem um tpd médio em torno de 8 ns
quando VDD = 5 V. Uma porta NAND 74AC/ACT tem um tpd médio em torno de
4,7 ns. Uma porta NAND 74AHC tem um tpd médio em torno de 4,3 ns.
-
Entradas Não-Utilizadas
Entrada CMOS nunca devem ficar desconectadas. Elas devem ser
conectadas a um nível lógico ou alguma outra entrada.
Uma entrada CMOS não conectada é susceptível a ruído e a eletricidade
estática, que poderiam polarizar os MOSFETs para um estado de condução,
resultando no aumento de dissipação de potência e em possível
superaquecimento.
-
Sensibilidade à Eletricidade Estática
A grande resistência das entradas CMOS as torna especialmente
sensíveis ao acúmulo de cargas estáticas, que podem produzir tensões
suficientemente grandes para danificar os MOSFETs internos. A maioria dos
circuitos integrados CMOS possui diodos de proteção, que limitam a tensão de
entrada.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
34
Famílias Lógicas de Circuitos Integrados
-
Comparação entre as Séries CMOS e TTL
Tabela 2-4:
4000B
74HC/HCT
74AC/ACT
74AHC/T
74
74LS
74AS
74ALS
Dissipação de
potência por porta
(mW)
Estática A 100 kHz
1 x 10-3
0,1
2,5 x 10-3
0,17
5,0 x 10-3
0,08
-3
6,0 x 10
9,0 x 10-5
10
10
2
2
8
8
1,2
1,2
Atraso de
propagação
(ns)
50
8
4,7
3,7
9
9,5
1,7
4
Velocidadepotência (a
100 kHz)
(pJ)
5
1,4
0,37
0,02
90
19
13,6
4,8
Freqüência
máxima de
clock (MHz)
12
40
100
130
35
45
200
70
Margem
de ruído
no pior
caso (V)
1,5
0,9
0,7
0,55
0,4
0,3
0,3
0,4
Todos os valores são para VDD = 5 V.
2.16- Tecnologia de Baixa Tensão
O aumento do número de componentes dentro dos circuitos integrados
acarreta em um aumento de sua potência consumida e em problemas no
material isolante entre os seus componentes internos.
Para solucionar estes problemas surgiram os circuitos integrados que
utilizam a tecnologia de baixa tensão, ou seja, a tensão é menor que os 5 V:
•
•
•
•
Série 74LVC (Low-Voltage CMOS – CMOS de Baixa Tensão) – Utiliza
lógica de 3,3 V mas pode aceitar níveis lógicos de 5 V em suas entradas.
Série 74ALVC(Advanced Low-Voltage CMOS – CMOS de Baixa Tensão
Avançado) – Oferece melhor performance e trabalha apenas com lógica de
3,3 V.
Série 74LV (Low-Voltage – Baixa Tensão) – Utiliza tecnologia CMOS mas
opera somente com dispositivos de 3,3 V.
Série 74LVT(Low-Voltage BiCMOS Technology – Tecnologia BiCMOS
de Baixa Tensão) – Oferece as mesmas características da série 74LVC (as
entradas aceitam níveis lógicos de 5 V) e são eletricamente compatíveis
com TTL.
Tabela 2-5:
Vcc (recomendado)
tPD (ns)
Intervalo para VIH (V)
VIL (max) (V)
IOH (mA)
IOL (mA)
LVC
2,0 a 3,6
6,5
2,0 a 6,5
0,8
24
24
ALVC
2,3 a 3,6
3
2,0 a 4,6
0,8
12
12
LV
LVT
2,7 a 3,6
2,7 a 3,6
18
4
2,0 a Vcc + 0,5 2,0 a 7
0,8
0,8
6
32
6
64
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
35
Famílias Lógicas de Circuitos Integrados
2.17- Saídas CMOS de Dreno Aberto e Tristate
Saídas CMOS convencionais nunca devem ser conectadas juntas.
Quando as saídas CMOS convencionais são colocadas em curto, o valor da
tensão no terminal de saída comum será de aproximadamente Vcc / 2 se as
saídas estiverem em níveis diferentes.
-
Saídas em Dreno Aberto
Dispositivos com dreno aberto são os correspondentes CMOS às saídas
em coletor aberto TTL.
-
Saídas Tristate
Dispositivos com saídas tristate têm operação similar à das saídas
tristate TTL.
Fig. 2-23: Portas CMOS com dreno aberto em conexão wire-AND e saídas
CMOS tristate conectadas em um barramento
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
36
Famílias Lógicas de Circuitos Integrados
2.18- Interfaceamento de Circuitos Integrados
Quando utilizamos circuitos integrados de diferentes tecnologias quase
sempre necessitamos de um circuito de interface. O circuito de interface está
conectado entre a saída do circuito acionador e a entrada do circuito de carga.
Sua função é condicionar o sinal vindo do acionador e condicioná-lo de modo a
torná-lo compatível com os requisitos da carga.
Tabela 2-6:
CMOS
TTL
4000B
74HC
74HCT
74AC
74ACT
74AHC
74AHCT
74
74LS
74AS
74ALS
74F
VIH
(min)
3,5 V
3,5 V
2,0 V
3,5 V
2,0 V
3,85 V
2,0 V
2,0 V
2,0 V
2,0 V
2,0 V
2,0 V
VIL
(max)
1,5 V
1,0 V
0,8 V
1,5 V
0,8 V
1,65 V
0,8 V
0,8 V
0,8 V
0,8 V
0,8 V
0,8 V
VOH
(min)
4,95 V
4,9 V
4,9 V
4,9 V
4,9 V
4,4 V
3,15 V
2,4 V
2,7 V
2,7 V
2,7 V
2,5 V
Parâmetros
VOL
IIH
(max)
(max)
0,05 V
1 µA
0,1 V
1 µA
0,1 V
1 µA
0,1 V
1 µA
0,1 V
1 µA
0,44 V
1 µA
0,1 V
1 µA
0,4 V
40 µA
0,5 V
20 µA
0,5 V
20 µA
0,4 V
20 µA
0,5 V
20 µA
IIL
(max)
1 µA
1 µA
1 µA
1 µA
1 µA
1 µA
1 µA
1,6 mA
0,4 mA
0,5 mA
0,1 mA
0,6 mA
IOH
(max)
0,4 mA
4 mA
4 mA
24 mA
24 mA
8 mA
8 mA
0,4 mA
0,4 mA
2 mA
0,4 mA
1 mA
IOL
(max)
0,4 mA
4 mA
4 mA
24 mA
24 mA
8 mA
8 mA
16 mA
8 mA
20 mA
8 mA
20 mA
Níveis de tensão e corrente de entrada/saída com VDD = VCC = +5 V.
2.19- TTL Acionando CMOS
Quando interfaceamos diferentes tipos de circuitos integrados, devemos
verificar se o dispositivo acionador pode satisfazer os parâmetros de corrente e
tensão do dispositivo de carga.
No caso de um TTL acionar uma carga CMOS, a corrente de saída TTL
é capaz de satisfazer o requisito de entrada da entrada CMOS. Com relação à
tensão, os parâmetros VOH(min) de todas as séries TTL são muito baixos
quando comparados com VIH(min) das séries 4000B, 74HC, 74AC e 74AHC.
A solução é aumentar a tensão VOH(min) do acionador TTL. Isso é feito
através de um resistor de pull-up.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
37
Famílias Lógicas de Circuitos Integrados
Fig. 2-24: O resistor de pull-up externo aumenta a tensão de saída para
aproximadamente 5 V no estado ALTO.
-
TTL Acionando CMOS com Tensão de Alimentação Alta
Os circuitos integrados TTL não podem operar com tensões maiores do
que 5 V. Quando o dispositivo CMOS estiver operando com alimentação maior
de 5 V, o resistor de pull-up não poderá ser utilizado.
A solução é utilizar um buffer coletor aberto (7407) conforme a fig. 2-25:
Fig. 2-25: O buffer 7407 é usado para interfacear dispositivos TTL que acionam
cargas CMOS com alimentação maior do que 5 V.
2.20- CMOS Acionando TTL
-
CMOS Acionando TTL no Estado ALTO
As saídas CMOS podem fornecer tensão suficiente (VOH) para satisfazer
os requisitos de uma entrada TTL no estado ALTO (VIH). As saídas CMOS
também podem fornecer corrente suficiente para satisfazer os requisitos de
corrente de entrada (IIH).
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
38
Famílias Lógicas de Circuitos Integrados
-
CMOS Acionando TTL no Estado BAIXO
Nesta situação, as séries 74HC e 74HCT podem acionar apenas uma
carga TTL. A série 4000B não consegue acionar nenhuma carga TTL.
A solução é utilizar um buffer tristate (74LS125). Este circuito de
interface possui corrente de entrada baixa e corrente alta de saída.
Fig. 2-26: Um buffer é usado para interfacear componentes CMOS de baixa
capacidade de corrente com entradas 74LS
-
CMOS com Tensão de Alimentação Alta Acionando TTL
Neste caso é necessário utilizar um circuito de interface que possa
converter uma entrada de alta tensão para uma saída de 5 V. Um buffer
(4050B) é utilizado para essa interface.
Fig. 2-27: Um buffer 4050 pode ser usado como um conversor de nível entre
um componente TTL e um outro CMOS com fonte de alimentação de valor
mais alto
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
39
Dispositivos de Lógica Programável
3. Dispositivos de Lógica Programável (PLDs)
3.1- Introdução
A maioria dos circuitos lógicos utilizados são padronizados e possuem
diversas funções. Além disso, são fabricados por várias indústrias com um
custo muito baixo. Por essas razões esses circuitos integrados são usados em
uma grande quantidade de circuitos e sistemas.
Entretanto, existem problemas com circuitos que utilizam circuitos
integrados padronizados. Alguns sistemas podem necessitar de centenas ou
milhares de circuitos integrados. Essa quantidade enorme de componentes
necessita de um espaço considerável em uma placa e uma grande quantidade
de tempo para soldar ou testar esses circuitos integrados.
Reduzindo o número de circuitos integrados na placa podemos ter:
- menor espaço em placa: com placa menores os gabinetes seriam menores
também;
- menor consumo de potência;
- processos de fabricação mais rápidos e baratos;
- maior confiabilidade: existem menos circuitos integrados e menos
conexões sujeitas a falhas;
- facilidade de manutenção.
Os dispositivos de lógica programável (PLDs) tem todas estas
características permitindo assim substituir um grande número de circuitos
integrados padronizados por um único componente.
Um PLD é um circuito integrado que contém um grande número de
portas lógicas, flip-flops e registradores que são interconectados no chip. A
“programação” do componente pode ser feita queimando-se ou não fusíveis
que constituem as ligações internas entre os blocos lógicos de acordo com a
necessidade do usuário.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
40
Dispositivos de Lógica Programável
3.2- Conceito Básico
A fig. 3-1 mostra a idéia básica utilizada pelos PLDs.
Fig. 3-1: Exemplo de um dispositivo de lógica programável
Cada entrada (A e B) é aplicada em um buffer inversor e um não
inversor que seguem para as portas AND. As saídas das portas AND são
levadas às entradas de portas OR por meio de fusíveis, que podem gerar
qualquer combinação com as entradas. Para se obter, por exemplo:
O1 = AB + AB
é só queimarmos os fusíveis 1 e 4 da porta OR 1.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
41
Dispositivos de Lógica Programável
3.3- Simbologia
A simbologia de um PLD é mostrada na fig. 3-2:
Fig. 3-2: Simbologia usada em PLDs
3.4- Arquitetura de um PLD
-
PROM – A PROM é constituída conforme a fig. 3-3:
Fig. 3-3: Arquitetura de uma PROM
A PROM pode gerar qualquer função lógica possível das variáveis de
entrada.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
42
Dispositivos de Lógica Programável
-
Arranjo de Lógica Programável (PAL) – A PAL pode ser vista conforme
a fig. 3-4:
Fig. 3-4: Arquitetura típica de uma PAL
A PAL é utilizada em aplicações onde não se necessita que todas as
combinações sejam programadas. No caso da figura acima, cada saída está
conectada a apenas quatro saídas das portas AND.
Fusível de Polaridade
O fusível de polaridade é um recurso usado em muitos PLDs para
inverter qualquer saída do dispositivo. Isso é mostrado na figura a seguir:
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
43
Dispositivos de Lógica Programável
Fig. 3-5: Uso do fusível de polaridade para inversão da saída
3.5- Outros Recursos Disponíveis
Em circuitos de PLDs ainda podemos encontrar diversos recursos.
Esses recursos seriam: flip-flops, latches, registradores de entrada e
registradores de saída.
3.6- Outros Tipos de PLDs
FPLA (Field Programmable Logic Array) – O arranjo de lógica programável
usava uma matriz AND e uma matriz OR, ambas programáveis. Embora a
FPLA seja mais flexível do que a PAL, ela não foi bem aceita pelos projetistas.
CPLDs (PLDs Complexos) – são dispositivos que combinam vários circuitos
PAL em um mesmo chip.
FPGAs (Field Programmable Gate Arrays) – Os arranjos de portas
programáveis em campo oferecem um número de blocos lógicos configuráveis
que contém lógica combinacional programável e registradores para circuitos
seqüenciais. Possuem blocos de entrada/saída que podem ser configurados
como entradas, saídas e bidirecionais.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
44
Dispositivos de Lógica Programável
3.7- Programação
Quando os PLDs apareceram, a programação deles era feita
queimando-se ou não os fusíveis para se gerar o circuito lógico. Atualmente,
existem softwares que geram o mapa das conexões internas dos PLDs e ainda
testam a lógica do circuito. Existem também programadores universais onde o
PLD é colocado e pode ser programado a partir de um software.
3.8- PLDs Programáveis
A programação de um PLD é feita queimando-se um fusível. Uma vez
queimado o fusível, ele não pode ser recuperado. Tendo em vista esta
dificuldade, desenvolveu-se, então, um tipo de PLD apagável e reprogramável
(usando a mesma tecnologia das EEPROMs), que são bastante utilizados em
desenvolvimento de protótipos de circuitos digitais.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
45
Flip-Flops
4. Flip-Flops
4.1- Introdução
Os circuitos combinacionais são aqueles onde as saídas dependem
apenas dos níveis lógicos colocados nas entradas. A mesma combinação de
entrada sempre produzirá o mesmo resultado na saída, porque circuitos
combinacionais não possuem memória.
A maioria dos sistemas digitais é composta tanto por circuitos
combinacionais como de elementos de memória. O elemento de memória mais
importante é o flip-flop.
4.2- Flip-Flop R-S (Reset – Set)
O circuito básico do flip-flop R-S é mostrado na fig. 4-1:
Fig. 4-1: Circuito lógico do flip-flop R-S
O circuito acima mostra que o estado futuro das saídas Q e Q
dependem R e S e também do estado atual dessas saídas. Isso é mostrado na
tabela 4-1.
Tabela 4-1:
Caso
0
1
2
3
4
5
6
7
S
0
0
0
0
1
1
1
1
R
0
0
1
1
0
0
1
1
Qatual
0
1
0
1
0
1
0
1
Qfuturo
0
1
0
0
1
1
1
1
Qfuturo
1
0
1
1
0
0
1
1
Nos casos 0 e 1, com S = 0 e R = 0, as saídas Q e Q permaneceram
inalteradas (memória). Nos casos 2 e 3, com S = 0 e R = 1, a saída Q foi para
0 e Q foi para 1. Nos casos 4 e 5, com S = 1 e R = 0, a saída Q foi para 1 e Q
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
46
Flip-Flops
foi para 0. Nos casos 6 e 7, com S = 1 e R = 1, as saídas Q e Q foram para 1,
ocasionando um problema, já que as saídas Q e Q devem ser
complementares.
Uma tabela simplificada e o símbolo do flip-flop R-S são mostrados na
fig. 4-2:
Fig. 4-2: Tabela verdade e simbologia do flip-flop R-S
O circuito do flip-flop R-S também pode ser implementado usando portas
NOR.
4.3- Flip-Flops com Clock
Circuitos que utilizam clock são chamados de circuitos síncronos. Muitos
flip-flops utilizam um sinal de clock para determinar o momento em que suas
saídas mudarão de estado. O sinal de clock é comum para todas as partes do
circuito.
Normalmente, o sinal de clock é uma onda quadrada e durante uma
transição positiva (nível 0 para nível 1) ou transição negativa (nível 1 para nível
0) a saída poderá mudar de estado.
Fig. 4-3: Simbologia de flip-flops com clock na transição de subida e descida
Tempos de Setup e Hold
Os tempos de setup e hold são parâmetros que devem ser observados
para que o flip-flop possa trabalhar de modo confiável. O tempo de setup, tS,
corresponde ao intervalo no qual as entradas devem permanecer estáveis
antes da transição do clock. O tempo de hold, tH, corresponde ao intervalo no
qual as entradas devem permanecer estáveis depois da transição do clock.
Os tempos de setup e hold mínimos devem ser respeitados para o
funcionamento confiável do flip-flop.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
47
Flip-Flops
Fig. 4-4: Tempos de setup e hold
4.4- Flip-Flop R-S com Clock
O símbolo do flip-flop R-S com clock é mostrado na fig. 4-5:
Fig. 4-5: Flip-flop R-S com clock
O circuito interno é mostrado na fig. 4-6:
Fig. 4-6: Circuito lógico interno do flip-flop R-S com clock
O detector de transição é um circuito que habilitará, por alguns instantes,
as entradas SET e RESET, durante a transição de CLOCK. O circuito típico de
um detector de transição é mostrado na fig. 4-7:
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
48
Flip-Flops
Fig. 4-7: Circuitos detectores de transição positiva e negativa
Os tempos dos pulsos de CLK* correspondem aos tempos de atraso da
porta NOT, em torno de 5 ns.
4.5- Flip-Flop J-K
O símbolo do flip-flop J-K é mostrado na fig. 4-8:
Fig. 4-8: Flip-flop J-K
A operação do flip-flop J-K é semelhante à do flip-flop R-S. A diferença é
que o flip-flop J-K não possui a condição proibida, ou seja, J = K = 1. Nessa
situação, a saída será complementada (valor anterior será invertido).
O circuito interno do flip-flop J-K é mostrado na fig. 4-9:
Fig. 4-9: Circuito lógico interno do flip-flop J-K
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
49
Flip-Flops
4.6- Flip-Flop D
O símbolo do flip-flop D é mostrado na fig. 4-10:
Fig. 4-10: Flip-flop D
O circuito interno do flip-flop D é mostrado na fig. 4-11:
Fig. 4-11: Circuito lógico interno do flip-flop D
4.7- Latch D
O símbolo lógico do latch D é mostrado na fig. 4-12. Diferentemente do
flip-flop D, o latch D possui uma entrada EN. Quando esta entrada estiver
habilitada, a saída é a cópia da entrada. Se ela estiver desabilitada, a saída
não mudará.
Fig. 4-12: Latch D
O circuito interno é mostrado na fig. 4-13:
Fig. 4-13: Circuito interno do latch D
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
50
Flip-Flops
4.8- Entradas Assíncronas
Todas as entradas dos flip-flops até agora vistos dependem do sinal de
clock. Estas entradas são chamadas entradas síncronas. Em muitos flip-flops
existem outras entradas que são chamadas entradas assíncronas, ou seja, não
dependem do sinal de clock para atuarem.
Essas entradas são usadas para colocar o flip-flop no estado “0” ou “1”,
a qualquer instante. A tabela 4-2 mostra as entradas assíncronas:
Tabela 4-2:
PRESET
1
0
1
0
CLEAR
1
1
0
0
Resposta do Flip-Flop
Operação normal
Q=1
Q=0
Não usada
Para a operação normal do flip-flop, as entradas PRESET e CLEAR
devem estar em “1”. A qualquer momento podemos forçar a saída Q a ser “0”
ou “1”. A última combinação não pode ser usada, já que é contraditória.
A fig. 4-14 mostra as entradas assíncronas de um flip-flop J-K:
Fig. 4-14: Simbologia do flip-flop J-K com as entradas assíncronas
4.9- Características de Temporizações dos Flip-Flops
As seguintes características de tempo devem ser respeitadas para o
funcionamento correto dos flip-flops.
-
Tempos de Setup e Hold – Correspondem aos intervalos de tempo que a
entrada deve permanecer estável antes e depois da transição do clock.
-
Atrasos de Propagação – Na mudança de estado da saída, sempre
haverá um atraso entre a aplicação de um sinal na entrada e o momento
que a saída muda.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
51
Flip-Flops
Fig. 4-15: Atrasos de propagação
-
Freqüência Máxima de Clock, fMAX – Esta é a freqüência mais alta que
pode ser aplicada no flip-flop de modo a dispará-lo confiavelmente.
-
Tempos de Duração do Clock em ALTO e BAIXO – O tempo de duração
do clock em nível ALTO, tw(H) e o tempo de duração em nível BAIXO, tw(L)
são mostrados na figura abaixo.
Fig. 4-16: Tempos de duração de clock em ALTO e BAIXO
-
Largura dos Pulsos Assíncronos – Assim como foram definidos larguras
mínimas de pulsos para o clock, as entradas assíncronas PRESET e
CLEAR também possuem larguras mínimas de pulsos para uma operação
correta.
Fig. 4-17: Larguras mínimas de pulsos assíncronos
-
Tempos de Transição do Clock – Para garantir o funcionamento correto
do flip-flop, o tempo transição do clock deve ser o menor possível. Para
dispositivos TTL esse tempo é ≤ 50 ns e para dispositivos CMOS, ≤ 200 ns.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
52
Flip-Flops
4.10- Circuitos Integrados de Flip-Flops
-
Alguns circuitos integrados de flip-flops são mostrados abaixo:
7474 – Duplo flip-flop D disparado por borda (TTL);
74LS112 – Duplo flip-flop J-K disparado pela borda (TTL);
74C74 – Duplo flip-flop D disparado pela borda (CMOS);
74HC112 – Duplo flip-flop J-K disparado pela borda (CMOS).
Tabela 4-3:
Parâmetro de Temporização
TTL
CMOS
7474
74LS112
74C74
74HC112
tS (ns)
20
20
60
25
tH (ns)
5
0
0
0
tPHL (ns)
de CLK para Q
40
24
200
31
tPLH (ns)
de CLK para Q
25
16
200
31
tPHL (ns)
de
40
24
225
41
tPLH (ns)
CLR para Q
de PRE para Q
25
16
255
41
tW(L) (ns)
tempo em BAIXO para CLK
37
15
100
25
tW(H) (ns)
tempo em ALTO para CLK
30
20
100
25
tW(L) (ns)
para
CLR ou PRE
30
15
60
25
15
30
5
20
fMAX (MHz)
4.11- Problemas de Temporização em Flip-Flops
Um problema de temporização que poderá ocorrer em sistemas que
utilizam flip-flops é mostrado na fig. 4-18:
Fig. 4-18: Problemas de temporização em flip-flops
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
53
Flip-Flops
Como o clock é o mesmo para os dois flip-flops, para que o circuito
funcione adequadamente, o tempo de hold de Q2, tH, deve ser menor que o
atraso de propagação de Q1.
4.12- Flip-Flops Mestre/Escravo
Antes do desenvolvimento de flip-flops com tempo de hold muito
pequeno, os problemas de temporização vistos anteriormente eram
solucionados utilizando-se flip-flops mestre/escravo.
Os flip-flops mestre/escravo são constituídos de dois flip-flops, um
disparado na transição de subida do clock (mestre) e o outro na descida do
clock (escravo). Na borda de subida do clock, os níveis presentes nas entradas
do flip-flop determinam a saída do mestre. Na borda de descida do clock os
níveis das saídas do mestre são passados para o escravo, ou para a saída do
flip-flop.
4.13- Dispositivos Schmitt-Trigger
A principal característica de um circuito Schmitt-Trigger é mostrada na
fig. 4-19:
Fig. 4-19: Comparação entre um inversor comum e um inversor SchmittTrigger
A fig. 4-19 mostra um inversor comum sendo acionado por um sinal com
tempo de transição longo. Em circuitos comuns, a saída pode oscilar à medida
que o sinal de entrada passa pela faixa de transição.
Ainda na fig. 4-19, vemos que em um circuito com entrada SchmittTrigger a saída não produzirá oscilações. Esse circuito funciona da seguinte
forma: a entrada está em nível BAIXO resultando nível ALTO na saída. A saída
só irá para nível BAIXO quando a entrada ultrapassar o valor VT+ (tensão de
limiar superior). Nessas condições, se quisermos que a saída volte a ser ALTO,
devemos aplicar uma tensão de entrada menor do que VT- (tensão de limiar
inferior).
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
54
Flip-Flops
Dispositivos Schmitt-Trigger são especialmente usados em circuitos
onde os sinais de entrada variam lentamente (ondas senoidais, sinais de
sensores, etc). As especificações de VT+ e VT- dependem do tipo de
componente, mas VT- é sempre menor do que VT+.
4.14- Circuitos Geradores de Clock
A maioria dos sistemas digitais utiliza algum circuito gerador de clock.
Dentre essas aplicações podemos ter algumas que utilizam um sinal de clock
sem a exigência de precisão. Outras, porém, a precisão é fundamental.
Existem vários tipos de osciladores que podem gerar pulsos de clock
para sistemas digitais. Os menos precisos e menos estáveis (dependendo da
aplicação) utilizam resistores e capacitores. Os mais precisos e estáveis
utilizam cristais de quartzo e com freqüências muito maiores do que os circuitos
que utilizam resistores e capacitores como geradores de clock.
Oscilador Schmitt-Trigger
Um típico gerador de clock usando dispositivos Schmitt-Trigger é
mostrado na figura abaixo:
Fig. 4-20: Circuito de um oscilador utilizando inversor Schmitt-Trigger
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
55
Flip-Flops
Temporizador 555 como Oscilador
O circuito integrado 555 também pode ser usado como gerador de clock.
A figura abaixo mostra isso:
Fig. 4-21: Circuito de um oscilador utilizando o temporizador 555
Osciladores a Cristal de Quartzo
A principal característica dos osciladores a cristal de quartzo é sua
estabilidade e precisão quanto à freqüência de oscilação. A figura seguinte
mostra circuitos osciladores que utilizam cristais de quartzo.
Fig. 4-22: Circuitos de osciladores a cristal
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
56
Contadores
5. Contadores
5.1- Introdução
Os flip-flops têm funções ilimitadas em sistemas digitais. Podemos
associá-los e utilizá-los como contadores, registradores e muitos outros
circuitos.
Os contadores podem ser assíncronos ou síncronos. Basicamente, a
principal diferença entre eles é que o síncrono utiliza um sinal de clock comum
a todos os flip-flops e o assíncrono possui um sinal de clock que é dividido até
o último flip-flop.
Os registradores também são arranjos de flip-flops, mas com o objetivo
de armazenar, manipular e transferir dados entre outros registradores ou
circuitos.
5.2- Contadores Assíncronos
Os contadores assíncronos também são chamados de contadores por
pulsação (ripple counter). Um circuito típico de um contador assíncrono é
mostrado na fig. 5-1:
Fig. 5-1: Contador assíncrono utilizando flip-flops J-K
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
57
Contadores
Tabela 5-1:
Reinicia a contagem →
Estado
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
D
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
C
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
B
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
A
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
Decimal
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0
1
2
A tabela 5-1 mostra os estados de contagem deste contador assíncrono
de quatro bits.
Podemos perceber que a cada 16 estados esse contador reinicia sua
contagem. Então ele é um contador assíncrono módulo 16, ou seja, tem 16
estados (0000 até 1111) distintos. Equacionando:
Módulo = 2N
onde N é o número de flip-flops conectados (número de bits).
Nos contadores assíncronos, a freqüência do clock é dividida por 2 em
cada flip-flop, ou seja: na saída A teremos Clock / 2, na saída B teremos Clock /
4, na saída C teremos Clock / 8 e na saída D teremos Clock / 16. Concluindo,
os contadores assíncronos são divisores de freqüência e no último flip-flop
teremos a freqüência de clock dividida pelo módulo desse contador.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
58
Contadores
5.3- Contadores de Módulo < 2N
Um contador assíncrono com N flip-flops terá, no máximo, módulo 2N. Se
precisarmos de um contador com módulo menor do que 2N será necessário
utilizar um circuito adicional, conforme mostrado na fig. 5-2:
Fig. 5-2: Contador assíncrono com módulo < 2N
A fig. 5-2 mostra um contador módulo 6. Se não houvesse a porta NAND
ligada nas entradas CLEAR dos flip-flops, o módulo seria 8. A seqüência de
contagem é mostrada na tabela 5-2:
Tabela 5-2:
Estado temporário →
necessário apenas para
reiniciar a contagem
Estado
0
1
2
3
4
5
6
7
8
C
0
0
0
0
1
1
1
0
0
B
0
0
1
1
0
0
1
0
0
A
0
1
0
1
0
1
0
0
1
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
Decimal
0
1
2
3
4
5
6
0
1
59
Contadores
5.4- Diagrama de Transição de Estados
O diagrama de transição de estados é mostrado na fig. 5-3:
Fig. 5-3: Diagrama de transição de estados de um contador módulo 6
Neste diagrama, as linhas contínuas correspondem aos estados estáveis
e as linhas tracejadas indicam o estado temporário.
O procedimento para a construção de um contador módulo X é:
- Determinar o menor número de flip-flops tal que 2N ≤ X. Se 2N = X, não é
necessário conectar a porta NAND na entrada assíncrona CLEAR;
- Conectar a porta NAND nas entradas assíncronas CLEAR de todos os flipflops;
- Determinar quais saídas estarão em ALTO na contagem X. Então é só
conectar essas saídas nas entradas da porta NAND.
5.5- Contadores de Década
Contadores de década ou decádicos são contadores que possuem 10
estados distintos, não importando a seqüência. Quando um contador decádico
conta em seqüência de 0000 a 1001 (0 a 9), ele é chamado de contador BCD.
5.6- Circuitos Integrados de Contadores Assíncronos
Existem vários circuitos integrados de contadores assíncronos, tanto
TTL como CMOS.
O circuito integrado TTL 74LS293 é um contador com quatro flip-flops JK. Vários circuitos TTL têm suas versões CMOS. O circuito integrado CMOS
74HC4024 é um contador com sete flip-flops que não possui correspondente
TTL.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
60
Contadores
5.7- Contador Assíncrono Decrescente
Os contadores que contam progressivamente a partir do zero são
denominados contadores crescentes. Já os contadores decrescentes contam
do valor máximo até zero.
Um contador decrescente pode ser construído conforme mostrado na fig.
5-4:
Fig. 5-4: Contador assíncrono decrescente
Nesse circuito vemos que o clock de cada flip-flop é acionado com a
saída invertida do flip-flop anterior. Com isso a saída é invertida, ou seja,
conforme a tabela abaixo:
Tabela 5-3:
Estado
0
1
2
3
4
5
6
7
8
9
C
0
1
1
1
1
0
0
0
0
1
B
0
1
1
0
0
1
1
0
0
1
A
0
1
0
1
0
1
0
1
0
1
Decimal
0
7
6
5
4
3
2
1
0
7
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
61
Contadores
O diagrama de transição de estados do contador decrescente módulo 8
é mostrado na fig. 5-5:
Fig. 5-5: Diagrama de transição de estados do contador decrescente módulo 8
5.8- Atrasos de Propagação de Contadores Assíncronos
Cada flip-flop de um contador assíncrono é disparado pela saída de um
flip-flop anterior. Essa característica traz uma desvantagem: o tempo de atraso
de propagação. Isso pode ser visto na fig. 5-6:
Fig. 5-6: Atrasos de propagação em contadores assíncronos
Ao passar por um flip-flop, o sinal de clock sofre um atraso de
propagação tPD e esse efeito é somado até o último flip-flop, gerando um atraso
total de N x tPD, onde N é o número de flip-flops.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
62
Contadores
Para que um contador assíncrono funcione de modo confiável é
necessário que o atraso total de propagação seja menor que o período de clock
usado, ou seja:
T
≥ Nxt
clock
ou ainda, em termos de freqüência máxima:
1
=
f
max
Nxt
PD
PD
5.9- Contadores Síncronos
Como vimos, o atraso de propagação dos flip-flops dos contadores
assíncronos limitam a freqüência máxima de trabalho destes componentes.
Esse problema pode ser resolvido se os flip-flops mudassem de estado
suas saídas no momento em que houvesse a transição de clock. Essa
configuração pode ser vista na fig. 5-7:
Fig. 5-7: Contador síncrono módulo 16
Tabela 5-4:
Reinicia a contagem →
Estado
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
D
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
C
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
B
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
A
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
Decimal
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0
63
Contadores
Na fig. 5-7, o sinal de clock é comum a todos os flip-flops. Com isso, o
atraso de propagação será o atraso de um flip-flop somado com o atraso da
porta NAND:
atraso total = t (flip − flop) + t (NAND)
PD
PD
Ainda analisando a fig. 5-7 vemos que o contador síncrono é mais
complexo do que o contador assíncrono. Entretanto, com um atraso de
propagação menor, ele pode trabalhar com freqüências maiores.
5.10- Circuitos Integrados de Contadores Síncronos
Podemos encontrar diversos circuitos integrados no mercado, tanto da
família TTL como CMOS. Dentre eles estão:
- 74LS160 / 162, 74HC160 / 162 – contadores síncronos decádicos.
- 74LS161 / 163, 74HC161 / 163 – contadores síncronos módulo 16.
5.11- Contadores Síncronos Decrescentes
Do mesmo modo que os contadores assíncronos, os contadores
síncronos podem contar decrescentemente. Para isso devemos conectar as
saídas A , B e C em vez das saídas A, B e C.
5.12- Contadores com Carga Paralela
Contadores síncronos podem contar a partir de um valor prédeterminado pelo usuário. Isso é conhecido como carga paralela. A fig. 5-8
mostra um flip-flop com circuito carga de inicialização:
Fig. 5-8: Contador com carga paralela
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
64
Contadores
Quando LOAD é BAIXO, o flip-flop funcionará normalmente. Quando
LOAD é ALTO, o valor de D é colocado na saída do flip-flop usando as
entradas assíncronas (não depende do clock).
Se fizermos isso para cada flip-flop do contador poderemos prédeterminar o valor inicial a ser incrementado. Um exemplo prático de um
contador síncrono crescente/decrescente de módulo 16 com carga paralela é o
74LS193/74HC193.
5.13- Utilizando Contadores BCD
Contadores BCD são bastante usados em circuitos onde pulsos devem
ser contados e mostrados num display, por exemplo. A fig. 5-9 mostra um
arranjo de contadores BCD com contagem de 000 a 999:
Fig. 5-9: Contador BCD com contagem de 000 a 999
Inicialmente todos os contadores estão em 0 e, no display, é mostrado
000. A cada borda de descida do sinal de clock, o contador de unidades é
incrementado e o valor é mostrado no display. Quando o valor é 009 (1001), o
próximo pulso fará com que o contador BCD de unidades vá a 0.
Nesse momento também ocorrerá uma transição de 1 para 0 (borda de
descida) da saída D que está ligada ao clock do contador BCD de dezenas. E
agora o display mostrará o valor 010.
Isso continua até 999 quando, no próximo pulso, os contadores irão para
000, iniciando novamente a contagem.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
65
Contadores
5.14- Projeto de Contadores Síncronos
A fig. 5-10 mostra um diagrama genérico de um contador síncrono:
Fig. 5-10: Diagrama genérico de um contador síncrono
O circuito lógico de estado futuro define qual o próximo estado do
contador através do estado atual. Dessa maneira podemos implementar
contadores com qualquer seqüência de contagem.
Apesar usarmos flip-flops J-K em nossos projetos de contadores
síncronos, nada nos impede de usarmos flip-flops D, como na fig. 5-10.
5.15- O Flip-Flop J-K
A tabela 5-5 mostra o funcionamento do flip-flop J-K:
Tabela 5-5:
J
0
0
0
0
1
1
1
1
K
0
0
1
1
0
0
1
1
Qatual
0
1
0
1
0
1
0
1
Qfuturo
0
1
0
0
1
1
1
0
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
66
Contadores
A tabela 5-5 relaciona as entradas J e K e a saída Qatual de modo a gerar
um Qfuturo. Na verdade, na construção de contadores síncronos, nós já
sabemos Qatual e Qfuturo (valores da contagem), mas precisamos saber quais
são os valores das entradas J e K que gerarão Qfuturo. Desse modo nossa
tabela deverá ser:
Tabela 5-6:
Qatual
0
0
1
1
Qfuturo
0
1
0
1
J
0
1
x
x
K
x
x
1
0
Onde x = irrelevante.
A tabela 5-6 relaciona os estados atual e futuro da saída Q com relação
às entradas J e K.
5.16- Procedimento para Construção de Contadores Síncronos
Projetaremos um contador síncrono usando a seqüência de contagem
da tabela 5-7:
Tabela 5-7:
C
0
0
0
0
1
0
B
0
0
1
1
0
0
A
0
1
0
1
0
0
Os passos são os seguintes:
-
Definir o número de flip-flops (bits) do contador e a seqüência de contagem;
-
Mostrar o diagrama de transição de estados indicando todos os estados
possíveis, incluindo os estados que não fazem parte da seqüência. O
diagrama é mostrado na fig. 5-11:
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
67
Contadores
Fig. 5-11: Diagrama de transição de estados
A fig. 5-12 mostra o circuito de geração do estado futuro a ser projetado.
Podemos notar que as saídas A, B e C, na verdade, são as entradas desse
circuito e que as entradas J e K são as saídas.
Fig. 5-12: Diagrama do contador a ser projetado
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
68
Contadores
-
Gerar a tabela de transição de estados (estados atual e futuro):
Tabela 5-8:
Atual
C
B
0
0
0
0
0
1
0
1
1
0
1
0
1
1
1
1
A
0
1
0
1
0
1
0
1
C
0
0
0
1
0
0
0
0
Futuro
B
0
1
1
0
0
0
0
0
A
1
0
1
0
0
0
0
0
JC
KC
JB
KB
JA
KA
0
0
0
1
x
x
x
x
x
x
x
x
1
1
1
1
0
1
x
x
0
0
x
x
X
X
0
1
X
X
1
1
1
x
1
x
0
x
0
x
x
1
x
1
x
1
x
1
Onde x = irrelevante.
-
Encontrar as expressões lógicas que relacionam as saídas J e K com as
entradas A, B e C, usando o mapa de Karnaugh. Depois da simplificação
chegamos às seguintes expressões:
JA = C
KA = 1
JB = A.C
KB = A + C
JC = A.B
KC = 1
O circuito final é mostrado na fig. 5-13.
Fig. 5-13: Circuito lógico final do contador
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
69
Registradores
6. Registradores
6.1- Introdução
A utilização mais comum dos flip-flops é no armazenamento e
transferência de informações. Essas informações são armazenadas em grupos
de flip-flops chamados registradores.
Além de armazenar informações, os registradores têm a capacidade de
transferir essas informações para outros registradores. Isso é bastante
interessante, já que o armazenamento e a transferência de dados são as
principais características dos sistemas digitais.
6.2- Registradores de Deslocamento
A fig. 6-1 mostra um registrador de deslocamento de 4 bits e suas
formas de onda.
Fig. 6-1: Registrador de deslocamento de 4 bits e formas de onda
A cada pulso de clock, o valor contido nas entradas J e K dos flip-flops é
transferido para a saída. Essa saída está conectada na entrada do próximo flipflop e no final de 4 pulsos de clock, o valor da entrada DADOS, que foi
transferido serialmente, estará armazenado no registrador.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
70
Registradores
6.3- Transferência Paralela de Dados entre Registradores
A fig. 6-2 mostra a transferência paralela de dados entre dois
registradores:
Fig. 6-2: Transferência paralela de dados entre registradores
As saídas dos flip-flops que constituem o registrador X estão conectadas
nas entradas dos flip-flops que constituem o registrador Y. Depois do pulso
TRANFER, o conteúdo armazenado no registrador X é transferido para o
registrador Y.
6.4- Transferência Serial de Dados entre Registradores
A fig. 6-3 mostra a transferência serial de dados entre dois registradores.
Fig. 6-3: Transferência serial de dados entre registradores
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
71
Registradores
6.5- Comparação entre a Transferência Paralela e a
Transferência Serial
Na transferência paralela, os dados são transmitidos simultaneamente
na ocorrência de um único pulso de transferência. Na transferência serial, cada
bit é transmitido a cada pulso de transferência.
Com relação à velocidade de transmissão, a transferência paralela é
mais rápida do que a serial. Em compensação, a transferência paralela
necessita de um número maior de conexões entre os registradores.
6.6- Contadores com Registradores de Deslocamento
Registradores de deslocamento também podem ser usados como
contadores:
-
Contador em Anel – O contador em anel é mostrado na fig. 6-4:
Fig. 6-4: Contador em anel
No contador em anel, um das saídas dos flip-flops está em 1 e as outras
está em 0. Por ser um registrador de deslocamento, esse 1 é transferido para o
próximo flip-flop e assim sucessivamente. A tabela 5-1 mostra a seqüência da
contagem.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
72
Registradores
Tabela 5-1:
Pulso de Clock
0
1
2
3
4
5
6
7
Q3
1
0
0
0
1
0
0
0
Q2
0
1
0
0
0
1
0
0
Q1
0
0
1
0
0
0
1
0
Q0
0
0
0
1
0
0
0
1
Para o perfeito funcionamento deste tipo de contador, um dos flip-flops
deve ter inicialmente o valor 1 e os outros 0. Isso pode ser feito através das
entradas assíncronas PRESET e CLEAR.
-
Contador Johnson – O contador Johnson é mostrado na fig. 6-5:
Fig. 6-5: Contador Johnson
A tabela 5-2 mostra a seqüência de contagem do contador Johnson:
Tabela 5-2:
Pulso de Clock
0
1
2
3
4
5
6
7
Q2
0
1
1
1
0
0
0
1
Q1
0
0
1
1
1
0
0
0
Q0
0
0
0
1
1
1
0
0
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
73
Registradores
6.7- Circuitos Integrados de Registradores
Os registradores podem ser classificados da forma com a qual seus
dados são transferidos:
- Entrada paralela / saída paralela – 74174, 74LS174, 74HC174;
- Entrada serial / saída serial – 4731B;
- Entrada paralela / saída serial – 74165, 74LS165, 74HC165;
- Entrada serial / saída paralela – 74164, 74LS164, 74HC164.
-
Existem outras versões de registradores como, por exemplo:
74194, 74LS194, 74HC194 – registrador de deslocamento bidirecional
universal de quatro bits com entrada paralela e saída paralela.
74373, 74LS373, 74HC373, 74HCT373 – registrador de oito bits de entrada
paralela e saída paralela que contém oito latches tipo D com saídas em
tristate.
74374, 74LS374, 74HC374, 74HCT374 – registrador de oito bits de entrada
paralela e saída paralela que contém oito flip-flops tipo D com saídas em
tristate.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
74
Decodificadores, Codificadores, Multiplexadores e Demultiplexadores
7. Decodificadores, Codificadores, Multiplexadores e
Demultiplexadores
7.1- Decodificadores
Decodificador é um circuito lógico que recebe em suas entradas um
código que representa um número binário e ativa a saída correspondente a
esse número binário. Os decodificadores são circuitos combinacionais sem
memória mas são bastante usados em sistemas digitais.
A fig. 7-1 mostra o diagrama de um decodificador de 3 linhas para 8
linhas:
Fig. 7-1: Decodificador 3 para 8
A tabela 7-1 mostra a tabela verdade para o decodificador 3 para 8.
Tabela 7-1:
C
B
0
0
0
0
0
1
0
1
1
0
1
0
1
1
1
1
A
0
1
0
1
0
1
0
1
O0
1
0
0
0
0
0
0
0
O1
0
1
0
0
0
0
0
0
O2
0
0
1
0
0
0
0
0
O3
0
0
0
1
0
0
0
0
O4
0
0
0
0
1
0
0
0
O5
0
0
0
0
0
1
0
0
O6
0
0
0
0
0
0
1
0
O7
0
0
0
0
0
0
0
1
Através da tabela verdade vemos que apenas uma saída é acionada,
dependendo apenas do código de entrada. As entradas E1 e E2 são as
entradas de habilitação do componente. Quando elas estiverem acionadas, ou
seja, E1 = 0 e E2 = 1, o componente responderá às entradas A, B e C.
Um exemplo de decodificador é o circuito integrado 74LS138/HC138. Ele
é um decodificador de 3 linhas para 8 linhas.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
75
Decodificadores, Codificadores, Multiplexadores e Demultiplexadores
Decodificadores BCD para Decimal
Um exemplo de decodificador BCD para decimal é o circuito integrado
7442/LS42/HC42. Esses decodificadores também são denominados de
decodificadores 4 para 10.
Decodificadores/Driver BCD para Decimal
O circuito integrado 7445 é um decodificador/driver BCD para decimal. O
termo driver é usado porque este componente possui saídas com coletor
aberto que podem operar com tensões e correntes maiores que uma saída TTL
normal.
Decodificadores/Driver BCD para 7 Segmentos
Muitas aplicações que envolvem medições é necessário que o valor
binário em um registrador ou contador seja mostrado em um display. Os
circuitos integrados 7446 e 7447 são decodificadores BCD para 7 segmentos.
O diagrama de um decodificador BCD para 7 segmentos é mostrado na
fig. 7-2:
Fig. 7-2: Decodificador BCD para 7 segmentos
Como os displays usados são formados com LEDs, cada segmento do
display necessita de uma corrente alta para acender. Circuitos TTL e CMOS
não tem capacidade de fornecer corrente suficiente e por isso não são usados
para acionar diretamente os displays. Os decodificadores/driver BCD para 7
segmentos podem acionar diretamente displays de LEDs.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
76
Decodificadores, Codificadores, Multiplexadores e Demultiplexadores
7.2- Codificadores
Os codificadores executam a função contrária dos decodificadores. Nos
codificadores apenas uma linha da entrada é acionada por vez e a saída terá o
código da linha acionada.
Fig. 7-3: Codificador 8 para 3
Note que não existe a entrada A0, já que se nenhuma entrada estiver
acionada o código de saída é 000.
A tabela 7-2 mostra a tabela verdade:
Tabela 7-2:
A1
A0
x
0
x
1
x
0
x
0
x
0
x
0
x
0
x
0
A2
0
0
1
0
0
0
0
0
A3
0
0
0
1
0
0
0
0
A4
0
0
0
0
1
0
0
0
A5
0
0
0
0
0
1
0
0
A6
0
0
0
0
0
0
1
0
A7
0
0
0
0
0
0
0
1
C
0
0
0
0
1
1
1
1
B
0
0
1
1
0
0
1
1
A
0
1
0
1
0
1
0
1
O circuito integrado 74147 é um codificador de prioridade decimal para
BCD. O codificador de prioridade inclui uma lógica para garantir que, quando
duas ou mais entradas estiverem acionadas, o código de saída corresponderá
à entrada com número mais alto. Por exemplo, se as entradas A3 e A5
estiverem acionadas, o código na saída será 101 (5).
O símbolo lógico do 74147 e sua tabela verdade são mostrados na fig.
7-4.
Fig. 7-4: Codificador decimal para BCD
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
77
Decodificadores, Codificadores, Multiplexadores e Demultiplexadores
A tabela 7-3 mostra a tabela verdade.
Tabela 7-3:
A
A
A
1
1
0
x
x
x
x
x
x
x
x
2
1
1
0
x
x
x
x
x
x
x
3
1
1
1
0
X
X
X
X
X
X
A
4
1
1
1
1
0
x
x
x
x
x
A
5
1
1
1
1
1
0
x
x
x
x
A
6
1
1
1
1
1
1
0
x
x
x
A
7
1
1
1
1
1
1
1
0
x
x
A
8
1
1
1
1
1
1
1
1
0
x
A
9
1
1
1
1
1
1
1
1
1
0
O
3
1
1
1
1
1
1
1
1
0
0
O
2
1
1
1
1
0
0
0
0
1
1
O
1
1
1
0
0
1
1
0
0
1
1
O
0
1
0
1
0
1
0
1
0
1
0
x = irrelevante
A tabela 7-3 mostra o código BCD invertido. Os valores x indicam a
prioridade do maior valor.
7.3- Multiplexadores
Multiplexador ou seletor de dados (MUX) é um circuito lógico que recebe
vários dados digitais de entrada e, por um determinado instante, envia esse
dado para uma saída. As entradas de seleção determinam qual sinal de
entrada deve ser enviado para a saída.
Fig. 7-5: Multiplexador de 2 entradas
A fig. 7-5 mostra um multiplexador de duas entradas. A entrada Seleção
controla qual dado de entrada (I0 ou I1) será enviado para a Saída.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
78
Decodificadores, Codificadores, Multiplexadores e Demultiplexadores
A fig. 7-6 mostra o diagrama de um multiplexador com 8 entradas, o
74151 (74LS151, 74HC151):
Fig. 7-6: Multiplexador de 8 entradas
A tabela 7-4 mostra a tabela verdade.
Tabela 7-4:
E
S
H
X
L
S
S
0
Z
Z
X
X
H
L
L
L
L
I
I0
L
L
L
H
I
1
I1
L
L
H
L
I
2
I2
L
L
H
H
I
3
I3
L
H
L
L
I
4
I4
L
H
L
H
I
5
I5
L
H
H
L
I
6
I6
L
H
H
H
I
7
I7
2
1
0
Já o circuito integrado 74157 (74LS157, 74HC157) contém quatro
multiplexadores de duas entradas.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
79
Decodificadores, Codificadores, Multiplexadores e Demultiplexadores
Aplicações de Multiplexadores
As aplicações que utilizam multiplexadores são várias: seleção de dados
de entrada, roteamento de dados, seqüenciamento de operações etc. A fig. 7-7
mostra um exemplo de uso de multiplexadores.
Fig. 7-7: Exemplo de aplicação de multiplexador: o contador selecionado pela
entrada Seleciona é mostrado no display
A entrada Seleciona Contador do MUX (74LS157) determina qual dos
contadores será mostrado no display.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
80
Decodificadores, Codificadores, Multiplexadores e Demultiplexadores
7.4- Demultiplexadores
Demultiplexadores ou distribuidores de dados (DEMUX) executam a
função inversa dos multiplexadores, ou seja, o DEMUX recebe uma única
entrada e a distribui para a saída determinada pelas entradas de seleção.
A fig. 7-8 mostra um demultiplexador de duas saídas:
Fig. 7-8: Demultiplexador de 2 saídas
Quando a entrada Seleção estiver em “0”, os dados da entrada I serão
levados à saída O0. Se a entrada Seleção estiver em “1”, os dados da entrada I
serão levados à saída O1.
O circuito integrados 74LS138 (decodificador 3 para 8) também pode ser
utilizado como demultiplexador, conforme a figura e a tabela abaixo:
Fig.7-9: Demultiplexador de 8 saídas utilizando o 74LS138
A tabela 7-5 mostra a tabela verdade.
Tabela 7-5:
A2
A1
A0
O
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
1
1
1
1
1
1
1
I
7
O
6
1
1
1
1
1
1
I
1
O
5
1
1
1
1
1
I
1
1
O
4
1
1
1
1
I
1
1
1
O
3
1
1
1
I
1
1
1
1
O
2
1
1
I
1
1
1
1
1
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
O
1
1
I
1
1
1
1
1
1
O
0
I
1
1
1
1
1
1
1
81
Decodificadores, Codificadores, Multiplexadores e Demultiplexadores
Aplicações de Demultiplexadores
Um exemplo simples de aplicação de demultiplexadores pode ser visto
na fig. 7-10.
Fig. 7-10: Exemplo de uso de demultiplexador
Um sinal de clock é usado por contador, registrador e outros
dispositivos. O dispositivo que irá receber o sinal de clock é selecionado
através das entradas de seleção A2, A1 e A0.
Além de aplicações de distribuição de dados podemos usar
demultiplexadores em sistemas de monitoração, transmissão de dados, etc.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
82
Aritmética Digital
8. Aritmética Digital
8.1- Introdução
Uma máquina digital (computadores e calculadoras) manipula e
armazena dados na forma binária. Dessa forma, as operações aritméticas
também serão realizadas sobre os números na forma binária.
A aritmética digital não é muito diferente da aritmética tradicional (base
10). As operações de adição, subtração, multiplicação e divisão são
praticamente as mesmas, a não ser pelo número de algarismos usados nessas
operações: 2.
8.2- Adição Binária
A adição decimal é mostrada a seguir:
3 7 6
+4 6 1
8 3 7
A adição é feita a partir do algarismo menos significativo. Quando a
adição resulta em um valor maior que 9 ocorre um carry (vai um) para a
próxima posição.
Na adição binária podemos encontrar apenas quatro possibilidades:
0+0=0
0+1=1
1+0=1
1 + 1 = 10 (0 + carry 1 para a próxima posição)
Por exemplo:
+ 011
110
1001
11,011
10,110
110,001
+
8.3- Representação de Números com Sinal
Em sistemas digitais, os números binários são armazenados e
manipulados em conjuntos de flip-flops, os registradores. Um registrador com 6
flip-flops pode armazenar números binários de 000000 a 111111 (0 a 6310),
representando a magnitude do número.
Como os computadores e calculadoras podem operar com números
positivos e negativos, uma maneira de representar números positivos e
negativos é mostrada na fig. 8-1.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
83
Aritmética Digital
A6
0
Bit de Sinal (+)
A5
1
A4
1
A3
A2
0
1
Magnitude = 5210
A1
0
A0
0
= +5210
A6
1
Bit de Sinal (-)
A5
1
A4
1
A3
A2
0
1
Magnitude = 5210
A1
0
A0
0
= -5210
Fig. 8-1: Representação de números positivos e negativos
O bit A6 é chamado bit de sinal, ou seja, ele determina qual o sinal do
número. Esse número possui magnitude de 6 bits mais um bit de sinal.
Embora esse sistema seja direto, computadores e calculadoras não o
utilizam normalmente porque a implementação do circuito é mais complexa. O
sistema de representação de números binários com sinal mais utilizado é o
sistema de complemento a 2.
Forma do Complemento a 1
O complemento a 1 de um número binário é obtido substituindo-se cada
0 por 1 e cada 1 por 0. Isso pode ser visto a seguir:
1
↓
0
0
↓
1
1
↓
0
1
↓
0
0
↓
1
1
↓
0
Forma do Complemento a 2
O complemento a 2 de um número binário é obtido tomando-se o
complemento a 1 do número e adicionando-se 1 na posição do bit menos
significativo. Por exemplo:
1
0
0
1
1
0
1
0
0
1
0
1
0
0
1
+
1
0
1
1
Equivalente binário de 4510
Complemento a 1
Adiciona-se 1
Complemento a 2 do número binário original
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
84
Aritmética Digital
8.4- Representação de Números com Sinal Usando
Complemento a 2
O sistema de complemento a 2 para representar números com sinal
funciona do seguinte modo:
- Se o número é positivo, a magnitude é mostrada na sua forma binária direta
e um bit de sinal 0 é colocado na frente do bit mais significativo (MSB).
- Se o número é negativo, a magnitude é representada na sua forma de
complemento a 2 e um bit de sinal 1 é colocado na frente do bit mais
significativo (MSB).
A6
0
Bit de Sinal (+)
A5
1
A4
0
A3
A2
1
1
Binário direto
A1
0
A0
1
= +4510
A6
1
Bit de Sinal (-)
A5
0
A4
1
A3
A2
0
0
Complemento a 2
A1
1
A0
1
= -4510
Fig. 8-2: Representação de números positivos e negativos usando
complemento a 2
Negação
A negação é a operação que converte um número positivo no seu
negativo equivalente ou um número negativo no seu positivo equivalente. Por
exemplo:
0
1
0
1
0
1
0
1
0
0
1
0
1 = +9 (número binário original)
1 = -9 (complemento a 2, negar)
1 = +9 (negar novamente)
Faixa de Representação do Complemento a 2
A faixa completa de valores que pode ser representada no sistema de
complemento a 2 que tem N bits de magnitude é:
-2N a +(2N-1)
Por exemplo, com N = 3 bits, a faixa de números sinalizados é mostrada
na tabela 8-1.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
85
Aritmética Digital
Tabela 8-1:
Valor Decimal
+7 = 23 – 1
+6
+5
+4
+3
+2
+1
0
-1
-2
-3
-4
-5
-6
-7
-8 = -23
Complemento a 2
0111
0110
0101
0100
0011
0010
0001
0000
1111
1110
1101
1100
1011
1010
1001
1000
Por exemplo, com N = 7 bits, mais um bit de sinal, a faixa de valores
fica:
100000002 = -27 = -12810
011111112 = 28 = +12710
Adição no Sistema de Complemento a 2
Vamos analisar vários casos de adição:
I)
Dois números positivos: A adição de dois números positivos é direta.
+9 → 0 1001
+4 → 0 0100
+13
0 1101
II)
Um número positivo e um outro menor e negativo: O número negativo
deve estar na forma de complemento a 2.
+9
-4
+5
→ 0 1001
→ 1 1100
1 0 0101
A soma é feita sobre todos os bits, inclusive os bits de sinal. O carry (vai
um) gerado na última posição (MSB) é sempre descartado.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
86
Aritmética Digital
III)
Um número positivo e um outro maior e negativo:
-9
+4
-5
IV)
→ 1 0111
→ 0 0100
1 1011
Dois números negativos:
-9 → 1 0111
-4 → 1 1100
-13 1 1 0011
V)
Dois números iguais em magnitude mas de sinais contrários:
+9
-9
0
→ 0 1001
→ 1 0111
1 0 0000
Subtração no Sistema de Complemento a 2
A operação de subtração no sistema de complemento a 2, na verdade,
envolve uma operação de adição. Quando subtraímos um número binário (o
subtraendo) de outro número binário (minuendo), usamos o seguinte
procedimento:
- Negar o subtraendo.
- Adicionar o número obtido ao minuendo.
Por exemplo, +9 – (+4) = +5
+9
+4
→ 0 1001
→ 0 0100
+9
-4
+5
→ 0 1001
→ 1 1100
1 0 0101
Overflow Aritmético
O overflow aritmético ocorre quando temos, por exemplo, a adição de +9
e +8:
+9
+8
→ 0 1001
→ 0 1000
1 0001
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
87
Aritmética Digital
O resultado esperado seria +17 mas a resposta tem um sinal negativo e
uma magnitude incorreta. A representação do 17 precisa de mais de quatro
bits, ocasionando um erro de overflow.
O overflow pode ocorrer sempre que dois números positivos ou dois
números negativos estão sendo somados.
8.5- Multiplicação de Números Binários
A multiplicação de números binários é mostrada abaixo:
1001 = 910
1011 = 1110
1001
1001
0000
1001
1100011 = 9910
Na multiplicação acima os bits de sinais não foram usados. Observe que
o primeiro multiplicando (1001) é deslocado para a esquerda com relação ao
segundo multiplicando (1011). Depois disso, os resultados parciais são
somados para obter o produto final.
Multiplicação no Complemento a Dois
A multiplicação no complemento a dois é feita do mesmo modo descrito
anteriormente, desde que os dois multiplicandos estejam na forma binária
verdadeira.
Se os números a serem multiplicados forem positivos a multiplicação é
feita conforme mostrado anteriormente e o bit de sinal é 0. Se os números
forem negativos, eles devem ser convertidos para a forma binária verdadeira e
o resultado será positivo (bit de sinal igual a 0).
Quando os números a serem multiplicados tiverem sinais opostos, o
número negativo deve ser convertido para a forma binário verdadeira através
do complemento a dois. Como resultado esperado é negativo, deve ser
aplicado o complemento a dois e o bit de sinal será 1.
8.6- Divisão de Números Binários
A divisão binária é mostrada a seguir:
1001 11
011 11
0011
11
0
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
88
Aritmética Digital
A divisão binária é igual à divisão decimal. A divisão de números com
sinal é feita de maneira idêntica à multiplicação, onde os números negativos
são transformados em positivos através do complemento a dois.
8.7- Adição de Números BCD
Muitos computadores e calculadoras usam o código BCD para
representar números decimais. Na operação de adição usando números
representados pelo código BCD devem ser levadas em consideração duas
possibilidades:
-
Soma menor ou igual a 9 – Por exemplo, 5 + 4:
5
+4
9
0101
+0100
1001
Outro exemplo, 45 + 33:
45
+33
78
-
0100
+0011
0111
0101
+0011
1000
A soma de cada dígito não gerou nenhum vai-um (carry).
Soma maior do que 9 – Por exemplo, 6 + 7:
6
+7
13
0110
+0111
1101
O resultado da soma não é um código BCD, já que o resultado é um
número maior do que 9. O resultado esperado seria 0001 0011 (13 BCD) e
para corrigir isso devemos somar ao resultado o código 0110 (6 BCD), ou seja:
0110
+0111
1101
0110
0001 0011
6 (BCD)
7 (BCD)
soma > 9
soma 6
13 (BCD)
8.8- Aritmética Hexadecimal
Números hexadecimais são amplamente utilizados na programação de
computadores em linguagem de máquina e na especificação de endereços de
memória de computadores.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
89
Aritmética Digital
Adição em Hexadecimal
-
O procedimento para a adição em hexadecimal é o seguinte:
Some os dois dígitos hexadecimais em decimal, inserindo mentalmente o
decimal equivalente para os dígitos maiores do que 9;
Se a soma é menor ou igual a 15, ele pode ser expresso por um dígito
hexadecimal;
Se a soma é maior ou igual a 16, subtraia 16 e coloque um carry na próxima
posição.
Por exemplo:
58
+4B
A3
Subtração em Hexadecimal
Um modo eficiente de representar números binários é através dos
números hexadecimais. A subtração hexadecimal utiliza o mesmo método dos
números binários: o complemento a dois do subtraendo é somado ao minuendo
e qualquer carry da posição MSD deverá ser descartado.
O complemento a dois de um número hexadecimal é mostrado a seguir:
73A
0111 0011 1010
1000 1100 0110
8C6
Número hexadecimal
Converte para binário
Complemento a 2
Converte para hexadecimal
Um outro método é mostrado a seguir:
F
–7
8
F
–3
C
8
C
F
–A
5
+1
6
8.9- Circuitos Aritméticos
A função essencial de computadores e calculadoras é a realização de
operações aritméticas. Um bloco chamado Unidade Lógica e Aritmética (ULA)
é responsável pelas operações aritméticas em um computador.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
90
Aritmética Digital
Unidade Lógica e Aritmética
O principal objetivo de uma ULA é aceitar dados binários armazenados
na memória e executar as operações lógicas e aritméticas sobre estes dados
de acordo com as instruções da unidade de controle.
A fig. 8-3 mostra os principais blocos funcionais de uma ULA:
Fig. 8-3: Blocos funcionais de uma ULA
A ULA é constituída de, pelo menos, dois registradores: o registrador B e
o registrador acumulador. Ela também possui lógica combinacional que realiza
as operações lógicas e aritméticas sobre os números binários armazenados
nos registradores B e acumulador.
Por exemplo, os passos para a execução de uma operação de adição
são mostrados a seguir:
- A unidade de controle recebe uma instrução da unidade de memória
especificando que um número armazenado em uma posição particular de
memória deve ser adicionado ao número que está armazenado na
acumulador;
- O número a ser adicionado é transferido da memória para o registrador B;
- O número no registrador B e o número no acumulador são somados nos
circuitos lógicos (ao comando da unidade de controle). O resultado é
enviado para o acumulador para ser armazenado.
Somador Binário Paralelo
Vamos analisar a seguinte operação de adição de dois números
binários:
+
1
0
1
1
1
1
0
0
1
1
1
1
0
1
0
1
1
0
Carry
Acumulador
Registrador B
Soma
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
91
Aritmética Digital
Podemos ver que cada bit das parcelas é somado para gerar um bit no
resultado da adição. No caso de um carry (vai-um), esse também é somado,
ou seja:
+
C4
A4
B4
S4
C3
A3
B3
S3
C2
A2
B2
S2
C1
A1
B1
S1
C0
A0
B0
S0
Carry
Registrador A
Registrador B
Soma
O diagrama de blocos de um somador binário paralelo é mostrado na fig.
8-4.
Fig. 8-3: Diagrama em blocos de um somador binário paralelo
O bloco SC #0 é chamado somador completo porque soma bits A0 e B0
das parcelas e ainda um possível bit C0 de carry.
Projeto de um Somador Completo
O bloco do somador completo possui três entradas (A, B e CIN) e duas
saídas (S e COUT). As entradas A e B são os bits a serem adicionados e CIN é o
carry do bit anterior. A saída S é o resultado da adição e COUT é a saída de
carry, indicando um vai-um.
A tabela 8-2 relaciona todos os possíveis casos de uma adição.
Fig. 8-4: Bloco lógico do somador completo de 1 bit
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
92
Aritmética Digital
Tabela 8-2:
Bit de
Bit de
Bit de
entrada da entrada da entrada do
1ª parcela 2ª parcela
carry
A
B
CIN
0
0
0
0
0
1
0
1
0
0
1
1
1
0
0
1
0
1
1
1
0
1
1
1
Bit de
saída da
soma
S
0
1
1
0
1
0
0
1
Bit de
saída do
carry
COUT
0
0
0
1
0
1
1
1
Pelo método do Mapa de Karnaugh podemos encontrar a expressão
para S e COUT:
S = A.B.CIN + A.B.CIN + A.B.C IN + A.B.CIN = A ⊕ [ B ⊕ CIN
]
C OUT = A.CIN + B.C IN + A.B
A fig. 8-5 mostra o circuito de um somador completo (SC).
Fig. 8-5: Circuito lógico do somador completo de 1 bit
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
93
Aritmética Digital
A fig. 8-6 mostra um circuito de um somador paralelo completo de 4 bits
com registrador.
Fig. 8-6: Circuito lógico do somador paralelo completo de 4 bits
O procedimento para um operação de adição é o seguinte:
-
Pulsar CLEAR para fazer registrador A = 0000;
Colocar a primeira parcela a ser somada nas entradas D3D2D1D0 (esse
dado pode estar vindo de uma memória). Pulsar LOAD para que as
entradas sejam transferidas para o registrador B;
Pulsar TRANSFER para a realização da operação de adição do conteúdo
do registrador A com o conteúdo do registrador B. Nesse caso, o valor de B
é transferido para A, resultando A = B;
Colocar a segunda parcela a ser somada nas entradas D3D2D1D0. Pulsar
LOAD para que as entradas sejam transferidas para o registrador B;
Pulsar TRANSFER para a realização da operação de adição do conteúdo
do registrador A com o conteúdo do registrador B. O resultado da adição
está no registrador A (saídas).
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
94
Aritmética Digital
8.10- Somador Paralelo Integrado
Os circuitos integrados 7483A, 74LS83A, 74283 e 74LS283 são
somadores paralelos de quatro bits.
8.11- Ligação em Cascata de Somadores Paralelos
Blocos de somadores podem ser associados em cascata de forma a
efetuar adições de números binários maiores. Por exemplo, se dois somadores
de quatro bits forem associados em cascata podemos efetuar adições de
números com oito bits.
8.12- Circuito Integrados de ULAs
As ULAs são circuitos capazes de realizar diversas operações lógicas e
aritméticas sobre os dados binários de entrada. Dentre essas operações
podemos citar:
- Operação Clear;
- Operação Soma;
- Operação Subtração;
- Operação EX-OR;
- Operação OR;
- Operação AND;
- Operação PRESET.
Os circuitos integrados 74LS382 e 74HC382 são ULAs que possuem as
características acima citadas.
O 74LS181/HC181 é uma ULA de quatro bits e tem até 16 operações
diferentes. O 74LS881/HC881 é similar ao circuito integrado 181, mas tem a
capacidade de realizar algumas operações lógicas adicionais.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
95
Aritmética Digital
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
96
Conversão Digital-Analógica
9. Conversão Digital-Analógica
9.1- Interface com o Mundo Analógico
-
Quantidade Digital – Valor especificado entre duas possibilidades (0 ou 1),
alto ou baixo, verdadeiro ou falso. Para a lógica TTL:
0 V a 0,8 V = 0 Lógico
2 V a 5 V = 1 Lógico
-
Quantidade Analógica – Assume qualquer valor dentro de uma faixa
contínua de valores e, mais importante, seu valor exato é significativo.
9.2- Sistema Digital Interfaceando com Grandezas Analógicas
Fig. 9-1: Sistema digital interfaceando com grandezas analógicas
Elementos:
1- Transdutor
2- Conversor A/D
3- Sistema Digital (Controlador/Computador, etc...)
4- Conversor D/A
5- Atuador
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
97
Conversão Digital-Analógica
9.3- Conversão Digital Analógica (D/A)
Processo pelo qual um valor representado digitalmente é convertido para
uma tensão ou corrente, que é proporcional ao valor digital.
Fig. 9-2: Conversor digital-analógico de 4 bits
Tabela 9-1:
D
0
0
0
1
Pesos da Entrada
C
B
A
VOUT (V)
0
0
1
1
0
1
0
2
1
0
0
4
0
0
0
8
D
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
C
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
B
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
A
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
VOUT (V)
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
VREF é utilizada para determinar a “saída de fundo de escala” ou o
máximo valor que o conversor D/A pode produzir. Equacionando temos:
Saída Analógica = K * Entrada Digital
onde K = fator de proporcionalidade, normalmente é constante para um
conversor D/A em particular conectado a uma tensão de referência fixa. Para o
exemplo acima:
Saída Analógica 15 V
K=
=
= 1V
Entrada Digital
15
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
98
Conversão Digital-Analógica
Resolução (Tamanho do Degrau)
É a menor alteração que pode ocorrer na saída analógica como
resultado de uma mudança na entrada digital. Para o exemplo anterior, a
resolução é igual a 1V.
Fig. 9-3: Resolução do conversor digital-analógico de 4 bits
Resolução = K =
A FS
2N − 1
onde:
AFS = Saída de fundo de escala
N = número de bits
Resolução Percentual
A resolução percentual é a porcentagem da saída de fundo de escala:
Resolução(%) =
Resolução(%) =
Tamanho do degrau
* 100
Fundo de escala
1V
* 100 = 6,67 %
15 V
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
99
Conversão Digital-Analógica
9.4- Código de Entrada BCD
Fig. 9-4: Conversor digital-analógico BCD de 8 bits
Tabela 9-2:
MSD
D1
8,0
C1
4,0
LSD
B1
2,0
A1
1,0
D0
0,8
C0
0,4
B0
0,2
A0
0,1
Cada grupo de código de quatro bits pode variar de 0000 a 1001,
representando de 00 até 99.
9.5- Conversor D/A com Amplificador Operacional
Fig. 9-5: Amplificador inversor com operacional
Ganho G =
V
OUT
=
- VOUT − R 0
=
VIN
R
1
−R
0 *V
IN
R
1
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
100
Conversão Digital-Analógica
Somador
Fig. 9-6: Somador com amplificador operacional
 − R 

 −R 
 −R 
 −R 
0 *V +
0 *V +
0  * V + ... + 
0 *V 
VOUT = − 
 R  n 
 R  1  R  2  R  3
 2 
 n 
 3 
 1 

Na fig. 9-7 temos um conversor D/A de quatro bits. As entradas A, B, C,
D possuem valores de 0 ou 5 V.
Fig. 9-7: Conversor digital-analógico de 4 bits usando amplificador operacional
Equação :
V
V
V 

VOUT = − V + C + B + A 
 D
2
4
8 

Por exemplo, VD = VB = 5 V e VC = VA = 0 V.
0 5 0

VOUT = − 5 + + +  = −6,25V
2 4 8

FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
101
Conversão Digital-Analógica
- Resolução = peso do LSB = 5 / 8 = 0,625V
ou Afs / (2N –1) = 9,375 / 15 = 0,625V
- Peso de cada bit:
A = 0,625 V
B = 1,25 V
C = 2,5 V
D = 5,0 V
Para Rf = 500 Ω, a saída do fundo de escala é reduzida por um fator 2 e
cada peso de entrada será 2 vezes menor que os valores originais. Sendo
assim, a saída de fundo de escala = -9,375 / 2 = -4,688 V.
9.6- Fatores Importantes na Precisão da Conversão
1) Precisão dos resistores de entrada e de realimentação (podem ser
facilmente encontrados);
2) Precisão dos níveis de tensão das entradas (consegue-se com circuitos
auxiliares).
Fig. 9-8: Conversor D/A com fonte de referência de precisão
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
102
Conversão Digital-Analógica
9.7- Conversores D/A com Saída em Corrente
Fig. 9-9: Conversor D/A com saída em corrente
Admitindo-se Vref = 10V, R = 10 KΩ e RL muito menor do que R, temos:
IOUT = VREF / R = 1 mA -> peso do MSB (comandado pelo bit B3). Logo:
B2 -> I = 0,5 mA
B1 -> I = 0,25 mA
B0 -> I = 0,125 mA -> resolução do D/A
Saída de fundo de escala => Iout = 1 + 0,5 + 0,25 + 0,125 = 1,875 mA.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
103
Conversão Digital-Analógica
9.8- Rede R/2R
Os conversores D/A que utilizam resistores ponderados tem algumas
limitações na prática: os resistores dos bits mais e menos significativos tem
grande diferença de valores e muitas vezes não existem resistores de precisão
nas razões escolhidas.
A rede R/2R é arranjada utilizando apenas 2 valores de resistores.
Fig. 9-10: Conversor D/A com rede R/2R
Se analisarmos o circuito veremos que o valor Vout de saída será:
Vout = -(Vref / 8) * B
onde B é o valor binário (0 a 15 decimal).
9.9- Especificações de Conversores D/A
-
Resolução - Depende apenas do número de bits (10 bits tem maior
resolução do que 8 bits).
-
Precisão - Definida a partir dos erros de fundo de escala e linearidade. O
erro de fundo de escala é máximo desvio da saída do conversor D/A em
relação ao valor esperado. O erro de linearidade é máximo desvio em
tamanho do degrau do tamanho de degrau ideal. Para um conversor D/A
com degrau 0,625 V e erro de linearidade de 0,01% F.S. o tamanho do
degrau real poderia estar até 0,9375 mV do esperado.
-
Erro de Offset - Em condições ideais, a saída do conversor D/A será zero
volts quando a entrada binária for zero. Na prática, pode existir uma tensão
muito pequena que será somada à tensão de saída, ocasionando o erro de
offset. Muitos conversores D/A possuem um ajuste externo de offset que
nos permite zerar o offset.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
104
Conversão Digital-Analógica
-
Tempo de Estabilização - Tempo necessário para a saída do conversor
D/A ir de zero até o fundo de escala quando a entrada binária muda todos
os bits de 0 para 1. Tempos de estabilização variam de 50 ns a 10 µs.
Saídas em corrente são mais rápidas do que em tensão.
-
Monotonicidade - Um conversor D/A é monotônico se sua saída aumenta
conforme a entrada binária é incrementada de um valor para o próximo.
9.10- Circuito Integrado de Conversão D/A – AD7524
Fig. 9-11: Conversor D/A AD7524
Características:
- 8 bits
- rede R/2R
- saída em corrente/tensão
- tempo de estabilização de 100 ns
- precisão de fundo de escala de ±0,2% F.S.
- Vref varia de 0 a +25V ou 0 a -25V
9.11- Aplicações de Conversores D/A
-
Controle - A saída digital de um computador pode ser convertida em um
sinal de controle analógico para ajustar a velocidade de um motor ou a
temperatura de um forno, ou controlar quase qualquer variável física.
-
Teste Automático - Sinais analógicos podem ser gerados por
computadores para testes de circuitos analógicos, cuja resposta será
convertida para um valor digital e será levada a um computador onde será
armazenada e analisada.
-
Reconstrução de Sinais - Em várias aplicações um sinal analógico é
digitalizado (conversão A/D) e armazenado. Um conversor D/A pode ser
usado para converter dados digitalizados em sinais analógicos novamente.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
105
Conversão Digital-Analógica
-
Conversão A/D - Muitos conversores A/D utilizam conversores D/A em
seus circuitos.
-
Conversores D/A Seriais - Muitas destas aplicações envolvem
microprocessadores, que enviam serialmente um conjunto de bits que
define qual dos conversores D/A serão usados e qual o sinal a ser
convertido.
Fig. 9-12: Conversor D/A serial com várias saídas
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
106
Conversão Analógico-Digital
10. Conversão Analógico-Digital
10.1- Introdução
Um conversor A/D recebe uma tensão analógica de entrada e depois de
um certo tempo produz um código digital de saída que representa a entrada
analógica. Muitos tipos importantes de conversores A/D possuem um conversor
D/A como parte de seus circuitos. A fig. 10-1 mostra o esquema básico de um
tipo de conversor A/D.
Fig. 10-1: Diagrama em blocos de um conversor analógico-digital
Funcionamento:
1) Um pulso START inicia a operação;
2) Numa taxa determinada pelo CLOCK, a unidade de controle modifica o
valor armazenado no registrador;
3) O valor binário armazenado no registrador é convertido para uma tensão
analógica, Vax, pelo conversor D/A;
4) O amplificador operacional compara Vax com a entrada analógica Va. Se
Vax < Va, a saída do comparador fica em ALTO. Quando Vax > Va (por, no
mínimo, uma tensão limiar Vt), a saída do comparador vai para BAIXO e
pára o processo de modificar o número no registrador. Neste ponto Vax ≅
Va, dentro da resolução e precisão do sistema;
5) A lógica de controle sinaliza o fim da conversão (EOC).
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
107
Conversão Analógico-Digital
10.2- Conversor A/D de Rampa Digital
O conversor A/D de rampa digital utiliza um contador como registrador e
um sinal de clock incrementa esse contador até que Vax ≥ Va. A figura
seguinte mostra o funcionamento desse tipo de conversor A/D:
Fig. 10-2: Conversor analógico-digital tipo rampa digital
10.3- Precisão e Resolução de Conversores A/D
Uma fonte de erro no método da rampa digital é que o tamanho do
degrau ou resolução do conversor D/A interno é a menor unidade de medida.
Mesmo tornando o tamanho do degrau menor sempre haverá uma diferença
entre a quantidade analógica (real) e o valor digital associado a ela. Isto é
chamado erro de quantização.
Esse erro pode ser minimizado aumentando-se o número de bits do
contador e do conversor D/A.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
108
Conversão Analógico-Digital
Tempo de Conversão tc
O tempo de conversão corresponde ao intervalo de tempo entre o fim do
pulso START e a ativação da saída EOC . O tempo máximo de conversão é:
tc (max) = (2N-1) * Período de Clock
A desvantagem do método de rampa digital é que o tempo de conversão
aumenta com o número de bits.
10.4- Aquisição de Dados
Em muitas aplicações, dados analógicos devem ser digitalizados e
transferidos para o microcomputador. Este processo é chamado aquisição de
dados.
Numa aplicação de armazenamento (por exemplo, áudio) os dados são
transferidos para a memória do computador e depois podem ser convertidos
novamente em sinais analógicos. Em aplicações de controle, esses dados
constituem informações e, através delas, o computador irá acionar ou não suas
saídas de controle.
Fig. 10-3: Sistema digital utilizando um conversor A/D para aquisição de dados
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
109
Conversão Analógico-Digital
10.5- Reconstrução de Sinais Digitalizados
Sinais digitalizados podem ser “recuperados” usando-se conversores
D/A e filtros RC passa-baixa. Para sinais em baixa freqüência isso é suficiente.
Fig. 10-4: Sinal analógico amostrado por um conversor A/D e sinal
reconstruído por um conversor D/A e filtros passa-baixa
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
110
Conversão Analógico-Digital
10.6- Conversor A/D de Aproximações Sucessivas
Este conversor é um dos tipos mais usados, principalmente porque o
tempo de conversão é muito menor que o tempo do conversor A/D de rampa.
Além disso, esse tempo é fixo e não depende da entrada analógica.
Fig. 10-5: Conversor analógico-digital de aproximações sucessivas
A principal diferença desse conversor para o conversor A/D de rampa é
que o conversor de aproximação sucessiva não usa contador e sim um
registrador onde cada bit é modificado até que o dado contido no registrador
seja o equivalente digital da entrada analógica.
Como exemplo podemos considerar um conversor A/D de aproximações
sucessivas de 4 bits com resolução de 1V e Va = 10,4V.
Seqüência
A lógica de controle limpa todos os bits no registrador (0000). Com isso,
Vax = 0 e então a saída do comparador está em ALTO. O bit mais significativo
é colocado em 1 pela lógica de controle (1000). Esse código produz Vax = 8V.
Como Vax < Va, então a saída do comparador continua em ALTO. Este
nível alto informa para a lógica de controle que o ajuste desse bit (MSB) não
fez Vax exceder Va e portanto esse bit deve ser mantido em 1.
Agora o próximo bit é colocado em 1 (1100). Isso gera Vax = 12V e torna
Vax > Va. A saída do comparador vai para BAIXO e esso sinaliza para a lógica
de controle que o valor Vax é muito grande e então a lógica de controle coloca
esse bit em 0. Assim o conteúdo do registrador volta a 1000 e Vax = 8V.
O próximo bit é colocado em 1 (1010) e Vax vai para 10V. Então Vax <
Va, resultando nível ALTO na saída do comparador, sinalizando para a lógica
de controle para manter esse bit em 1.
O último bit é colocado em 1 (1011) gerando Vax = 11V. Como Vax >
Va, a lógica de controle coloca esse bit em 0. Nesse instante, todos os bits
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
111
Conversão Analógico-Digital
foram testados e o resultado está no registrador. Esse conversor gera um
equivalente digital igual a 10V, menor que a tensão analógica de entrada.
Fig. 10-6: A tensão Vax em função do tempo
Tempo de Conversão
Como a operação de conversão é executada bit a bit e o processamento
de cada bit corresponde a um ciclo de clock, o tempo total de conversão é:
tc = N * (Período de clock)
Esse tempo é constante, não importando o valor de Va.
10.7- ADC0804 – Conversor A/D de Aproximações Sucessivas
Fig. 10-7: Conversor A/D ADC0804
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
112
Conversão Analógico-Digital
Características:
-
-
-
-
-
Tem duas entradas analógicas, Vin(+) e Vin(-), para permitir entradas
diferenciais. A entrada analógica real, Vin, é a diferença das tensões
aplicadas nestes pinos (Vin = Vin(+) - Vin(-)). Para medições comuns, Vin(-)
é conectada ao terra e a entrada analógica é Vin(+). Esse conversor utiliza
Vcc = +5V como referência e entrada analógica de 0 a 5V.
A tensão analógica é convertida em uma saída digital de 8 bits. A saída
digital tem um buffer tristate. A resolução é 19,6 mV.
1
Possui gerador de clock interno onde f =
, onde R e C são
1,1.R.C
componentes externos.
Com uma freqüência de 606 kHz, o tempo de conversão é de
aproximadamente 100 µs.
Possui conexões de terra separadas para tensões digitais e analógicas. O
terra digital é muito ruidoso devido às rápidas mudanças de estado do
circuito.
CS (Chip Select - Seleção do Chip) - esta entrada deve estar em nível
BAIXO para que as entradas RD e WR tenham efeito. Com CS em ALTO,
as saídas digitais ficarão em alta impedância.
RD (Read - Leitura) - Sinal usado para habilitar os buffers da saída digital.
Com CS = RD = 0, as saídas digitais conterão o resultado da última
conversão.
WR (Write - Escrita) - Um pulso para BAIXO neste pino inicia nova
conversão.
INTR (Interrupt - Interrupção) - Este sinal de saída vai para ALTO no início
da conversão e para BAIXO no fim da conversão.
Vref/2 - Usado para mudar a tensão de referência.
Tabela 10-1:
Vref / 2
Em aberto
2,25
2,0
1,5
-
Faixa Analógica de Entrada (V)
0-5
0-4,5
0-4
0-3
Resolução (mV)
19,6
17,6
15,7
11,8
Clock Out - Um resistor é conectado neste pino para utilização do clock
interno.
Clock In - Usado como entrada de clock externo ou conexão com capacitor
quando se utiliza clock interno.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
113
Conversão Analógico-Digital
10.8- Conversor A/D Flash
É o conversor A/D de maior velocidade mas requer um número muito
maior de circuitos. Por exemplo, um conversor A/D flash de 6 bits necessita de
63 comparadores analógicos enquanto uma unidade com 8 bits necessita de
255.
Fig. 10-8: Conversor A/D Flash
Os resistores formam um divisor de tensão que serão utilizadas como
referência para os comparadores analógicos. Se a tensão analógica Va for
maior que a tensão de referência dos comparadores, estes irão para nível
BAIXO e a lógica de prioridade gerará o código correspondente.
Para aumentar a resolução teríamos que aumentar o número de
resistores e consequentemente dos comparadores e o tamnaho do codificador
de prioridade. De um modo geral, o conversor flash é o mais rápido porque a
conversão é direta mas necessita de 2N-1 comparadores e 2N resistores, além
da lógica do codificador de prioridade aumentar.
Tempo de Conversão
O conversor flash não usa clock e por isso seu tempo de conversão só
depende do atraso do circuitos (comparadores e codificador). Esse tempo é
menor que 20 ns.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
114
Conversão Analógico-Digital
10.9- Outros Métodos de Conversão A/D
-
Conversor A/D de rampa digital crescente/decrescente (conversor A/D
rastreador)
Esse conversor utiliza um contador projetado para contar
crescentemente sempre que Vax < Va e contar decrescentemente se Vax > Va.
Assim a saída do D/A (Vax) sempre irá convergir para Va. Quando houver um
cruzamento das tensões o comparador muda de estado e a lógica de controle
indica fim da conversão e o valor digital está no contador. Esse tipo de
conversor é mais rápido que o conversor A/D de rampa mas o tempo de
conversão ainda depende de Va.
-
Conversor A/D de rampa dupla
O conversor A/D de rampa dupla possui um dos tempos de conversão
mais longos. A operação básica desse conversor envolve a carga e a descarga
linear de um capacitor por meio de correntes constantes.
Fig. 10-9: Carga e descarga do capacitor em um conversor A/D de rampa
dupla
Inicialmente, o capacitor é carregado num intervalo de tempo fixo T1 por
uma corrente constante derivada da tensão analógica de entrada, Va. No final
desse tempo, a tensão do capacitor será proporcional a Va.
Agora o capacitor é descarregado linearmente por uma corrente
constante derivada de uma tensão de referência precisa, VREF. O tempo de
descarga T2 é medido por um contador e quando a descarga termina o
contador pára. O valor no contador é proporcional à tensão inicial do capacitor,
ou Va.
As principais vantagens desse conversor A/D são: baixo custo e baixa
sensibilidade ao ruído e às variações dos componentes decorrentes às
mudanças de temperatura. Por ter um tempo de conversão relativamente alto,
não são usados em aplicações de aquisição de dados. Esses conversores
podem ser encontrados em voltímetros ou multímetros digitais.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
115
Conversão Analógico-Digital
-
Conversor A/D de tensão-freqüência
O conversor A/D de tensão-freqüência é mais simples do que os outros
conversores A/D porque não utiliza um conversor D/A. Em vez disso, ele usa
um oscilador controlado à tensão linear (VCO – voltage-controlled oscillator)
que produz um freqüência de saída proporcional à sua tensão de entrada.
A tensão analógica a ser convertida é aplicada à entrada do VCO para
gerar uma freqüência de saída. Essa freqüência é levada para um contador
para ser contada por um intervalo de tempo fixo. O valor da contagem final é
proporcional ao valor da tensão analógica.
A principal aplicação desse tipo de conversor A/D está em ambientes
industriais ruidosos onde pequenos sinais analógicos devem ser transmitidos
de circuitos transdutores para um computador de controle.
-
Conversor A/D sigma-delta (Σ
Σ-∆
∆)
A fig. 10-10 mostra o circuito básico de um conversor A/D sigma-delta.
Fig. 10-10: Diagrama em blocos de um conversor A/D sigma-delta
A entrada analógica é comparada com uma amostra anterior e a
diferença é integrada. A seqüência de valores digitais obtidos é processada por
um filtro digital complexo e depois de várias amostragens o valor digital é
colocado na saída.
Para se ter um valor na saída filtro digital, a freqüência de amostragem
desse conversor A/D deve ser bastante alta, normalmente centenas de vezes a
freqüência máxima de entrada (oversampling). Tipicamente, uma amostra
digital pode ter 24 bits de resolução.
Esse tipo de conversor A/D é bastante utilizado em instrumentação,
aplicações de áudio e vídeo, aquisição de dados, processamento digital de
sinais (DSP), etc.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
116
Memórias
11. Memórias
11.1- Introdução
A principal vantagem dos sistemas digitais sobre os analógicos é a
capacidade de armazenar grandes quantidades de informações. Esta
capacidade é que torna os sistemas digitais tão versáteis e adaptáveis às
diversas situações.
Um dispositivo de memória conhecido é o flip-flop. Grupos de flip-flops,
chamados registradores, são elementos de memória de alto desempenho que
são muito usados nas operações internas de um computador. Um outro
dispositivo de memória pode ser um capacitor onde os dados são
armazenados como cargas.
Estes dois dispositivos são os principais elementos que formadores das
memórias dos sistemas digitais atuais.
11.2- Definição de Termos Básicos
-
Célula de memória – dispositivo ou circuito capaz de armazenar um bit.
Por exemplo, um flip-flop, um capacitor, etc.
-
Palavra de memória – grupo de bits (células) em uma memória que
representa instruções ou dados.
-
Byte – conjunto de 8 bits.
-
Capacidade – número de bits que podem ser armazenados em um
dispositivo de memória.
a) Um certo chip de memória semicondutora é especificado como 2K x 8.
Quantas palavras podem ser armazenadas neste chip? Qual é o tamanho
da palavra? Quantos bits esse chip pode armazenar no total?
R: A memória possui capacidade de 2K = 2 x 1024 = 2048 palavras. Cada
palavra tem 8 bits (um byte). O número total de bits é 2048 x 8 = 16384 bits.
b) Qual das memórias armazena mais bits: uma memória de 5M x 8 ou uma
memória que armazena 1M palavras com um tamanho de palavra de 16 bits?
R:
5M x 8 = 5 x 1048576 x 8 = 41943040 bits
1M x 16 = 1048576 x 16 = 16777216 bits
A memória de 5M x 8 armazena mais bits.
-
Densidade – termo relativo à capacidade. Se um dispositivo é mais denso
que outro ele tem capacidade de armazenar mais bits no mesmo espaço.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
117
Memórias
-
Endereço – número que localiza a posição de uma palavra na memória.
Tabela 11-1:
Endereço
000
001
010
011
100
101
110
111
Cada palavra tem um endereço binário específico
Conteúdo
Palavra 0
Palavra 1
Palavra 2
Palavra 3
Palavra 4
Palavra 5
Palavra 6
Palavra 7
-
Leitura ou busca – operação na qual uma palavra binária localizada numa
determinada posição (endereço) de memória é detectada e transferida para
outro dispositivo.
-
Escrita ou armazenamento – operação na qual uma nova palavra é
colocada numa determinada posição de memória.
-
Tempo de acesso – tempo necessário entre a memória receber uma nova
entrada de endereço e os dados se tornarem disponíveis na saída da
memória. Este parâmetro é usado para medição de desempenho da
memória.
-
Ciclo de Memória – intervalo mínimo entre dois acessos sucessivos à
memória.
-
Memória volátil – tipo de memória que necessita de aplicação de energia
para poder armazenar a informação.
-
Memória de acesso aleatório (RAM) – memória onde o tempo de acesso
é o mesmo para qualquer posição.
-
Memória de acesso seqüencial (SAM) – memória onde, para se localizar
uma determinada posição, é preciso passar por todos os endereços. Por
exemplo, fitas magnéticas.
-
Memória de leitura e escrita (RWM) – memória que pode ser tanto lida
como escrita.
-
Memória somente de leitura (ROM) – Memória onde as informações
armazenadas só podem ser lidas.
-
Memória estática – tipo de memória onde os dados permanecem
armazenados enquanto existir energia, sem a necessidade de atualização
periódica da informação.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
118
Memórias
-
Memória dinâmica – tipo de memória onde os dados permanecem
armazenados enquanto existir energia, mas com periódica atualização da
informação (Refresh).
11.3- Princípios de Operação das Memórias
Independente dos tipos de memórias existentes, o princípio básico de
operação é o mesmo:
- Selecionar o endereço a ser acessado (leitura ou escrita);
- Selecionar o tipo de operação: leitura ou escrita;
- Se a operação for escrita, fornecer os dados de entrada;
- Se a operação for leitura, os dados estarão disponíveis na saída;
- Habilitar a memória para que a operação seja concluída e desabilitar a
memória para que ela não responda às entradas de endereço e ao
comando de leitura/escrita.
Fig. 11-1: Diagrama de uma memória de 32 x 4
Entradas de Endereços
Usando a memória mostrada na fig. 11-1, podemos notar que ela possui
5 entradas de endereço (A0 a A4). Logo existem 32 posições (2N, onde N é o
nº de bits) de armazenamento que podem ser ocupadas por palavras de 4 bits
(D0 a D3).
A Entrada R / W
Esta entrada controla a operação que deve ser realizada na memória:
leitura (R – Read) ou escrita (W – Write). Quando esta entrada estiver em “1”
ocorre a operação de leitura, quando em “0” ocorre a operação de escrita.
Algumas memória usam os símbolos W (escrita) ou WE (habilitação de
escrita) para identificar esta entrada.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
119
Memórias
Habilitação de Memória (ME)
A todo momento a memória possui níveis lógicos em suas entradas e o
pino de habilitação de memória impede que ela responda a estes níveis
lógicos, evitando assim um acesso errôneo nesta memória.
Esta entrada pode ser identificada como CE (chip enable) ou CS (chip
select).
Exemplo: Uma determinada memória tem uma capacidade de 4K x 8.
Quantas linhas de entrada/saída de dados ela tem?
R: Oito, pois o tamanho da palavra é oito bits.
Quantas linhas de endereço ela tem?
R: A memória armazena 4K = 4 x 1024 = 4096 palavras. Tendo em vista que
4096 = 212, logo a memória tem 12 bits (linhas) de endereço.
Qual é a sua capacidade em bytes?
R: Um byte tem oito bits, então esta memória tem uma capacidade de 4096
bytes.
11.4- Conexões da Memória com a CPU
As memórias RAM e ROM são interfaceadas com a CPU através de três
grupos de linhas de sinais ou barramentos: barramentos de endereço,
barramento de dados e barramento de controle.
Fig. 11-2: Conexões entre a CPU e as memórias
-
Barramento de endereços – barramento unidirecional que leva o endereço
proveniente da CPU para a memória para selecionar uma posição de
memória.
-
Barramento de dados – barramento bidirecional que transfere dados entre
a CPU e a memória.
-
Barramento de controle – barramento que leva sinais de controle da CPU
para a memória.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
120
Memórias
Exemplo:
Operação de escrita:
- A CPU coloca o endereço binário da posição de memória onde o dado deve
ser armazenado no barramento de endereços.
- A CPU coloca o dado a ser armazenado no barramento de dados.
- A CPU ativa as linhas de controle para a operação de escrita.
- A memória decodifica o endereço e localiza a posição onde o dado deve ser
armazenado.
- O barramento de dados é transferido para a posição de memória.
Operação de leitura:
- A CPU coloca o endereço binário da posição a ser lida da memória no
barramento de endereços.
- A CPU ativa as linhas de controle para operação de leitura.
- A memória decodifica o endereço e localiza a posição a ser lida.
- A memória transfere o dado armazenado nesta posição para o barramento
de dados, onde a CPU vai buscá-los.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
121
Memória Somente de Leitura (ROM)
12. Memória Somente de Leitura (ROM)
12.1- Introdução
A memória somente de leitura (ROM) é um tipo de memória onde os
dados nela armazenados não são alterados ou não mudam com freqüência.
12.2- Diagrama em Blocos de uma ROM
O diagrama típico de uma ROM é mostrado na fig. 12-1.
Fig. 12-1: Diagrama de uma ROM
O sinal de controle CS (seleção do chip) habilita a operação de leitura
da posição indicada no barramento de endereços. O dado é transferido para o
barramento de dados. Quando CS está em ALTO, as saídas da ROM ficam
desabilitadas (alta impedância).
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
122
Memória Somente de Leitura (ROM)
12.3- Arquitetura de uma ROM
Uma ROM é constituída conforme a fig. 12-2.
Fig. 12-2: Arquitetura interna de uma ROM (16 x 8)
-
Matriz de registradores – onde os dados serão armazenados. Cada
registrador contém um número de células de memória igual ao tamanho da
palavra utilizada. Cada registrador tem duas entradas de habilitação (E):
ambas devem estar em ALTO para que os dados do registrador sejam
colocados no barramento de dados.
-
Decodificadores de endereços – o barramento de endereço é separado
em duas vias: a primeira seleciona a linha e a segunda seleciona a coluna
onde o registrador se localiza.
Exemplo: Qual o registrador que será habilitado pelo endereço 1101? Que
endereço irá habilitar o registrador 7?
-
Buffers de saída – o registrador que está habilitado pelas entradas de
endereço coloca seu conteúdo no barramento de dados. Estes dados vão
para os buffers de saída, que colocarão os dados na saída de dados
externa, desde que CS esteja em BAIXO. Se CS estiver em alto, os buffers
de saída ficarão em alta impedância.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
123
Memória Somente de Leitura (ROM)
12.4- Temporização de uma ROM
O atraso de propagação entre a aplicação dos sinais de entrada e o
aparecimento dos dados na saída, durante a operação de leitura, é chamado
tempo de acesso (tACC). Existe um outro parâmetro de temporização chamado
tempo de habilitação da saída (tOE), que representa o atraso entre a entrada
CS e a saída de dados válidos.
Fig. 12-3: Temporização de uma ROM
12.5- Tipos de ROM
-
ROM Programada por Máscara – este tipo de ROM tem suas posições
escritas (programadas) pelo fabricante de acordo com as especificações do
cliente. Uma máscara (tipo de negativo fotográfico) é usada para informar
as conexões elétricas do chip. Este tipo de ROM é usado para armazenar
tabelas ou informações pré-programadas como códigos geradores de
caracteres de terminais de vídeo.
-
ROM Programável (PROM) – tipo de memória ROM onde a programação é
feita apenas uma única vez pelo usuário. Esta programação consiste na
queima ou não de um fusível que corresponde a um bit de informação por
um equipamento chamado programador.
-
ROM Programável e Apagável (EPROM) – tipo de memória ROM que
pode ser programada e apagada pelo usuário várias vezes. O processo de
programação consiste em aplicar certos níveis de tensões que provocam a
condução permanente ou não condução de transistores MOS. O
apagamento da memória é feito pela exposição dos circuitos internos à luz
ultravioleta através de uma “janela”.
-
PROM Apagável Eletricamente (EEPROM) – é uma melhoria em relação
às EPROMs pois pode ser tanto programada como apagada eletricamente.
Assim, elas podem ser programadas e apagadas no próprio circuito, sem a
necessidade de luz ultravioleta ou um programador especial.
-
CD ROM – tipo de armazenamento somente para leitura que utiliza
tecnologia laser. Os bits são definidos pela reflexão ou não de um feixe
laser apontado para um ponto do disco.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
124
Memória Somente de Leitura (ROM)
-
Memória Flash – tipo de memória não-volátil, apagável eletricamente como
a EEPROM, mas com densidades e custos semelhantes aos da EPROM,
com o mesmo tempo de acesso de ambas.
Fig. 12-4: Comparação entre tipos de ROM
12.6- Aplicações de ROMs
-
Firmware – armazenamento de programas ou dados que devem estar
disponíveis no processo de inicialização de sistemas microprocessados. Por
exemplo, produtos como videocassetes, CD players, fornos microondas etc.
-
Memória de Bootstrap – tipo de programa armazenado em uma ROM que
trata da inicialização do hardware de um computador. Após a inicialização,
o programa de bootstrap chama o sistema operacional e o computador
começa a executar o sistema operacional.
-
Tabela de Dados – as ROMs são bastante utilizadas para armazenar
tabelas de dados que não variam. Por exemplo, tabela trigonométricas,
códigos ASCII, etc.
-
Conversor de Códigos – este tipo de aplicação toma valores expressos
em um determinado tipo de código e produz uma saída expressa em outro
código. Por exemplo, o código BCD pode ser convertido para 7 segmentos
por uma ROM.
-
Gerador de Funções – basicamente, um gerador de funções é um circuito
que produz formas de onda senóides, triangulares e quadradas. Uma ROM
com tabelas de valores armazenados e um conversor D/A podem ser
usados para gerar essas formas de onda.
-
Armazenamento Auxiliar – dados podem ser armazenados em memórias
ROM apagáveis (EPROM, EEPROM, FLASH), tornando essas memórias
como alternativa aos discos magnéticos de armazenamento.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
125
Memória de Acesso Aleatório (RAM)
13. Memória de Acesso Aleatório (RAM)
13.1- Introdução
A memória de acesso aleatório (RAM) semicondutora é um tipo de
memória onde podemos tanto ler como escrever dados.
A principal vantagem de uma RAM é o fato de ela poder ser escrita e lida
rapidamente com a mesma facilidade. Uma desvantagem seria o fato da RAM
ser volátil, isto é, se a alimentação for desligada ela perde a informação.
13.2- Arquitetura de uma RAM
A arquitetura típica de uma RAM é mostrada na fig. 13-1.
Fig. 13-1: Organização Interna de uma RAM de 64 x 4
A fig. 13-1 mostra uma RAM que armazena 64 palavras de quatro bits
(memória 64 x 4). Estas palavras têm endereços que vão de 0 a 63. Para
selecionar uma das 64 posições para escrita ou leitura, um endereço binário é
fornecido ao circuito decodificador. Cada endereço ativa uma saída do
decodificador, habilitando o seu registrador correspondente.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
126
Memória de Acesso Aleatório (RAM)
Operação de Leitura
A operação de leitura do conteúdo de um registrador é feita da seguinte
maneira:
- Coloca-se o endereço da posição de memória a ser lida no barramento de
endereços;
- Indica-se a operação de leitura através da entrada R / W , colocando essa
entrada em ALTO;
- Habilita-se o chip de memória para concluir a operação colocando a entrada
CS em BAIXO.
Quando a memória está habilitada para leitura, os buffers de entrada
são desabilitados e os buffers de saída são habilitados e o conteúdo da
posição de memória selecionada é colocada nas quatro saídas de dados.
Operação de Escrita
A operação de escrita de um dado novo em um registrador selecionado
é feita do seguinte modo:
- Coloca-se o endereço da posição de memória a ser escrita no barramento
de endereços;
- Coloca-se o dado a ser escrito no barramento de dados;
- Indica-se a operação de escrita através da entrada R / W , colocando essa
entrada em BAIXO;
- Habilita-se o chip de memória para concluir a operação colocando a entrada
CS em BAIXO.
Quando a memória está habilitada para escrita, os buffers de entrada
são habilitados e os buffers de saída são desabilitados e o conteúdo da
posição de memória selecionada é perdida com a escrita do novo dado.
Quando a entrada CS (chip select – seleção de chip) está em ALTO
(memória desabilitada), tanto suas entradas como suas saídas estão em tristate (alta impedância), evitando assim escrita ou leitura errônea neste chip.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
127
Memória de Acesso Aleatório (RAM)
13.3- RAM Estática (SRAM)
Este tipo de memória armazena os dados enquanto for mantida a
alimentação. Suas células são compostas de flip-flops, e por isso seu conteúdo
não é perdido enquanto houver alimentação.
Temporização de uma RAM Estática
Um computador utiliza RAMs como memórias principais e essas
memórias devem ser rápidas o suficiente para responderem aos comandos de
leitura e escrita que a CPU está constatemente realizando.
Ciclo de Leitura
O ciclo de leitura é mostrado na fig. 13-2.
Fig. 13-2: Ciclo de leitura de uma RAM estática
Onde:
trc = intervalo de duração do ciclo de leitura;
tacc = tempo de acesso à RAM;
tco = tempo que a saída da RAM leva para sair de alta impedância e ter um
dado válido;
tod = tempo decorrido entre a desabilitação da RAM e o instante que as saídas
da RAM vão para alta impedância.
Durante o ciclo de leitura, a CPU coloca um endereço no barramento de
endereços ligado à RAM. Este endereço corresponde à posição de memória
que deve ser lida.
A CPU sinaliza a operação de leitura através de um nível ALTO na
entrada R / W . A CPU habilita a memória colocando a entrada CS em nível
BAIXO. A RAM responde a isso colocando o conteúdo da posição endereçada
nas saídas de dados. Depois disso a memória é desabilitada ( CS é ALTO) e
suas saídas ficam em tri-state (alta impedância).
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
128
Memória de Acesso Aleatório (RAM)
Ciclo de Escrita
O ciclo de escrita é mostrado na fig. 13-3.
Fig. 13-3: Ciclo de escrita de uma RAM estática
Onde:
twc = intervalo de duração do ciclo de escrita;
tas = tempo para estabilização do barramento de endereços, antes de habilitar
a RAM;
tah = intervalo necessário para que o barramento de endereços permaneça
estável;
tw = tempo de escrita, onde CS e R / W ficam em BAIXO;
tds = tempo que os dados devem ser mantidos na entrada antes da
desabilitação de CS e R / W ;
tdh = tempo que os dados devem ser mantidos na entrada depois da
desabilitação de CS e R / W .
No ciclo de escrita, a CPU coloca um endereço estável no barramento
de endereços. Nesse endereço o dado deve ser escrito. Ela coloca o dado a
ser armazenado no barramento de dados.
A CPU sinaliza a operação de escrita, colocando nível BAIXO na entrada
R / W . A CPU habilita a memória colocando a entrada CS em nível BAIXO. O
dado é transferido para a posição de memória indicada pelo endereço. A
memória é, então, desabilitada ( CS é ALTO) e suas saídas ficam em tri-state.
Exemplos de Memórias Estáticas
-
6264 – 8K x 8
62256 – 32K x 8
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
129
Memória de Acesso Aleatório (RAM)
13.4- RAM Dinâmica (DRAM)
Nesse tipo de memória a informação é armazenada em pequenos
capacitores. Como existe uma tendência normal dos capacitores se
descarregarem, há a necessidade de uma recarga (refresh – refrescamento)
desses capacitores. De tempos em tempos (tipicamente de 2 a 8 ms) o bit
armazenado no capacitor é atualizado.
Esse tipo de memória constitui a memória principal de um computador
por causa de sua alta capacidade e baixo consumo. Em relação à velocidade,
as RAM estáticas são mais rápidas.
A principal vantagem deste tipo de memória é a simplicidade na sua
construção, alcançando, assim, alto grau de integração.
Estrutura e Operação da RAM Dinâmica
Simbolicamente uma célula de memória dinâmica é constituída conforme
a fig. 13-4.
Fig. 13-4: Representação simbólica de uma célula de memória dinâmica
Para escrever em uma célula, os sinais provenientes da decodificação
de endereços e da lógica de leitura/escrita fecham as chaves SW1e SW2,
mantendo SW3 e SW4 abertas. Isto conecta a entrada de dados a C. Um nível
lógico 1 carrega C e um nível lógico 0 o descarrega. Depois disso todas as
chaves são abertas, de modo que C fica desconectado do resto do circuito.
Mesmo desconectado, existe uma corrente de fuga que causa a descarga
gradual do capacitor e por isso o capacitor deve ser “refrescado”.
Para ler uma célula, as chaves SW2, SW3 e SW4 são fechadas, e SW1
permanece aberta. Isso conecta a tensão armazenada no capacitor ao
amplificador sensor. Assim, na saída do amplificador teremos o valor
armazenado no capacitor, que é atualizado via SW4 no momento da leitura.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
130
Memória de Acesso Aleatório (RAM)
Multiplexação de Endereços
A multiplexação de endereços é uma técnica que visa diminuir a
quantidade de entradas de endereços em uma DRAM. Isso permite que
DRAMs com altas capacidades ocupem espaços menores em placas de
computadores.
Essa multiplexação consiste em colocar no barramento de endereços a
metade superior do endereço (que localiza a linha) e colocar em BAIXO um
sinal chamado RAS (strobe do endereço da linha). Depois é colocado no
barramento de endereços a metade inferior do endereço (que localiza a coluna)
e colocar em BAIXO um sinal chamado CAS (strobe do endereço da coluna).
Após esse procedimento, a posição de memória é localizada e as operações
de leitura ou escrita podem ser realizadas.
Fig. 13-5: Multiplexação de endereços em uma DRAM com 16 linhas de
endereço.
Refrescamento da DRAM
O refrescamento de uma DRAM é feito por circuitos externos ou no
próprio chip de memória. Existem dois métodos:
Refresh em rajada – a operação normal da memória é suspensa e cada linha
da DRAM é refrescada em seqüencia até que todas tenham sido refrescadas;
Refresh distribuído – o refrescamento é intercalado com as operações
normais da DRAM.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
131
Memória de Acesso Aleatório (RAM)
Tecnologia de RAM Dinâmica Usada em Computadores
Os tipos de DRAM existentes variam em função da capacidade,
velocidade, consumo, custo e versatilidade:
-
SIMM (single-in-line memory module) e DIMM (dual-in-line memory
module) – são módulos de memória que permitem uma instalação rápida e
são padrões de diversos tipos de DRAMs. Os módulos SIMM e DIMM
definem apenas como a DRAM é “empacotada”.
-
DRAM FPM (fast page module) – permite acesso mais rápido a qualquer
posição de memória dentro da “página” corrente. Normalmente, a maioria
dos dados gravados na memória são seqüenciais. Nesse tipo de DRAM o
endereço da linha (RAS) é enviado uma vez e o endereço da coluna (CAS)
é incrementado.
-
DRAM EDO (extended data output) – é uma melhoria em relação às FPM.
Os dados são colocados na saída e a DRAM EDO já pode decodificar o
próximo endereço sem que esses dados tenham sido lidos;
-
DRAM BEDO (burst EDO) – Possui uma arquitetura que permite alcançar
alta velocidade ao se acessar dados seqüenciais;
-
SDRAM (synchronous DRAM) – são organizadas em dois bancos que são
acessados alternadamente utilizando um sinal de clock sincronizado com a
CPU. Desse modo essas memórias alcançam altas taxas de transferências.
Memórias com Funções Especiais
-
Armazenamento de Dados com o Sistema Desligado – muitos
equipamentos armazenam seus dados em memórias RAM alimentadas com
baterias de reserva (NVRAM – RAM não-volátil);
-
Memória Cache – tipo de memória de alta velocidade e baixa capacidade
de armazenamento que interage diretamente com a CPU. Na cache estão
contidos os dados mais requisitados pelo processador e isso evita um
acesso desnecessário na RAM.
-
Memória First-In, First-Out (FIFO) – também conhecidas como buffers
para armazenamento temporário. Por exemplo, os dados são transferidos
em altas taxas do PC para a impressora. Como a impressão é mais lenta
que a transferência, esses dados devem ser armazenados em FIFOs e daí
podem ser impressos.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
132
Expansão do Tamanho da Palavra e da Capacidade
14. Expansão do Tamanho da Palavra e da Capacidade
14.1- Introdução
Em aplicações com memórias muitas vezes não dispomos de um chip
que nos forneça o tamanho da palavra ou a capacidade necessária. Para
conseguir isso devemos associar os chips de memória a fim de fornecer o
tamanho da palavra ou a capacidade desejada.
14.2- Expansão do Tamanho da Palavra
Neste tipo de arranjo, as memórias são combinadas de forma a fornecer
o tamanho da palavra desejada. Por exemplo, se determinado projeto
necessita de uma memória de 16 x 8 (16 palavras de 8 bits) e só possuímos
chips de memória de 16 x 4 (16 palavras de 4 bits) podemos associar duas
dessas memórias para obter a memória desejada, conforme a fig. 14-1.
Fig. 14-1: Arranjo com duas RAM de 16 x 4 para fornecer um módulo de 16 x 8.
Cada memória da figura acima pode armazenar 16 palavras de 4 bits.
Como queremos armazenar 16 palavras de 8 bits, cada chip armazena metade
de cada palavra. Assim, a RAM0 armazena os 4 bits mais significativos de
cada uma das 16 palavras e a RAM1 armazena os 4 bits menos significativos
de cada uma das 16 palavras.
Podemos selecionar qualquer uma das 16 palavras aplicando-se o
endereço da palavra no barramento de endereços. As duas memórias
localizarão ao mesmo tempo a mesma posição de memória.
Se a operação for leitura, a entrada R / W deve estar em ALTO e CS em
BAIXO. A RAM0 coloca sua palavra de 4 bits na parte alta do barramento de
dados e a RAM1 coloca sua palavra de 4 bits na parte baixa do barramento de
dados. Desse modo o barramento de dados contém a palavra completa de 8
bits.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
133
Expansão do Tamanho da Palavra e da Capacidade
Se a operação for escrita, a entrada R / W deve estar em BAIXO e CS
em BAIXO. Os 4 bits mais significativos do dado serão escritos na RAM0 e os 4
menos significativos serão escritos na RAM1.
14.3- Expansão da Capacidade
Neste tipo de arranjo, as memórias são combinadas de forma que
possam armazenar mais palavras. Por exemplo, se precisamos de uma
memória que possa armazenar 32 palavras de 4 bits e temos chips de 16
palavras de 4 bits, podemos associá-las conforme a fig. 14-2.
Fig. 14-2: Arranjo de duas memórias de 16 x 4 para formar uma memória de 32
x 4.
Cada chip de memória armazena 16 palavras de 4 bits, resultando em
32 palavras de 4 bits. O barramento de dados é compartilhado entre as duas
memórias e por isso somente um chip de memória poderá ser habilitado de
cada vez.
Como a capacidade total é 32 x 4, devem existir 32 endereços
diferentes. Isso requer 5 linhas de barramento de endereços. A linha de
endereços mais significativa (A4) é usada para selecionar qual memória deve
ser acionada.
Tabela 14-1:
A4
A3
0
...
0
1
0
...
1
1
A2
0
...
1
0
...
1
A1
0
...
1
0
...
1
A0
0
...
1
0
...
1
Memória selecionada
Capacidade
RAM0
16 palavras
RAM1
16 palavras
Total = 32
palavras
Mapa de memória e faixa de endereços usados por cada chip.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
134
Expansão do Tamanho da Palavra e da Capacidade
Se desejarmos associar mais chips de memórias devemos tomar o
cuidado de selecionar apenas uma das memórias, já que o barramento de
dados é compartilhado. Para isso é usado um decodificador de endereços (por
exemplo, 74LS138) que, através de uma combinação em suas entradas,
seleciona apenas uma saída.
Por exemplo, se desejarmos associar 4 PROMs de 16 x 4 para gerar
uma capacidade de 64 x 4 devemos fazer conforme a fig. 14-3.
Fig. 14-3: Uso de 4 PROMs de 16 x 4 para obter uma capacidade de 64 x 4
Tabela 14-2:
A5
A4
A3
A2
A1
0
0
0
0
0
...
...
...
1
1
1
0
0
0
0
1
...
...
...
1
1
1
0
0
0
1
0
...
...
...
1
1
1
0
0
0
1
1
...
...
...
1
1
1
Faixa de endereços utilizada por cada PROM.
A0
0
...
1
0
...
1
0
...
1
0
...
1
Memória selecionada
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
PROM-0
PROM-1
PROM-1
PROM-2
135
Microcontrolador AT90S8515
15. Microcontrolador AT90S8515
15.1- Introdução
Computadores, Microprocessadores e Microcontroladores
O computador é qualquer sistema que contém CPU (Unidade Central de
Processamento), memória e unidades de entrada/saída.
O microprocessador é um circuito integrado que contém uma CPU de
um computador genérico.
O microcontrolador é um circuito integrado que contém CPU, memória,
unidades de entrada/saída e periféricos (conversores A/D, timers, portas de
comunicação etc), com a finalidade de executar uma tarefa específica.
Fig. 15-1: Diagrama em Blocos de um Sistema Genérico com Microprocessador
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
136
Microcontrolador AT90S8515
15.2- Características do Microcontrolador AT90S8515
a) Arquitetura AVR RISC:
- Possui 118 instruções sendo que a maioria é executada em um ciclo de
clock;
- Possui 32 registradores de uso geral de 8 bits;
- Até 8 MIPS (milhões de instruções por segundo) a 8 MHz.
b) Memória de Programa e de Dados:
- Possui 8 KBytes de Flash (memória de programa) que pode ser
programada no próprio circuito. Possui vida útil de 1000 ciclos de
escrita/apagamento;
- Possui 512 Bytes de SRAM (memória de dados);
- Possui 512 Bytes de EEPROM (memória de dados) que pode ser
programada no próprio circuito. Possui vida útil de 100000 ciclos de
escrita/apagamento;
- Possui Lock Bits, que impedem que o programa da Flash e os dados
armazenados na EEPROM possam ser acessados.
c) Periféricos:
- Possui 1 Temporizador/Contador de 8 bits com prescaler (divisor de clock);
- Possui 1 Temporizador/Contador de 16 bits com prescaler (divisor de clock),
com modos de comparação, captura e duplo PWM (modulação por largura
de pulso) de 8, 9 ou 10 bits;
- Possui comparador analógico interno;
- Possui Wathdog Timer programável com oscilador interno separado;
- Possui serial UART (transceptor assíncrono universal) programável;
- Possui interface serial Master/Slave SPI.
d) Características Especiais do Microcontrolador:
- Modos Low-power Idle e Power Down;
- Fontes de interrupções externas e internas.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
137
Microcontrolador AT90S8515
15.3- Encapsulamento
Fig. 15-2: Disposição dos pinos nos encapsulamentos DIP e PLCC
15.4- Descrição Geral
O AT90S8515 é um microcontrolador CMOS de 8 bits de baixo consumo
baseado na arquitetura AVR RISC. A execução de instruções simples em um
ciclo de clock (1 MIPS por MHz) permite que o projeto possa ser otimizado
quanto à velocidade ou quanto ao consumo (quanto maior a velocidade, maior
é o consumo).
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
138
Microcontrolador AT90S8515
15.5- Diagrama em Blocos
Fig. 15-3: Diagrama em blocos do AT90S8515
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
139
Microcontrolador AT90S8515
15.6- Descrição dos Pinos
-
VCC – Alimentação;
-
GND – Terra;
-
Port A (PA7..PA0) – Porta de entrada/saída (bidirecional) de 8 bits. Possui
resistores de pull-up internos (programável para cada bit). Podem fornecer
até 20 mA de corrente. Na condição de reset, o Port A ficará em tri-state
(alta impedância). Uma segunda função do Port A é como entrada/saída do
barramento multiplexado de endereços/dados usado no acesso à SRAM
externa;
-
Port B (PB7..PB0) – Porta de entrada/saída (bidirecional) de 8 bits. Possui
resistores de pull-up internos (programável para cada bit). Podem fornecer
até 20 mA de corrente. Na condição de reset, o Port B ficará em tri-state
(alta impedância). Esse port possui várias funções especiais que serão
vistas posteriormente;
-
Port C (PC7..PC0) – Porta de entrada/saída (bidirecional) de 8 bits. Possui
resistores de pull-up internos (programável para cada bit). Podem fornecer
até 20 mA de corrente. Na condição de reset, o Port C ficará em tri-state
(alta impedância). Uma segunda função do Port C é como saída do
barramento de endereços usado no acesso à SRAM externa;
-
Port D (PD7..PD0) – Porta de entrada/saída (bidirecional) de 8 bits. Possui
resistores de pull-up internos (programável para cada bit). Podem fornecer
até 20 mA de corrente. Na condição de reset, o Port D ficará em tri-state
(alta impedância). Esse port possui várias funções especiais que serão
vistas posteriormente;
-
RESET - Entrada de reset. Um nível baixo nesse pino reiniciará o
microcontrolador;
-
XTAL1 - Entrada para o amplificador inversor do oscilador e entrada de
clock para o circuito;
-
XTAL2 - Saída do amplificador inversor do oscilador;
-
ICP - Entrada para a função Timer/Counter1 Input Capture;
-
OC1B - Saída para a função de Timer/Counter1 Output CompareB;
-
ALE - Adress Latch Enable - Saída usada quando uma memória externa
está conectada. Ao acessar externamente a memória, se ALE for alto, no
barramento AD0-7 teremos a parte baixa do endereço e isso habilita o latch
para o barramento de endereços. Quando ALE for baixo isso desabilitará o
latch e o barramento AD0-7 será usado como barramento de dados;
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
140
Microcontrolador AT90S8515
15.7- Oscilador
A entrada XTAL1 e a saída XTAL2 estão conectadas diretamente em um
amplificador inversor usado como oscilador interno. Nesse caso, externamente
deve ser conectado um cristal de quartzo na freqüência de operação.
Um outro modo de gerar um sinal de clock é desconectar a saída XTAL2
e injetar um sinal de clock na entrada XTAL1.
15.8- Arquitetura
O AT90S8515 contém, internamente, 32 registradores uso geral de 8
bits cada, que podem ser acessados em um único ciclo de clock.
Seis desses 32 registradores podem formar três registradores de 16 bits,
que são usados como ponteiros para endereçamento indireto da memória de
dados. Um destes ponteiros de endereços também é usado como ponteiro de
endereço de tabelas de constantes na memória de programa. Estes registros
de 16 bits são chamados registro-X, registro-Y e registro-Z.
A ULA suporta funções aritméticas e lógicas entre registradores e entre
constantes e registradores.
Os 64 primeiros bytes de endereço da RAM interna são usados como
espaço de memória de entrada/saída (I/O Memory). É neste espaço de
memória que estão localizados os registradores de controle, os
temporizadores/contadores e outros periféricos.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
141
Microcontrolador AT90S8515
Fig. 15-3: Arquitetura interna do AT90S8515
A família AVR utiliza o conceito de arquitetura Harvard, que separa a
memória e os barramentos de programa e dados. A memória de programa é
executada em um "pipeline" com dois estágios. Enquanto uma instrução está
sendo executada, a próxima está sendo trazida da memória de programa. Isso
possibilita a execução de instruções em cada ciclo de clock. A memória de
programa é uma memória Flash programável no sistema. A SRAM interna
possui 512 bytes.
Todas as interrupções possuem um vetor de interrupção separado e a
tabela de vetores de interrupção começa no início da memória de programa.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
142
Microcontrolador AT90S8515
Fig. 15-4: Memória Flash e memória RAM do AT90S8515
Registradores de Uso Geral
Os 32 registradores de uso geral (R0-R31) estão localizados nos
endereços 00H a 1FH da SRAM interna. Praticamente todas as instruções que
acessam esses registradores são executadas em um ciclo de clock.
Os Registradores X, Y e Z
Os registradores R26...R31 tem outras funções especiais. Esses
registradores são usados como ponteiros de endereços na memória de dados.
(R27:R26 = X; R29:R28 = Y; R31:R30 = Z).
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
143
Microcontrolador AT90S8515
ULA – Unidade Lógica e Aritmética
A ULA tem conexão direta com os 32 registradores de uso geral. Isso
permite que instruções entre registradores sejam executadas em um ciclo de
clock. As operações da ULA podem ser divididas em três categorias:
operações aritméticas, operações lógicas e operações de manipulação de bits.
Memória de Programa Flash Programável no Sistema
O AT90S8515 possui 8 Kbytes de memória de programa Flash interna
programável no próprio sistema. A Flash é organizada como uma memória de 4
K x 16, já que todas as instruções são de 16 ou 32 bits. A Flash possui mais de
1000 ciclos de leitura/apagamento.
Memória de Dados SRAM Interna e Externa
Fig. 15-5: Organização da memória RAM interna e externa
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
144
Microcontrolador AT90S8515
A SRAM interna compreende os endereços 00H até 25FH. Do endereço
00H até 1FH estão localizados os registradores de uso geral (R0-R31). Do
endereço 20H até 5FH estão os endereços de periféricos de entrada e saída.
Do endereço 60H até 25FH está a memória de dados SRAM interna. A partir
do endereço 260H a SRAM externa é acessada, até o endereço FFFFH.
Se o endereço a ser acessado é maior que a SRAM interna, a SRAM
externa é acessada. Quando isso ocorre os sinais de RD e RW são ativados
para o acesso
à SRAM.
Memória de Dados EEPROM
O AT90S8515 possui 512 bytes de memória de dados EEPROM. Cada byte
pode ser lido ou escrito individualmente. Possui mais de 100000 ciclos de
escrita/apagamento.
Tempos de Acesso à Memória e Execução de Instruções
A CPU dos microcontroladores AVR utiliza o Clock do Sistema Ø,
diretamente gerado do cristal externo para o chip. Não é feita nenhuma divisão
interna desse Clock.
A fig. 15-6 mostra os ciclos de busca e execução de instrução
habilitadas pela arquitetura Harvard e o conceito de registro de acesso rápido.
Este é o conceito básico utilizado para se obter até 1 MIPS por MHz.
Fig. 15-6: Ciclos de busca e execução de instruções
A fig. 15-7 mostra a temporização interna para os registros. Em um único
ciclo de Clock uma operação da ALU que usa dois registros como operandos é
executada e o resultado é armazenado no registro de destino.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
145
Microcontrolador AT90S8515
Fig. 15-7: Temporização interna nos registros do AT90S8515
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
146
Microcontrolador AT90S8515
Memória de Entrada/Saída (I/O)
Tabela 15-1:
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
147
Microcontrolador AT90S8515
Todos os I/Os e periféricos do AT90S8515 estão localizados no espaço
de I/O. Os endereços de I/O são acessados pelas instruções IN e OUT, que
podem transferir dados entre os 32 registros de uso geral e o espaço de I/O.
Os endereços dos registros de I/O que vão de $00 até $1F são
diretamente acessíveis bit a bit usando instruções SBI e CBI. Nestes registros,
o valor de um único bit pode ser testado usando as instruções SBIS e SBIC. Se
as instruções IN e OUT forem usadas, os endereços dos I/Os vão de $00 até
$3F. Se os registros de I/O forem acessados como uma SRAM, os endereços
anteriores devem ser somados a $20 ($20 - $5F).
Alguns flags (indicadores) de estado são ZERADOS escrevendo UM
lógico neles.
Registrador de Status – SREG
•
Bit 7 – I: Global Interrupt Enable – O bit de habilitação global de
interrupções deve ser setado (UM) para que as interrupções sejam
habilitadas. Se o bit de habilitação global é ZERADO, nenhuma das
interrupções serão habilitadas.
•
Bit 6 – T: Bit Copy Storage – As instruções de cópia de bit BLD (Bit Load)
e BST (Bit Store) usam o bit T como fonte e destino para o bit manipulado.
Um bit de um registro pode ser copiado para T pela instrução de BST, e um
bit em T pode ser copiado para um bit em um registro pela instrução BLD.
•
Bit 5 – H: Half Carry Flag – O flag half carry H indica que um "half carry"
ocorreu em alguma operação aritmética na ALU.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
148
Microcontrolador AT90S8515
•
Bit 4 – S: Sign Bit, S = N ⊕ V – O bit S sempre é um OU-EXCLUSIVO
entre o flag de negativo N e o flag de overflow do complemento a dois V.
•
Bit 3 – V: Two’s Complement Overflow Flag – O flag de overflow no
complemento a dois V é utilizado em operações aritméticas que manipulam
números na representação complemento a dois.
•
Bit 2 – N: Negative Flag – O flag de negativo N indica que ocorreu um
resultado negativo após a execução de uma subtração aritmética ou de uma
operação lógica.
•
Bit 1 – Z: Zero Flag – O flag de zero Z indica que o resultado ZERO
ocorreu depois de uma subtração aritmética ou de uma operação lógica.
•
Bit 0 – C: Carry Flag – O flag de carry C indica que um carry (vai-um)
ocorreu em uma operação aritmética ou operação lógica.
Ponteiro de Pilha - SP
O Ponteiro de Pilha de 16-bits é constituído de dois registros de 8-bits
localizados no espaço de I/O, nos endereços $3E ($5E) e $3D ($5D). Como o
AT90S8515 suporta até 64 kB de SRAM externa, todos os 16-bits são usados.
Tratamento de Reset e Interrupções
O AT90S8515 possui 12 fontes de interrupção diferentes. Estas
interrupções e o RESET possuem um vetor reservado na memória de
programa. Todas as interrupções são individualmente habilitadas pelos bits de
controle juntamente com o bit I no registrador de status SREG.
Os vetores de RESET e Interrupções estão localizados no início da
memória de programa e podem ser vistos conforme a tabela 15-2. Esta lista
também determina os níveis de prioridade dos diferentes tipos de interrupções.
O menor endereço possui o maior nível de prioridade: o RESET tem maior
prioridade, depois vem INT0 - Interrupção Externa 0, e assim por diante.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
149
Microcontrolador AT90S8515
Tabela 15-2:
Fontes de Reset
O AT90S8515 tem três fontes de reset:
-
Power-On Reset: A MCU é reiniciada quando a tensão de alimentação está
abaixo da tensão limiar de alimentação (VPOT);
-
RESET Externo: A MCU é reiniciada quando um nível baixo é colocado no
pino RESET por mais de 50 ns;
-
Watchdog Reset: A MCU é reiniciada quando ocorre o overflow do
temporizador Watchdog (Cão de Guarda) e o Watchdog esta habilitado.
Durante o reset, todos os registros de I/O são forçados para seus
valores iniciais e o programa começa sua execução a partir do endereço $000.
A instrução colocada no endereço $000 deve ser um RJMP – salto relativo –
instrução para a rotina de reset.
Power-On Reset
Um circuito de Power-On Reset (POR) assegura que o dispositivo seja
resetado quando a alimentação for ligada. Um sinal vindo do oscilador interno
do Watchdog Timer impede que a MCU comece durante um certo período
depois de VCC alcançou a tensão limiar de Power-On – VPOT.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
150
Microcontrolador AT90S8515
Reset Externo
Um reset externo é gerado por um nível baixo pino RESET. Pulsos de
reset maiores do que 50 ns gerarão um reset, até mesmo se o Clock estiver
parado. Pulsos com duração menor não garantirão o reset.
Quando o pulso de reset ultrapassar a tensão limiar de reset – VRST – na
borda de subida, um temporizador contará um período tTOUT e ao fim desse
tempo, a MCU irá iniciar a operação.
Reset por Watchdog
Quando o Watchdog expira, um pequeno pulso de reset com a duração
de 1 ciclo de XTAL é gerado. Na transição de descida deste pulso, um
temporizador contará um período tTOUT e ao fim desse tempo, a MCU irá iniciar
a operação.
Tratamento de Interrupções
O AT90S8515 tem dois Registradores de Controle de Máscaras de
Interrupções de 8-bits:
-
GIMSK – (General Interrupt Mask register) – registrador de máscaras de
interrupções gerais.
TIMSK – (Timer/Counter Interrupt Mask register) – registrador de
máscaras de interrupções dos temporizadores/contadores.
Quando uma interrupção ocorre o bit I (Global Interruption Enable) é
ZERADO e todas as interrupções são desabilitadas. O bit I é setado quando
uma instrução de Retorno de Interrupção – RETI – é executado.
Quando o Contador de Programa (PC) é carregado com o endereço do
vetor de interrupção atual para executar a rotina de tratamento de interrupção,
o hardware zera o flag correspondente que gerou essa interrupção.
Se uma ou mais interrupções ocorrerem enquanto o bit de habilitação
global de interrupções (I) estiver zerado, os flags de interrupções
correspondentes serão setados e assim permanecerão até que o bit de
habilitação global de interrupções (I) seja setado e as interrupções serão
executadas por ordem de prioridade.
Registrador de Máscaras de Interrupções Gerais – GIMSK
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
151
Microcontrolador AT90S8515
•
Bit 7 – INT1: External Interrupt Request 1 Enable –
O bit INT1 habilita interrupção externa 1 quando setado.
•
Bit 6 – INT0: External Interrupt Request 0 Enable –
O bit INT0 habilita interrupção externa 0 quando setado.
•
Bits 5..0 – Res: Reserved bits –
Esses bits são reservados no AT90S8515 e são sempre lidos como zero.
Registrador de Flags de Interrupções Gerais – GIFR
•
Bit 7 – INTF1: External Interrupt Flag1 –
Quando um evento ocorre no pino INT1, um pedido de interrupção é
requisitado e o bit INTF1 é setado.
•
Bit 6 – INTF0: External Interrupt Flag0 –
Quando um evento ocorre no pino INT0, um pedido de interrupção é
requisitado e o bit INTF0 é setado.
•
Bits 5..0 – Res: Reserved bits –
Esses bits são reservados no AT90S8515 e são sempre lidos como zero.
Registrador de Máscaras de Interrupções dos
Temporizadores/Contadores – TIMSK
•
Bit 7 – TOIE1: Timer/Counter1 Overflow Interrupt Enable –
O bit TOIE1 habilita interrupção por Overflow do Timer/Counter1 quando
setado.
•
Bit 6 - OCE1A: Timer/Counter1 Output CompareA Match Interrupt
Enable –
O bit OCE1A habilita interrupção por comparação do valor A com o valor do
Timer/Counter1 quando setado
•
Bit 5 – OCIE1B: Timer/Counter1 Output CompareB Match Interrupt
Enable –
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
152
Microcontrolador AT90S8515
O bit OCIE1B habilita interrupção por comparação do valor B com o valor do
Timer/Counter1 quando setado.
•
Bit 4 – Res: Reserved bit –
Bit reservado no AT90S8515 e é sempre lido como zero.
•
Bit 3 - TICIE1: Timer/Counter1 Input Capture Interrupt Enable –
O bit TICIE1 habilita interrupção por evento na entrada de captura do
Timer/Counter1 quando setado.
•
Bit 2 – Res: Reserved bit –
Bit reservado no AT90S8515 e é sempre lido como zero.
•
Bit 1 - TOIE0: Timer/Counter0 Overflow Interrupt Enable –
O bit TOIE0 habilita interrupção por Overflow do Timer/Counter0 quando
setado.
•
Bit 0 – Res: Reserved bit –
Bit reservado no AT90S8515 e é sempre lido como zero.
Registrador de Flags de Interrupções dos Temporizadores/Contadores –
TIFR
•
Bit 7 - TOV1: Timer/Counter1 Overflow Flag –
O flag TOV1 é setado quando um overflow ocorre no Timer/Counter1.
•
Bit 6 - OCF1A: Output Compare Flag 1A –
O bit OCF1A é setado quando o valor do Timer/Counter1 e valor contido no
OCR1A – Registrador de Comparação de Saída 1A.
•
Bit 5 - OCF1B: Output Compare Flag 1B –
O bit OCF1B é setado quando o valor do Timer/Counter1 e valor contido no
OCR1B – Registrador de Comparação de Saída 1B.
•
Bit 4 – Res: Reserved bit –
Bit reservado no AT90S8515 e é sempre lido como zero.
•
Bit 3 – ICF1: Input Capture Flag 1 –
O bit ICF1 é setado para sinalizar que um evento de captura ocorreu no
pino ICP e que o valor do Timer/Counter1 foi transferido para o registrador
de captura – ICR1.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
153
Microcontrolador AT90S8515
•
Bit 2 – Res: Reserved bit –
Bit reservado no AT90S8515 e é sempre lido como zero.
•
Bit 1 – TOV: Timer/Counter0 Overflow Flag –
O bit TOV0 é setado quando ocorre um overflow do Timer/Counter0.
•
Bit 0 – Res: Reserved bit –
Bit reservado no AT90S8515 e é sempre lido como zero.
Interrupções Externas
As interrupções externas são ativadas pelos pinos INT1 e INT0. As
interrupções externas podem ser reconhecidas por uma borda de descida ou
subida ou um nível baixo. Isso é configurado no Registrador de Controle da
MCU – MCUCR.
Tempo de Resposta de Interrupções
O intervalo de execução para qualquer uma das interrupções do
AT90S8515 habilitadas é de, no mínimo, 4 ciclos de clock. Quatro ciclos de
clock depois que o flag de interrupção foi setado, o endereço do vetor de
interrupção é executado.
Durante estes 4 ciclos de clock, o Contador de Programa – PC (2 bytes)
é colocado na Pilha (Stack), e o Ponteiro de Pilha (SP) é decrementado de 2. O
vetor normalmente é um salto relativo à rotina de interrupção e este salto leva 2
ciclos de clock. Se uma interrupção acontece durante execução de uma
instrução de multi-ciclo, a instrução é completada antes da interrupção ser
atendida.
O retorno de uma rotina de tratamento de interrupção (ou mesmo uma
sub-rotina) leva 4 ciclos de clock. Durante estes 4 ciclos de relógio, o Contador
de Programa – PC (2 bytes) é trazido da Pilha (Stack), o Ponteiro de Pilha (SP)
é incrementado de 2, e o bit I no SREG é setado. Quando o microcontrolador
sai de uma interrupção, ele sempre voltará ao programa principal e executará
uma ou mais instruções antes que qualquer interrupção pendente ser atendida.
Registrador de Controle da Unidade Central Microprocessadora – MCUCR
O registrador de controle da MCU contém os bits de controle para
funções gerais da MCU.
•
Bit 7 – SRE: External SRAM Enable –
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
154
Microcontrolador AT90S8515
Quando o bit SRE é setado, o acesso à memória de dados externa (SRAM)
é habilitado e os pinos AD0-7 (Port A), A8-15 (Port C), RW e RD (Port D)
são ativados.
•
Bit 6 – SRW: External SRAM Wait State –
Quando o bit SRW é setado, um estado de espera é inserido no ciclo de
acesso à SRAM externa.
•
Bit 5 – SE: Sleep Enable –
O bit SE deve ser setado para fazer a MCU entrar no modo Sleep quando a
instrução SLEEP for executada.
•
Bit 4 – SM: Sleep Mode –
O bit SM seleciona os dois modos de Sleep disponíveis. Quando SM é
zerado, o Modo Idle é selecionado como modo Sleep. Quando SM é setado,
o Modo Power Down é selecionado como modo Sleep.
•
Bit 3, 2 – ISC11, ISC10: Interrupt Sense Control 1 bit 1 and bit 0 –
Os bits ISC11 e ISC10 definem de que maneira a interrupção externa 1
deverá ser reconhecida:
Tabela 15-3:
•
Bit 1, 0 – ISC01, ISC00: Interrupt Sense Control 0 bit 1 and bit 0 –
Os bits ISC01 e ISC00 definem de que maneira a interrupção externa 0
deverá ser reconhecida:
Tabela 15-4:
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
155
Microcontrolador AT90S8515
Modos de Sleep
Para entrar nos modos Sleep, o bit SE no MCUCR deve ser setado e
uma instrução de SLEEP deve ser executada. Se uma interrupção ocorre
enquanto a MCU está em um modo Sleep, o MCU acorda, executa a rotina de
interrupção, e retoma a execução da instrução depois de SLEEP. Os
conteúdos dos registros, da SRAM e da memória de I/O permanecem
inalteradas. Se um Reset ocorre durante modo Sleep, a MCU acorda e executa
do vetor RESET.
Modo Idle
Se o bit de SM é zerado, a instrução SLEEP força a MCU para o Modo
Idle, que pára a CPU mas permite que Timer/Counters, Watchdog e
Interrupções continuem operando. Isto permite que a MCU possa acordar com
uma interrupção externa ou overflow dos timers ou reset do Watchdog. Quando
o MCU acorda no modo Idle, a CPU inicia a execução do programa
imediatamente.
Modo Power Down
Quando o bit SM é setado, a instrução de SLEEP força a MCU no modo
Power Down. Neste modo, oscilador externo é desligado, enquanto as
interrupções externas e o Watchdog (se habilitado) continuam operando. Só
um Reset externo ou um Reset por Watchdog (se habilitado) ou uma
interrupção externa por nível INT0 ou INT1 podem acordar a MCU. Se uma
interrupção externa por nível é usada para acordar a MCU do modo Power
Down, o nível baixo deve ser mantido durante um tempo maior do que o
período de timeout do reset (tOUT). Caso contrário, a MCU não acordará.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
156
Microcontrolador AT90S8515
15.9- Temporizadores/Contadores
O AT90S8515 possui dois Timer/Counters – um temporizador/contador
de 8 bits e um temporizador/contador de 16 bits. Os temporizadores/contadores
possuem seleção individual de clock, que vem de um mesmo contador de 10
bits (Prescaler). Ambos os Timer/Counters podem ser usados como
temporizadores com um clock interno como base de tempo ou como contador
utilizando o pino externo (T0 ou T1) como entrada de contagem.
Fig. 15-8: Circuito lógico dos temporizadores/contadores
Prescaler (Divisor) dos Temporizadores/Contadores
As quatro seleções de razões de clock (vindos do prescaler) são: CK/8,
CK/64, CK/256 e CK/1024 onde CK é o clock do oscilador. As razões de clock,
como CK ou uma fonte externa ou parado podem ser as fontes de clock para
os dois Timer/Counters.
Temporizador/Contador0 de 8 bits
As fontes de clock para o Timer/Counter0 (8 bits) podem ser o clock CK,
o clock CK dividido (através do prescaler) ou pino externo. Além disso, o
Timer/Counter0 pode ser parado. Isto pode ser configurado através do
registrador de Controle do Timer/Counter0 – TCCR0. O flag de overflow
encontra-se no registrador de Flags de Interrupção do Timer/Counter – TIFR.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
157
Microcontrolador AT90S8515
Os bits de controle encontram-se no registro de Controle do
Timer/Counter0 – TCCR0. O bit de habilitação da interrupção por overflow do
Timer/Counter0 encontra-se no registro de Máscaras de Interrupções dos
Timer/Counters – TIMSK.
Registrador de Controle do Temporizador/Contador0 - TCCR0
•
Bits 7..3 – Res: Reserved bits –
Esses bits são reservados no AT90S8515 e são sempre lidos como zero.
•
Bits 2,1,0 - CS02, CS01, CS00: Clock Select0, bit 2,1 and 0 –
Os bits 2, 1 e 0 da Seleção de Clock definem a fonte de clock do
Timer/Counter0, conforme a tabela 15-5.
Tabela 15-5:
A condição de Stop desabilita o Timer/Counter0. As razões de CK são
obtidas diretamente do clock do oscilador. Se o pino externo é usado com
entrada de clock do Timer/Counter0, transições em PB0/(T0) irão ser contadas
mesmo que o pino seja configurado como saída.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
158
Microcontrolador AT90S8515
Temporizador/Contador0 – TCNT0
O Timer/Counter0 é um registrador com acesso para leitura e escrita. Se
o Timer/Counter0 é escrito e uma fonte de clock está presente, o
Timer/Counter0 continua contando a partir do ciclo de clock seguinte à
operação de escrita.
Temporizador/Contador1 de 16 bits
As fontes de clock para o Timer/Counter1 (16 bits) podem ser o clock
CK, o clock CK dividido (através do prescaler) ou pino externo. Além disso, o
Timer/Counter1 pode ser parado. Isto pode ser configurado através do
registrador de Controle do Timer/Counter1 – TCCR1A e TCCR1B. Os
diferentes flags de status (overflow, comparação e captura de evento)
encontram-se no registrador de Flags de Interrupção do Timer/Counter – TIFR.
Os bits de controle encontram-se no registro de Controle do Timer/Counter1 –
TCCR1A e TCCR1B. Os bits de habilitações de interrupções Timer/Counter1
encontra-se no registro de Máscaras de Interrupções dos Timer/Counters –
TIMSK.
O Timer/Counter1 possui dois funções de comparação que utilizam os
registradores de Saída de Comparação 1 A e B – OCR1A e OCR1B como
fontes de dados para serem comparados com o valor do Timer/Counter1. As
funções de Comparação incluem um opcional reinício do contador quando o
valor de comparação A for atingido e ações nos pinos de Saída de
Comparação para ambos os valores de comparação A e B.
O Timer/Counter1 também pode ser usado como um Modulador por
Largura de Pulso (PWM) de 8, 9 ou 10 bits. Neste modo, o contador e os
registradores OCR1A/OCR1B são utilizados para formarem um duplo PWM.
A função de Captura de Eventos do Timer/Counter1 realiza a
transferência do conteúdo do Timer/Counter1 para o registrador de Captura –
ICR1, ocasionado por um evento externo no pino de Entrada de Captura de
Evento – ICP. Os bits que controlam esta funções estão localizados no
registrador de Controle do Timer/Counter1 – TCCR1B. Além disso, o
Comparador Analógico também pode ser usado para gerar um evento de
captura do Timer/Counter1.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
159
Microcontrolador AT90S8515
Registrador A de Controle do Temporizador/Contador1 – TCCR1A
•
Bits 7,6 – COM1A1, COM1A0: Compare Output Mode1A, bits 1 and 0 –
Os bits de controle COM1A1 e COM1A0 determinam qual a ação no pino de
saída quando o valor do Timer/Counter1 for igual ao valor de comparação
no registrador de Saída de Comparação – OCR1A. Essa ação afetará o
pino OC1A – Saída de Comparação A.
•
Bits 5,4 - COM1B1, COM1B0: Compare Output Mode1B, bits 1 and 0 –
Os bits de controle COM1B1 e COM1B0 determinam qual a ação no pino de
saída quando o valor do Timer/Counter1 for igual ao valor de comparação
no registrador de Saída de Comparação – OCR1B. Essa ação afetará o
pino OC1B – Saída de Comparação B.
A tabela 15-6 mostra as configurações desses bits para o modo de
comparação:
Tabela 15-6:
No modo PWM, estes bits tem funções diferentes.
•
Bits 3..2 – Res: Reserved bits –
Esses bits são reservados no AT90S8515 e são sempre lidos como zero.
•
Bits 1..0 – PWM11,PWM10: Pulse Width Modulator Select Bits 1 and 0 –
Esses bits selecionam o modo PWM, conforme a tabela 15-7.
Tabela 15-7:
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
160
Microcontrolador AT90S8515
Registrador B de Controle do Temporizador/Contador1 – TCCR1B
•
Bit 7 – ICNC1: Input Capture1 Noise Canceler (4 CKs) –
Quando o bit ICNC1 for ZERO, o eliminador de ruído da entrada de captura
é desabilitado. Uma transição de subida/descida no pino ICP causará a
captura do Timer/Counter1. Quando o bit ICNC1 for UM, quatro amostras
sucessivas serão amostradas no ICP – pino de entrada de captura, e todas
as amostras devem ser iguais conforme a configuração do bit ICES1.
•
Bit 6 – ICES1: Input Capture1 Edge Select –
Se o bit ICES1 for zerado, o conteúdo do Timer/Counter1 é transferido para
o registrador de Captura – ICR1 – na transição de descida no pino de
Captura – ICP.
Se o bit ICES1 for setado, o conteúdo do Timer/Counter1 é transferido para
o registrador de Captura – ICR1 – na transição de subida no pino de
Captura – ICP.
•
Bits 5, 4 – Res: Reserved bits –
Esses bits são reservados no AT90S8515 e são sempre lidos como zero.
•
Bit 3 – CTC1: Clear Timer/Counter1 on Compare Match –
Se o bit CTC1 for setado, o Timer/Counter1 é forçado a $0000 no ciclo de
clock após o Timer/Counter1 ser igual ao valor de comparação A. Se o bit
CTC1 for zerado, o Timer/Counter1 continua contando e seu valor não é
alterado. Dependendo do divisor de clock utilizado, a função de comparação
do valor do Timer/Counter1 pode se comportar de maneira diferente. Se o
divisor de clock for 1, e o registrador de comparação A for carregado com o
valor C, a contagem com CTC1 setado fica:
... | C-2 | C-1 | C | 0 | 1 | ...
Se o divisor for configurado para 8, a contagem será:
... | C-1, C-1, C-1, C-1, C-1, C-1, C-1, C-1 | C, 0, 0, 0, 0, 0, 0, 0 | ...
No modo PWM, este bit não tem função.
•
Bits 2,1,0 – CS12, CS11, CS10: Clock Select1, bit 2,1 and 0 –
Os bits 2, 1 e 0 da Seleção de Clock definem a fonte de clock do
Timer/Counter0, conforme a tabela 15-8.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
161
Microcontrolador AT90S8515
Tabela 15-8:
A condição de Stop desabilita o Timer/Counter1. As razões de CK são
obtidas diretamente do clock do oscilador. Se o pino externo é usado com
entrada de clock do Timer/Counter1, transições em PB1/(T1) irão ser contadas
mesmo que o pino seja configurado como saída.
Temporizador/Contador1 – TCNT1H e TCNT1L
Este registrador de 16 bits é o Timer/Counter1. Para assegurar que
ambos os bytes alto e baixo sejam lidos ou escritos simultaneamente pela
CPU, o acesso a esses registradores é feito através de um registrador
temporário de 8 bits (TEMP).
•
Escrita no TCNT1 Timer/Counter1 – Quando a CPU escreve no byte alto
TCNT1H, o dado a ser escrito é colocado no registrador TEMP. Depois,
quando a CPU escreve o byte baixo TCNT1L, este byte é combinado com o
byte do registrador TEMP e todos os 16 bits são escritos simultaneamente
no registrador TCNT1 Timer/Counter1. Dessa forma, o byte alto TCNT1H
deve ser acessado primeiro para uma escrita completa de 16 bits.
•
Leitura do TCNT1 Timer/Counter1 – Quando a CPU lê o byte baixo
TCNT1L, o dado do byte baixo TCNT1L é enviado para a CPU e o dado do
byte alto TCNT1H é colocado no registrador TEMP. Quando a CPU lê os
dados do byte alto TCNT1H, a CPU recebe os dados do registrador TEMP.
Dessa forma, o byte baixo TCNT1L deve ser acessado primeiro para uma
leitura completa de 16 bits.
O Timer/Counter1 é um contador ascendente/descendente (no modo
PWM) com acesso para leitura e escrita. Se o Timer/Counter1 é escrito e uma
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
162
Microcontrolador AT90S8515
fonte de clock é selecionada, o Timer/Counter1 continua contando no ciclo de
clock posterior à escrita do valor.
Registrador de Saída de Comparação do Temporizador/Contador1 –
OCR1AH e OCR1AL
Registrador de Saída de Comparação do Temporizador/Contador1 –
OCR1BH e OCR1BL
Os registradores de comparação são todos de 16 bits com acessos para
leitura ou escrita. Os registradores de comparação do Timer/Counter1 contêm
os valores a serem comparados continuamente com o valor do Timer/Counter1.
As ações que serão executadas quando o valor de comparação for igual ao
valor do Timer/Counter1 estão especificadas no registrador de controle e status
do Timer/Counter1.
O evento de igualdade irá setar o flag de interrupção de comparação no
ciclo de clock seguinte ao evento da comparação.
Os registradores de comparação – OCR1A e OCR1B – são
registradores de 16 bits. Para assegurar que ambos os bytes alto e baixo sejam
lidos ou escritos simultaneamente pela CPU, o acesso a esses registradores é
feito através de um registrador temporário de 8 bits (TEMP).
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
163
Microcontrolador AT90S8515
Registrador de Captura de Entrada do Temporizador/Contador1 – ICR1H e
ICR1L
O registrador de captura de entrada é um registrador de 16 bits com
acesso somente de leitura.
Quando uma transição de subida ou descida (de acordo com a
configuração de transição para captura – ICES1) ocorre no pino de captura
(ICP), o valor do Timer/Counter1 é transferido para o registrador de captura –
ICR1. Ao mesmo tempo, o flag de captura – ICF1 – é setado
O registrador de captura – ICR1 – é registrador de 16 bits. Para
assegurar que ambos os bytes alto e baixo sejam lidos simultaneamente pela
CPU, o acesso a esse registrador é feito através de um registrador temporário
de 8 bits (TEMP).
Temporizador/Contador1 no modo PWM
Quando o modo PWM é selecionado, o Timer/Counter1, o registrador de
comparação 1A – OCR1A e o registrador de comparação 1B – OCR1B formam
um duplo PWM de 8, 9 ou 10 bits com saídas nos pinos PD5 (OC1A) e OC1B.
O Timer/Counter1 atua com um contador ascendente/descendente que conta
de $0000 até TOP e retorna de TOP até $0000, repetindo o ciclo.
Quando o valor do Timer/Counter1 for igual ao conteúdo de 10 bits do
registrador OCR1A ou OCR1B, os pinos PD5 (OC1A) / OC1B serão setados ou
zerados de acordo com as configurações dos bits COM1A1/COM1A0 ou
COM1B1/COM1B0 no registrador de Controle do Timer/Counter1 TCCR1A.
A tabela 15-9 mostra os valores de TOP (valores máximos) do timer e da
freqüência do PWM.
Tabela 15-9:
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
164
Microcontrolador AT90S8515
A tabela 15-10 mostra os bits de controle usados no modo de
comparação1 e no modo PWM.
Tabela 15-10:
Quando OCR1 contêm $0000 ou TOP, as saídas OCR1A/OCR1B são
atualizadas para BAIXO ou ALTO na comparação seguinte, de acordo com as
configurações dos bits COM1A1/COM1A0 ou COM1B1/COM1B0.
A tabela 15-11 mostra a qual a saída PWM para OCR1X = $0000 or
TOP.
Tabela 15-11:
No modo PWM, o flag de overflow do Timer/Counter1, TOV1, é setado
quando o contador chega a $0000. A interrupção por overflow do
Timer/Counter1 é executada quando o bit de overflow do Timer/Counter1
(TOV1) é setado e os bits de habilitação de interrupção por overflow do
Timer/Counter1 e de interrupção global estejam setados. Isso também se
aplica para os flags e interrupções de comparação do Timer/Counter1.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
165
Microcontrolador AT90S8515
15.10- Watchdog Timer
O Watchdog Timer utiliza um sinal de clock vindo de um oscilador
interno separado de 1 MHz. Essa é a freqüência típica para uma tensão de
alimentação (VCC) de 5 V. O tempo de reset do Watchdog Timer é configurado
por um prescaler. A instrução WDR – Watchdog Reset – reinicia o Watchdog
Timer. Até oito períodos diferentes de clock podem ser selecionados para
determinar o período de reset do Watchdog Timer. Se esse período expira sem
que haja um reset do Watchdog, o AT90S8515 é resetado e o vetor de reset é
executado.
Registrador de Controle do Watchdog Timer – WDTCR
• Bits 7..5 - Res: Reserved bits –
Esses bits são reservados no AT90S8515 e sempre serão lidos como zero.
• Bit 4 - WDTOE: Watch Dog Turn-Off Enable –
Esse bit deve ser setado quando o bit WDE for zerado. Caso contrário, o
watchdog não será desabilitado. Uma vez setado, o hardware irá zerar esse bit
depois de quatro ciclos de clock. Esse bit é usado para se evitar a desabilitação
acidental do Watchdog Timer.
• Bit 3 - WDE: Watch Dog Enable –
Quando o bit WDE for setado, o Watchdog Timer é habilitado, e se o bit WDE
for zerado, o Watchdog Timer é desabilitado. O bit WDE só pode ser zerado se
o bit WDTOE for setado. O procedimento para desabilitar o Watchdog Timer é
mostrado a seguir:
1. Na mesma operação, escrever um UM lógico em WDTOE e WDE. O UM
lógico deve ser escrito em WDE mesmo que o bit esteja setado para iniciar
a operação de desabilitação do Watchdog Timer.
2. Durante os próximos quatro ciclos de clock, escrever um ZERO lógico em
WDE. Isso desabilita o Watchdog Timer.
Bits 2..0 - WDP2, WDP1, WDP0: Watch Dog Timer Prescaler 2, 1 and 0 –
Os bits WDP2, WDP1 e WDP0 determinam qual a divisão de clock que será
usada quando o Watchdog Timer estiver habilitado. Os diferentes valores de
prescaler e os períodos de tempo são mostrados na tabela 15-12:
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
166
Microcontrolador AT90S8515
Tabela 15-12:
A instrução WDR – Watchdog Reset – sempre deve ser executada antes
que o Watchdog Timer seja habilitado. Isso assegura que o período de reset
esteja de acordo com o período que foi configurado. Se o Watchdog Timer for
habilitado sem um reset, ele pode não começar a contar do valor zero.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
167
Microcontrolador AT90S8515
15.11- Acesso para Leitura/Escrita na EEPROM
Os registradores de acesso à EEPROM estão disponíveis na memória
de I/O. O tempo de acesso para escrita é de 2,5 a 4 ms, dependendo da tensão
de alimentação (VCC). Se o programa contém dados que serão escrita na
EEPROM, algumas precauções devem ser tomadas.
Em fontes de alimentação filtradas, a tensão de alimentação (VCC)
demora um certo tempo para estabilizar. Isso pode fazer com que o dispositivo
permaneça funcionando com tensão menores do que a tensão especificada
como mínima para o clock usado. Nessas condições, a CPU pode executar
saltos (jumps) no programa e eventualmente executar uma rotina de escrita na
EEPROM.
Para garantir a integridade da EEPROM, um circuito externo de reset
(detector de sub-tensão) deve ser usado. Um procedimento específico de
escrita na EEPROM deve ser seguido para prevenir escritas errôneas. Quando
a EEPROM é acessada para leitura ou escrita, a CPU é parada por dois ciclos
de clock antes da próxima instrução ser executada.
Registrador de Endereços da EEPROM – EEARH e EEARL
Os registradores de endereços da EEPROM – EEARH e EEARL
especificam qual o endereço a ser acessado na EEPROM (o AT90S8515
possui 512 bytes de EEPROM). Os 512 bytes são acessados de maneira
linear.
Registrador de Dados da EEPROM – EEDR
• Bits 7..0 - EEDR7..0: EEPROM Data –
Para operações de escrita na EEPROM, o registrador EEDR contém o dado a
ser escrito na EEPROM no endereço dado pelo registrador EEAR. Para
operações de leitura, o registrador EEDR contém o dado lido da EEPROM no
endereço dado pelo registrador EEAR.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
168
Microcontrolador AT90S8515
Registrador de Controle da EEPROM – EECR –
• Bit 7..3 - Res: Reserved bits –
Esses bits são reservados no AT90S8515 e sempre serão lidos como zero.
• Bit 2 - EEMWE: EEPROM Master Write Enable –
Se bit EEMWE estiver setado, setando o bit EEWE uma escrita é executada na
EEPROM no endereço selecionado. Se o bit EEMWE estiver zerado, setar o bit
EEWE não terá nenhum efeito. Quando o bit EEMWE for setado por software,
o hardware zera o bit depois de quatro ciclos de clock.
• Bit 1 - EEWE: EEPROM Write Enable –
O bit EEWE é um sinal de habilitação da escrita na EEPROM. Quando um
endereço e um dado estão corretamente colocados, o bit EEWE deve ser
setado para que o valor seja escrito na EEPROM. O bit EEMWE deve estar
setado quando o UM lógico for escrito em EEWE, caso contrário, a escrita na
EEPROM não ocorrerá. O seguinte procedimento deve ser seguindo para a
execução de uma escrita na EEPROM:
1. Esperar até que EEWE seja zero.
2. Escrever o novo endereço da EEPROM nos registradores EEARL e
EEARH.
3. Escrever o dado a ser escrito no registrador EEDR.
4. Escrever UM lógico no bit EEMWE no registrador EECR.
5. Durante os próximos quatro ciclos de clock depois de setar o bit EEMWE,
escrever UM lógico no bit EECR.
Passado o tempo de acesso à escrita (tipicamente 2,5 ms com VCC = 5V e 4
ms com VCC = 2,7V), o bit EEWE é zerado pelo hardware. O software pode
esperar este bit se tornar zero antes de escrever o próximo byte. Quando o bit
EEWE for setado, a CPU é parada por dois ciclos antes da próxima instrução
ser executada.
Importante: Uma interrupção dos passos 4 e 5 gerará uma falha no ciclo de
escrita. Se uma rotina de interrupção que acessa a EEPROM é interrompida
por outro acesso à EEPROM, os registradores EEAR e EEDR serão
modificados, causando uma falha no acesso que foi interrompido. É
recomendado zerar o bit I (Global Interrupt Flag – SREG) durante os quatro
últimos passos para evitar problemas no acesso.
• Bit 0 - EERE: EEPROM Read Enable –
O bit EERE é um sinal de habilitação para leitura da EEPROM. Quando o
endereço correto foi colocado no registrador EEAR, o bit EERE deve ser
setado. Quando o bit EERE for zerado pelo hardware, o dado lido está
disponível no registrador EERE. O acesso para leitura da EEPROM é de
apenas uma instrução e não é necessário verificar o bit EERE. Quando o bit
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
169
Microcontrolador AT90S8515
EERE estiver setado, a CPU é parada por dois ciclos antes da execução da
próxima instrução. O software poderia verificar o bit EEWE antes de iniciar uma
operação de leitura. Se a operação de escrita estiver sendo executada quando
um novo dado ou endereço é escrito nos registradores de I/O da EEPROM, a
operação de escrita será interrompida e o resultado é imprevisível.
Prevenção de Perdas de Dados na EEPROM
Em condições de baixa tensão de alimentação (VCC), dados na
EEPROM podem ser perdidos porque a tensão de alimentação é muito baixa
para a CPU e para a EEPROM operarem de maneira correta.
A perda de dados da EEPROM pode ocorrer de duas maneiras quando a
tensão está muito baixa.
Primeiro, a seqüência de escrita na EEPROM requer uma tensão
mínima para trabalhar corretamente. Segundo, a CPU pode executar
instruções de maneira incorreta se a tensão de alimentação for muito baixa.
Algumas recomendações para se evitar a perda de dados da EEPROM:
1. Manter o RESET do AVR ativo (nível baixo) quando a tensão de
alimentação estiver muito baixa. Isso pode ser feito com um circuito externo
de reset (Brown-Out Detector – BOD).
2. Manter o AVR em Power Down Mode quando a tensão de alimentação
estiver muito baixa. Isso evita que a CPU decodifique e execute instruções,
protegendo efetivamente os registradores da EEPROM contra escritas.
3. Armazenar constantes na memória Flash se o software não precisar alterar
esse dado. A memória Flash não pode ser modificada pela CPU e, por isso,
o dado nunca será perdido.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
170
Microcontrolador AT90S8515
15.12- UART
O AT90S8515 possui um Receptor e Transmissor Assíncrono Universal
(UART) full duplex (com registradores de transmissão e recepção separados).
As principais características são:
• Gerador de baud rate (taxa de transmissão/recepção) pode gerar várias
taxas (bps).
• Altas taxas de baud com cristais de baixa freqüência.
• 8 ou 9 bits de dados.
• Filtro contra ruído.
• Detecção de Overrun (perda de dado).
• Detecção de Framing Error (falha na detecção do STOP bit).
• Detecção de Falso START bit.
• Três interrupções separadas: TX Complete (transmissão completada), TX
Data Register Empty (registrador de dados vazio) e RX Complete (recepção
completada).
Transmissão de Dados
A transmissão de dados é iniciada pela escrita do dado a ser transmitido
no registrador de dados da UART – UDR.
Se o bit 10 (11) do registrador de deslocamento do transmissor tiver sido
transmitido, um novo dado é transferido do UDR para o registrador de
deslocamento. Nesse momento, o bit UDRE (registrador de dados da UART
vazio) no registrador de status da UART – USR, é setado.
Quando esse bit for UM, o UDR da UART está pronto para receber o
próximo caracter. No momento que um dado é transferido do UDR para o
registrador de deslocamento de 10 (11) bits, o bit 0 do registrador de
deslocamento é zerado (bit START) e o bit 9 ou 10 é setado (bit STOP). Se o
dado possui 9 bits (o bit CHR9 no registrador de controle da UART, UCR, é
setado), o bit TXB8 no UCR é transferido para o bit 9 do registrador de
deslocamento do transmissor.
Depois da transferência do UDR para o registrador de deslocamento, o
bit START é transmitido na freqüência de clock do Baud Rate (taxa de
transmissão) pelo pino TXD. Em seguida, o dado é transmitido bit a bit,
começando pelo menos significativo (LSB). Depois do bit de STOP ser
transmitido, o registrador de deslocamento é carregado se qualquer dado tenha
sido escrito no UDR durante a transmissão. Durante a carga, o bit UDRE é
setado. Se não existir nenhum dado no UDR a ser enviado, o UDRE
permanecerá em UM até que UDR contenha um novo dado. Se nenhum dado
foi escrito, e o bit de STOP está presente no pino TXD por um bit de largura, o
flag TX Complete, TXC, no USR é setado.
O bit TXEN no UCR habilita o transmissor da UART quando estiver
setado. Se esse bit for zerado, o pino PD1 pode ser usado com um pino de I/O.
Quando o bit TXEN é setado, o transmissor da UART será conectada a PD1,
que será forçada a ser saída independente da configuração do bit 1 do
registrador DDRD (registrador de direção do PORT D).
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
171
Microcontrolador AT90S8515
Recepção de Dados
O circuito lógico do receptor amostra o pino RXD numa freqüência 16
vezes maior do que a taxa de transmissão. Enquanto a linha é inativa, uma
única amostra em nível ZERO é interpretada como sendo uma transição de
descida do bit START e a seqüência de detecção do bit START é iniciada.
Depois da transição de descida, o receptor amostra o pino RXD nas amostras
8, 9 e 10. Se duas ou mais amostras tiverem nível lógico UM, o bit START é
considerado um ruído e o receptor volta a esperar uma nova transição de
descida.
Entretanto, se um bit de START válido é detectado, a amostragem dos
bits seguintes é feita também nas amostras 8, 9 e 10. O valor lógico encontrado
em pelo menos duas das três amostras é considerado como o valor do bit.
Todos os bits são deslocados para o registrador de deslocamento da maneira
como eles são amostrados.
Fig. 15-9: Amostragem dos dados recebidos pela UART
Quando o bit STOP entra no receptor, a maioria de três amostras deve
ser UM para que o bit de STOP seja aceito. Se dois ou mais amostras são
ZERO, o flag Framing Error (FE) no registrador de Status da UART (USR) é
setado. Antes da leitura de UDR, o usuário deve verificar sempre o bit FE para
detectar o Framing Error.
Mesmo que o bit de STOP não tenha sido detectado no fim da recepção
de um dado, esse dado é transferido para o UDR e o flag RXC no USR é
setado. Na realidade, UDR corresponde fisicamente a dois registradores, um
para transmissão e outro para recepção de dados. Quando UDR é lido, o
registrador de recepção de dados é acessado e quando é escrito, o registrador
de transmissão de dados é acessado.
Se a palavra de dados possui 9 bits (o bit CHR9 no registrador de
Controle da UART, UCR, é setado), o bit RXB8 no UCR é atualizado com o bit
9 do registrador de deslocamento quando o dado é transferido para UDR.
Se UDR não foi lido e um novo dado foi recebido, o flag Overrun (OR) é
setado. Isso significa que o último dado deslocado para o registrador de
deslocamento não pôde ser transferido para UDR e será perdido. O bit OR é
mantido até que um dado válido no UDR seja lido
Quando o bit RXEN no registrador UCR é zerado, o receptor é
desabilitado. Isso significa que o pino PD0 pode ser usado como um pino de
I/O. Quando o bit RXEN é setado, o receptor da UART é conectado a PD0, que
é forçado a ser uma entrada, independente da configuração do bit 0 do
registrador DDRD (registrador de direção do PORT D). Se PD0 é forçado como
entrada pela UART, o bit 0 de PORTD pode ainda ser usado para controlar o
resistor de pull-up no pino.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
172
Microcontrolador AT90S8515
Se o bit CHR9 no registrador UCR é setado, os caracteres transmitidos e
recebidos tem 9 bits mais os bits de START e STOP. O 9º bit a ser transmitido
é o bit TXB8 no registrador UCR. O 9º bit recebido é o bit RXB8 no registrador
UCR.
Controle da UART
Registrador de Dados da UART – UDR
O registrador UDR fisicamente corresponde a dois registradores
separados que compartilham o mesmo endereço de I/O. Ao escrever no
registrador, o registrador de transmissão da UART é escrito. Ao ler do
registrador, o registrador de recepção da UART é lida.
Registrador de Status da UART – USR
O USR é um registrador que contém informações de status da UART.
•
Bit 7 – RXC: UART Receive Complete –
Esse bit é setado quando o dado recebido é transferido do registrador de
deslocamento para UDR. Esse bit é setado mesmo que ocorra um framing
error. Se o bit RXCIE no UCR estiver setado, a interrupção de recepção
completa da UART será executada se o bit RXC estiver setado. RXC é
zerado com a leitura de UDR.
•
Bit 6 – TXC: UART Transmit Complete –
Esse bit é setado quando um dado (incluindo o bit STOP) no registrador de
deslocamento foi transmitido e nenhum novo dado foi escrito no UDR.
Quando o bit TXCIE no UCR é setado, se o bit TXC é setado, uma
interrupção por transmissão completa na UART é executada. TXC é zerado
por hardware pela execução da rotina de tratamento da interrupção.
•
Bit 5 – UDRE: UART Data Register Empty –
Esse bit é setado quando um dado escrito no UDR é transferido para o
registrador de deslocamento do transmissor. Isso indica que o transmissor
está pronto para receber um novo caracter para transmissão. Quando o bit
UDRIE no UCR é setado, e o bit UDRE é setado, a interrupção por registro
de dados da UART vazio será executada. Quando uma interrupção ocorre,
a rotina de interrupção por registrador de dados da UART vazio deve
escrever no UDR para zerar o bit UDRE, caso contrário, uma nova
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
173
Microcontrolador AT90S8515
interrupção irá ocorrer quando a rotina de interrupção terminar. UDRE é
setado durante o reset para indicar que o transmissor está pronto.
•
Bit 4 – FE: Framing Error –
Esse bit é setado quando um Framing Error é detectado, ou seja, um bit de
STOP foi amostrado como ZERO. O bit FE é zerado quando o bit de STOP
de um dado é recebido como UM.
•
Bit 3 – OR: Overrun –
Esse bit é setado quando um Overrun é detectado, ou seja, quando o dado
no UDR não foi lido antes do próximo dado ter sido recebido no registrador
de deslocamento.
O bit OR é mantido até que um dado válido no UDR seja lido. O bit OR é
zerado quando um dado é recebido e transferido para UDR.
•
Bits 2..0 – Res: Reserved bits –
Esses bits são reservados no AT90S8515 e são sempre lidos como zero.
Registrador de Controle da UART – UCR
•
Bit 7 – RXCIE: RX Complete Interrupt Enable –
Quando esse bit é setado, se o bit RXC no USR é setado, a rotina de
interrupção por recepção completa será executada se as interrupções
estiverem habilitadas (bit I em SREG).
•
Bit 6 – TXCIE: TX Complete Interrupt Enable –
Quando esse bit é setado, se o bit TXC no USR é setado, a rotina de
interrupção por transmissão completa será executada se as interrupções
estiverem habilitadas (bit I em SREG).
•
Bit 5 – UDRIE: UART Data Register Empty Interrupt Enable –
Quando esse bit é setado, se o bit UDRE no USR é setado, a rotina de
interrupção por registrador de dados da UART vazio será executada se as
interrupções estiverem habilitadas (bit I em SREG).
•
Bit 4 – RXEN: Receiver Enable –
Quando setado, esse bit habilita o receptor da UART. Se o receptor estiver
desabilitado, os flags de status TXC, OR e FE não serão setados. Se esses
flags estiverem setados, desabilitar o RXEN não irá zerar esses bits.
•
Bit 3 – TXEN: Transmitter Enable –
Quando setado, esse bit habilita o transmissor da UART. Se o transmissor é
desabilitado durante a transmissão de um dado, a transmissão não é
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
174
Microcontrolador AT90S8515
desabilitada até que os dados no registrador de deslocamento e no UDR
tenham sido completamente transmitidos.
•
Bit 2 – CHR9: 9-bit Characters –
Quando CHR9 é setado, os dados transmitidos e recebidos possuem 9 bits
mais o bit de START e STOP. O 9º bit é lido e escrito nos bits RXB8 e TXB8
no UCR, respectivamente. O 9º bit de dado pode ser usado como um bit de
STOP extra ou um bit de Paridade.
•
Bit 1 – RXB8: Receive Data Bit 8 –
Quando o bit CHR9 está setado, RXB8 é o 9º bit do dado recebido.
•
Bit 0 – TXB8: Transmit Data Bit 8 –
Quando o bit CHR9 está setado, TXB8 é o 9º bit do dado a ser transmitido.
Gerador de BAUD Rate
O gerador de baud rate é um divisor de freqüência que gera taxas de
transmissão de acordo com a seguinte equação:
Fig. 15-10: Equação que relaciona a freqüência do oscilador com o baud rate
Registrador de BAUD Rate da UART - UBRR
O registrador UBRR é um registrador de leitura/escrita que especifica o
baud rate de acordo com a equação anterior.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
175
Microcontrolador AT90S8515
15.13- Comparador Analógico
O comparador analógico compara tensões da entrada positiva PB2
(AIN0) e da entrada negativa PB3 (AIN1). Quando a tensão na entrada positiva
PB2 (AIN0) é maior do que a tensão na entrada negativa PB3 (AIN1), a saída
do comparador analógico, ACO, é setado. A saída do comparador pode ser
usada para disparar a função de entrada de captura do Timer/Counter1. O
comparador também pode disparar uma interrupção separada, exclusiva para o
comparador analógico. O usuário pode selecionar a ocorrência da interrupção
na borda de subida, descida ou inversão da saída do comparador.
Registrador de Controle e Status do Comparador Analógico – ACSR
•
Bit 7 – ACD: Analog Comparator Disable –
Quando esse bit é setado, o comparador analógico é desligado. Caso
contrário, o comparador analógico ficará ligado.
•
Bit 6 – Res: Reserved bit –
Esse bit é reservado no AT90S8515 e é sempre lido como zero.
•
Bit 5 – ACO: Analog Comparator Output –
O bit ACO está diretamente conectado à saída do comparador analógico.
•
Bit 4 – ACI: Analog Comparator Interrupt Flag –
Esse bit é setado quando um evento definido por ACIS1 e ACIS0 ocorre na
saída do comparador. A rotina de interrupção do comparador analógico é
executada se o bit ACIE está setado e o bit I no SREG está setado.
•
Bit 3 – ACIE: Analog Comparator Interrupt Enable –
Quando o bit ACIE é setado e o bit I no registrador de Status (SREG) está
setado, a interrupção do comparador analógico está ativada. Se for zerado,
a interrupção será desabilitada.
•
Bit 2 – ACIC: Analog Comparator Input Capture Enable –
Se esse bit for setado, isso habilita a função de captura do Timer/Counter1
a ser disparada pelo comparador analógico. Neste caso, a saída do
comparador é conectada diretamente na lógica da entrada de captura,
fazendo com que o comparador utilize o redutor de ruído e as
características de seleção de transição da interrupção de captura do
Timer/Counter1. Se esse bit for zerado, a conexão entre o comparador
analógico e a função de entrada de captura não será feita.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
176
Microcontrolador AT90S8515
•
Bits 1,0 – ACIS1, ACIS0: Analog Comparator Interrupt Mode Select –
Esses bits determinam qual evento no comparador irá disparar a
interrupção do comparador analógico. As configurações de ACIS1/ACIS0
são mostradas na tabela 15-12.
Tabela 15-12:
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
177
Microcontrolador AT90S8515
15.14- Interface com SRAM Externa
•
•
•
•
A interface com uma SRAM consiste:
Port A: Barramento multiplexado entre a parte baixa do barramento de
endereço e o barramento de dados
Port C: Parte alta do barramento de endereços
Pino ALE: Address latch enable – Habilitação do Latch de Endereços
Pinos RD e WR : Sinais de controle de Leitura e Escrita
A SRAM de dados externa é habilitada quando o bit SRE – bit de
habilitação da SRAM externa no registrador de controle da MCU, o MCUCR – é
setado e as definições de direção do registrador DDRA serão anuladas.
Quando o bit SRE é zerado, a SRAM externa é desabilitada e as configurações
de direção dos pinos podem ser usadas.
Quando ALE vai de ALTO para BAIXO, um endereço válido está no Port
A. ALE se mantém em BAIXO durante a transferência de dados. RD e WR são
ativados apenas durante o acesso à SRAM externa. A figura abaixo mostra
como conectar uma SRAM externa usando um AVR e 8 latches que são
habilitados com G em ALTO. Tipicamente, a SRAM externa é acessada em
três ciclos. Se um estado de espera (WAIT STATE) for necessário, o bit SRW
no registrador MCUCR deve ser setado.
Note que o PORTA só é um barramento de dados em um ciclo. Assim
que o acesso aos dados termina, PORTA volta a ser o barramento baixo de
endereços.
Fig. 15-11: Conexão de uma SRAM Externa com um AVR
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
178
Microcontrolador AT90S8515
15.15- Portas de Entrada/Saída
Todos os ports tem a funcionalidade de Ler-Modificar-Escrever como um
port digital I/O. Isso significa que a direção de um pino do port pode ser trocada
sem que a direção de outro pino seja trocada com as instruções SBI e CBI. O
mesmo se aplica para a troca do valor do drive (se configurado como saída) ou
habilitando/desabilitando o resistor de pull-up (se configurado como entrada).
Port A
O port A é um port bidirecional de 8 bits. Três endereços na memória de
I/O são usados para alocar o Port A, um para o registrador de dados – PORTA,
$1B($3B), registrador de direção dos dados – DDRA, $1A($3A) e os pinos de
entrada do port A – PINA, $19($39). O endereço dos pinos de entrada do port
A é apenas de leitura, enquanto o registrador de dados e de direção de dados
são de leitura/escrita.
Todos os pinos do port possuem resistores de pull-up individualmente
selecionáveis. Os buffers de saída do port A podem fornecer 20 mA e assim
acionar diretamente display de LED. Quando os pinos PA0 até PA7 são usados
como entradas e são externamente colocadas em ZERO, elas se tornarão
fontes de corrente se o resistor de pull-up interno está ativado.
Os pinos do port A podem ser usados para o acesso à uma SRAM de
dados externa. O port A pode ser configurado para ser um barramento
multiplexado entre a parte baixa dos endereços e dados durante o acesso à
memória de dados externa. Nesse modo, o port A possui resistores de pull-up
internos.
Quando o port A é usado para a acessar a SRAM externa pelo bit SRE –
External SRAM Enable – no registrador MCUCR – registrador de controle da
MCU, a configuração dos bits no registrador de direção de dados – DDRA – é
anulada.
Registrador de Dados do Port A – PORTA
Registrador de Direção de Dados do Port A – DDRA
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
179
Microcontrolador AT90S8515
Endereço dos Pinos de Entrada do Port A – PINA
O endereço dos pinos do port A – PINA – não é um registrador e esse
endereço habilita o acesso ao valor físico em cada pino do port A. Ao ler o
PORTA, o latch de dados do port A é lido e ao ler PINA, o valor lógico nos
pinos é lido.
Port A como Entrada/Saída Digital
PAn, pino de I/O: o bit DDAn no registrador DDRA seleciona a direção
desse pino. Se DDAn for UM, PAn é configurado como um pino de saída. Se
DDAn for ZERO, PAn é configurado como um pino de entrada. Se PORTAn for
UM quando o pino foi configurado como uma entrada, o resistor de pull-up
MOS é ativado. Para desligar o resistor de pull-up, o PORTAn deve ser zerado
ou o pino deve ser configurado como uma saída. Os pinos do port A estarão
em tri-state quando um reset ocorre, sempre se o clock não está ativo.
A tabela 15-13 mostra a configuração de DDAn e PORTAn.
Tabela 15-13:
Port B
O port B é um port bidirecional de 8 bits. Três endereços na memória de
I/O são usados para alocar o Port B, um para o registrador de dados – PORTB,
$18($38), registrador de direção dos dados – DDRB, $17($37) e os pinos de
entrada do port B – PINB, $16($36). O endereço dos pinos de entrada do port
B é apenas de leitura, enquanto o registrador de dados e de direção de dados
são de leitura/escrita.
Todos os pinos do port possuem resistores de pull-up individualmente
selecionáveis. Os buffers de saída do port B podem fornecer 20 mA e assim
acionar diretamente display de LED. Quando os pinos PB0 até PB7 são usados
como entradas e são externamente colocadas em ZERO, elas se tornarão
fontes de corrente se o resistor de pull-up interno está ativado.
A tabela 15-14 mostra as funções alternativas dos pinos do port B.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
180
Microcontrolador AT90S8515
Tabela 15-14:
Quando os pinos são usados com outra função, os registradores DDRB
e PORTB deverão ser configurados conforme a descrição da função.
Registrador de Dados do Port B – PORTB
Registrador de Direção de Dados do Port B – DDRB
Endereço dos Pinos de Entrada do Port B – PINB
O endereço dos pinos do port B – PINB – não é um registrador e esse
endereço habilita o acesso ao valor físico em cada pino do port B. Ao ler o
PORTB, o latch de dados do port B é lido e ao ler PINB, o valor lógico nos
pinos é lido.
Port B como Entrada/Saída Digital
PBn, pino de I/O: o bit DDBn no registrador DDRB seleciona a direção
desse pino. Se DDBn for UM, PBn é configurado como um pino de saída. Se
DDBn for ZERO, PBn é configurado como um pino de entrada. Se PORTBn for
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
181
Microcontrolador AT90S8515
UM quando o pino foi configurado como uma entrada, o resistor de pull-up
MOS é ativado. Para desligar o resistor de pull-up, o PORTBn deve ser zerado
ou o pino deve ser configurado como uma saída. Os pinos do port B estarão
em tri-state quando um reset ocorre, sempre se o clock não está ativo.
A tabela 15-15 mostra a configuração de DDBn e PORTBn.
Tabela 15-15:
Outras Funções do Port B
As funções alternativas dos pinos do port B são as seguintes:
•
SCK – Port B, Bit 7 –
SCK: pino de saída de clock no modo master, pino de entrada de clock no
modo slave da SPI. Quando a SPI é habilitada como slave, esse pino é
configurado como uma entrada, anulando as definições de DDB7. Quando a
SPI é habilitada como master, a direção dos dados desse pino é controlada
por DDB7. Quando o pino é forçado a ser uma entrada, o resistor de pull-up
é controlado pelo bit PORTB7.
•
MISO – Port B, Bit 6 –
MISO: pino de entrada de dados no modo master, pino de saída de dados
no modo slave da SPI. Quando a SPI é habilitada como master, esse pino é
configurado como entrada, anulando as definições de DDB6. Quando a SPI
é habilitada como slave, a direção dos dados desse pino é controlada por
DDB6. Quando o pino é forçado a ser uma entrada, o resistor de pull-up é
controlado pelo bit PORTB6.
•
MOSI – Port B, Bit 5 –]
MOSI: pino de saída de dados no modo master, pino de entrada de dados
no modo slave da SPI. Quando a SPI é habilitada como slave, esse pino é
configurado como uma entrada, anulando as definições de DDB5. Quando a
SPI é habilitada com o master, a direção dos dados desse pino é controlada
por DDB5. Quando o pino é forçado a ser uma entrada, o resistor de pull-up
é controlado pelo bit PORTB5.
•
SS – Port B, Bit 4 –
SS : pino de entrada de seleção do slave. Quando a SPI é habilitada como
slave, esse pino é configurado como uma entrada, anulando as definições
de DDB4. Como slave, a SPI é habilitada quando esse pino é colocado em
BAIXO. Quando a SPI for habilitada como master, a direção dos dados
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
182
Microcontrolador AT90S8515
desse pino é controlada por DDB4. Quando o pino é forçado a ser uma
entrada, o resistor de pull-up é controlado pelo bit PORTB4.
•
AIN1 – Port B, Bit 3 –
AIN1: entrada negativa do comparador analógico. Quando esse pino é
configurado como uma entrada (DDR3 é zerado) e com o resistor MOS de
pull-up desligado (PB3 é zerado), esse pino também é usado como a
entrada negativa do comparador analógico.
•
AIN0 – Port B, Bit 2 –
AIN0: entrada positiva do comparador analógico. Quando esse pino é
configurado como uma entrada (DDR2 é zerado) e com o resistor MOS de
pull-up desligado (PB2 é zerado), esse pino também é usado como a
entrada posiva do comparador analógico.
•
T1 – Port B, Bit 1 –
T1: entrada da fonte de clock do Timer/Counter1.
•
T0 – Port B, Bit 0 –
T0: entrada da fonte de clock do Timer/Counter0.
Port C
O port C é um port bidirecional de 8 bits. Três endereços na memória de
I/O são usados para alocar o Port C, um para o registrador de dados – PORTC,
$15($35), registrador de direção dos dados – DDRC, $14($34) e os pinos de
entrada do port C – PINC, $13($33). O endereço dos pinos de entrada do port
C é apenas de leitura, enquanto o registrador de dados e de direção de dados
são de leitura/escrita.
Todos os pinos do port possuem resistores de pull-up individualmente
selecionáveis. Os buffers de saída do port C podem fornecer 20 mA e assim
acionar diretamente display de LED. Quando os pinos PC0 até PC7 são
usados como entradas e são externamente colocadas em ZERO, elas se
tornarão fontes de corrente se o resistor de pull-up interno está ativado.
Os pinos do port C podem ser usados para o acesso à uma SRAM de
dados externa. O port C pode ser configurado para ser o barramento da parte
alta dos endereços durante o acesso à memória de dados externa.
Quando o port C é usado para a acessar a SRAM externa pelo bit SRE –
External SRAM Enable – no registrador MCUCR – registrador de controle da
MCU, a configuração dos bits no registrador de direção de dados – DDRC – é
anulada.
Registrador de Dados do Port C – PORTC
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
183
Microcontrolador AT90S8515
Registrador de Direção de Dados do Port C – DDRC
Endereço dos Pinos de Entrada do Port C – PINC
O endereço dos pinos do port C – PINC – não é um registrador e esse
endereço habilita o acesso ao valor físico em cada pino do port C. Ao ler o
PORTC, o latch de dados do port C é lido e ao ler PINC, o valor lógico nos
pinos é lido.
Port C como Entrada/Saída Digital
PCn, pino de I/O: o bit DDCn no registrador DDRC seleciona a direção
desse pino. Se DDCn for UM, PCn é configurado como um pino de saída. Se
DDCn for ZERO, PCn é configurado como um pino de entrada. Se PORTCn for
UM quando o pino foi configurado como uma entrada, o resistor de pull-up
MOS é ativado. Para desligar o resistor de pull-up, o PORTCn deve ser zerado
ou o pino deve ser configurado como uma saída. Os pinos do port C estarão
em tri-state quando um reset ocorre, sempre se o clock não está ativo.
A tabela 15-16 mostra a configuração de DDCn e PORTCn.
Tabela 15-16:
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
184
Microcontrolador AT90S8515
Port D
O port D é um port bidirecional de 8 bits. Três endereços na memória de
I/O são usados para alocar o Port D, um para o registrador de dados – PORTD,
$12($32), registrador de direção dos dados – DDRD, $11($31) e os pinos de
entrada do port D – PIND, $10($30). O endereço dos pinos de entrada do port
D é apenas de leitura, enquanto o registrador de dados e de direção de dados
são de leitura/escrita.
Todos os pinos do port possuem resistores de pull-up individualmente
selecionáveis. Os buffers de saída do port D podem fornecer 20 mA e assim
acionar diretamente display de LED. Quando os pinos PD0 até PD7 são
usados como entradas e são externamente colocadas em ZERO, elas se
tornarão fontes de corrente se o resistor de pull-up interno está ativado.
A tabela 15-17 mostra as funções alternativas dos pinos do port D.
Tabela 15-17:
Registrador de Dados do Port D – PORTD
Registrador de Direção de Dados do Port D – DDRD
Endereço dos Pinos de Entrada do Port D – PIND
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
185
Microcontrolador AT90S8515
O endereço dos pinos do port D – PIND – não é um registrador e esse
endereço habilita o acesso ao valor físico em cada pino do port D. Ao ler o
PORTD, o latch de dados do port D é lido e ao ler PIND, o valor lógico nos
pinos é lido.
Port D como Entrada/Saída Digital
PDn, pino de I/O: o bit DDDn no registrador DDRD seleciona a direção
desse pino. Se DDDn for UM, PDn é configurado como um pino de saída. Se
DDDn for ZERO, PDn é configurado como um pino de entrada. Se PORTDn for
UM quando o pino foi configurado como uma entrada, o resistor de pull-up
MOS é ativado. Para desligar o resistor de pull-up, o PORTDn deve ser zerado
ou o pino deve ser configurado como uma saída. Os pinos do port D estarão
em tri-state quando um reset ocorre, sempre se o clock não está ativo.
A tabela 15-18 mostra a configuração de DDDn e PORTDn.
Tabela 15-18:
Outras Funções do Port D
•
RD – Port D, Bit 7 –
RD é o sinal de controle para leitura da memória de dados externa.
•
WR – Port D, Bit 6 –
WR é o sinal de controle para escrita da memória de dados externa.
•
OC1A – Port D, Bit 5 –
OC1A, saída de comparação do Timer/Counter1: o pino PD5 pode ser
usado como uma saída externa quando o valor de comparação é igual ao
Timer/Counter1. O pino PD5 deve ser configurado como uma saída (DDD5
deve ser setado).
•
INT1 – Port D, Bit 3 –
INT1, entrada de interrupção externa 1: o pino PD3 serve como entrada
para a interrupção externa 1 para a MCU.
•
INT0 – Port D, Bit 2 –
INT0, entrada de interrupção externa 0: o pino PD2 serve como entrada
para a interrupção externa 0 para a MCU.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
186
Microcontrolador AT90S8515
•
TXD – Port D, Bit 1 –
Transmissão de dados (pino de saída de dados da UART). Quando o
transmissor da UART está habilitado, esse pino é configurado como saída.
•
RXD – Port D, Bit 0 –
Recepção de dados (pino de entrada de dados da UART). Quando o
receptor da UART está habilitado, esse pino é configurado como entrada.
Quando a UART força esse pino ser uma entrada, um nível lógico UM em
PORTD0 irá acionar o resistor de pull-up interno.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
187
Guia para Uso do Assembler AVR
16. Guia para Uso do Assembler AVR
16.1- Introdução
O Assembler AVR converte um código fonte feito em assembly para um
código objeto que será utilizado em microcontroladores da família AT90S
Atmel. Esse código objeto gerado pode ser usado em um simulador ou
emulador (In-Circuit Emulator). O Assembler também gera um código objeto de
programação da memória de programa (FLASH) dos microcontroladores AVR.
16.2- Código Fonte do Assembler
O Assembler utiliza arquivos fonte que contém mnemônicos de
instruções, labels e diretivas. Os mnemônicos de instruções e as diretivas
necessitam de operados.
Cada linha de código é limitada em 120 caracteres. Cada linha pode ter
um label, que é uma seqûência de letras ou números terminada com “:”. Esses
labels são usados como “alvos” para instruções de pulo ou desvio ou como
nome de variáveis na memória de Programa ou na RAM.
Uma linha do código fonte pode ter as seguintes formas:
1. [label:] diretiva [operandos] [Comentários]
2. [label:] instruções [operandos] [Comentários]
3. Comentários
4. Linha em branco
Um comentário é feito da seguinte maneira:
; [texto]
Os itens colocados em colchetes [] são opcionais. O texto colocado entre
o delimitador de comentários (;) e o caracter fim de linha (EOL) é ignorado pelo
Assembler.
Exemplos:
label: .EQU var1=100
.EQU var2=200
; Faz var1 igual 100 (Diretiva)
; Faz var2 igual 200
test: rjmp test
; Linha comentada
; Outra linha comentada
; Loop Infinito (Instrução)
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
188
Guia para Uso do Assembler AVR
16.3- Registradores da Memória de I/O do AT90S8515
Tabela 16-1:
Endereço
Nome
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
$3F ($5F)
$3E ($5E)
$3D ($5D)
$3C ($5C)
$3B ($5B)
$3A ($5A)
$39 ($59)
$38 ($58)
$37 ($57)
$36 ($56)
$35 ($55)
$34 ($54)
$33 ($53)
$32 ($52)
...
$2F ($4F)
$2E ($4E)
$2D ($4D)
$2C ($4C)
$2B ($4B)
$2A ($4A)
$29 ($49)
$28 ($48)
...
$25 ($45)
$24 ($44)
...
$21 ($41)
$20 ($40)
$1F ($3F)
$1E ($3E)
$1D ($3D)
$1C ($3C)
$1B ($3B)
$1A ($3A)
$19 ($39)
$18 ($38)
$17 ($37)
$16 ($36)
$15 ($35)
$14 ($34)
$13 ($33)
$12 ($32)
$11 ($31)
$10 ($30)
$0F ($2F)
$0E ($2E)
$0D ($2D)
SREG
SPH
SPL
Reserved
GIMSK
GSER
TIMSK
TSER
Reserved
Reserved
MCUCR
Reserved
TCCR0
TCNT0
Reserved
TCCR1A
TCCR1B
TCNT1H
TCNT1L
OCR1AH
OCR1AL
OCR1BH
OCR1BL
Reserved
ICR1H
ICR1L
Reserved
WDTCR
Reserved
EEARH
EEARL
EEDR
EECR
PORTA
DDRA
PINA
PORTB
DDRB
PINB
PORTC
DDRC
PINC
PORTD
DDRD
PIND
SPDR
SPSR
SPCR
I
SP15
SP7
T
SP14
SP6
H
SP13
SP5
S
SP12
SP4
V
SP11
SP3
N
SP10
SP2
Z
SP9
SP1
C
SP8
SP0
INT1
INTF1
TOIE1
TOV1
INT0
INTF0
OCIE1A
OCF1A
OCIE1B
OCF1B
-
TICIE1
ICF1
-
TOIE0
TOV0
-
SRE
SRW
SE
SM
ISC11
ISC10
ISC01
ISC00
-
-
-
CS02
CS01
CS00
COM1A1
ICNC1
COM1A0
ICES1
Timer/Counter0 (8 Bit)
COM1B1 COM1B0
PWM11
CTC1
CS12
CS11
Timer/Counter1 - Counter Register High Byte
Timer/Counter1 - Counter Register Low Byte
Timer/Counter1 - Output Compare Register A High Byte
Timer/Counter1 - Output Compare Register A Low Byte
Timer/Counter1 - Output Compare Register B High Byte
Timer/Counter1 - Output Compare Register B Low Byte
PWM10
CS10
Timer/Counter1 - Input Capture Register High Byte
Timer/Counter1 - Input Capture Register Low Byte
-
-
-
-
PORTA7
DDA7
PINA7
PORTB7
DDB7
PINB7
PORTC7
DDC7
PINC7
PORTD7
DDD7
PIND7
PORTA6
DDA6
PINA6
PORTB6
DDB6
PINB6
PORTC6
DDC6
PINC6
PORTD6
DDD6
PIND6
SPSE
SPIE
WCOL
SPE
-
WDTOE
WDE
WDP2
EEPROM Address Register Low Byte
EEPROM Data Register
EEMWE
PORTA5 PORTA4 PORTA3 PORTA2
DDA5
DDA4
DDA3
DDA2
PINA5
PINA4
PINA3
PINA2
PORTB5 PORTB4 PORTB3 PORTB2
DDB5
DDB4
DDB3
DDB2
PINB5
PINB4
PINB3
PINB2
PORTC5 PORTC4 PORTC3 PORTC2
DDC5
DDC4
DDC3
DDC2
PINC5
PINC4
PINC3
PINC2
PORTD5 PORTD4 PORTD3 PORTD2
DDD5
DDD4
DDD3
DDD2
PIND5
PIND4
PIND3
PIND2
SPI Data Register
DORD
MSTR
CPOL
CPHA
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
WDP1
WDP0
-
EEAR8
EEWE
PORTA1
DDA1
PINA1
PORTB1
DDB1
PINB1
PORTC1
DDC1
PINC1
PORTD1
DDD1
PIND1
EERE
PORTA0
DDA0
PINA0
PORTB0
DDB0
PINB0
PORTC0
DDC0
PINC0
PORTD0
DDD0
PIND0
SPR1
SPR0
189
Guia para Uso do Assembler AVR
$0C ($2C)
UDR
$0B ($2B)
USR
$0A ($2A)
UCR
$09 ($29)
UBRR
$08 ($28)
ACSR
…
Reserved
$00 ($20) Reserved
RXC
RXCIE
TXC
TXCIE
UDRE
UDRIE
ACD
-
ACO
UART I/O Data Register
FE
OR
RXEN
TXEN
CHR9
UART Baud Rate Register
ACI
ACIE
ACIC
RXB8
TXB8
ACIS1
ACIS0
Bits reservados devem ser escritos com zero, se forem acessados.
Endereços de memória de I/O reservados nunca devem ser escritos. Alguns
flags de status são zerados com a escrita do valor lógico UM neles.
As instruções CBI e SBI operarão em todos os bits dos registradores de
I/O, escrevendo um UM lógico no flag lido como UM lógico e assim zerando o
flag. As instruções CBI e SBI operam com os registradores de $00 a $1F
apenas.
16.4- Tabela de Instruções
Rd: Registrador de destino (e origem)
Rr: Registrador de origem
b: Constante (0-7), pode ser uma expressão constante
s: Constante (0-7), pode ser uma expressão constante
P: Constante (0-31/63), pode ser uma expressão constante
k: Constante, faixa de valores depende da instrução. Pode ser uma expressão
constante
q: Constante (0-63), pode ser uma expressão constante
Rdl: R24, R26, R28, R30. Usados nas instruções ADIW e SBIW
X,Y,Z: Registradores para endereçamento indireto (X=R27:R26, Y=R29:R28,
Z=R31:R30)
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
190
Guia para Uso do Assembler AVR
Tabela 16-2:
INSTRUÇÕES ARITMÉTICAS E LÓGICAS
Mnemônicos Operandos
ADD
Rd, Rr
ADC
Rd, Rr
ADIW
Rdl,K
SUB
Rd, Rr
SUBI
Rd, K
SBC
Rd, Rr
SBCI
Rd, K
SBIW
Rdl,K
AND
Rd, Rr
ANDI
Descrição
Soma dois registradores
Operação
Flags
Nº de
Clock
Rd Å Rd + Rr
Z,C,N,V,H
1
Rd Å Rd + Rr + C
Z,C,N,V,H
1
Rdh:Rdl Å Rdh:Rdl + K
Z,C,N,V,S
2
Rd Å Rd – Rr
Z,C,N,V,H
1
Rd Å Rd – K
Z,C,N,V,H
1
Rd Å Rd – Rr – C
Z,C,N,V,H
1
Rd Å Rd – K – C
Z,C,N,V,H
1
Rdh:Rdl Å Rdh:Rdl – K
Z,C,N,V,S
2
E lógico entre registradores
Rd Å Rd · Rr
Z,N,V
1
Rd, K
E lógico entre registrador e
constante
Rd Å Rd · K
Z,N,V
1
OR
Rd, Rr
OU lógico entre registradores
Rd Å Rd v Rr
Z,N,V
1
ORI
Rd, K
Rd Å Rd v K
Z,N,V
1
EOR
Rd, Rr
Rd Å Rd Å Rr
Z,N,V
1
COM
Rd
Complemento de um
Rd Å $FF – Rd
Z,C,N,V
1
NEG
Rd
Complemento de dois
Rd Å $00 – Rd
Z,C,N,V,H
1
SBR
Rd,K
Faz bit(s) no registrador = 1
Rd Å Rd v K
Z,N,V
1
CBR
Rd,K
Faz bit(s) no registrador = 0
Rd Å Rd · ($FF – K)
Z,N,V
1
INC
Rd
Incrementa
Rd Å Rd + 1
Z,N,V
1
DEC
Rd
Decrementa
Rd Å Rd – 1
Z,N,V
1
TST
Rd
Testa registrador por zero ou
negativo
Rd Å Rd · Rd
Z,N,V
1
CLR
Rd
Faz registrador = $00
Rd Å Rd Å Rd
Z,N,V
1
SER
Rd
Faz registrador = $FF
Rd Å $FF
None
1
Soma com Carry dois
registradores
Soma valor imediato a uma
palavra
Subtrai dois registradores
Subtrai uma constante de um
registrador
Subtrai com Carry dois
registradores
Subtrai com Carry constante de
registrador
Subtrai valor imediato de uma
palavra
OU lógico entre registrador e
constante
OU Exclusivo entre
registradores
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
191
Guia para Uso do Assembler AVR
Tabela 16-3:
INSTRUÇÕES DE DESVIO
Mnemônicos Operandos
RJMP
k
Descrição
Operação
Flags
Nº de
Clock
Salto relativo
PC Å PC + k + 1
None
2
Salto indireto a (Z)
PC Å Z
None
2
Chamada relativa a sub-rotina
PC Å PC + k + 1
None
3
ICALL
Chamada indireta a (Z)
PC Å Z
None
3
RET
Retorno de sub-rotina
PC Å STACK
None
4
RETI
Retorno de interrupção
PC Å STACK
I
4
IJMP
RCALL
k
CPSE
Rd,Rr
Compara, salta instrução se for
igual
se (Rd = Rr) PC Å PC + 2
ou 3
None
CP
Rd,Rr
Compara
Rd – Rr
Z, N,V,C,H
1
CPC
Rd,Rr
Compara com Carry
Rd – Rr – C
Z, N,V,C,H
1
CPI
Rd,K
Rd – K
Z, N,V,C,H
1
SBRC
Rr, b
SBRS
Rr, b
SBIC
P, b
SBIS
P, b
BRBS
s, k
Desvia se flag de status é um
BRBC
s, k
Desvia se flag de status é zero
BREQ
k
Desvia se igual
BRNE
k
Desvia se não igual
BRCS
k
Desvia se Carry é um
BRCC
k
Desvia se Carry é zero
BRSH
k
Desvia se maior ou igual
BRLO
k
Desvia se menor
BRMI
k
Desvia se negativo
BRPL
k
Desvia se positivo
Compara registrador com valor
imediato
Salta instrução se bit no
registrador é zero
Salta instrução se bit no
registrador é um
Salta instrução se bit no reg. de
I/O é zero
Salta instrução se bit no reg. de
I/O é um
se (Rr(b)=0) PC Å PC + 2
ou 3
se (Rr(b)=1) PC Å PC + 2
ou 3
se (P(b)=0) PC Å PC + 2
ou 3
se (P(b)=1) PC Å PC + 2
ou 3
se (SREG(s)=1) então PC
Å PC+ k + 1
se (SREG(s)=0) então PC
Å PC+ k + 1
se (Z = 1) então PC Å PC
+k+1
se (Z = 0) então PC Å PC
+k+1
se (C = 1) então PC Å PC
+k+1
se (C = 0) então PC Å PC
+k+1
se (C = 0) então PC Å PC
+k+1
se (C = 1) então PC Å PC
+k+1
se (N = 1) então PC Å PC
+k+1
se (N = 0) então PC Å PC
+k+1
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
1/2/
3
1/2/
3
1/2/
3
1/2/
3
1/2/
3
None
None
None
None
None
1/2
None
1/2
None
1/2
None
1/2
None
1/2
None
1/2
None
1/2
None
1/2
None
1/2
None
1/2
192
Guia para Uso do Assembler AVR
BRGE
k
BRLT
k
BRHS
k
BRHC
k
BRTS
k
BRTC
k
BRVS
k
BRVC
k
BRIE
k
BRID
k
Desvia se maior ou igual,
sinalizado
Desvia se menor do que zero,
sinalizado
se (N Å V = 0) então PC Å
PC + k + 1
se (N Å V = 1) então PC Å
PC + k + 1
se (H = 1) então PC Å PC
Desvia se Half Carry é um
+k+1
se (H = 0) então PC Å PC
Desvia se Half Carry é zero
+k+1
se (T = 1) então PC Å PC
Desvia se flag T é um
+k+1
se (T = 0) então PC Å PC
Desvia se flag T é zero
+k+1
se (V = 1) então PC Å PC
Desvia se flag de Overflow é um
+k+1
Desvia se flag de Overflow é
se (V = 0) então PC Å PC
zero
+k+1
Desvia se interrupções estão
se ( I = 1) então PC Å PC
habilitadas
+k+1
Desvia se interrupções estão
se ( I = 0) então PC Å PC
desabilitadas
+k+1
None
1/2
None
1/2
None
1/2
None
1/2
None
1/2
None
1/2
None
1/2
None
1/2
None
1/2
None
1/2
Tabela 16-4:
INSTRUÇÕES DE TRANSFERÊNCIA DE DADOS
Mnemônicos Operandos
Descrição
Operação
Flags
Nº de
Clock
MOV
Rd, Rr
Move conteúdo de registrador
para outro
Rd Å Rr
None
1
LDI
Rd, K
Carrega valor imediato
Rd Å K
None
1
LD
Rd, X
Carrega valor indireto
Rd Å (X)
None
2
LD
Rd, X+
Rd Å (X), X Å X + 1
None
2
LD
Rd, - X
X Å X – 1, Rd Å (X)
None
2
LD
Rd, Y
Rd Å (Y)
None
2
LD
Rd, Y+
Rd Å (Y), Y Å Y + 1
None
2
LD
Rd, - Y
Y Å Y – 1, Rd Å (Y)
None
2
LDD
Rd,Y + q
Rd Å (Y + q)
None
2
LD
Rd, Z
Rd Å (Z)
None
2
LD
Rd, Z+
Rd Å (Z), Z Å Z+1
None
2
LD
Rd, -Z
Z Å Z – 1, Rd Å (Z)
None
2
LDD
Rd, Z+q
Rd Å (Z + q)
None
2
Carrega valor indireto com pós
incremento
Carrega valor indireto com pré
decremento
Carrega valor indireto
Carrega valor indireto com pós
incremento
Carrega valor indireto com pré
incremento
Carrega valor indireto com
deslocamento
Carrega valor indireto
Carrega valor indireto com pós
incremento
Carrega valor indireto com pré
decremento
Carrega valor indireto com
deslocamento
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
193
Guia para Uso do Assembler AVR
LDS
Rd, k
Carrega valor direto da SRAM
Rd Å (k)
None
2
ST
X, Rr
Armazena valor indireto
(X) Å Rr
None
2
ST
X+, Rr
None
2
ST
-X, Rr
None
2
ST
Y, Rr
None
2
ST
Y+, Rr
ST
-Y, Rr
STD
Y + q, Rr
ST
Z, Rr
ST
Z+, Rr
ST
-Z, Rr
STD
Z+q, Rr
STS
k, Rr
LPM
Armazena valor indireto com
(X) Å Rr, X Å X + 1
pós inc.
Armazena valor indireto com pré
X Å X – 1, (X) Å Rr
dec.
Armazena valor indireto
(Y) Å Rr
Armazena valor indireto com
(Y) Å Rr, Y Å Y + 1
pós inc.
Armazena valor indireto com pré
Y Å Y – 1, (Y) Å Rr
dec.
Armazena valor indireto com
(Y + q) Å Rr
deslocamento
None
2
None
2
None
2
Armazena valor indireto
None
2
None
2
None
2
None
2
(Z) Å Rr
Armazena valor indireto com
(Z) Å Rr, Z Å Z + 1
pós inc.
Armazena valor indireto com pré
Z Å Z – 1, (Z) Å Rr
dec.
Armazena valor indireto com
(Z + q) Å Rr
deslocamento
Armazena direto na SRAM
(k) Å Rr
None
2
Carrega valor da memória de
programa
R0 Å (Z)
None
3
IN
Rd, P
Port de entrada
Rd Å P
None
1
OUT
P, Rr
Port de saída
P Å Rr
None
1
PUSH
Rr
Guarda valor na pilha
STACK Å Rr
None
2
POP
Rd
Busca valor da pilha para o
registrador
Rd Å STACK
None
2
Tabela 16-5:
INSTRUÇÕES DE TESTE BIT A BIT
SBI
P,b
Faz bit no registrador de I/O = 1 I/O(P,b) Å 1
None
2
CBI
P,b
Faz bit no registrador de I/O = 0 I/O(P,b) Å 0
None
2
LSL
Rd
Z,C,N,V
1
LSR
Rd
Z,C,N,V
1
ROL
Rd
Z,C,N,V
1
ROR
Rd
Z,C,N,V
1
ASR
Rd
Z,C,N,V
1
Deslocamento lógico para a
esquerda
Deslocamento lógico para da
direita
Rotação para a esquerda com
Carry
Rotação para a direita com
Carry
Deslocamento aritmético para a
direita
Rd(n+1) Å Rd(n), Rd(0) Å
0
Rd(n) Å Rd(n+1), Rd(7) Å
0
Rd(0)Å C,Rd(n+1)Å
Rd(n),CÅRd(7)
Rd(7)ÅC,Rd(n)Å
Rd(n+1),CÅRd(0)
Rd(n) Å Rd(n+1), n=0..6
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
194
Guia para Uso do Assembler AVR
SWAP
Rd
Troca nibbles
Rd(3..0)Å
None
Rd(7..4),Rd(7..4)ÅRd(3..0)
1
BSET
s
Faz flag = 1
SREG(s) Å 1
SREG(s)
1
BCLR
s
Faz flag = 0
SREG(s) Å 0
SREG(s)
1
BST
Rr, b
Armazena bit do reg. no flag T
T Å Rr(b)
T
1
BLD
Rd, b
Carrega bit no reg. com o flag T Rd(b) Å T
None
1
SEC
Faz Carry = 1
CÅ1
C
1
CLC
Faz Carry = 0
CÅ0
C
1
SEN
Faz flag Negative = 1
NÅ1
N
1
CLN
Faz flag Negative = 0
NÅ0
N
1
SEZ
Faz flag Zero = 1
Z Å1
Z
1
CLZ
Faz flag Zero = 0
ZÅ0
Z
1
SEI
Habilita interrupções
IÅ1
I
1
CLI
Desabilita interrupções
IÅ0
I
1
SES
Faz flag Signed Test = 1
SÅ1
S
1
CLS
Faz flag Signed Test = 0
SÅ0
S
1
VÅ1
V
1
VÅ0
V
1
SEV
CLV
Faz flag Two’s Complement
Overflow = 1
Faz flag Two’s Complement
Overflow = 0
SET
Faz flag T no SREG = 1
TÅ1
T
1
CLT
Faz flag T no SREG = 0
TÅ0
T
1
SEH
Faz flag Half Carry no SREG = 1 H Å 1
H
1
CLH
Faz flag Half Carry no SREG = 0 H Å 0
H
1
NOP
Nenhuma operação
None
1
SLEEP
Sleep
None
3
WDR
Reinicia Watchdog
None
1
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
195
Guia para Uso do Assembler AVR
16.5- Diretivas no Assembler
As diretivas não são convertidas diretamente em opcodes (códigos de
operação). Elas são usadas para corrigir endereços do programa na memória,
definir macros, inicializar memória, dentre outras funções. A tabela 16-6 mostra
a lista de diretivas suportadas pelo Assembler.
Tabela 16-6:
Diretiva
BYTE
CSEG
DB
DEF
DEVICE
DSEG
DW
ENDMACRO
EQU
ESEG
EXIT
INCLUDE
LIST
LISTMAC
MACRO
NOLIST
ORG
SET
Descrição
Reserva bytes para uma variável
Segmento de código
Define constantes de um byte
Define um nome simbólico para um registrador
Define o componente para o Assembler
Segmento de dados
Define constantes de dois bytes (word)
Finaliza de uma macro
Substitui uma expressão por um nome simbólico
Segmento da EEPROM
Sai do arquivo
Le o fonte de outro arquivo
Habilita a criação de um arquivo de descrição (list file)
Habilita a expansão de macro
Inicia uma macro
Desabilita a criação de um arquivo de descrição (list file)
Posiciona o programa no endereço dado
Substitui uma expressão por um nome simbólico
Todas as diretivas devem ser precedidas por um ponto (.).
BYTE – Reserva bytes para uma variável
A diretiva BYTE reserva posições de memória na SRAM. A diretiva BYTE deve
ser precedida por um label (nome da variável). A diretiva recebe como
parâmetro o número de bytes a serem reservados para a variável na SRAM.
Por isso, essa diretiva deve ser usada apenas dentro das definições do
segmento de dados (DSEG). Os bytes reservados não serão inicializados.
Sintaxe:
LABEL: .BYTE expressão
Exemplo:
.DSEG
var1: .BYTE 1
table: .BYTE tab_size
.CSEG
ldi r30,low(var1)
ldi r31,high(var1)
ld r1,Z
; reserva 1 byte para var1
; reserva tab_size bytes para table
; Carrega o registrador BAIXO de Z
; Carrega o registrador ALTO de Z
; Carrega VAR1 para o registrador 1
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
196
Guia para Uso do Assembler AVR
CSEG – Segmento de código
A diretiva CSEG define o início do Segmento de Código. Um arquivo pode
conter vários segmentos de código, que serão concatenados em um único
segmento de código quando o Assembler for executado. A diretiva BYTE não
pode ser usada dentro de um segmento de código. A diretiva ORG pode ser
usada para especificar endereços de códigos ou constantes na memória de
programa. Esta diretiva não requer nenhum parâmetro.
Sintaxe:
.CSEG
Exemplo:
.DSEG
vartab: .BYTE 4
.CSEG
const: .DW 2
mov r1,r0
; Início do segmento de dados
; Reserva 4 bytes na SRAM para vartab
; Início do segmento de código
; Escreve o valor 0x0002 (16 bits) na memória de
; programa
; Faz qualquer coisa
DB – Define constantes de um byte na memória de programa ou na
EEPROM
A diretiva DB armazena bytes na memória de programa ou na EEPROM. A
diretiva DB deve ser precedida por um label (nome de uma constante). A
diretiva recebe como parâmetro um byte ou uma seqüência de bytes.
A diretiva DB deve ser usada dentro do segmento de código ou segmento de
EEPROM. Os bytes da lista devem ser separados por vírgulas (,). Cada valor
deve ser um número entre –128 e 255. Se o valor for negativo, a representação
complemento a dois de 8 bits do valor será armazenada na memória de
programa ou na EEPROM.
Se a diretiva DB é usada no segmento de código e o número de valores é
maior do que um, os dados são armazenados a cada dois bytes em cada
endereço da memória de programa.
Sintaxe:
LABEL: .DB listadevalores
Exemplo:
.CSEG
consts: .DB 0, 255, 0b01010101, -128, 0xaa
.ESEG
eeconst: .DB 0xff
DEF – Define um nome simbólico para um registrador
A diretiva DEF permite que os registradores possam ser chamados por nomes
simbólicos. Um nome definido é usado pelo programa para chamar um
registrador. Um registrador pode ter vários nomes associados a ele. Um nome
pode ser redefinido mais tarde dentro do programa.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
197
Guia para Uso do Assembler AVR
Sintaxe:
.DEF Nome=Registrador
Exemplo:
.DEF temp=R16
.DEF ior=R0
.CSEG
ldi
temp,0xf0
in
ior,0x3f
eor temp,ior
; Carrega o valor 0xf0 no registrador temp
; Le SREG e o armazena no registrador ior
; Ou Exclusivo entre temp e ior
DEVICE – Define qual componente será usado pelo programa
A diretiva DEVICE indica para o Assembler qual componente que o código será
executado. Se esta diretiva é usada e o código possui uma instrução não
suportada pelo componente, uma mensagem de aviso é mostrada de
Assembler. Se o tamanho do segmento de código ou do segmento da
EEPROM é maior do que o suportado pelo componente especificado, um aviso
também ocorrerá. Se a diretiva DEVICE não for usada, o Assembler assume
que todas as instruções são suportadas e não há restrições de tamanho de
memória.
Sintaxe:
.DEVICE AT90S1200 | AT90S2313 | AT90S4414 | AT90S8515
Exemplo:
.DEVICE AT90S1200
; Especifica que o componente a ser usado é o
AT90S1200
.CSEG
push r30
; Essa instrução irá gerar um mensagem de aviso, já que o
; componente especificado não suporta esta instrução
DSEG – Segmento de dados
A diretiva DSEG define o início do segmento de dados. Um arquivo pode conter
vários segmentos de dados, que serão concatenados em um único segmento
de dados quando o Assembler for executado. Um segmento de dados
consistirá, basicamente, de diretivas BYTE (e labels). A diretiva ORG pode ser
usada para endereçar variáveis na SRAM. A diretiva não requer nenhum
parâmetro.
Sintaxe:
.DSEG
Exemplo:
.DSEG
var1: .BYTE 1
table: .BYTE tab_size
; Início do segmento de dados
; reserva 1 byte para var1
; reserva tab_size bytes
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
198
Guia para Uso do Assembler AVR
.CSEG
ldi r30,low(var1)
ldi r31,high(var1)
ld r1,Z
; Carrega o registrador baixo de Z
; Carrega o registrador alto de Z
; Carrega var1 para registrador 1
DW – Define constantes de dois bytes (word) na memória de programa ou
na EEPROM
A diretiva DW reserva words memória de programa ou na EEPROM. A diretiva
DW deve ser precedida por um label (nome de uma constante). A diretiva
recebe como parâmetro uma word ou uma seqüência de words.
A diretiva DW deve ser usada dentro do segmento de código ou segmento de
EEPROM. As words da lista devem ser separadas por vírgulas (,). Cada valor
deve ser um número entre –32768 e 65535. Se o valor for negativo, a
representação complemento a dois de 16 bits do valor será armazenada na
memória de programa ou na EEPROM.
Sintaxe:
LABEL:
.DW listadevalores
Exemplo:
.CSEG
varlist: .DW 0,0xffff,0b1001110001010101,-32768,65535
.ESEG
eevar: .DW 0xffff
ENDMACRO – Finaliza uma macro
A diretiva ENDMACRO indica o fim de uma definição de macro. Esta diretiva
não requer parâmetros.
Sintaxe:
.ENDMACRO
Exemplo:
.MACRO
SUBI16
subi r16,low(@0)
sbci r17,high(@0)
.ENDMACRO
; Inicia uma definição de macro
; Subtrai o byte baixo
; Subtrai o byte alto
; Fim da definição de macro
EQU – Substitui uma expressão por um nome simbólico
A diretiva EQU associa um nome (label) a um valor. Esse nome pode ser
usado em expressões posteriores. Um nome associado a um valor pela diretiva
EQU é uma constante e não pode ser mudado ou redefinido.
Sintaxe:
.EQU label = expressão
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
199
Guia para Uso do Assembler AVR
Exemplo:
.EQU io_offset = 0x23
.EQU porta = io_offset + 2
.CSEG
; Início do segmento de código
clr r2
; Zera o registrador 2
out porta,r2
; Escreve o valor do registrador 2 no Port A
ESEG – Segmento de EEPROM
A diretiva ESEG define o início do segmento de EEPROM. Um arquivo pode
conter vários segmentos de EEPROM, que serão concatenados para um único
segmento de EEPROM quando o Assembler for executado. A diretiva BYTE
não pode ser usada em um segmento de EEPROM. A diretiva ORG pode ser
usada para localizar constantes na EEPROM. Esta diretiva não requer
parâmetros.
Sintaxe:
.ESEG
Exemplo:
.DSEG
vartab: .BYTE 4
.ESEG
eevar: .DW 0xff0f
.CSEG
const: .DW 2
mov r1,r0
; Inicia o segmento de dados
; Reserva 4 bytes na SRAM
; Inicializa uma word na EEPROM
; Inicia o segmento de código
; Escreve o valor 0x0002 na memória de programa
; Faz qualquer coisa
EXIT – Sai deste arquivo
A diretiva EXIT para a execução do Assembler. Normalmente, o Assembler é
executado até encontrar o fim de arquivo (EOF). Se a diretiva EXIT aparece em
um arquivo que foi incluído, o Assembler continua da linha seguinte da diretiva
INCLUDE.
Sintaxe:
.EXIT
Exemplo:
.EXIT
; Sai deste arquivo
INCLUDE – Inclui outro arquivo
A diretiva INCLUDE indica para o Assembler começar a leitura do arquivo
especificado. O Assembler então é executado até encontrar o fim de arquivo
(EOF) ou uma diretiva EXIT. Um arquivo incluído pode conter também outras
diretivas INCLUDE.
Sintaxe:
.INCLUDE “nomedoarquivo”
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
200
Guia para Uso do Assembler AVR
Exemplo:
; iodefs.asm:
.EQU sreg=0x3f
; Registrador de Status
.EQU sphigh=0x3e ; Registrador Alto do Ponteiro de Pilha (Stack pointer)
.EQU splow=0x3d ; Registrador Baixo do Ponteiro de Pilha (Stack pointer)
; incdemo.asm
.INCLUDE “iodefs.asm”
in r0,sreg
; Inclui definições de I/O
; Le registrador de status
LIST – Habilita a criação do arquivo de descrição (listfile)
A diretiva LIST indica para o Assembler criar um arquivo de descrição (listfile).
Esse arquivo é uma combinação do código fonte, endereços e opcodes
(códigos de instruções). A criação deste arquivo, por default, está habilitada.
Esta diretiva pode ser usada junto com a diretiva NOLIST para gerar um listfile
de partes do programa fonte.
Sintaxe:
.LIST
Exemplo:
.NOLIST
.INCLUDE “macro.inc”
.INCLUDE “const.def”
.LIST
; Desabilita a criação do listfile
; Os arquivos incluídos não serão mostrados o listfile
; Habilita novamente a criação do listfile
LISTMAC – Habilita expansão de macro
A diretiva LISTMAC informa para o Assembler que, quando uma macro é
chamada, a expansão da macro deve ser mostrada no listfile gerado pelo
Assembler. Por default, apenas as chamadas de macros com parâmetros são
mostradas no listfile.
Sintaxe:
.LISTMAC
Exemplo:
.MACRO MACX
add r0,@0
eor r1,@1
.ENDMACRO
.LISTMAC
MACX r2,r1
; Define um exemplo de macro
; Faz qualquer coisa
; Faz qualquer coisa
; Fim da definição da macro
; Habilita expansão da macro
; Chama a macro, mostra a expansão
MACRO – Inicia uma macro
A diretiva MACRO informa para o Assembler o início de uma macro. A diretiva
MACRO usa o nome da macro como parâmetro. Quando o nome da macro é
escrito posteriormente no programa, a definição da macro é expandida no local
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
201
Guia para Uso do Assembler AVR
onde ela foi usada. Uma macro suporta até 10 parâmetros. Esses parâmetros
são chamados como @0-@9 dentro da definição da macro. Na chamada de
uma macro, os parâmetros são passados em forma de lista, separados por
vírgulas (,). Uma definição de macro é finalizada por uma diretiva ENDMACRO.
Por default, apenas as chamadas a uma macro são mostradas no listfile gerado
pelo Assembler. Para incluir uma expansão de macro no listfile, a diretiva
LISTMAC deve ser usada. Uma macro é marcada com um + no campo do
opcode no listfile.
Sintaxe:
.MACRO
nomedamacro
Exemplo:
.MACRO
SUBI16
subi @1,low(@0)
sbci @2,high(@0)
.ENDMACRO
.CSEG
SUBI16 0x1234,r16,r17
; Inicia uma definição de macro
; Subtrai o byte baixo
; Subtrai o byte alto
; Fim da definição da macro
; Início do segmento de código
; Subtrai 0x1234 de r17:r16
NOLIST – Desabilita a criação do arquivo de descrição (listfile)
A diretiva NOLIST informa que o Assembler não deve criar o arquivo de
descrição listfile. Normalmente, o Assembler gera um listfile que é uma
combinação de código fonte, endereços e opcodes. Por default, a criação do
listfile é habilitada, mas pode ser desabilitada usando a diretiva NOLIST. Esta
diretiva pode ser usada junto com a diretiva LIST para gerar um listfile de
partes do programa fonte.
Sintaxe:
.NOLIST
; Habilita a geração de listfile
Exemplo:
.NOLIST
.INCLUDE “macro.inc”
.INCLUDE “const.def”
.LIST
; Desabilita a geração de listfile
; Os arquivos incluídos não serão mostrados no
; listfile
;
; Habilita novamente a geração de listfile
ORG – Posiciona o programa no endereço dado
A diretiva ORG posiciona o programa no endereço dado. Se a diretiva ORG for
usada no segmento de dados, um valor será armazenado a partir do endereço
especificado. Se a diretiva ORG for usada no segmento de código, um valor
será armazenado a partir do endereço especificado. Se a diretiva OR for usada
no segmento de EEPROM, um valor será armazenado a partir do endereço
especificado. Se a diretiva for precedida por um label (na mesma linha do
código fonte), o label será tomado como parâmetro. O valor default inicial dos
endereços de memória de código e EEPROM é zero, enquanto para a SRAM é
32 (a partir dos registradores R0-R31). O endereço da EEPROM e a SRAM é
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
202
Guia para Uso do Assembler AVR
dado em bytes enquanto o endereço da memória de programa é dado em
words.
Sintaxe:
.ORG expressão
Exemplo:
.DSEG
.ORG 0x67
variable:.BYTE 1
.ESEG
.ORG 0x20
eevar: .DW 0xfeff
.CSEG
.ORG 0x10
mov r0,r1
; Inicia a memória de dados
; Aponta para o endereço 0x67 da SRAM
; Reserva um byte no endereço 0x67 da SRAM
; Inicia do segmento da EEPROM
; Aponta para o endereço 0x20 da EEPROM
; Inicializa uma word
; Aponta para o endereço 0x10 da memória de
; programa
; Faz qualquer coisa
EQU – Substitui uma expressão por um nome simbólico
A diretiva EQU associa um nome (label) a um valor. Esse nome pode ser
usado em expressões posteriores. Um nome associado a um valor pela diretiva
EQU é uma constante e não pode ser mudado ou redefinido.
SET – Substitui uma expressão por um nome simbólico
A diretiva SET associa um nome (label) a um valor. Esse nome poder ser
usado em expressões posteriores. Um nome associado a um valor pela diretiva
SET pode ser alterado no programa.
Sintaxe:
.SET label = expressão
Exemplo:
.SET io_offset = 0x23
.SET porta = io_offset + 2
.CSEG
; Inicia o segmento de código
clr r2
; Zera o registrador 2
out porta,r2
; Escreve o conteúdo do registrador 2 no Port A
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
203
Guia para Uso do Assembler AVR
16.6- Expressões
O Assembler pode manipular expressões. Expressões consistem de
operandos, operadores e funções. Todas as expressões, internamente, são de
32 bits.
Operandos
-
-
Os seguintes operandos podem ser usados:
Labels definidos pelo usuário para um endereço da memória
Variáveis definidas pela diretiva SET
Variáveis definidas pela diretiva QUE
Constantes inteiras: constantes de vários tipos:
a) Decimal (default): 10, 255
b) Hexadecimal (duas notações): 0x0a, $0a, 0xff, $ff
c) Binário: 0b00001010, 0b11111111
PC – o valor atual do contador de endereços da memória de programa
Funções
-
As seguintes funções são definidas:
LOW(expressão) retorna o primeiro byte de uma expressão
HIGH(expressão) retorna o segundo byte de uma expressão
BYTE2(expressão) tem a mesma função de HIGH
BYTE3(expressão) retorna o terceiro byte de uma expressão
BYTE4(expressão) retorna o quarto byte de uma expressão
LWRD(expressão) retorna os bits de 0 a 15 (low word) de uma expressão
HWRD(expressão) retorna os bits de 16 a 31 (high word) de uma expressão
PAGE(expressão) retorna os bits de 16 a 21 de uma expressão
EXP2(expressão) retorna 2^expressão
LOG2(expressão) retorna a parte inteira de log2(expressão)
Operadores
O Assembler suporta vários operadores, onde o de maior precedência
possui a maior prioridade.
Não Lógico
Símbolo: !
Descrição: Operador unário que retorna 1 se a expressão for zero e retorna 0
se a expressão for diferente de zero.
Precedência: 14
Exemplo: ldi r16,!0xf0 ; Carrega r16 com 0x00
Não bit a bit
Símbolo: ~
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
204
Guia para Uso do Assembler AVR
Descrição: Operador unário que retorna todos os bits invertidos de uma
expressão.
Precedência: 14
Exemplo: ldi r16,~0xf0 ; Carrega r16 com 0x0f
Negação
Símbolo: Descrição: Operador unário que retorna a negação aritmética de uma
expressão.
Precedência: 14
Exemplo: ldi r16,-2 ; Carrega -2(0xfe) em r16
Multiplicação
Símbolo: *
Descrição: Operador binário que retorna o produto de duas expressões.
Precedência: 13
Exemplo: ldi r30,label*2 ; Carrega r30 com label*2
Divisão
Símbolo: /
Descrição: Operador binário que retorna o quociente inteiro da expressão da
esquerda dividida pelo expressão da direita.
Precedência: 13
Exemplo: ldi r30,label/2 ; Carrega r30 com label/2
Adição
Símbolo: +
Descrição: Operador binário que retorna a soma de duas expressões
Precedência: 12
Exemplo: ldi r30,c1+c2
; Carrega r30 com c1+c2
Subtração
Símbolo: Descrição: Operador binário que retorna a expressão da esquerda menos a
expressão da direita.
Precedência: 12
Exemplo: ldi r17,c1-c2
; Carrega r17 com c1-c2
Deslocamento para a esquerda
Símbolo: <<
Descrição: Operador binário que retorna a expressão da esquerda deslocada
para a esquerda um número de vezes igual à expressão da direita.
Precedência: 11
Exemplo: ldi r17,1<<bitmask ;Carrega r17 com 1 deslocado para a esquerda
bitmask vezes
Deslocamento para a direita
Símbolo: >>
Descrição: Operador binário que retorna a expressão da esquerda deslocada
para a direita um número de vezes igual à expressão da direita.
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
205
Guia para Uso do Assembler AVR
Precedência: 11
Exemplo: ldi r17,c1>>c2
vezes
;Carrega r17 com c1 deslocado para a direita c2
Menor do que
Símbolo: <
Descrição: Operador binário que retorna 1 se a expressão sinalizada da
esquerda for menor do que a expressão sinalizada da direita, caso contrário,
retorna 0.
Precedência: 10
Exemplo: ori r18,bitmask*(c1<c2)+1 ; Ou entre r18 e uma expressão
Menor ou igual
Símbolo: <=
Descrição: Operador binário que retorna 1 se a expressão sinalizada da
esquerda for menor ou igual à expressão da direita, caso contrário, retorna 0.
Precedência: 10
Exemplo: ori r18,bitmask*(c1<=c2)+1 ; Ou entre r18 e uma expressão
Maior do que
Símbolo: >
Descrição: Operador binário que retorna 1 se a expressão sinalizada da
esquerda for maior do que a expressão da direita, caso contrário, retorna 0.
Precedência: 10
Exemplo: ori r18,bitmask*(c1>c2)+1 ; Ou entre r18 e uma expressão
Maior ou igual
Símbolo: >=
Descrição: Operador binário que retorna 1 se a expressão sinalizada da
esquerda for maior ou igual à expressão da direita, caso contrário, retorna 0.
Precedência: 10
Exemplo: ori r18,bitmask*(c1>=c2)+1 ; Ou entre r18 e uma expressão
Igual
Símbolo: ==
Descrição: Operador binário que retorna 1 se a expressão sinalizada da
esquerda for igual à expressão da direita, caso contrário, retorna 0.
Precedência: 9
Exemplo: andi r19,bitmask*(c1==c2)+1 ; E entre r19 e uma expressão
Diferente
Símbolo: !=
Descrição: Operador binário que retorna 1 se a expressão sinalizada da
esquerda for diferente da expressão sinalizada da direita, caso contrário,
retorna 0.
Precedência: 9
Exemplo: .SET flag=(c1!=c2) ; Faz flag igual a 1 ou 0
E bit a bit
Símbolo: &
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
206
Guia para Uso do Assembler AVR
Descrição: Operador binário que retorna a operação E bit a bit entre duas
expressões.
Precedência: 8
Exemplo: ldi r18,High(c1&c2) ; Carrega r18 com uma expressão
Ou Exclusivo bit a bit
Símbolo: ^
Descrição: Operador binário que retorna a operação de Ou Exclusivo bit a bit
entre duas expressões.
Precedência: 7
Exemplo: ldi r18,Low(c1^c2) ; Carrega r18 com uma expressão
Ou bit a bit
Símbolo: |
Descrição: Operador binário que retorna a operação Ou bit a bit entre duas
expressões.
Precedência: 6
Exemplo: ldi r18,Low(c1|c2) ; Carrega r18 com uma expressão
E lógico
Símbolo: &&
Descrição: Operador binário que retorna 1 se a ambas expressões forem
diferentes de zero, caso contrário, retorna 0.
Precedência: 5
Exemplo: ldi r18,Low(c1&&c2) ; Carrega r18 com uma expressão
Ou lógico
Símbolo: ||
Descrição: Operador binário que retorna 1 se uma ou ambas expressões forem
diferentes de zero, caso contrário, retorna 0.
Precedência: 4
Exemplo: ldi r18,Low(c1||c2) ; Carrega r18 com uma expressão
FACENS – ELETRÔNICA II – Prof. Sidney José Montebeller
207
Download