Circuitos Digitais
Short Description
Circuitos Digitais; Tecnologia...
Description
TALES CLEBER PIMENTA
CIRCUITOS DIGITAIS ANÁLISE E SÍNTESE LÓGICA
APLICAÇÕES EM FPGA
Circuitos Digitais Análise e Síntese Lógica: Aplicações em FPGA
Tales Cleber Pimenta
O Autor
O autor possui graduação em Engenharia Elétrica com ênfase em Eletrônica em 1985 pela Universidade Federal de Itajubá, mestrado em Engenharia Elétrica pela Universidade Federal de Itajubá em 1988 e doutorado em Engenharia Elétrica pela Ohio University em 1992. Fez o primeiro pós-doutorado na The Ohio State University em University em 1997 em circuitos integrados analógicos de baixa tensão, o segundo pós-doutorado na Virginia Politechnic Institute and State University em University em 2005 na área de circuitos integrados de frequências ultraelevadas e o terceiro pós-doutorado em 2014 pela The University of North Florida na área de aplicações biomédicas. Atualmente é professor titular da Universidade Federal de Itajubá ministrando disciplinas de Eletrônica Digital e de Circuitos Integrados Digitais na graduação. Já na pós-graduação ministra disciplinas de Microeletrônica e Projetos de Circuitos Integrados, e conduz projetos na área de circuitos integrados.
Sumário
Agradecimentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
vii
O Autor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix Prefácio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi CAPÍTULO 1
Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1 Digital versus analógico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Um pouco de história . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.1 Tendências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Ponto de vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4 Blocos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 1 3 6 6 7
CAPÍTULO 2
Códigos Numéricos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.1 Representação numérica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.1.1 Sistema Binário . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.1.2 Sistema Octal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.1.3 Sistema Hexadecimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.1.4 Sistemas Básicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.2 Conversões de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.2.1 Conversão de Decimal para outras Bases – Números Inteiros . . . . 11 2.2.2 Conversão de Decimal para outras Bases – Números Fracionários 12 2.2.3 Conversão de Decimal para outras Bases – Números Mistos . . . . 12 2.2.4 Conversão entre Bases 2n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
xiv CIRCUITOS DIGITAIS • ANÁLISE E SÍNTESE LÓGICA: APLICAÇÕES EM FPGA
2.3 Codigo GRAY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 Obtenção do Código Gray . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.2 Conversão entre Código Gray e Binário . . . . . . . . . . . . . . . . . . . . 2.4 Códigos BCD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5 Códigos alfanuméricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13 15 16 17 18 19
CAPÍTULO 3
Álgebra de Boole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1 Operações básicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.1 Inversão. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2 Operação E . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.3 Operação OU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Expressões duais e complementares . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Teoremas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.1 Elemento Unitário (Aniquilador) . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2 Elemento Nulo (Identidade) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.3 Idempotência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.4 Complementaridade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.5 Comutativa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.6 De Morgan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.7 Associativa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.8 Distributiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.9 Combinação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.10 Absorção ou Cobertura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.11 Eliminação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.12 Consenso ou Fantasma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.13 Conversão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.14 Teoremas – Sumário. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.15 Problemas de Aplicação de Teoremas . . . . . . . . . . . . . . . . . . . . . 3.4 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21 21 21 22 23 23 24 24 25 25 25 26 26 27 27 27 28 28 29 29 30 30 32
CAPÍTULO 4
Circuitos Lógicos Básicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
4.1 Expressões Booleanas e tabela verdade . . . . . . . . . . . . . . . . . . . . . . . . . .
35
Sumário
xv
4.2 Blocos lógicos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.2.1 Operação Não-E (NAND) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.2.2 Operação Não-Ou (NOR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.2.3 Operação Ou-Exclusivo (XOR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.2.4 Operação Não-Ou-Exclusivo (XNOR) ou Coincidência . . . . . . . . . 38 4.3 Implementação de funções usando uma operação lógica . . . . . . . . . . . . . 39 4.3.1 Inversão. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.3.2 Ou . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.3.3 E . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.3.4 Não-Ou . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.3.5 Não-E . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.3.6 Expressões Lógicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 4.4 Obtenção de expressões lógicas por tabelas . . . . . . . . . . . . . . . . . . . . . . . 44 4.5 Maxtermos e mintermos – forma canônica . . . . . . . . . . . . . . . . . . . . . . . . 46 4.5.1 Número de Variáveis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.5.2 Aplicações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.6 Circuitos a contatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.6.1 Função E . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.6.2 Função OU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.6.3 Função OU-Exclusivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.6.4 Relés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.6.5 Função Inversão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.6.6 Outras Funções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.7 Simbologias IEEE/ANSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.8 Circuitos básicos em Verilog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.8.1 Descrição Estrutural . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4.8.2 Descrição Comportamental . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 4.8.3 Validação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 4.9 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
CAPÍTULO 5
Mapas de Karnaugh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1 Simplificação de Lagrange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Leituras de Karnaugh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.1 Metodologia de Leitura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.2 Exemplos de Leitura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
63 63 64 65 65
xvi CIRCUITOS DIGITAIS • ANÁLISE E SÍNTESE LÓGICA: APLICAÇÕES EM FPGA
5.2.3 5.2.4 5.2.5 5.2.6
Leitura pelos 0 .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Mapas de 5 Variáveis .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Mapas de 6 Variáveis .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Termos Opcionais .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.3 Aplicações de Karnaugh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.1 Simplificação de Expressões . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.2 Conversão entre Soma de Produtos e Produto de Somas . . . . . . . 5.3.3 Mintermos e Maxtermos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.4 Conversão Soma de Produtos/Produto de Somas Operações – Mintermos/Maxtermos .
5.3.5
73 73 73 74
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Operações E e OU entre Funções .
. . . . . . . . . . . . . . . . . . . . . . . . 75
5.4 Aplicações de Karnaugh em Verilog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.1 Primitivas Definidas pelo Usuário . . . . . . . . . . . . . . . . . . . . . . . . 5.4.2 Descrição por Fluxo de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.5 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
76 76 77 78
CAPÍTULO 6
Circuitos de Manuseio de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
83
6.1 Conversores de código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 6.2 Codificadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 6.2.1 Codificador de Prioridade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 6.2.2 Codificador de Prioridade Tipo Termômetro . . . . . . . . . . . . . . . . . 90 6.2.3 Codificador de Teclado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 6.3 Decodificadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 6.3.1 Decodificadores BCD e Binário para Sete Segmentos . . . . . . . . . . 93 6.3.2 Implementação de Funções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 6.4 Multiplexador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 6.4.1 Multiplexagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 6.4.2 Multiplexador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 6.4.3 Composição de Multiplexadores . . . . . . . . . . . . . . . . . . . . . . . . . 99 6.5 Demultiplexador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .102 6.6 Utilização de multiplexadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .103 6.6.1 Arranjo Paralelo de Multiplexadores . . . . . . . . . . . . . . . . . . . . . .103 6.6.2 Arranjo Serial de Multiplexadores . . . . . . . . . . . . . . . . . . . . . . . .103 6.6.3 Sistema de Comunicação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .104 6.6.4 Implementação de Funções Lógicas . . . . . . . . . . . . . . . . . . . . . .105
Sumário
xvii
6.7 Circuitos de manuseio de dados utilizando Verilog . . . . . . . . . . . . . . . . . .108 6.7.1 Estruturas Hierárquicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114 6.8 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .115
CAPÍTULO 7
Circuitos Aritméticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119 7.1 Soma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119 7.1.1 Meio Somador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .120 7.1.2 Somador Pleno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .121 7.1.3 Somadores de Múltiplos Bits . . . . . . . . . . . . . . . . . . . . . . . . . . .122 7.2 Subtração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .123 7.2.1 Meio Subtrator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .124 7.2.2 Subtrator Pleno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .125 7.2.3 Subtratores de Múltiplos Bits . . . . . . . . . . . . . . . . . . . . . . . . . . .127 7.3 Subtração pelo complemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .129 7.3.1 Representação de Números Binários Negativos . . . . . . . . . . . . . .129 7.3.2 Aritmética em Complemento de 2 . . . . . . . . . . . . . . . . . . . . . . . .131 7.3.3 Circuito Somador-Subtrator . . . . . . . . . . . . . . . . . . . . . . . . . . . .132 7.3.4 Transbordo ou Estouro de Campo . . . . . . . . . . . . . . . . . . . . . . . .133 7.4 Aritmética em BCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .134 7.4.1 Subtração BCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .137 7.5 Soma rápida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .138 7.6 Unidade lógica e aritmética . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .140 7.7 Circuitos aritméticos utilizando Verilog . . . . . . . . . . . . . . . . . . . . . . . . . . .142 7.8 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .143
CAPÍTULO 8
Latches e Flip-Flops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .147 8.1 Latch Assíncrono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .147 8.1.1 Aplicações de Latches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .151 8.2 Latch Síncrono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .152 8.3 Entradas diretas (Assíncronas) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .153 8.4 Latch D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .155 8.5 Flip-Flop D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .157 8.6 Flip-Flop JK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .160
xviii CIRCUITOS DIGITAIS • ANÁLISE E SÍNTESE LÓGICA: APLICAÇÕES EM FPGA
8.7 Flip-Flop JK Mestre-Escravo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .164 8.7.1 Análise Simplificada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .165 8.8 Flip-Flop T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .166 8.9 Temporização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .168 8.10 Conversão de flip-flops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .170 8.11 Registradores de deslocamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .171 8.11.1 Aplicações de Registradores de Deslocamento . . . . . . . . . . . . . .175 8.12 Latches e flip-flops utilizando Verilog . . . . . . . . . . . . . . . . . . . . . . . . . . . .176 8.12.1 Latches e Flip-Flops por UDP . . . . . . . . . . . . . . . . . . . . . . . . . . .176 8.12.2 Latches e Flip-Flops por Descrição Comportamental . . . . . . . . . .177 8.12.3 Deslocamentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .179 8.12.4 Controle de Atrasos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .181 8.13 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .184
CAPÍTULO 9
Contadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .189 9.1 Contadores assíncronos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .189 9.1.1 Contagem Decrescente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .190 9.1.2 Contagem Crescente/Decrescente . . . . . . . . . . . . . . . . . . . . . . . .192 9.1.3 Valor Inicial de Contagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .193 9.1.4 Valor Final de Contagem Cíclica . . . . . . . . . . . . . . . . . . . . . . . . . .194 9.1.5 Valor Final de Contagem com Parada do Contador . . . . . . . . . . . .195 9.1.6 Valor de Contagem Transitório . . . . . . . . . . . . . . . . . . . . . . . . . .196 9.2 Contadores síncronos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .197 9.2.1 Sequência de Contagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .198 9.2.2 Mapas de Estado Seguinte . . . . . . . . . . . . . . . . . . . . . . . . . . . . .198 9.2.3 Mapas de Excitação – Flip-Flop SR . . . . . . . . . . . . . . . . . . . . . . .201 9.2.4 Montagem do Circuito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .204 9.2.5 Mapas de Excitação – Flip-Flop JK . . . . . . . . . . . . . . . . . . . . . . . .206 9.2.6 Leitura Simplificada – Flip-Flop JK . . . . . . . . . . . . . . . . . . . . . . .207 9.2.7 Mapas de Excitação – Flip-Flop T . . . . . . . . . . . . . . . . . . . . . . . .209 9.2.8 Mapas de Excitação – Flip-Flop D . . . . . . . . . . . . . . . . . . . . . . . .211 9.3 Acoplamento de contadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .211 9.3.1 Acoplamento Assíncrono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .211 9.3.2 Acoplamento Pseudossíncrono . . . . . . . . . . . . . . . . . . . . . . . . . .214 9.4 Contadores utilizando Verilog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .215 9.5 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .218
Sumário
xix
CAPÍTULO 10
Máquinas de Estado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .221 10.1 Conceitos de máquinas de estados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .221 10.2 Projeto de máquinas de estados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .223 10.2.1 Passo 1 – Obtenção do Diagrama de Estados . . . . . . . . . . . . . . .223 10.2.2 Passo 2 – Obtenção da Tabela de Estados . . . . . . . . . . . . . . . . . .236 10.2.3 Passo 3 – Eliminação de Estados Equivalentes . . . . . . . . . . . . . . .238 10.2.4 Passo 4 – Designação de Estados Auxiliares . . . . . . . . . . . . . . . .241 10.2.5 Passo 5 – Mapas de Transição . . . . . . . . . . . . . . . . . . . . . . . . . .244 10.2.6 Passo 6 – Mapas de Excitação dos Flip-Flops . . . . . . . . . . . . . . .248 10.2.7 Passo 7 – Mapas de Saída . . . . . . . . . . . . . . . . . . . . . . . . . . . . .251 10.2.8 Exemplo Completo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .254 10.2.9 Múltiplas Saídas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .259 10.3 Máquinas de estado utilizando Verilog . . . . . . . . . . . . . . . . . . . . . . . . . . .260 10.4 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .264
CAPÍTULO 11
Projeto de Máquinas de Estado por Fluxogramas . . . . . . . . . . . . . . . . . . . . . . . . . . .267 11.1 11.2 11.3 11.4
Elementos . Blocos .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .267
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .268
Fluxogramas a partir de Diagrama de Estados .
. . . . . . . . . . . . . . . . . . . . .271
Projeto de máquinas de estado a partir de fluxogramas . . .
11.4.1 11.4.2 11.4.3 11.4.4 11.4.5
Designação de Estados .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .274
Expressões de Estado Seguinte .
. . . . . . . . . . . . . . . . . . . . . . . . .275
Mapas de Excitação dos Flip-Flops . Expressões de Saída . Exemplo de Mealy .
. . . . . . . . . . . .273
. . . . . . . . . . . . . . . . . . . . . .276
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .278
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .279
11.5 Máquinas Mealy-Moore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .281 11.5.1 Exemplo de Máquina Mealy . . . . . . . . . . . . . . . . . . . . . . . . . . . .282 11.6 Máquinas de estado por fluxograma utilizando Verilog . . . . . . . . . . . . . . .284 11.7 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .286
CAPÍTULO 12
Memórias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .289 12.1 Tipos de memórias . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .289
xx CIRCUITOS DIGITAIS • ANÁLISE E SÍNTESE LÓGICA: APLICAÇÕES EM FPGA
12.2 Memórias voláteis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .290 12.2.1 Memória RAM Dinâmica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .294 12.3 Memórias não voláteis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .294 12.3.1 Memória ROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .295 12.3.2 Memória PROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .297 12.3.3 Memória EPROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .300 12.3.4 Memória EEPROM ou E2PROM . . . . . . . . . . . . . . . . . . . . . . . . . .302 12.3.5 Memória Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .302 12.4 Arranjos de memórias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .302 12.4.1 Associação Paralela ou Horizontal de Memórias . . . . . . . . . . . . . .303 12.4.2 Associação Serial ou Vertical de Memórias . . . . . . . . . . . . . . . . .304 12.4.3 Decodificação de Endereços . . . . . . . . . . . . . . . . . . . . . . . . . . . .304 12.4.4 Decodificação de Memórias de Tamanhos Diferentes . . . . . . . . . .313 12.4.5 Decodificação de Memórias com Endereço Fracionado . . . . . . . .315 12.5 Temporização de memórias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .316 12.6 Memórias utilizando Verilog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .317 12.7 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .318
CAPÍTULO 13
Dispositivos Lógicos Programáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .321 13.1 Arranjos lógicos programáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .321 13.1.1 Arranjo Lógico Programável – PLA . . . . . . . . . . . . . . . . . . . . . . .322 13.1.2 Arranjo Programável Lógico – PAL . . . . . . . . . . . . . . . . . . . . . . .324 13.2 Dispositivos programáveis sequenciais . . . . . . . . . . . . . . . . . . . . . . . . . .326 13.2.1 Arranjo Lógico Genérico – GAL . . . . . . . . . . . . . . . . . . . . . . . . . .326 13.2.2 Dispositivos Lógicos Programáveis Complexos – CPLD . . . . . . . .329 13.2.3 Arranjo de Portas Programável em Campo – FPGA . . . . . . . . . . .331 13.3 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .335
CAPÍTULO 14
Famílias Lógicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .337 14.1 Lógica resistor-transistor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .337 14.1.1 Margens de Ruído . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .338 14.1.2 Fan Out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .339 14.1.3 Fan Out e Margem de Ruído . . . . . . . . . . . . . . . . . . . . . . . . . . . .340 14.1.4 Portas Lógicas RTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .341
Sumário
xxi
14.2 Lógica diodo-transistor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .342 14.2.1 DTL Modificado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .343 14.2.2 HTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .344 14.2.3 Fan Out em DTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .345 14.2.4 Operação E Virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .347 14.3 Lógica transistor-transistor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .348 14.3.1 Entradas em Nível Alto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .348 14.3.2 Pelo Menos uma Entrada em Nível Baixo . . . . . . . . . . . . . . . . . . .350 14.3.3 Carga TTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .350 14.3.4 Velocidade de Operação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .352 14.3.5 Saída em Alta Impedância . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .353 14.3.6 Saída com Coletor Aberto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .354 14.3.7 Entradas Não-Usadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .357 14.3.8 TTL de Baixa Potência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .358 14.3.9 TTL de Alta Velocidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .358 14.3.10 TTL Schottky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .359 14.3.11 TTL Schottky de Baixa Potência . . . . . . . . . . . . . . . . . . . . . . . . .360 14.3.12 TTL Schottky Avançado de Baixa Potência . . . . . . . . . . . . . . . . . .360 14.3.13 Comparativo Famílias TTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .361 14.4 Lógica emissor acoplado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .363 14.5 Lógica CMOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .365 14.5.1 Inversor CMOS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .365 14.5.2 Margens de Ruído . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .366 14.5.3 Funções Lógicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .367 14.5.4 Fan In e Fan Out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .369 14.5.5 Inversor NMOS com Carga Resistiva . . . . . . . . . . . . . . . . . . . . . .369 14.5.6 Inversor NMOS com Carga Ativa . . . . . . . . . . . . . . . . . . . . . . . . .370 14.5.7 Dreno Aberto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .371 14.5.8 Saída Alta Impedância . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .371 14.5.9 Porta de Transmissão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .372 14.5.10 Dissipação de Potência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .374 14.6 Interfaceamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .376 14.6.1 TTL-CMOS 5V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .376 14.6.2 TTL-CMOS Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .377 14.6.3 CMOS 5V – TTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .378 14.6.4 CMOS Genérico – TTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .380 14.6.5 Outras Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .380
xxii CIRCUITOS DIGITAIS • ANÁLISE E SÍNTESE LÓGICA: APLICAÇÕES EM FPGA
14.7 Verilog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .381 14.8 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .382
CAPÍTULO 15
Circuitos CMOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .385 15.1 Circuito CMOS estático e dinâmico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .385 15.1.1 Tempo de Propagação e Margem de Ruído . . . . . . . . . . . . . . . . .387 15.1.2 Cascateamento em Lógica Dinâmica . . . . . . . . . . . . . . . . . . . . . .388 15.1.3 Funções Lógicas em Lógica Dinâmica . . . . . . . . . . . . . . . . . . . . .391 15.2 Latches e flip-flops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .392 15.3 Chaves analógicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .395 15.3.1 Multiplexador e Demultiplexador Analógico . . . . . . . . . . . . . . . . .395 15.4 Schmitt-Trigger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .396 15.5 Circuitos astáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .399 15.6 Monoestáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .401 15.6.1 Exemplos de Uso de Monoestáveis . . . . . . . . . . . . . . . . . . . . . . .404 15.6.2 Monoestáveis e Astáveis Integrados . . . . . . . . . . . . . . . . . . . . . .405 15.7 BiCMOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .408 15.8 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .411
CAPÍTULO 16
Conversão AD & DA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .413 16.1 Conversão digital-analógico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .414 16.1.1 Conversor Resistivo de Peso Ponderado . . . . . . . . . . . . . . . . . . .414 16.1.2 Conversor Resistivo Rede R-2R . . . . . . . . . . . . . . . . . . . . . . . . .415 16.2 Circuitos de amostragem e retenção . . . . . . . . . . . . . . . . . . . . . . . . . . . .416 16.3 Conversão analógico-digital . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .417 16.3.1 Conversor Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .417 16.3.2 Conversor Contador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .419 16.3.3 Rampa Dupla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .420 16.3.4 Redistribuição de Carga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .422 16.3.5 Outros Conversores e Métricas . . . . . . . . . . . . . . . . . . . . . . . . . .424 16.4 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .424
Sumário
xxiii
APÊNDICE A
Transistor MOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .427 A.1 Estrutura e Operação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .427 A.1.1 Análise Gráfica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .431 A.1.2 Modulação de Canal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .432 A.1.3 Impedância de Saída . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .433 A.1.4 Efeito de Corpo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .434 A.1.5 Parâmetro de Condução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .435 A.1.6 Condução Sublimiar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .435 A.1.7 Transistor PMOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .436 A.1.8 Representação Gráfica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .437 A.1.9 Capacitâncias Parasitas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .438 A.2 CMOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .440 A.3 Circuito DC MOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .441 A.4 Modelo AC MOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .442 A.5 Porta de Transmissão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .443 A.6 Inversor CMOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .446 A.6.1 Dimensionamento de Transistores. . . . . . . . . . . . . . . . . . . . . . . .447 A.7 Sumário . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .448
APÊNDICE B
Transistor Bipolar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .451 B.1 Estrutura e Operação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .451 B.1.1 Análise Gráfica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .456 B.1.2 Modulação da Base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .457 B.1.3 Impedância de Entrada e Saída . . . . . . . . . . . . . . . . . . . . . . . . . .458 B.1.4 Transistor PNP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .458 B.1.5 Aspecto Construtivo e Capacitâncias Parasitas . . . . . . . . . . . . . . .459 B.2 Circuito DC NPN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .459 B.3 Modelo AC MOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .460 B.4 Bandas de Energia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .461 B.5 Sumário . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .463
xxiv CIRCUITOS DIGITAIS • ANÁLISE E SÍNTESE LÓGICA: APLICAÇÕES EM FPGA
APÊNDICE C
Amplificador Operacional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .465 C.1 Estrutura e Operação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .465 C.1.1 Amplificador Não-Inversor . . . . . . . . . . . . . . . . . . . . . . . . . . . . .466 C.1.2 Amplificador Inversor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .467 C.1.3 Amplificador Somador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .468 C.1.4 Conversor Corrente-Tensão. . . . . . . . . . . . . . . . . . . . . . . . . . . . .468 C.1.5 Conversor Tensão-Corrente. . . . . . . . . . . . . . . . . . . . . . . . . . . . .469 C.1.6 Amplificador de Diferença . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .469 C.1.7 Amplificador de Instrumentação . . . . . . . . . . . . . . . . . . . . . . . . .471 C.1.8 Integrador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .473 C.1.9 Derivador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .473 C.1.10 Amplificador Logarítmico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .474 C.1.11 Amplificador Exponencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .475 C.1.12 Comparador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .475 C.1.13 Comparador com Histerese ou Schmitt Trigger . . . . . . . . . . . . . .476
APÊNDICE D
Verilog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .479 D.1 Estrutura. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .479 D.2 Sinais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .480 D.2.1 Sinais Internos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .481 D.2.2 Sinais Externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .482 D.3 Descrição Estrutural . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .483 D.3.1 Estruturas Primitivas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .483 D.3.1.1 UDP Combinacional . . . . . . . . . . . . . . . . . . . . . . . . . .485 D.3.1.2 UDP Sequencial Ativa por Nível . . . . . . . . . . . . . . . . . .486 D.3.1.3 UDP Sequencial Ativa por Rampa . . . . . . . . . . . . . . . .487 D.3.1.4 Uso de UDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .488 D.4 Estrutura Hierárquica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .489 D.5 Descrição por Fluxo de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .491 D.5.1 Constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .491 D.5.2 Segmento de Vetor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .492 D.5.3 Operadores Aritméticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .493 D.5.4 Operadores Relacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .493
Sumário
D.5.5 D.5.6 D.5.7 D.5.8 D.5.9 D.5.10
Operadores Lógicos . Deslocamento . Concatenação.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .494
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .495
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .495
Atribuição Contínua de Saída . Atribuição Condicional . Atrasos .
xxv
. . . . . . . . . . . . . . . . . . . . . . . . . .495
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .496
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .497
D.6 Descrição Comportamental . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .498 D.6.1 Variáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .498 D.6.2 Vetores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .499 D.6.3 Constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .500 D.6.4 Bloco Comportamental . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .500 D.6.5 Temporização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .502 D.6.6 Operações Condicionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .503 D.6.7 Múltiplas Escolhas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .504 D.6.8 Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .505 D.6.9 Controle de Temporização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .507 D.6.10 Eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .507 D.6.11 Múltiplos Eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .508 D.6.12 Atraso Bloqueável e Não-Bloqueável . . . . . . . . . . . . . . . . . . . . . .508 D.7 Implementação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .510 D.7.1 Uso de Tarefa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .510 D.7.2 Uso de Função . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .511 D.7.3 Tarefas e Funções do Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . .512 D.7.4 Circuitos Combinacionais Básicos . . . . . . . . . . . . . . . . . . . . . . . .512 D.7.5 Registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .514 D.7.6 Estilos de Codificação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .517 D.7.7 Latches Indesejáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .517 D.7.8 Máquinas de Estado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .519 D.8 Verificação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .519 D.8.1 Test Benches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .519 D.8.2 Sinais de Estímulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .520 D.9 Erros e Sugestões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .521 D.10 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .522
xxvi CIRCUITOS DIGITAIS • ANÁLISE E SÍNTESE LÓGICA: APLICAÇÕES EM FPGA
APÊNDICE E
Simulação e Síntese . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .525 E.1 Quartus – Altera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .525 E.1.1 Download e Instalação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .525 E.1.2 Configuração Inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .525 E.1.3 Captura Esquemática . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .526 E.1.4 Simulação de Esquemáticos usando ModelSim . . . . . . . . . . . . . .530 E.1.5 Tempos de Atrasos em Simulações ModelSim . . . . . . . . . . . . . . .539 E.1.6 Descrição Verilog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .539 E.1.7 Simulação utilizando Test Bench . . . . . . . . . . . . . . . . . . . . . . . . .540 E.1.8 Programação em FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .544 E.2 Vivado – Xilinx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .548 E.2.1 Download e Instalação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .548 E.2.2 Configuração Inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .548 E.2.3 Descrição Verilog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .550 E.2.4 Simulação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .553 E.2.5 Análise RTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .554 E.2.6 Síntese Pré-Programação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .556 E.2.7 Programação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .557 E.2.8 Simulações Temporais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .559
CAPÍTULO
Introdução
1
Os circuitos digitais estão tão intensamente presentes em nossas vidas, que é difícil imaginar viver sem eles. Eles estão claramente presentes em telefones móveis, tablets, computadores, televisores, jogos eletrônicos, equipamentos de acesso à Internet, máquinas fotográficas, reprodutores de áudio e vídeo, entre outros. Os circuitos digitais também estão presentes em nossa infraestrutura de energia, telecomunicações e radiodifusão, saneamento, transportes e outros. Esses circuitos permitem a operação de equipamentos de alta tecnologia, como satélites e sondas espaciais, equipamentos militares e equipamentos médicos, assim como em eletrodomésticos (geladeiras, lava-roupas, lava-louças, máquinas de café, etc.), automóveis, caminhões, tratores, barcos e aviões. Muitas vezes nem mesmo percebemos ou sabemos de seu emprego, como em rodovias e ferrovias, produção agrícola, portos e aeroportos. Ainda há a área de automação industrial e recentemente a automação residencial. Enfim, é difícil pensar em algum produto que não empregue circuitos digitais em sua operação, ou em sua produção. De fato a quase totalidade de produtos eletrônicos os emprega de alguma forma.
1.1 Digital versus analógico Os eventos naturais, como enxergamos e sentimos, são contínuos, isto é, não há mudanças instantâneas. Como exemplo, se um carro está em uma estrada a 50 km/h e pisamos levemente no acelerador, a velocidade aumenta para 55 km/h. Essa variação é contínua, isto é, o carro não passa instantaneamente de 50 km/h para 55 km/h. A Figura 1.1 ilustra velocímetros analógico e digital. Nos velocímetros tradicionais, isso é, analógicos, o ponteiro se desloca continuamente de 50 km/h para 55 km/h. Essa variação contínua representa o conceito analógico. Por outro lado, em um velocímetro digital, a indicação de velocidade se dá por degraus. Assim, com a aceleração do carro, o velocímetro mostra progressivamente as velocidades intermediárias 51 km/h, 52 km/h, 53 km/h e 54 km/h. Apesar do carro mudar sua velocidade continuamente, o velocímetro digital mostra as velocidades de forma discretizada, isto é, em degraus. Esse é o conceito de representação digital .
CAPÍTULO
Códigos Numéricos
2
Números fazem parte das atividades humanas e sua importância é indiscutível. Números estão presentes em toda a história, até em vários objetos pré-históricos. E apesar de suas diferentes formas de representação ao longo da história, estão na forma decimal pelo sim ples fato de o ser humano ter dez dedos nas mãos. Entretanto podem haver outros códigos numéricos, de acordo com a necessidade ou conveniência. No caso de circuitos digitais necessita-se do código binário.
2.1 Representação numérica Na representação decimal, o número 1.327 representa uma quantidade igual a um milhar, três centenas, duas dezenas e sete unidades, ou seja,
(2-1)
Nessa representação, a posição de cada dígito representa o seu peso, sendo, portanto, uma representação posicional. O padrão dessa representação é dado por
(2-2) Assim, de forma genérica, tem-se
(2-3)
onde r é a base, e a é um coeficiente inteiro, positivo e menor que r . Observe que essa representação é válida também para números negativos. Vale lem brar que no sistema decimal usam-se os símbolos 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9.
2.1.1 Sistema Binário O princípio anterior, dado pelas expressões (2-2) e (2-3), é válido também para o sistema binário. No sistema binário existem somente dois valores, ou símbolos; 0 e 1. O dígito
CAPÍTULO
Álgebra de Boole
3
A álgebra lógica foi apresentada pelo matemático Britânico George Boole em 1847 (The Mathematical Analysis of Logic) em resposta a uma controvérsia entre Augustus De Morgan e William Hamilton, e mais detalhadamente em 1854 (An Investigation of the Laws of Thought) onde se discute a análise lógica. Em 1937 Claude Shannon provou que a álgebra de Boole e a aritmética binária poderiam ser usadas em circuitos com relês, usados em telefonia, e estabeleceu-se a álgebra digital ou álgebra binária. A álgebra de Boole descreve as operações lógicas dos circuitos lógicos, e consequentemente as iterações dos sinais digitais. Tais iterações permitem a implementação de blocos e circuitos maiores, que encontram infinitas aplicações, desde relógios digitais até complexos sistemas computacionais. A álgebra de Boole é baseada em dois valores lógicos; 0 e 1. Esses valores podem representar condições associadas com verdadeiro e falso, ligado e desligado, aberto e fechado, energizado e desenergizado, etc. Assim, pode-se estabelecer a relação 0 para falso e 1 para verdadeiro (ou vice-versa), 0 para aberto e 1 para fechado (ou vice versa), e assim sucessivamente. Como a álgebra de Boole contempla apenas dois valores, 0 e 1, pode-se inferir que o contrário de 0 é 1, e vice-versa.
3.1 Operações básicas As três operações básicas da álgebra de Boole são os blocos elementares na construção de todos os circuitos digitais.
3.1.1 Inversão A operação de inversão, também chamada de Não (NOT em Inglês), Negação ou Complemento, executa a inversão lógica do sinal de entrada. A operação de inversão de uma variável A tem tipicamente as representações mostradas em (3-1). A Tabela 3.1 apresenta a sua operação e a Figura 3.1 mostra a sua representação grá fica. Se a entrada é 0, a saída será 1, e vice-versa. Y = A = A'
(3-1)
CAPÍTULO
Circuitos Lógicos Básicos
4
A construção de circuitos lógicos, de qualquer complexidade, é feita a partir de blocos lógicos básicos. Assim, torna-se essencial o entendimento e a interligação desses blocos na implementação de funções lógicas mais complexas. A álgebra de Boole é a ferramenta básica usada nestas atividades de análise e implementação de circuitos lógicos. Circuitos podem ser implementados a partir de expressões lógicas ou de suas tabelas de operação. Neste capítulo são apresentados a análise de circuitos lógicos, as formas de implementação a partir de tabelas e expressões e alguns blocos de uso frequente.
4.1 Expressões Booleanas e tabela verdade Operações lógicas básicas podem ser combinadas para se montar expressões lógicas maiores e mais complexas. A partir das expressões lógicas podem-se montar os circuitos lógicos que as implementam, usando-se os blocos básicos. A partir das expressões tam bém se pode montar a tabela de operação, que reflete a operação lógica do circuito. A montagem do circuito lógico é feita respeitando-se as prioridades da expressão lógica, a saber, inversão, operação E e operação Ou. Quando necessário podem-se usar parêntesis para estabelecer outras prioridades. Na tabela de operação, também chamada de Tabela Verdade, devem-se incluir todas as combinações possíveis das variáveis de entrada. Para facilitar a obtenção da lógica final, podem ser feitas colunas com resultados intermediários. Exemplos: 1. Y = AB + C
A montagem do circuito lógico é iniciada pela inversão de A, a seguir a operação E com B e finalmente a operação Ou com C , como mostrado na Figura 4.1. A
A
A.B Y
B C FIGURA 4.1
Função lógica Y =
AB + C .
CAPÍTULO
Mapas de Karnaugh
5
Os mapas de Karnaugh foram introduzidos em 1953 por Maurice Karnaugh como uma melhoria dos diagramas apresentados por Edward Veitch no ano anterior e representam um avanço nas leituras feitas pela tabela lógica. O mapa de Karnaugh proporciona uma leitura rápida e otimizada de funções lógicas, com base em sua tabela lógica. Ao invés de se ter uma tabela lógica da forma linear, os valores são colocados na forma matricial e a leitura é feita com base nas proximidades dos dados. Não há simplificação possível em uma leitura por Karnaugh!
5.1 Simplificação de Lagrange A partir de uma tabela lógica, pode-se obter a sua função pelo método de Lagrange. Entretanto, esse método exige que sejam feitas simplificações na expressão obtida, para se atingir a forma simplificada. Como exemplo, considere a Tabela 5.1, cuja leitura é dada por:
CAPÍTULO
6
Circuitos de Manuseio de Dados
Circuitos de manuseio de dados são circuitos combinacionais que fazem translações lógicas paralelas, tais como conversão de códigos, codificação, decodificação e formatação de dados digitais. Esses circuitos são empregados em seleção de endereços de dispositivos e memórias, conversões de códigos, decodificadores de mostradores e codificação de teclados, entre outros.
6.1 Conversores de código Conversores de código são empregados na conversão de códigos ou formatos de dados binários. Como exemplo de aplicação, considere dois circuitos previamente projetados usando códigos diferentes que devem ser conectados, ou ainda, por questões econômicas/ segurança, dados devem ser convertidos para um formato (código) específico antes de ser enviado. Nesses casos, usam-se os conversores de códigos. De forma prática, o número de linhas do código de entrada corresponde ao número de variáveis em cada mapa de Karnaugh, e o número de linhas de saída corresponde ao número de mapas de Karnaugh. As capacidades dos códigos de entrada e saída devem ser iguais. Como exemplo, considere a conversão do código BCD5311 para o código BCD8421, como ilustrado na Tabela 6.1. Neste exemplo são necessários quatro mapas; A, B, C e D, cada um com as variáveis H , G, F e E . Tabela 6.1 Conversão de códigos BCD 5311 para BCD8421. BCD 5311
Código Pesos Variáveis
0 1 2 3 4 5 6 7 8 9
BCD 8421
5
3
1
1
8
4
2
1
H
G
F
E
D
C
B
A
0 0 0 0 0 0 1 1 1 1
0 0 0 1 1 1 0 0 1 1
0 0 1 0 0 1 0 1 0 0
0 1 1 0 1 1 1 1 0 1
0 0 0 0 0 0 0 0 1 1
0 0 0 0 1 1 1 1 0 0
0 0 1 1 0 0 1 1 0 0
0 1 0 1 0 1 0 1 0 1
CAPÍTULO
7
Circuitos Aritméticos
Circuitos aritméticos são amplamente usados em computadores, controladores, processadores digitais e em uma grande variedade de circuitos de aplicações específicas. Basicamente, todos os cálculos matemáticos são feitos por circuitos aritméticos. O gerenciamento avançado de endereços e as tomadas de decisões em computadores são dependentes de circuitos aritméticos. Adicionalmente, grande parte do processamento de sinais é feita por circuitos aritméticos, demonstrando assim a importância e a dependência desses circuitos.
7.1 Soma
Na matemática convencional, quando se faz uma soma, na verdade faz-se um deslocamento na sequência de contagem. Considere o valor 2 na sequência da Figura 7.1.a. Ao se somar 5, há um deslocamento de 5 unidades após o 2, atingindo o valor 7. 0 1 2 3 4 5 6 7 8 9
(a) FIGURA 7.1
+5
1 1 1 1 1 1 1 1 1 1 (b)
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
+5
Soma em decimal (a) menor que dezena e (b) maior que dezena.
CAPÍTULO
Latches e Flip-Flops
8
Latches e flip-flops são dispositivos básicos de memorização, permitem a implementação de memórias e registros e são usados na grande maioria dos circuitos digitais, desde sim ples contadores até grandes sistemas com processadores. Dispositivos de memorização e circuitos que os utilizam são circuitos sequenciais, ou seja, são circuitos em que somente a combinação de valores aplicados às suas entradas não são mais suficientes para determinar o valor das saídas. A sequência de sua aplicação passa a ser um fator determinante.
8.1 Latch Assíncrono Considere os dois inversores em malha fechada apresentado na Figura 8.1. Se Q = 1 então Q = 0, o que por sua vez garante Q = 1. Por outro lado, se Q = 0 então Q = 1, o que por sua vez garante Q = 0. Enquanto estiver energizado, o circuito mantém-se estável em uma das duas condições.
Q
FIGURA 8.1
Q
Dois inversores em malha fechada.
Considere agora a retroalimentação utilizando de portas lógicas Não-OU, como apresentado em duas formas na Figura 8.2, que formam um latch.
CAPÍTULO
9
Contadores
Contadores estão presentes na maioria dos sistemas digitais, desde simples controladores até complexos sistemas computacionais, e são usados para contar eventos. Os contadores podem ser classificados em síncronos e assíncronos. Os contadores assíncronos são mais simples, pois não dispõem de sinal único de sincronismo, porém apresentam limitações de forma e velocidade de contagem. Por outro lado os contadores síncronos são mais rápidos e flexíveis devido à presença de um sinal de sincronismo, que os tornam mais complexos.
9.1 Contadores assíncronos Em contadores assíncronos, a saída de um flip-flop funciona como entrada de clock para o flip-flop seguinte. A Figura 9.1 apresenta a estrutura básica de um contador binário assíncrono crescente de quatro bits. A 1
Q1
1
Clk
Contar 1 FIGURA 9.1
J1
B
K1
J2
Q2
C 1
Clk Q1
1
K2
J3
Q3
D 1
Clk Q2
1
K3
J4
Q4
Clk Q3
1
K4
Q4
Contador binário assíncrono crescente de quatro bits.
Como as entradas JK de cada flip-flop estão ligadas em 1, ao ocorrer uma rampa de descida na entrada de clock de um flip-flop, sua saída muda de estado. Como a saída Q de um flip-flop está ligada à entrada de clock do flip-flop seguinte, ao ocorrer uma transição de 1 para 0 nessa saída, o flip-flop seguinte é estimulado. Assim, admitindo-se inicialmente que todas as saídas estejam em 0, ao ocorrer o pulso Contar , a saída Q1 passa de 0 para 1. Essa transição de 0 para 1 não causa nada no
CAPÍTULO
Máquinas de Estado
10
Máquinas de estado são circuitos digitais utilizados no controle de operações e processos digitais, podendo ir desde simples contadores a execução de operações de microprocessadores, e são muito usadas em circuitos de comunicação. As máquinas de estado podem ter qualquer número de entradas e pelo menos uma saída. As saídas podem ser dependentes ou independentes das entradas e cada uma apresenta suas aplicações.
10.1 Conceitos de máquinas de estados Máquina de estado é um circuito digital síncrono, com entradas e saídas, como indicado na Figura 10.1. Como todo circuito digital síncrono, a máquina de estado apresenta uma linha de sincronismo, ou linha de clock.
FIGURA 10.1
Circuito sequencial síncrono.
CAPÍTULO
Projeto de Máquinas de Estado por Fluxogramas
11
Apesar de ser amplamente utilizado, o projeto de máquinas de estado utilizando o método convencional é inconveniente para muitas situações e aplicações. Em situações onde já se tem a operação desejada da máquina de estado na forma de algoritmo, ou em casos onde o número de variáveis de entrada é elevado, ou ainda em casos onde nem todas as com binações de entradas ocorrem, o projeto de máquinas de estado por fluxograma se torna mais adequado. O uso de fluxograma é uma forma simplificada de projeto de máquina de estados.
11.1 Elementos
Os elementos que compõem os fluxogramas de máquinas de estado são: elemento de estado, elemento de decisão e elemento condicional. O elemento de estado corresponde à condição ou estado da máquina e tem o mesmo papel do estado no diagrama de estados. Como indicado na Figura 11.1, o elemento de estado apresenta um nome, uma lista de saída se for Máquina de Moore e pode apresentar o código atribuído ao estado. Lembre-se que a saída de Moore depende apenas do estado. Cada elemento de estado, como o próprio nome já revela, reflete o estado do circuito, isto é, revela a condição estável e de repouso do circuito. Em outras palavras, enquanto não há pulsos de clock, o circuito se mantém estável nesses estados.
Código do Estado Nome do Estado
FIGURA 11.1
Elemento de estado.
Lista de Saída (Máquina de Moore)
CAPÍTULO
Memórias
12
Memórias são circuitos de armazenamento de dados usados em computadores, controladores, processadores digitais e em uma grande variedade de outros circuitos digitais. As memórias são empregadas para registrar programas e dados empregados pelos programas, tais como valores, textos, imagens e outros. Todo poder computacional fica de pendente da capacidade e velocidade das memórias. As memórias podem armazenar dados temporariamente durante operações ou podem registrar dados por prazo indeterminado. Os dados podem ser mantidos de forma estática ou dinâmica e as memórias podem ser implementadas por diferentes mecanismos de registro tais como capacitivo, eletrônico, magnético, óptico e outros, entretanto esse material concentra-se somente em memórias semicondutoras.
12.1 Tipos de memórias As memórias semicondutoras podem ser classificadas em voláteis e não voláteis. Nas memórias voláteis a informação é mantida somente enquanto estiverem energizadas, ao passo que nas memórias não voláteis a informação é mantida independente da alimentação. Em geral as memórias voláteis são mais rápidas que as não voláteis. As memórias ROM, PROM, EPROM, E 2PROM e Flash correspondem às não voláteis enquanto que a memória RAM corresponde à volátil. Nas memórias de acesso aleatório ( Random Access Memory – RAM) o tempo para acessar qualquer posição de memória é basicamente o mesmo, isto é, não depende da posição onde se deseja gravar ou ler o dado. No caso das memórias de acesso sequencial (Sequential Access Memory – SAM) o tempo de acesso do dado depende de sua posição na memória, como ocorre em CD, DVD, HD e memórias de fita magnética, isto é, de pende do atraso mecânico em se acessar a posição do dado desejado.
CAPÍTULO
Dispositivos Lógicos Programáveis
13
Dispositivos Lógicos Programáveis – PLD ( Programmable Logic Devices) são circuitos integrados que podem ser configurados para implementar circuitos digitais, capazes de abranger desde funções lógicas básicas até sistemas complexos com processadores e controladores e recentemente até processadores de múltiplos núcleos. O uso de DLP permite a implementação de sistemas digitais em um único circuito integrado. Ao se implementar sistemas em um chip asseguram-se várias vantagens:
• Elevação de confiabilidade: menor número de soldas e roteamento em placas de circuito impresso, portanto menos susceptibilidade a falhas.
• Redução de área: menor número de componentes implica menor área, o que por sua vez permite a obtenção de produtos finais menores.
• Proteção de propriedade intelectual: dificuldade maior em engenharia reversa. • Menor consumo de energia: menor número de componentes e utilização de componente mais avançado propicia menor consumo de energia.
• Redução de custo: combinação dos fatores acima implica menor custo final. Além dos Dispositivos Lógicos Programáveis poderem ser utilizados no produto final, também podem ser utilizados durante o desenvolvimento. Havendo detecção de erro em alguma fase do projeto, basta uma nova programação. A desvantagem dos Dispositivos Lógicos Programáveis reside no seu custo, ainda não otimizado para utilização de produtos para produção em larga escala. Nesse caso, o uso de circuitos integrados dedicados se torna a melhor solução econômica. Ainda assim, o DLP pode ser usado durante o desenvolvimento do produto.
13.1 Arranjos lógicos programáveis Funções lógicas podem ser implementadas com portas lógicas básicas, com multiplexadores e também com memórias ROM. Considere a memória ROM da Figura 14.9, reapresentada agora como Figura 13.1.
CAPÍTULO
Famílias Lógicas
14
Os circuitos lógicos são projetados para desempenhar determinadas funções lógicas ou rotinas. Esses circuitos lógicos podem ser implementados através de diversas formas, tais como circuitos elétricos, ópticos, magnéticos, eletrônicos e outros. O uso de material semicondutor é o mais difundido pelo custo de fabricação, densidade de componentes, dissipação de potência, velocidade de operação, facilidade de uso e interfaceamento com inúmeros meios. Os componentes eletrônicos amplamente usados na fabricação de circuitos digitais são os transistores bipolares – BJT e os transistores de efeito de campo – MOS. Componentes que apresentam características elétricas, tais como níveis de tensão e corrente, compatíveis entre si, determinam uma família lógica. Em outras palavras, componentes de uma mesma família lógica são compatíveis entre si em termos de corrente e tensão.
14.1 Lógica resistor-transistor A lógica resistor-transistor – RTL ( Resistor-Transistor Logic) é implementada usando resistores e transistores bipolares e foi usada nos primeiros computadores, que ainda usavam componentes discretos. RTL foi a primeira família lógica integrada que começou a ser produzida em 1961 e já em 1962 os circuitos integrados foram usados no programa espacial Apolo. A Figura 14.1.a apresenta a implementação do inversor, a Figura 14.1.b mostra sua representação lógica e a Figura 14.1.c apresenta a curva de transferência, que pode ser obtida por simulação ou experimento prático. Para tensões de entrada V I menores que 0,7V o transistor encontra-se em corte e consequentemente a tensão de saída V O vale 5V. Por outro lado, para tensões de entrada V I acima de 1,66V, o transistor encontra-se saturado e, portanto, a tensão de saída V O vale 0,2V. Em outras palavras, para sinal de entrada em 0 (tensões menores que 0,7V) a saída está em 1 (5V) e para sinal de entrada em 1 (tensões acima de 1,66V) a saída em 0 (0,2V), caracterizando assim um inversor. Para tensões de entrada V I entre 0,7V e 1,66 V, o transistor encontra-se na região linear de operação, onde I C = β . I B é válido. Essa condição de operação é evitada, pois
CAPÍTULO
Circuitos CMOS
15
A tecnologia CMOS sobrepujou a tecnologia bipolar na maioria das aplicações, princi palmente por oferecer maior densidade de integração, menor custo de produção e menor dissipação de potência. Alguns circuitos tornam-se mais simples de serem implementados em CMOS e há também circuitos que seriam extremamente complexos se fossem im plementados em outras tecnologias. O desenvolvimento de circuitos complexos muitas vezes utiliza a interligação de blocos simples, ou circuitos simples que são frequentemente empregados. Este capítulo apresenta a estrutura e operação de alguns blocos focados em aplicações digitais, assim como algumas formas de implementação, incluindo a associação de CMOS com bipolar.
15.1 Circuito CMOS estático e dinâmico A Figura 15.1 mostra as três formas de se implementar um inversor estático. Enquanto a tensão de alimentação e o sinal de entrada forem mantidos, o valor lógico da saída se mantém. As vantagens do inversor CMOS (Figura 15.1.a) são sua baixa corrente quiescente, margem de ruído baixa e alta velocidade. O inversor NMOS com carga resistiva (Figura 15.1.b) apresenta baixo fan in porém ocupa muita área de silício. O inversor NMOS com carga ativa (Figura 15.1.c) também oferece baixo fan in, porém ocupando pouca área de silício. Entretanto, apesar do baixo fan in, esses dois últimos inversores apresentam corrente quiescente se a entrada estiver em nível alto, além de oferecer baixa velocidade. A Figura 15.2 apresenta um inversor implementado em lógica dinâmica. Essa lógica apresenta baixo fan in (similar aos inversores NMOS), área reduzida (similar aos CMOS e NMOS com carga ativa) e baixa corrente quiescente (como o inversor CMOS). Nesse circuito, CL representa todas as capacitâncias parasitas associadas ao nó Y , tais como ca pacitância da carga, fiação e do próprio acionador.
CAPÍTULO
16
Conversão AD & DA
Há um intenso e contínuo desenvolvimento de circuitos digitais, processadores e algoritmos de implementação lógica, assim como um desenvolvimento impressionante em termos de software e técnicas de inteligência artificial. Entretanto, o mundo natural é basicamente analógico: sons, imagens, movimentos, temperatura, vibrações, etc. Assim, existe a necessidade de compatibilizar esses dois mundos. Informações do mundo analógico precisam ser convertidas em valores digitais para serem processadas digitalmente. Essa conversão é feita pelos conversores Analógico-Digital – AD, como re presentado pela Figura 16.1.a. Neste conversor, um sinal analógico vi é convertido em uma palavra digital de N bits. Uma palavra digital, ou valor digital, é representado por:
(16-1)
Observe que nessa notação, bo é o bit mais significativo e N é o número de bits da palavra digital. Da mesma forma, resultados de processamentos digitais devem ser convertidos em grandezas analógicas para serem úteis no mundo analógico. Essa conversão é feita pelos conversores Digital-Analógico – DA, como representado pela Figura 16.1.b. Em função da aplicação, esse sinal poderá ser utilizado diretamente ou sofrer filtragens analógicas.
CONVERSOR vi
AD
.. .
b0
b0
b1
b1
bN-1
(a) FIGURA 16.1
Conversores (a) DA e (b) AD.
bN-1
CONVERSOR . . .
vo
DA (b)
View more...
Comments