TALES CLEBER PIMENTA
TALES CLEBER PIMENTA
CIRCUITOS
CIRCUITOS
DIGITAIS
DIGITAIS
ANÁLISE E SÍNTESE LÓGICA
ANÁLISE E SÍNTESE LÓGICA
APLICAÇÕES EM FPGA
Tales Cleber Pimenta
Tales Cleber Pimenta
Circuitos Digitais
Circuitos Digitais
Análise e Síntese Lógica:
Análise e Síntese Lógica:
Aplicações em FPGA
O Autor
O Autor
O autor possui graduação em Engenharia Elétrica com ênfase em Eletrônica em 1985 pela
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
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
Federal de Itajubá em 1988 e doutorado em Engenharia Elétrica pela Ohio University em
1992. Fez o primeiro pós-doutorado na
1992. Fez o primeiro pós-doutorado na
The Ohio State University
The Ohio State University
em 1997 em circuitos
em 1997 em circuitos
integrados analógicos de baixa tensão, o
integrados analógicos de baixa tensão, o
segundo pós-doutorado na
segundo pós-doutorado na
Virginia Politechnic
Virginia Politechnic
Institute and State University
Institute and State University
em 2005 na área de circuitos integrados de frequências ul-
em 2005 na área de circuitos integrados de frequências
ul-traelevadas e o terceiro pós-doutorado em 2014 pela
traelevadas e o terceiro pós-doutorado em 2014 pela
The University of North Florida
The University of North Florida
na
na
área de aplicações biomédicas. Atualmente é professor
área de aplicações biomédicas. Atualmente é professor
titular da Universidade Federal de
titular da Universidade Federal de
Itajubá ministrando disciplinas de Eletrônica Digital e de Circuitos Integrados Digitais
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
na graduação. Já na pós-graduação ministra disciplinas de Microeletrônica e Projetos de
Circuitos Integrados, e conduz projetos na área
Sumário
Agradecimentos
. . . . . . . . . . . . viiO Autor
. . . . . . . . . . . . . . . . ixPrefácio
. . . . . . . . . . . . . . . . xiCAPÍTULO
1
Introdução
. . . . . . . . . . . . . 11.1
Digital
versusanalógico
. . . . . . . . . 11.2
Um pouco de história
. . . . . . . . . 31.2.1
Tendências
. . . . . . . . . 61.3
Ponto de vista
. . . . . . . . . . 61.4
Blocos
. . . . . . . . . . . . 7CAPÍTULO
2
Códigos Numéricos
. . . . . . . . . . . . 92.1
Representação numérica
. . . . . . 92.1.1
Sistema Binário
. . . . . . . . . 92.1.2
Sistema Octal
. . . . . . . . . 102.1.3
Sistema Hexadecimal
. . . . . . . . . 102.1.4
Sistemas Básicos
. . . . . . . . . 102.2
Conversões de base
. . . . . . . . . 112.2.1
Conversão de Decimal para outras Bases – Números Inteiros
. . . . 112.2.2
Conversão de Decimal para outras Bases – Números Fracionários
122.2.3
Conversão de Decimal para outras Bases – Números Mistos
. . . . 12xiv
CIRCUITOS DIGITAIS • ANÁLISE E SÍNTESE LÓGICA: APLICAÇÕES EM FPGA
2.3
Codigo GRAY
. . . . . . . . . 132.3.1
Obtenção do Código Gray
. . . . . . 152.3.2
Conversão entre Código Gray e Binário
. . . 162.4
Códigos BCD
. . . . . . . . . 172.5
Códigos alfanuméricos
. . . . . . . . . 182.6
Exercícios
. . . . . . . . . . . 19CAPÍTULO
3
Álgebra de Boole
. . . . . . . . . . . . 213.1
Operações básicas
. . . . . . . . . 213.1.1
Inversão
. . . . . . . . . 213.1.2
Operação E
. . . . . . . . . 223.1.3
Operação OU
. . . . . . . . . 233.2
Expressões duais e complementares
. . . 233.3
Teoremas
. . . . . . . . . . . . 243.3.1
Elemento Unitário (Aniquilador)
. . . 243.3.2
Elemento Nulo (Identidade)
. . . 253.3.3
Idempotência
. . . . . . . . . 253.3.4
Complementaridade
. . . . . . . . . 253.3.5
Comutativa
. . . . . . . . . 263.3.6
De Morgan
. . . . . . . . . 263.3.7
Associativa
. . . . . . . . . 273.3.8
Distributiva
. . . . . . . . . 273.3.9
Combinação
. . . . . . . . . 273.3.10
Absorção ou Cobertura
. . . . . . . . 283.3.11
Eliminação
. . . . . . . . . 283.3.12
Consenso ou Fantasma
. . . . . . . . 293.3.13
Conversão
. . . . . . . . . 293.3.14
Teoremas – Sumário
. . . . . . . . . 303.3.15
Problemas de Aplicação de Teoremas
. . . 303.4
Exercícios
. . . . . . . . . . . 32CAPÍTULO
4
Circuitos Lógicos Básicos
. . . . . . . . . . . 35Sumário
xv
4.2
Blocos lógicos
. . . . . . . . . 374.2.1
Operação Não-E (NAND)
. . . . . . 374.2.2
Operação Não-Ou (NOR)
. . . . . . 374.2.3
Operação Ou-Exclusivo (XOR)
. . . . . . 384.2.4
Operação Não-Ou-Exclusivo (XNOR) ou Coincidência
. . . 384.3
Implementação de funções usando uma operação lógica
. . . 394.3.1
Inversão
. . . . . . . . . 394.3.2
Ou
. . . . . . . . . 404.3.3
E
. . . . . . . . . . . 404.3.4
Não-Ou
. . . . . . . . . 414.3.5
Não-E
. . . . . . . . . 414.3.6
Expressões Lógicas
. . . . . . . . . 424.4
Obtenção de expressões lógicas por tabelas
. . . . . . 444.5
Maxtermos e mintermos – forma canônica
. . . . . . 464.5.1
Número de Variáveis
. . . . . . . . . 494.5.2
Aplicações
. . . . . . . . . 494.6
Circuitos a contatos
. . . . . . . . . 504.6.1
Função E
. . . . . . . . . 504.6.2
Função OU
. . . . . . . . . 514.6.3
Função OU-Exclusivo
. . . . . . . . . 514.6.4
Relés
. . . . . . . . . 514.6.5
Função Inversão
. . . . . . . . . 524.6.6
Outras Funções
. . . . . . . . . 524.7
Simbologias IEEE/ANSI
. . . . . . . . . 534.8
Circuitos básicos em Verilog
. . . . . . . . . 534.8.1
Descrição Estrutural
. . . . . . . . . 544.8.2
Descrição Comportamental
. . . . . . 554.8.3
Validação
. . . . . . . . . 554.9
Exercícios
. . . . . . . . . . . 57CAPÍTULO
5
Mapas de Karnaugh
. . . . . . . . . . . . 635.1
Simplificação de Lagrange
. . . . . . . . . 635.2
Leituras de Karnaugh
. . . . . . . . . 645.2.1
Metodologia de Leitura
. . . . . . . . 655.2.2
Exemplos de Leitura
. . . . . . . . . 65xvi
CIRCUITOS DIGITAIS • ANÁLISE E SÍNTESE LÓGICA: APLICAÇÕES EM FPGA
5.2.3
Leitura pelos 0
. . . . . . 685.2.4
Mapas de 5 Variáveis
. . . . . . . . . 685.2.5
Mapas de 6 Variáveis
. . . . . . . . . 705.2.6
Termos Opcionais
. . . . . . . . . 715.3
Aplicações de Karnaugh
. . . . . . . . . 735.3.1
Simplificação de Expressões
. . . . . . 735.3.2
Conversão entre Soma de Produtos e Produto de Somas
. . . 735.3.3
Mintermos e Maxtermos
. . . . . . 745.3.4
Conversão Soma de Produtos/Produto de Somas Operações
– Mintermos/Maxtermos
. . . 755.3.5
Operações E e OU entre Funções
. . . . . . 755.4
Aplicações de Karnaugh em Verilog
. . . 765.4.1
Primitivas Definidas pelo Usuário
. . . 765.4.2
Descrição por Fluxo de Dados
. . . . . . 775.5
Exercícios
. . . . . . . . . . . 78CAPÍTULO
6
Circuitos de Manuseio de Dados
. . . . . . . . . 836.1
Conversores de código
. . . . . . . . . 836.2
Codificadores
. . . . . . . . . 866.2.1
Codificador de Prioridade
. . . 886.2.2
Codificador de Prioridade Tipo Termômetro
. . . . . 906.2.3
Codificador de Teclado
. . . . . . . . 916.3
Decodificadores
. . . . . . . . . 926.3.1
Decodificadores BCD e Binário para Sete Segmentos
. . . 936.3.2
Implementação de Funções
. . . . . . 966.4
Multiplexador
. . . . . . . . . 976.4.1
Multiplexagem
. . . . . . . . . 976.4.2
Multiplexador
. . . . . . . . . 986.4.3
Composição de Multiplexadores
. . . 996.5
Demultiplexador
. . . . . . . . . .1026.6
Utilização de multiplexadores
. . . . . . . . . . . . . . . . . . . . . . . . . . . .1036.6.1
Arranjo Paralelo de Multiplexadores
. . . . . . .1036.6.2
Arranjo Serial de Multiplexadores
. . . . . . .1036.6.3
Sistema de Comunicação
. . . . . . . .104Sumário
xvii
6.7
Circuitos de manuseio de dados utilizando Verilog
. . . . . . . .1086.7.1
Estruturas Hierárquicas
. . . . . . . .1146.8
Exercícios
. . . . . . . . . . .115CAPÍTULO
7
Circuitos Aritméticos
. . . . . . . . . . . . .1197.1
Soma
. . . . . . . . . . . . .1197.1.1
Meio Somador
. . . . . . . .1207.1.2
Somador Pleno
. . . . . . . . . .1217.1.3
Somadores de Múltiplos Bits
. . . . . . .1227.2
Subtração
. . . . . . . . . . .1237.2.1
Meio Subtrator
. . . . . . . . . . . . . . . . . . . . . . . .1247.2.2
Subtrator Pleno
. . . . . . . . . .1257.2.3
Subtratores de Múltiplos Bits
. . . . . . .1277.3
Subtração pelo complemento
. . . . . . . . . . .1297.3.1
Representação de Números Binários Negativos
. . . . . . . .1297.3.2
Aritmética em Complemento de 2
. . . . . . .1317.3.3
Circuito Somador-Subtrator
. . . . . . .1327.3.4
Transbordo ou Estouro de Campo
. . . . . . . . . . . . . . . . . .1337.4
Aritmética em BCD
. . . . . . . . . .1347.4.1
Subtração BCD
. . . . . . . . . . . . . . . . . . . . . . . .1377.5
Soma rápida
. . . . . . . . . .1387.6
Unidade lógica e aritmética
. . . . . . . . . .1407.7
Circuitos aritméticos utilizando Verilog
. . . . . . . . . . . . . . . . . . . . .1427.8
Exercícios
. . . . . . . . . . .143CAPÍTULO
8
Latches e Flip-Flops
. . . . . . . . . . . . .1478.1
Latch Assíncrono
. . . . . . . . . .1478.1.1
Aplicações de Latches
. . . . . . . .1518.2
Latch Síncrono
. . . . . . . . . .1528.3
Entradas diretas (Assíncronas)
. . . . . . . .1538.4
Latch D
. . . . . . . . . . . . . .1558.5
Flip-Flop D
. . . . . . . . . . .157xviii
CIRCUITOS DIGITAIS • ANÁLISE E SÍNTESE LÓGICA: APLICAÇÕES EM FPGA
8.7
Flip-Flop JK Mestre-Escravo
. . . . . . . . . . .1648.7.1
Análise Simplificada
. . . . . . .1658.8
Flip-Flop T
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1668.9
Temporização
. . . . . . . . . .1688.10
Conversão de flip-flops
. . . . . . . . . .1708.11
Registradores de deslocamento
. . . . . . . .1718.11.1
Aplicações de Registradores de Deslocamento
. . . . .1758.12
Latches e flip-flops utilizando Verilog
. . . . . . .1768.12.1
Latches e Flip-Flops por UDP
. . . . . . .1768.12.2
Latches e Flip-Flops por Descrição Comportamental
. . . .1778.12.3
Deslocamentos
. . . . . . . . . .1798.12.4
Controle de Atrasos
. . . . . . . . . . .1818.13
Exercícios
. . . . . . . . . . .184CAPÍTULO
9
Contadores
. . . . . . . . . . . . . . .1899.1
Contadores assíncronos
. . . . . . . . . .1899.1.1
Contagem Decrescente
. . . . . . . . . . . . . . . . . . . . . . . .1909.1.2
Contagem Crescente/Decrescente
. . . . . . . . . . . . . . . . . .1929.1.3
Valor Inicial de Contagem
. . . . . . .1939.1.4
Valor Final de Contagem Cíclica
. . . . . . .1949.1.5
Valor Final de Contagem com Parada do Contador
. . . . . . . .1959.1.6
Valor de Contagem Transitório
. . . . . . .1969.2
Contadores síncronos
. . . . . . . . . .1979.2.1
Sequência de Contagem
. . . . . . .1989.2.2
Mapas de Estado Seguinte
. . . . . . .1989.2.3
Mapas de Excitação – Flip-Flop SR
. . . . . . .2019.2.4
Montagem do Circuito
. . . . . . . .2049.2.5
Mapas de Excitação – Flip-Flop JK
. . . . . . . . . . . . . . . . . .2069.2.6
Leitura Simplificada – Flip-Flop JK
. . . . . . .2079.2.7
Mapas de Excitação – Flip-Flop T
. . . . . . .2099.2.8
Mapas de Excitação – Flip-Flop D
. . . . . . .2119.3
Acoplamento de contadores
. . . . . . . . . . . . . . . . . . . . . . . . . . .2119.3.1
Acoplamento Assíncrono
. . . . . . . .2119.3.2
Acoplamento Pseudossíncrono
. . . . . . . . . . . . . . . . . . . . . .2149.4
Contadores utilizando Verilog
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .215Sumário
xix
CAPÍTULO
10
Máquinas de Estado
. . . . . . . . . . . . .22110.1
Conceitos de máquinas de estados
. . . . . . .22110.2
Projeto de máquinas de estados
. . . . . . . .22310.2.1
Passo 1 – Obtenção do Diagrama de Estados
. . . . .22310.2.2
Passo 2 – Obtenção da Tabela de Estados
. . . . . .23610.2.3
Passo 3 – Eliminação de Estados Equivalentes
. . . . . . . . . . . . . . .23810.2.4
Passo 4 – Designação de Estados Auxiliares
. . . . .24110.2.5
Passo 5 – Mapas de Transição
. . . . . . .24410.2.6
Passo 6 – Mapas de Excitação dos Flip-Flops
. . . . .24810.2.7
Passo 7 – Mapas de Saída
. . . . . . .25110.2.8
Exemplo Completo
. . . . . . .25410.2.9
Múltiplas Saídas
. . . . . . . . . . . . . . . . . . . . . . . . .25910.3
Máquinas de estado utilizando Verilog
. . . . . . .26010.4
Exercícios
. . . . . . . . . . .264CAPÍTULO
11
Projeto de Máquinas de Estado por Fluxogramas
. . . . . . . . . . . . . . . . . . . . .26711.1
Elementos
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26711.2
Blocos
. . . . . . . . . . . . . .26811.3
Fluxogramas a partir de Diagrama de Estados
. . . . . . .27111.4
Projeto de máquinas de estado a partir de fluxogramas
. . . . . . . . . . . . . . .27311.4.1
Designação de Estados
. . . . . . . . . . . . . . . . . . . . . . . .27411.4.2
Expressões de Estado Seguinte
. . . . . . . . . . . . . . . . . . . . . .27511.4.3
Mapas de Excitação dos Flip-Flops
. . . . . . .27611.4.4
Expressões de Saída
. . . . . . . . . . . . . . . . . . . . . . . . . . . .27811.4.5
Exemplo de Mealy
. . . . . . . . . .27911.5
Máquinas Mealy-Moore
. . . . . . . . . .28111.5.1
Exemplo de Máquina Mealy
. . . . . . .28211.6
Máquinas de estado por fluxograma utilizando Verilog
. . . . .28411.7
Exercícios
. . . . . . . . . . .286CAPÍTULO
12
Memórias
. . . . . . . . . . . . . . .289xx
CIRCUITOS DIGITAIS • ANÁLISE E SÍNTESE LÓGICA: APLICAÇÕES EM FPGA
12.2
Memórias voláteis
. . . . . . . . . .29012.2.1
Memória RAM Dinâmica
. . . . . . . . . . . . . . . . . . . . . . . . .29412.3
Memórias não voláteis
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29412.3.1
Memória ROM
. . . . . . . . . .29512.3.2
Memória PROM
. . . . . . . . . .29712.3.3
Memória EPROM
. . . . . . . . . .30012.3.4
Memória EEPROM ou E
2PROM
. . . . . . .30212.3.5
Memória Flash
. . . . . . . .30212.4
Arranjos de memórias
. . . . . . . . . .30212.4.1
Associação Paralela ou Horizontal de Memórias
. . . . . . . . . . . . . .30312.4.2
Associação Serial ou Vertical de Memórias
. . . . . . . .30412.4.3
Decodificação de Endereços
. . . . . . .30412.4.4
Decodificação de Memórias de Tamanhos Diferentes
. . . . .31312.4.5
Decodificação de Memórias com Endereço Fracionado
. . . .31512.5
Temporização de memórias
. . . . . . .31612.6
Memórias utilizando Verilog
. . . . . . . . . . . . . . . . . . . . . . . . . . .31712.7
Exercícios
. . . . . . . . . . .318CAPÍTULO
13
Dispositivos Lógicos Programáveis
. . . . . . .32113.1
Arranjos lógicos programáveis
. . . . . . . . . . . . . . . . . . . . .32113.1.1
Arranjo Lógico Programável – PLA
. . . . . . .32213.1.2
Arranjo Programável Lógico – PAL
. . . . . . .32413.2
Dispositivos programáveis sequenciais
. . . . . . .32613.2.1
Arranjo Lógico Genérico – GAL
. . . . . . . . . . . . . . . . . . . . . .32613.2.2
Dispositivos Lógicos Programáveis Complexos – CPLD
. . . . . . . .32913.2.3
Arranjo de Portas Programável em Campo – FPGA
. . . .33113.3
Exercícios
. . . . . . . . . . .335CAPÍTULO
14
Famílias Lógicas
. . . . . . . . . . . . .33714.1
Lógica resistor-transistor
. . . . . . . . . . . . . . . . . . . . . . . . .33714.1.1
Margens de Ruído
. . . . . . . . . .33814.1.2
Fan Out
. . . . . . . . . .33914.1.3
Fan Out e Margem de Ruído
. . . . . . .340Sumário
xxi
14.2
Lógica diodo-transistor
. . . . . . . . . . .34214.2.1
DTL Modificado
. . . . . . . . . .34314.2.2
HTL
. . . . . . . .34414.2.3
Fan Out em DTL
. . . . . . .34514.2.4
Operação E Virtual
. . . . . . . . . .34714.3
Lógica transistor-transistor
. . . . . . . . . .34814.3.1
Entradas em Nível Alto
. . . . . . . .34814.3.2
Pelo Menos uma Entrada em Nível Baixo
. . . . . . . . . . . . . . .35014.3.3
Carga TTL
. . . . . . . . . .35014.3.4
Velocidade de Operação
. . . . . . . .35214.3.5
Saída em Alta Impedância
. . . . . . . . . . . . . . . . . . . . . . . . . .35314.3.6
Saída com Coletor Aberto
. . . . . . .35414.3.7
Entradas Não-Usadas
. . . . . . . .35714.3.8
TTL de Baixa Potência
. . . . . . . .35814.3.9
TTL de Alta Velocidade
. . . . . . .35814.3.10
TTL Schottky
. . . . . . . . . .35914.3.11
TTL Schottky de Baixa Potência
. . . . . . .36014.3.12
TTL Schottky Avançado de Baixa Potência
. . . . . . . . . . . .36014.3.13
Comparativo Famílias TTL
. . . . . . . . . . . . . . . . . . . . . . . . . .36114.4
Lógica emissor acoplado
. . . . . . . . . .36314.5
Lógica CMOS
. . . . . . . . . .36514.5.1
Inversor CMOS
. . . . . . . . . . . . . . . . . . . . . . . .36514.5.2
Margens de Ruído
. . . . . . . . . .36614.5.3
Funções Lógicas
. . . . . . . . . .36714.5.4
Fan In e Fan Out
. . . . . . . . . .36914.5.5
Inversor NMOS com Carga Resistiva
. . . . . . . . . . . . . . . .36914.5.6
Inversor NMOS com Carga Ativa
. . . . . . . . . . . . . . . . .37014.5.7
Dreno Aberto
. . . . . . . . . .37114.5.8
Saída Alta Impedância
. . . . . . . .37114.5.9
Porta de Transmissão
. . . . . . . . . . . . . . . . . . . . . . .37214.5.10
Dissipação de Potência
. . . . . . . . . . . . . . . . . . . . . . . .37414.6
Interfaceamento
. . . . . . . . . .37614.6.1
TTL-CMOS 5V
. . . . . . . . . .37614.6.2
TTL-CMOS Geral
. . . . . . . . . .37714.6.3
CMOS 5V – TTL
. . . . . . . . . .37814.6.4
CMOS Genérico – TTL
. . . . . . . .38014.6.5
Outras Interfaces
. . . . . . . . . .380xxii
CIRCUITOS DIGITAIS • ANÁLISE E SÍNTESE LÓGICA: APLICAÇÕES EM FPGA
14.7
Verilog
. . . . . . . . . . . . . .38114.8
Exercícios
. . . . . . . . . . .382CAPÍTULO
15
Circuitos CMOS
. . . . . . . . . . . . .38515.1
Circuito CMOS estático e dinâmico
. . . . . . . . . . . . . . . . . . . . . . . . . .38515.1.1
Tempo de Propagação e Margem de Ruído
. . . . . . . .38715.1.2
Cascateamento em Lógica Dinâmica
. . . . . .38815.1.3
Funções Lógicas em Lógica Dinâmica
. . . . . . . . . . . . . . . . .39115.2
Latches e flip-flops
. . . . . . . . . .39215.3
Chaves analógicas
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39515.3.1
Multiplexador e Demultiplexador Analógico
. . . . . . . . . . .39515.4
Schmitt-Trigger
. . . . . . . . . .39615.5
Circuitos astáveis
. . . . . . . . . .39915.6
Monoestáveis
. . . . . . . . . .40115.6.1
Exemplos de Uso de Monoestáveis
. . . . .40415.6.2
Monoestáveis e Astáveis Integrados
. . . . . . .40515.7
BiCMOS
. . . . . . . . . . . . . .40815.8
Exercícios
. . . . . . . . . . .411CAPÍTULO
16
Conversão AD & DA
. . . . . . . . . . . . .41316.1
Conversão digital-analógico
. . . . . . . . . . . . . . . . . . . . . . . . . . .41416.1.1
Conversor Resistivo de Peso Ponderado
. . . .41416.1.2
Conversor Resistivo Rede R-2R
. . . . . . .41516.2
Circuitos de amostragem e retenção
. . . . . . .41616.3
Conversão analógico-digital
. . . . . . . . . . . . . . . . . . . . . . . . . . .41716.3.1
Conversor Flash
. . . . . . .41716.3.2
Conversor Contador
. . . . . . .41916.3.3
Rampa Dupla
. . . . . . .42016.3.4
Redistribuição de Carga
. . . . . . . .42216.3.5
Outros Conversores e Métricas
. . . . . . .424Sumário
xxiii
APÊNDICE
A
Transistor MOS
. . . . . . . . . . . . .427A.1
Estrutura e Operação
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .427A.1.1
Análise Gráfica
. . . . . . . . . .431A.1.2
Modulação de Canal
. . . . . . .432A.1.3
Impedância de Saída
. . . . . . . . . . .433A.1.4
Efeito de Corpo
. . . . . . . . . .434A.1.5
Parâmetro de Condução
. . . . . . .435A.1.6
Condução Sublimiar
. . . . . . . . . . .435A.1.7
Transistor PMOS
. . . . . . . . . .436A.1.8
Representação Gráfica
. . . . . . . .437A.1.9
Capacitâncias Parasitas
. . . . . . . .438A.2
CMOS
. . . . . . . . . . . . . .440A.3
Circuito DC MOS
. . . . . . . . . .441A.4
Modelo AC MOS
. . . . . . . . . .442A.5
Porta de Transmissão
. . . . . . . . . .443A.6
Inversor CMOS
. . . . . . . . . .446A.6.1
Dimensionamento de Transistores
. . . . . . .447A.7
Sumário
. . . . . . . . . . . . . .448APÊNDICE
B
Transistor Bipolar
. . . . . . . . . . . . .451B.1
Estrutura e Operação
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .451B.1.1
Análise Gráfica
. . . . . . . . . .456B.1.2
Modulação da Base
. . . . . . . . . . .457B.1.3
Impedância de Entrada e Saída
. . . . . . .458B.1.4
Transistor PNP
. . . . . . . . . .458B.1.5
Aspecto Construtivo e Capacitâncias Parasitas
. . . . . . . . . . . . . . .459B.2
Circuito DC NPN
. . . . . . . . . .459B.3
Modelo AC MOS
. . . . . . . . . .460B.4
Bandas de Energia
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .461xxiv
CIRCUITOS DIGITAIS • ANÁLISE E SÍNTESE LÓGICA: APLICAÇÕES EM FPGA
APÊNDICE
C
Amplificador Operacional
. . . . . . . . . . .465C.1
Estrutura e Operação
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .465C.1.1
Amplificador Não-Inversor
. . . . . . .466C.1.2
Amplificador Inversor
. . . . . . . .467C.1.3
Amplificador Somador
. . . . . . . .468C.1.4
Conversor Corrente-Tensão
. . . . . . .468C.1.5
Conversor Tensão-Corrente
. . . . . . .469C.1.6
Amplificador de Diferença
. . . . . . . . . . . . . . . . . . . . . . . . . .469C.1.7
Amplificador de Instrumentação
. . . . . . .471C.1.8
Integrador
. . . . . . . . . .473C.1.9
Derivador
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .473C.1.10
Amplificador Logarítmico
. . . . . . . .474C.1.11
Amplificador Exponencial
. . . . . . . .475C.1.12
Comparador
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .475C.1.13
Comparador com Histerese ou Schmitt Trigger
. . . . .476APÊNDICE
D
Verilog
. . . . . . . . . . . . . . .479D.1
Estrutura
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .479D.2
Sinais
. . . . . . . . . . . . . .480D.2.1
Sinais Internos
. . . . . . . . . . . . . . . . . . . . . . . .481D.2.2
Sinais Externos
. . . . . . . . . .482D.3
Descrição Estrutural
. . . . . . . . . .483D.3.1
Estruturas Primitivas
. . . . . . . . . . .483D.3.1.1
UDP Combinacional
. . . . . . .485D.3.1.2
UDP Sequencial Ativa por Nível
. . . . . . . . . . . .486D.3.1.3
UDP Sequencial Ativa por Rampa
. . . . .487D.3.1.4
Uso de UDP
. . . . . . . .488D.4
Estrutura Hierárquica
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .489D.5
Descrição por Fluxo de Dados
. . . . . . . . . . .491D.5.1
Constantes
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .491D.5.2
Segmento de Vetor
. . . . . . . . . . . . . . . . . . . . . . . . . . .492D.5.3
Operadores Aritméticos
. . . . . . . .493Sumário
xxv
D.5.5
Operadores Lógicos
. . . . . . .494D.5.6
Deslocamento
. . . . . . . . . .495D.5.7
Concatenação
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .495D.5.8
Atribuição Contínua de Saída
. . . . . . .495D.5.9
Atribuição Condicional
. . . . . . . .496D.5.10
Atrasos
. . . . . . . . . .497D.6
Descrição Comportamental
. . . . . . . . . .498D.6.1
Variáveis
. . . . . . . . . .498D.6.2
Vetores
. . . . . . . . . .499D.6.3
Constantes
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .500D.6.4
Bloco Comportamental
. . . . . . . .500D.6.5
Temporização
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .502D.6.6
Operações Condicionais
. . . . . . . .503D.6.7
Múltiplas Escolhas
. . . . . . . . . .504D.6.8
Loops
. . . . . . . . . .505D.6.9
Controle de Temporização
. . . . . . . . . . . . . . . . . . . . . . . . . .507D.6.10
Eventos
. . . . . . . . . .507D.6.11
Múltiplos Eventos
. . . . . . . . . . . . . . . . . . . . . . . . . .508D.6.12
Atraso Bloqueável e Não-Bloqueável
. . . . . . .508D.7
Implementação
. . . . . . . . . . .510D.7.1
Uso de Tarefa
. . . . . . . . . .510D.7.2
Uso de Função
. . . . . . .511D.7.3
Tarefas e Funções do Sistema
. . . . . . . . . . . . . . . . . . . . .512D.7.4
Circuitos Combinacionais Básicos
. . . . . . . . . . . . . . . . . .512D.7.5
Registros
. . . . . . . . . .514D.7.6
Estilos de Codificação
. . . . . . . . . . . . . . . . . . . . .517D.7.7
Latches Indesejáveis
. . . . . . . . . . . . . . . . . . . . . . . . . . . .517D.7.8
Máquinas de Estado
. . . . . . .519D.8
Verificação
. . . . . . . . . . .519D.8.1
Test Benches
. . . . . . . . . .519D.8.2
Sinais de Estímulo
. . . . . . . . . .520D.9
Erros e Sugestões
. . . . . . . . . .521D.10
Exercícios
. . . . . . . . . . .522xxvi
CIRCUITOS DIGITAIS • ANÁLISE E SÍNTESE LÓGICA: APLICAÇÕES EM FPGA
APÊNDICE
E
Simulação e Síntese
. . . . . . . . . . . . .525E.1
Quartus – Altera
. . . . . . . . . .525E.1.1
Download e Instalação
. . . . . . . .525E.1.2
Configuração Inicial
. . . . . . . . . . .525E.1.3
Captura Esquemática
. . . . . . . . . . .526E.1.4
Simulação de Esquemáticos usando ModelSim
. . . . .530E.1.5
Tempos de Atrasos em Simulações ModelSim
. . . . . . . . . . .539E.1.6
Descrição Verilog
. . . . . . .539E.1.7
Simulação utilizando
Test Bench . . . . .540E.1.8
Programação em FPGA
. . . . . . . . . . . . . . . . . . . . . .544E.2
Vivado – Xilinx
. . . . . . . . . .548E.2.1
Download e Instalação
. . . . . . . .548E.2.2
Configuração Inicial
. . . . . . . . . . .548E.2.3
Descrição Verilog
. . . . . . .550E.2.4
Simulação
. . . . . . . . . .553E.2.5
Análise RTL
. . . . . . . . . .554E.2.6
Síntese Pré-Programação
. . . . . . .556E.2.7
Programação
. . . . . . . .557C A P Í T U L O
1
Introdução
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
ra-diodifusão, saneamento, transportes e outros. Esses circuitos permitem a operação de
equipamentos de alta tecnologia, como satélites e sondas espaciais, equipamentos
mi-litares 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,
bar-cos 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
versusanaló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
de-graus. Assim, com a aceleração do carro, o velocímetro mostra progressivamente as
velo-cidades 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
discreti-zada, isto é, em degraus. Esse é o conceito de representação digital .
C A P Í T U L O
2
Códigos Numéricos
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
C A P Í T U L O
3
Álgebra de Boole
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,
usa-dos 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
conse-quentemente 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
Atem tipicamente as representações mostradas em (3-1). A Tabela 3.1
apre-senta a sua operação e a Figura 3.1 mostra a sua repreapre-sentação grá
fica. Se a entrada é 0, a
saída será 1, e vice-versa.
C A P Í T U L O
4
Circuitos Lógicos
Básicos
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
Ee operação
Ou. Quando necessário podem-se usar
pa-rê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+
CA montagem do circuito lógico é iniciada pela inversão de
A, a seguir a operação E
com
Be finalmente a operação Ou com
C, como mostrado na Figura 4.1.
A
B
C
Y
A
A.B
C A P Í T U L O
5
Mapas de Karnaugh
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:
C A P Í T U L O
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
dispositi-vos 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,
Ce
D,
cada um com as variáveis
H,
G,
Fe
E.
Tabela 6.1
Conversão de códigos BCD
5311para BCD
8421.
Código BCD 5311 BCD 8421 Pesos 5 3 1 1 8 4 2 1 Variáveis H G F E D C B A
0
0
0
0
0
0
0
0
0
1
0
0
0
1
0
0
0
1
2
0
0
1
1
0
0
1
0
3
0
1
0
0
0
0
1
1
4
0
1
0
1
0
1
0
0
5
0
1
1
1
0
1
0
1
6
1
0
0
1
0
1
1
0
7
1
0
1
1
0
1
1
1
8
1
1
0
0
1
0
0
0
9
1
1
0
1
1
0
0
1
C A P Í T U L O
7
Circuitos Aritméticos
Circuitos aritméticos são amplamente usados em computadores, controladores,
processado-res 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
desloca-mento 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
+5
+5
6
7
8
9
0
1
2
3
4
5
(a)
(b)
6
7
8
9
0
1
1
1
1
1
1
1
1
1
1
1
2
3
4
5
6
7
8
9
C A P Í T U L O
8
Latches e Flip-Flops
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 Q
FIGURA 8.1
Dois inversores em malha fechada.
Considere agora a retroalimentação utilizando de portas lógicas Não-OU, como
apre-sentado em duas formas na Figura 8.2, que formam um latch.
C A P Í T U L O
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
sin-cronismo, 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
as-síncrono crescente de quatro bits.
Clk 1 1 Clk 1 1 Clk 1 1 Clk 1 1 A B C D Contar J1 Q1 Q1 J2 Q2 Q2 J4 Q4 Q4 J3 Q3 Q3 K1 K2 K3 K4
FIGURA 9.1