Buscar

trabalho circuitos lógicos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 63 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 63 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 63 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Curso: Engenharia Elétrica 
 
CIRCUITOS LÓGICOS
 Diego da Silva Filgueira 
 4200057812
 Brasília, 06 de Maio de 2017.
 Resumo
 O Trabalho trata de circuitos lógicos. Tendo como base tópicos de suma importância, que são o alicerce do cotidiano para o profissional e especialista na área.
 São abordados de forma abrangente vários princípios que norteiam os circuitos lógicos aos tempos modernos. 
 Observa-se que ao adentrarmos no assunto teremos bases primordiais para a tecnologia, pois aqui estamos abordando as diretivas necessárias para o aprimoramento da eletrônica, Robótica, sistemas de controle e tecnologias afins.
 Índice
1 Diferenças Entre Os Circuitos Analógicos E Os Digitais 4
1.1 Lógica Digital 5
2 Conversão Entre Bases. 6
2.1 Sistemas De Numeração 6
2.2 Numeração Binária 8
3 Operações Aritméticas: Soma, Subtração E Multiplicação. 12
3.1 Formas Diferentes De Utilizar O Sistema Binário 13
4 Álgebra De Boole. 16
5 Portas Lógicas, Tabela Verdade E Famílias Lógicas: TTL e CMOS. 27
5.1 Estados Lógicos 27
6 Mapa De Karnaugh 2, 3,4 E 5 Variáveis. 29
6.1 Cobertura Dos Mapas De Karnaugh	36
7 Flip-Flops, Contadores De Cis. 37
7.1 Os Tipos De Contadores 37
7.2 Contador Assíncrono 38
7.3 Contagem Programada 42
7.4 Contador Sincrono 46
7.5 Contadores Síncronos Programáveis 48
7.6 Contadores TTL 48 
7.7 Contadores e Divisores CMOS 52
8 Memórias e Conversores. 52
8.1 Memórias Voláteis 52
8.2 Memória Dinâmica 53
8.3 Memórias não Voláteis 53 8.4 Conversores Da/Ad 55
8.5sinais Analógicos E Sinais Digitais 55
8.6 Os Conversores Na Prática 56
9 Dispositivos Lógico Programáveis 58
9.1 Usando a ROM como um PLD 58
9.2 PAL – (Matriz Lógica Programavel) 59
9.3 GALs (generic array logic) 59
9.4 CPLDs 60
9.5 FPGA (field programmable gate array) 60
9.6 Outros tipos de PLDs 60
10 Conclusão 61
11 Bibliografias 62
1.Diferenças entre os circuitos analógicos e os digitais.
 Devemos lembrar que em muitos equipamentos, mesmo classificados como analógicos ou digitais, encontraremos os dois tipos de circuitos. É o caso dos computadores, que mesmo sendo classificados como “máquinas estritamente digitais” podem ter em alguns pontos de seus circuitos configurações analógicas.
 Uma definição encontrada nos livros especializados atribui o nome de Eletrônica Digital aos circuitos que operam com quantidades que só podem ser incrementadas ou decrementadas em passos finitos.
 
 Um exemplo disso é dado pelos circuitos que operam com impulsos. Só podemos ter números inteiros de pulsos sendo trabalhados em qualquer momento em qualquer ponto do circuito. Em nenhum lugar encontraremos “meio pulso” ou “um quarto de pulso”.
 A palavra digital também está associada a dígito (do latim digitu, dedo) que está associado à representação de quantidades inteiras. Não podemos usar os dedos para representar meio pulso ou um quarto de pulso.
 Na Eletrônica Analógica trabalhamos com quantidades ou sinais que podem ter valores que variam de modo contínuo numa escala. Os valores dos sinais não precisam ser inteiros. Por exemplo, um sinal de áudio, que é analógico, varia suavemente entre dois extremos, enquanto que um sinal digital só pode variar aos saltos, observe a figura 1.
 Conforme o leitor pode perceber, a diferença básica entre os dois tipos de eletrônica está associada inicialmente ao tipo de sinais com que elas trabalham e no que elas fazem com os sinais.
De uma forma resumida podemos dizer que:
 A Eletrônica Digital trabalha com sinais que só podem assumir valores discretos ou inteiros.
 A Eletrônica Analógica trabalha com sinais que podem ter qualquer valor entre dois limites.
 
 
 1.1 LÓGICA DIGITAL
 Os computadores e outros equipamentos que usam circuitos digitais funcionam obedecendo a um tipo de comportamento baseado no que se denomina Lógica.
 Diferentemente dos circuitos amplificadores comuns que simplesmente amplificam, atenuam ou realizam algum tipo de processamento simples dos sinais, os circuitos digitais usados em computadores e outras máquinas não processam os sinais baseados em uma finalidade simples determinada quando são fabricados.
  Os computadores atuais são digitais em sua totalidade e praticamente não é usado outro tipo de configuração. No entanto, nem sempre foi assim. Nas primeiras décadas deste século, quando os circuitos eram ainda valvulados, os primeiros computadores eram máquinas analógicas. A imprecisão e algumas outras dificuldades técnicas que estes computadores apresentavam fizeram com que logo fossem substituídos pelos circuitosdigitais hoje usados.
  Os circuitos digitais dos computadores e outros equipamentos são capazes de combinar os sinais tomando decisões segundo um comportamento lógico.
 É evidente que se o leitor deseja realmente entender como as coisas acontecem nos circuitos digitais, deve partir exatamente do aprendizado do comportamento lógico. Podemos dizer que a lógica nos permite tirar conclusões ou tomar decisões a partir de fatos conhecidos.
 Por exemplo, a decisão de “acender uma lâmpada quando está escuro” é uma decisão lógica, pois a proposição e a conclusão são fatos relacionados.
 Ao contrário, a decisão de “acender uma lâmpada, porque está chovendo” não é uma decisão lógica, pois os fatos envolvidos não têm relação.
 Evidentemente, os fatos relacionados acima são simples e servem para exemplificar como as coisas funcionam.
 Na eletrônica dos computadores, o que temos é a aplicação da lógica digital, ou seja, de circuitos que operam tomando decisões em função de coisas que acontecem no seu próprio interior. É claro que os computadores e seus circuitos digitais não podem entender coisas como está escuro ou está chovendo e tomar decisões.
 Os circuitos lógicos digitais trabalham com sinais elétricos. Assim, os circuitos lógicos digitais nada mais fazem do que receber sinais com determinadas características e em função destes tomar decisões que nada mais são do que a produção de um outro sinal elétrico.
 Mas, se os sinais elétricos são digitais, ou seja, representam quantidades discretas e se a lógica é baseada em tomada de decisões, o próximo passo no entendimento da Eletrônica Digital, é partir para o modo como as quantidades discretas são representadas e entendidas pelos circuitos eletrônicos.
2. Conversão entre Bases.
2.1 SISTEMAS DE NUMERAÇÃO
 O modo como contamos as quantidades vem do fato de possuirmos 10 dedos. Assim, tomando os dedos das mãos podemos contar objetos com facilidade até certo ponto.
 O ponto crítico ocorre quando temos quantidades maiores do que 10. O homem resolveu o problema passando a indicar também a quantidade de mãos ou de vezes em que os dez dedos eram usados.
 Assim, quando dizemos que temos 27 objetos, o 2 indica que temos “duas mãos cheias” ou duas dezenas mais 7 objetos. O 2 tem peso 10.
 Da mesma forma, quando dizemos que temos 237 objetos, o 2 indica que temos “duas dezenas de mãos cheias” ou duas centenas, enquanto o 3 indica que temos mais 3 mãos cheias e finalmente o 7, mais 7 objetos, figura 3. Em outras palavras, a posição dos algarismos na representação dos números tem um peso e em nos-so sistema de numeração que é decimal este peso é 10, veja a figura 4.
O que aconteceria se tivéssemos um número diferente de dedos, por exemplo 2 em cada mão?
Isso significaria, em primeiro lugar, que em nosso sistema de base 4 (e não base 10) só existiriam 4 algarismos para representar os números: 0, 1, 2 e 3, confira a figura 5.
Para representar uma quantidade maior do que 4 teríamos de usar mais de um algarismo.
Assim, para indicar 7 objetos na base 4, teríamos “uma mão cheia com 4” e mais 3. Isso daria 13, figura 6.
Veja então que no “13” na base 4,
1 tem peso 4, enquanto que o 3 tem 1.
 De uma forma generalizada, dizemos que dependendo da base do sistema os algarismos têm “pesos” que correspondem à sua posição no número e que estes pesos são potências da base. Por exemplo, para a base 10, cada algarismo a partir da direita tem um peso, que é uma potência de 10 em ordem crescente, o que nos leva à unidade (dez elevado a zero), à dezena (dez elevado ao expoente um), à centena (dez elevado ao quadrado), ao milhar (dez elevado ao cubo) e assim por diante, conforme a figura 7.
 Em Eletrônica Digital costumamos dizer que o dígito mais à direita, por representar a menor potência ou ter menor peso, é o dígito ou bit* menos significativo ou LSB (Less Significant Bit) enquanto que o mais à esquerda é o mais significativo ou MSB (Most Significant Bit). Para a base 4, conforme observamos na figura 8, os dígitos têm potências de 4.
 O bit que é o dígito binário (na base 2) será estudado mais adiante.
 
2.2 NUMERAÇÃO BINÁRIA
 Os circuitos eletrônicos não possuem dedos. É evidente também que não seria muito fácil projetar circuitos capazes de reconhecer 10 níveis de uma tensão ou de outra grandeza elétrica sem o perigo de que qualquer pequeno problema fizesse-os causar qualquer confusão.
 Muito mais simples para os circuitos eletrônicos é trabalhar com um sistema de numeração que esteja mais de acordo com o seu princípio de funcionamento e isso realmente é feito. Um circuito eletrônico pode ter ou não corrente, ter ou não tensão, pode receber ou não um pulso elétrico. Ora, os circuitos eletrônicos são mais apropriados para operar com sinais que tenham duas condições possíveis, ou seja, que representem dois dígitos ou algarismos. Também podemos dizer que as regras que regem o funcionamento dos circuitos que operam com apenas duas condições possíveis são muito mais simples. Assim, o sistema adotado nos circuitos eletrônicos digitais é o sistema binário ou de base 2, onde são usados apenas dois dígitos, correspondentes a duas condições possíveis de um circuito: 0 e 1. Mas, como podemos representar qualquer quantidade usando apenas dois algarismos?
A idéia básica é a mesma usada na representação de quantidades no sistema decimal: atribuir pesos aos dígitos conforme sua posição no número. Assim, vamos tomar como exemplo o valor 1101 que em binário representa o número 13 decimal e ver como isso ocorre.
 O primeiro dígito da direita nos indica que temos uma vez o peso deste dígito ou 1.
 O zero do segundo dígito da direita para a esquerda indica que não temos nada com o peso 2. Agora o terceiro dígito da direita para a esquerda e que tem peso 4 é 1, o que indica que temos “uma vez quatro”.
Finalmente, o primeiro dígito da esquerda que é 1 e está na posição de peso 8, nos diz que temos “uma vez oito”.
 Somando uma vez oito, com uma vez quatro e uma vez um, temos o total, justamente a quantidade que conhecemos em decimal como treze.
 Veja então, conforme indica a figura 9, que na numeração binária, os dígitos vão tendo pesos da direita para a esquerda que são potências de 2, ou seja, dois elevado ao expoente zero que é um, dois elevado ao expoente 1 que é 2, dois ao quadrado que é 4 e assim por diante.
Basta lembrar que a cada vez que nos deslocamos para a esquerda, o peso do dígito dobra, figura 10.
 Como não existe um limite para os valores dos pesos, isso significa que é possível representar qualquer quantidade em binário, por maior que seja, simplesmente usando o número apropriado de dígitos.
Para 4 dígitos podemos representar números até 15; para 8 dígitos podemos ir até 255, para 16 dígitos até 65 535 e assim por diante.
 O leitor deve lembrar-se desses valores limites para 4, 8 e 16 dígitos de um número binário, pois eles têm uma grande importância na Informática. A seguir damos a representação binária dos números decimais até 17 para uma melhor ilustração de como tudo funciona:
	Decimal
	Binário
	Decimal
	Binário
	0
	0
	9
	1001
	1
	1
	10
	1010
	2
	10
	11
	1011
	3
	11
	12
	1100
	4
	100
	13
	1101
	5
	101
	14
	1110
	6
	110
	15
	1111
	7
	111
	16
	10000
	8
	1000
	17
	10001
Para o leitor que pretende entender de Eletrônica Digital aplicada aos computadores há momentos em que é preciso saber converter uma indicação em binário para o decimal correspondente.
 Podemos dar como exemplo o caso de certas placas que são usadas no diagnóstico de computadores e que possuem um conjunto de LEDs que acende indicando um número correspondente a um código de erros. Os LEDs apagadosindicam o algarismo 0 e os LEDs acesos, o algarismo 1. Vamos supor que em um diagnóstico a sequência de acendimento dos LEDs seja 1010110. É preciso saber por onde começar a leitura ou seja, se o de menor peso é o da direita ou da esquerda.
 Nas indicações dadas por instrumentos ou mesmo na representação da valores binários, como por exemplo na saída de um circuito, é preciso saber qual dos dígitos tem maior peso e qual tem menor peso. Isso é feito com uma sigla adotada normalmente e que se refere ao dígito, no caso denominado bit. Assim, conforme citado anteriormente, para o dígito de menor peso ou bit menos significativo é adotada a sigla LSB (Less Significant Bit) e para o mais significativo é adotada a sigla MSB (Most Significant Bit), figura 11.
O que fazemos é somar os valores dados pelos dígitos multiplicados pelo peso de sua posição. No caso do valor tomado como exemplo, 1010110, temos:
Dígito x Peso = Valor
1 x 64 =64
0 x 32 = 0
1 x 16 =16
0 x 8 = 0
1 x 4 = 4
1 x 2 = 2
0 x 1 = 0
Somando os valores teremos: 64 + 16 + 4 + 2 = 86
O valor decimal de 1010110 é 86.
Assim, tudo que o leitor tem de fazer é lembrar que a cada dígito que saltamos para a esquerda seu peso dobra na sequência 1, 2, 4, 8, 16, 32, 64, 128, etc.
Na prática também pode ocorrer o problema inverso, transformação de um valor expresso em decimal (base 10) para a base 2 ou binário.
Para esta transformação podemos fazer uso de algoritmo muito simples que memorizado pelo leitor pode ser de grande utilidade, dada sua praticidade.
Para os que não sabem, algoritmo nada mais é do que uma sequência de operações que seguem uma determinada regra e permitem realizar uma operação mais complexa. Quando você soma os números um sobre o outro (da mesma coluna) e passa para cima os dígitos que excedem o 10, fazendo o conhecido “vai um”, você nada mais está fazendo do que usar um algoritmo.
 Os computadores usam muitos tipos de algoritmos quando fazem suas operações, se bem que a maioria não precise ser conhecida dos leitores. Assim, para a conversão de um decimal para binário, como por exemplo o 116, o que fazemos é uma série de divisões sucessivas, figura 12.
 Vamos dividindo os números por 2 até o ponto em que chegamos a um valor menor que 2 e que portanto, não pode mais ser dividido.
 O resultado desta última divisão, ou seja, seu quociente é então o primeiro dígito binário do número convertido. Os demais dígitos são obtidos lendo-se os restos da direita para a esquerda da série de divisões que realizamos. Tudo muito simples e rápido.
 3. Operações aritméticas: Soma, subtração e multiplicação.
 Talvez seja difícil entender como usando quantidades que só podem ser inteiras, como dado pela definição de digital no início desta lição, seja possível representar quantidades menores que um, ou seja, números “quebrados” ou fracionários.
 É claro que isso é possível na prática, pois se assim não fosse os computadores e as calculadoras não poderiam realizar qualquer operação com estes números e sabemos que isso não é verdade.
 O que se faz é usar um artifício que consiste em empregar potências negativas de um número inteiro para representar quantidades que não são inteiras. Assim é possível usar dígitos binários para representar quantidades fracionárias sem problemas.
 Vamos dar um exemplo tomando o número 0,01101 em binário. A própria existência de um “0,” já nos sugere que se trata de um número menor que 1 e portanto, fracionário. Ocorre que os dígitos deste número têm pesos que correspondem a potências de 2 negativas, que nada mais são do que frações, conforme a seguinte sequência:
Dígito x Peso = Valor
0, x 1 =0
0 x 1/2 = 0
1 x 1/4 = 0,25
1 x 1/8 = 0,0625
0 x 1/16 = 0
1 x 1/32 = 0,03125
Somando os valores relativos teremos:
0,25 + 0,0625 + 0,03125 = 0,625
O número decimal representado é portanto 0,625.
Veja que usando tantos dígitos quantos sejam necessários podemos representar com a precisão desejada um número decimal.
 
 
3.1 FORMAS DIFERENTES DE UTILIZAR O SISTEMA BINÁRIO
 A utilização de circuitos eletrônicos com determinadas características e a própria necessidade de adaptar o sistema binário à representação de valores que sejam convertidos rapidamente para o decimal e mesmo outros sistemas, levou ao aparecimento de algumas formas diferentes de utilização dos binários.
 Estas formas são encontradas em diversos tipos de equipamentos digitais, incluindo os computadores.
Sistema BCD (Decimal Codificado em Binário)
 BCD é a abreviação de Binary Coded Decimal e se adapta melhor aos circuitos digitais.
Permite transformar cada dígito decimal de um número numa representação por quatro dígitos binários (bits) independentemente do valor total do número que será representado.
Assim, partimos da seguinte tabela:
	Dígito decimal
	BCD
	0
	0000
	1
	0001
	2
	0010
	3
	0011
	4
	0100
	5
	0101
	6
	0110
	7
	0111
	8
	1000
	9
	1001
 Se quisermos representar em BCD o número 23,25 não o convertemos da forma convencional por divisões sucessivas mas sim, tomamos cada dígito e o convertemos no BCD equivalente, conforme segue:
2              3          2          5
0010 - 0011 - 0010 - 0101
 Veja então que para cada dígito decimal sempre teremos quatro dígitos binários ou bits e que os valores 1010, 1011, 1100, 1101 e 1111 não existem neste código.
 
 Esta representação foi muito interessante quando as calculadoras se tornaram populares, pois era possível usá-las para todas as operações com números comuns e os 5 códigos não utilizados dos valores que não existiam foram adotados para indicar as operações.
 O leitor também perceberá que usando representações desta forma, operavam os primeiros computadores, apropriadamente chamados de computadores de “4 bits”.
Outros Códigos
Outros códigos binários, mas não tão importantes neste momento, são:
1° Código Binário, em que cada dígito tem um peso e são sempre usados 7 bits para sua representação e
2° Código Gray que aparece em diversas versões.
 O Código Gray se caracteriza pelo fato da passagem de qualquer número para o seguinte sempre ser feita com a mudança de um único dígito. Assim, por exemplo, quando passamos de 0111 (7 em decimal) para 1000 (8 em decimal) os quatro dígitos mudam. No Código Gray a passagem do 7 para 8 muda apenas um dígito, pois o 7 é 0100 e o 8 é 1100. Podemos ainda citar os Códigos de Paridade de Bit e o Código de Excesso 3 (XS3) encontrados em aplicações envolvendo circuitos digitais.
 Os bits dos computadores são agrupados em conjuntos de 4, assim temos os computadores de 4, 8, 16 e 32 bits. Também observamos que com 4 bits podemos obter representações binárias de 16 números e não somente de 10. Vimos que os 5 excedentes poderiam ser usados para representar operações nas calculadoras.
Isso significa que a representação de valores no sistema hexadecimal ou de base 16 é mais compatível com a numeração binária ou operação binária dos computadores. E de fato isso é feito: abrindo muitos programas de um computador, vemos que suas características como posições de memória ou quantidade de memória são feitas neste sistema.
Isso significa que o técnico precisa conhecer este sistema e mais do que isso, deve saber como fazer conversões dele para o decimal e vice-versa, além de conversões para o sistema binário. Na tabela abaixo damos as representações dos dígitos deste sistema com equivalentes decimais e binários:
	Decimal
	Binário
	Hexadecimal
	0
	0000
	0
	1
	0001
	1
	2
	0010
	2
	3
	0011
	3
	4
	0100
	4
	5
	0101
	5
	6
	0110
	6
	7
	0111
	7
	8
	1000
	8
	9
	1001
	9
	10
	1010
	A
	11
	1011
	B
	12
	1100
	C
	13
	1101
	D
	14
	1110
	E
	15
	1111
	F
Observe que como não existem símbolos para os dígitos 10, 11, 12, 13, 14 e 15, foram usadas as letras A,B, C, D, E e F. Como fazer as conversões: os mesmos procedimentos que vimos para o caso das conversões de decimal para binário e vice-versa são válidos para o caso dos hexadecimais, mudando-se apenas a base.
Vamos dar exemplos:
Como converter 4D5 em decimal:
Os pesos no caso são: 256, 16 e
 A cada dígito para a esquerda multiplicamos o peso do anterior por 16 para obter novo peso.
Temos então: 4D5 = (4 x 256)+(13x16)+(1x5) = 1237 Observe que o “D” corresponde ao
 O número decimal equivalente ao 4D5 hexadecimal ou “hex”, como é muitas vezes representado, é 1237.
4D5 (hex) = 1237 (dec)
 A conversão inversa, ou seja, de decimal para hexadecimal é feita por divisões sucessivas. Tomemos o caso de 1256, apresentado na figura 14.
Veja que basta ler o quociente final e depois os restos das divisões sucessivas, sempre lembrando que os que excederem 10 devem ser “trocados” pelas letras equivalente.
4. Álgebra Booleana e Circuitos Lógicos
 Uma álgebra Booleana pode ser definida com um conjunto de operadores e um conjunto de axiomas, que são assumidos verdadeiros sem necessidade de prova.
 Em 1854, George Boole introduziu o formalismo que até hoje se usa para o tratamento sistemático da lógica, que é a chamada Álgebra Booleana. Em 1938, C. E. Shannon aplicou esta álgebra para mostrar que as propriedades de circuitos elétricos de chaveamento podem ser representadas por uma álgebra Booleana com dois valores.
 Diferentemente da álgebra ordinária dos reais, onde as variáveis podem assumir valores no intervalo (-∞; +∞), as variáveis Booleanas só podem assumir um número finito de valores. Em particular, na álgebra Booleana de dois valores, cada variável pode assumir um dentre dois valores possíveis, os quais podem ser denotados por [F, V] (falso ou verdadeiro), [H, L] (high and low) ou ainda [0,1]. Nesta disciplina, adotaremos a notação [0,1], a qual também é utilizada em eletrônica digital. Como o número de valores que cada variável pode assumir é finito (e pequeno), o número de estados que uma função Booleana pode assumir também será finito, o que significa que podemos descrever completamente as funções Booleanas utilizando tabelas. Devido a este fato, uma tabela que descreva uma função Booleana recebe o nome de tabela verdade, e nela são listadas todas as combinações de valores que as variáveis de entrada podem assumir e os correspondentes valores da função (saídas).
Operações Básicas da Álgebra Booleana (ou Álgebra de Chaveamento)
 Na álgebra Booleana, existem três operações ou funções básicas. São elas, operação OU, operação E e complementação. Todas as funções Booleanas podem ser representadas em termos destas operações básicas.
Operação OU (Adição Lógica)
Uma definição para a operação OU, que também é denominada adição lógica, é:
“A operação OU resulta 1 se pelo menos uma das variáveis de entrada vale 1”.
 Como uma variável Booleana ou vale 1 ou vale 0, e como o resultado de uma operação qualquer pode ser encarado como (ou atribuído a) uma variável Booleana, basta que definamos quando a operação vale 1. Automaticamente, a operação resultará 0 nos demais casos. Assim, pode-se dizer que a operação OU resulta 0 somente quando todas as variáveis de entrada valem 0.
 Um símbolo possível para representar a operação OU é “+”, tal como o símbolo da adição algébrica (dos reais). Porém, como estamos trabalhando com variáveis Booleanas, sabemos que não se trata da adição algébrica, mas sim da adição lógica. Outro símbolo também encontrado na bibliografia é “∨”.
Listando as possibilidades de combinações entre dois valores Booleanos e os respectivos resultados para a operação OU, tem-se:
0 + 0 = 0
0 + 1	=	1
1 + 0	=	1
1 + 1 = 1
 Note que a operação OU só pode ser definida se houver, pelo menos, duas variáveis envolvidas. Ou seja, não é possível realizar a operação sobre somente uma variável. Devido a isso, o operador “+” (OU) é dito binário.
 Nas equações, não costuma-se escrever todas as possibilidades de valores. Apenas adotamos uma letra (ou uma letra com um índice) para designar uma variável Booleana. Com isso, já se sabe que aquela variável pode assumir ou o valor 0 ou o valor 1. Então, supondo que queiramos demonstrar o comportamento da equação A+B (lê-se A ou B), poderíamos fazê-lo utilizando uma tabela verdade, como segue:
	A
	B
	A+B
	0
	0
	0
	0
	1
	1
	1
	0
	1
	1
	1
	1
 Da mesma forma, podemos mostrar o comportamento da equação A+B+C (lê-se A ou B ou C) por meio de uma tabela verdade. Como na equação há somente o símbolo “+”, trata-se da operação OU sobre três variáveis. Logo, pode-se aplicar diretamente a definição da operação OU: o resultado será 1 se pelo menos uma das variáveis de entrada valer 1.
	A B C
	A+B+C
	0 0 0
	0
	0 0 1
	1
	0 1 0
	1
	0 1 1
	1
	1 0 0
	1
	1 0 1
	1
	1 1 0
	1
	1 1 1
	1
 É importante notar que, devido ao fato de haver somente um operador na equação, pode-se também avaliar a equação decompondo-a em pares. Por exemplo, pode-se primeiramente achar o resultado de A+B, para depois operar os valores resultantes com os respectivos valores de C. Esta propriedade é conhecida como associativa. Também a ordem em que são avaliadas as variáveis A, B e C é irrelevante (propriedade comutativa). Estas propriedades são ilustradas pela tabela verdade a seguir. Nela, os parêntesis indicam sub-expressões já avaliadas em coluna imediatamente à esquerda. Note que os valores das colunas referentes às expressões A+B+C, (A+B)+C e (B+C)+A são os mesmos (na mesma ordem).
	A B C
	A+B+C
	A+B
	(A+B)+C
	B+C
	(B+C)+A
	0 0 0
0 0 1
0 1 0
0 1 1
	0
1
1
1
	0
	0
	0
	0
	
	
	0
	1
	1
	1
	
	
	1
	1
	1
	1
	
	
	1
	1
	1
	1
	1 0 0
1 0 1
1 1 0
1 1 1
	1
1
1
1
	1
	1
	0
	1
	
	
	1
	1
	1
	1
	
	
	1
	1
	1
	1
	
	
	1
	1
	1
	1
Operação E (Multiplicação Lógica)
A operação E, ou multiplicação lógica, pode ser definida da seguinte forma:
“A operação E resulta 0 se pelo menos uma das variáveis de entrada vale 0”.
Pela definição dada, pode-se deduzir que o resultado da operação E será 1 se, e somente se, todas as entradas valerem 1.
 O símbolo usualmente utilizado na operação E é “⋅”, porém outra notação possível é “∧”. Podemos, também, listar as possibilidades de combinações entre dois valores Booleanos e os respectivos resultados, para a operação E:
0 ⋅ 0	=	0
0 ⋅ 1	=	0
1 ⋅ 0	=	0
1 ⋅ 1	=	1
 Assim como a operação OU, a operação E só pode ser definida entre, pelo menos duas variáveis. Ou seja, o operador “⋅” (E) também é binário.
 Para mostrar o comportamento da equação A ⋅ B (lê-se A e B), escreve-se uma tabela verdade, como segue:
	A
	B
	A⋅B
	0
	0
	0
	0
	1
	0
	1
	0
	0
	1
	1
	1
 De forma semelhante, pode-se determinar o resultado da equação A⋅B⋅C (lê-se A e B e C) utilizando diretamente a definição da operação E: o resultado será 0 se pelo menos uma das variáveis de entrada valer 0.
	A B C
	A⋅B⋅C
	0 0 0
	0
	0 0 1
	0
	0 1 0
	0
	0 1 1
	0
	1 0 0
	0
	1 0 1
	0
	1 1 0
	0
	1 1 1
	1
 Também para a operação E valem as propriedades associativa e comutativa. Então, a equação A⋅BC pode ainda ser avaliada tomando-se as variáveis aos pares, em qualquer ordem. Veja a tabela verdade a seguir e compare os resultados.
	A B C
	A⋅B⋅C
	A⋅B
	(A⋅B)⋅C
	B⋅C
	A⋅(B⋅C)
	0 0 0
0 0 1
0 1 0
0 1 1
	0
0
0
0
	0
	0
	0
	0
	
	
	0
	0
	0
	0
	
	
	0
	0
	0
	0
	
	
	0
	0
	1
	0
	1 0 0
1 0 1
1 1 0
1 1 1
	0
0
0
1
	0
	0
	0
	0
	
	
	0
	0
	0
	1
	
	
	1
	0
	0
	0
	
	
	1
	1
	1
	1
Complementação (ou Negação, ou Inversão)
 A operação complementação dispensa uma definição. É a operação cujo resultado é simplesmente o valor complementar ao que a variável apresenta. Também devido ao fato de uma variávelBooleana poder assumir um entre somente dois valores, o valor complementar será 1 se a variável vale 0 e será 0 se a variável vale 1.
 Os símbolos utilizados para representar a operação complementação sobre uma
 
variável Booleana A são A, ~A e A' (lê-se A negado). Nesta disciplina, adotaremos o primeiro símbolo. O resultado da operação complementação pode ser listado:
0 =	1
1 =	0
 Diferentemente das operações OU e E, a complementação só é definida sobre uma variável, ou sobre o resultado de uma expressão. Ou seja, o operador complementação é dito unário.
E a tabela verdade para A é:
	A
	A
	0
	1
	1
	0
Avaliação de Expressões Booleanas
 Dada a equação que descreve uma função Booleana qualquer, deseja-se saber detalhadamente como esta função se comporta para qualquer combinação das variáveis de entrada. O comportamento de uma função é descrito pela sua tabela verdade e este problema é conhecido como avaliação da função ou da expressão que descreve a função considerada. Em suma, deseja-se achar a tabela verdade para a função Booleana.
 Uma tabela verdade consiste basicamente de um conjunto de colunas, nas quais são listadas todas as combinações possíveis entre as variáveis de entrada (à esquerda) e o resultado da função (à direita). Também, pode-se criar colunas intermediárias, onde são listados os resultados de sub-expressões contidas na expressão principal. Isto normalmente facilita a avaliação, principalmente no caso de equações muito complexas e/ou contendo muitas variáveis.
 Quando numa mesma equação Booleana aparecem operações E e OU, é necessário seguir a ordem de precedência. Tal como na álgebra dos reais, a multiplicação (lógica) tem precedência sobre a adição (lógica). Além disso, expressões entre parêntesis têm precedência sobre operadores E e OU que estejam no mesmo nível. Quanto à complementação, esta deve ser avaliada tão logo seja possível. Caso a complementação seja aplicada sobre uma subexpressão inteira, é necessário que se avalie primeiramente a subexpressão para, só após, inverter o seu resultado.
 O número de combinações que as variáveis de entrada podem assumir pode ser calculado por 2n, onde n é o número de variáveis de entrada.
O procedimento para a criação da tabela verdade a partir de uma equação Booleana é:
1. Criar colunas para as variáveis de entrada e listar todas as combinações possíveis, utilizando a fórmula no de combinações = 2n (onde n é o número de variáveis de entrada);
2. Criar uma coluna para cada variável de entrada que apareça complementada na equação e anotar os valores resultantes;
3. Avaliar a equação seguindo a ordem de precedência, a partir do nível de parêntesis mais internos:
1° multiplicação lógica
2° adição lógica
 Tomemos como exemplo a expressão W = X + Y⋅Z. A variável W representa a função Booleana propriamente dita. Esta variável depende das variáveis que estão à direita do sinal =, ou seja, depende de X, Y e Z. Logo, são 3 as variáveis de entrada. O total de combinações entre 3 variáveis será 23=8. Então, a tabela verdade para W deverá ter 3 colunas à esquerda e 8 linhas. Seguindo o procedimento dado acima, cria-se uma coluna, na qual listam-se os valores para Z. Após, inicia-se a avaliação propriamente dita, a partir do nível mais interno de parêntesis. Como não há parêntesis na expressão, resolvem-se as sub-expressões que envolvem a operação E. No caso em questão, há somente uma tal sub-expressão, que é X ⋅Y . Então, cria-se uma coluna para X ⋅Y , na qual anotam-se os resultados para este produto. Finalmente, utilizam-se os resultados de X ⋅Y , listados na coluna anterior, para operar o OU com a variável X. Repare os passos descritos na tabela verdade que segue. Nela, os parêntesis em torno do produto X ⋅Y indicam somente que este termo já foi avaliado e que no passo referente a esta coluna, tomaram-se apenas os valores previamente encontrados.
	X Y Z
	_
Z
	 X ⋅Y
	 W = X + Y⋅Z
	0 0 0
0 0 1
0 1 0
0 1 1
	1
0
1
0
	0
	0
	
	
	0
	0
	
	
	1
	1
	
	
	0
	0
	1 0 0
1 0 1
1 1 0
1 1 1
	1
0
1
0
	0
	1
	
	
	0
	1
	
	
	1
	1
	
	
	0
	1
Portas Lógicas
 Já vimos que uma função Booleana pode ser representada por uma equação ou detalhada pela sua tabela verdade. Mas uma função Booleana também pode ser representada de forma gráfica, onde cada operador está associado a um símbolo específico, permitindo o imediato reconhecimento visual. Tais símbolos são conhecidos por portas lógicas.
 Na realidade, mais do que símbolos de operadores lógicos, as portas lógicas representam recursos físicos, isto é, circuitos eletrônicos, capazes de realizar as operações lógicas. Na eletrônica que trabalha com somente dois estados, a qual é denominada eletrônica digital, o nível lógico 0 normalmente está associado à ausência de tensão (0 volt) enquanto o nível lógico 1, à presença de tensão (a qual geralmente é 5 volts). Nesta disciplina, nos limitaremos ao mundo da álgebra Booleana, admitindo que as portas lógicas representam também circuitos eletrônicos que, de alguma maneira, realizam as funções Booleanas simbolizadas. Então, ao conjunto de portas lógicas e respectivas conexões que simbolizam uma equação Booleana, denominaremos circuito lógico.
Porta OU
 O símbolo da porta OU pode ser visto na figura 2.1. Tal como na porta E, as entradas são colocadas à esquerda e a saída, à direita. Deve haver no mínimo duas entradas, mas há somente uma saída. O funcionamento da porta E segue a definição da operação E, dada na seção 2.1.1.
	A+B	A+B+CB
A
B
A
C
	(a)	(b)
Figura 15 - Símbolo da porta lógica OU com 2 entradas (a) e com 3 entradas (b).
Porta E
 O símbolo da porta E é mostrado na figura 2.2. À esquerda estão dispostas as entradas (no mínimo duas, obviamente) e à direita, a saída (única). As linhas que conduzem as variáveis de entrada e saída podem ser interpretadas como fios que transportam os sinais elétricos associados às variáveis. O comportamento da porta E segue extritamente a definição (e tabela verdade) dada na seção 2.1.2.
A
A.B
B
A
C
A.B.C
B
	(a)	(b)
Figura 16 - Símbolo da porta lógica E com 2 entradas (a) e com 3 entradas (b).
Inversor (ou Porta Inversora, ou Negador)
 A porta que simboliza a operação complementação é conhecida como inversor (ou porta inversora, ou negador). Como a operação complementação só pode ser realizada sobre uma variável por vez (ou sobre o resultado de uma subexpressão), o inversor só possui uma entrada e, obviamente, uma saída. Caso se queira complementar uma expressão, é necessário obter-se primeiramente o seu resultado, para só então aplicar a complementação. O símbolo do inversor é mostrado na figura 2.3.
A A
Figura 17: Símbolo do inversor (também conhecido como negador ou porta inversora).
Exemplo de Circuito Lógico
 Dada uma equação Booleana qualquer, é possível desenhar-se o circuito lógico que a implementa. O circuito lógico é composto das portas lógicas relacionadas às operações que são realizadas sobre as variáveis de entrada. Os resultados das operações são conduzidos por fios, os quais, no desenho, são representados por linhas simples.
 Os passos a serem seguidos para se realizar o desenho do circuito lógico a partir de uma equação são praticamente os mesmos usados na avaliação da expressão. Tomemos como exemplo a equação, avaliada na seção 2.2. Inicialmente, identificamos as variáveis independentes, que no caso são X, Y e Z. Para cada uma destas, traçamos uma linha (da esquerda para a direita), representando os fios que conduzem os valores. Feito isto, deve-se seguir desenhando as portas necessárias para representar cada uma das subexpressões, na mesma ordem tomada para a avaliação, ou seja:
1 parêntesis (dos mais internos para os mais externos);
2 operações E;
3 operações OU.
A figura 18: mostra o circuito lógico para a equação W = X + Y⋅Z.
X
Z
W
YFigura 19: Um circuito lógico.
Leis Fundamentais e Propriedades da Álgebra Booleana
 As leis da álgebra Booleana dizem respeito ao espaço Booleano (isto é., valores que uma variável pode assumir) e operações elementares deste espaço. Já as propriedades podem ser deduzidas a partir das definições das operações.
Sejam A e B duas variáveis Booleanas. Então, o espaço Booleano é definido:
se A≠0, então A=1; se A≠1, então A=0.
 As operações elementares deste espaço são operação OU, operação E e complementação, cujas definições foram dadas anteriormente.
As propriedades da álgebra Booleana são as seguintes.
Da adição lógica:
(1) A+0 = A
(2) A+1= 1
(3) A +A = A
(4) A+A =1
Da multiplicação lógica:
(5) A⋅0 = 0
(6) A⋅1= A
(7) A⋅A = A
(8) A⋅A = 0
Da complementação:
(9) A = A
Comutatividade:
(10) A + B = B+A
(11) A⋅B = B⋅A
Associatividade:
(12) A+(B+C)=(A+B)+C=(A+C)+B
(13) A⋅(B⋅C) = (A ⋅B) ⋅C= (A⋅C)⋅B
Distributiva (da multiplicação em relação à adição):
(14) A⋅(B+ C) = A ⋅B+ A ⋅C
 Teoremas de De Morgan
 O primeiro teorema de De Morgan diz que a complementação de um produto (lógico) equivale à soma (lógica) das negações de cada variável do referido produto. Sob a forma de equação, teríamos:
 A⋅B⋅C⋅...= A + B + C+... 
 O segundo teorema é o dual ( i.e., o espelho) do primeiro, ou seja, a complementação de uma soma (lógica) equivale ao produto das negações individuais das variáveis:
 A + B+ C +...= A ⋅B⋅C⋅... 
Particularizando os teoremas de De Morgan para duas variáveis, temos:
	 A⋅B = A + B	
	 A + B = A⋅B	
Derivação de Expressões Booleanas
 Dada uma função Booleana, descrita por sua tabela verdade, derivar uma expressão Booleana para esta função é encontrar uma equação que a descreva. Logo, a derivação de expressões Booleanas é o problema inverso da avaliação de uma expressão Booleana.
Há basicamente duas maneiras de se definir (ou descrever) uma função Booleana:
 Descrevendo todas as situações das variáveis de entrada para as quais a função vale 1 ou, alternativamente, todas as situações em que a função vale 0. O primeiro método é conhecido por soma de produtos (SdP), enquanto que o segundo é chamado produto de somas (PdS). Qualquer função Booleana pode ser descrita por meio de soma de produtos ou por meio de produto de somas. Como as funções Booleanas só podem assumir um dentre dois valores (0 ou 1), basta usar-se um dos dois métodos para se encontrar uma equação para uma função.
 A seguir, são detalhados os métodos de derivação de expressões Booleanas.
Derivação de Expressões usando Soma de Produtos (SdP)
 Dada uma função Booleana de n variáveis (ou seja, n entradas), haverá 2n combinações possíveis de valores. Dizemos que esse conjunto de valores que as variáveis podem assumir, juntamente com os respectivos valores da função, constituem o espaço da função. A cada combinação de entradas podemos associar um termo produto, no qual todas as variáveis da função estão presentes, e que é construído da seguinte forma: se a variável correspondente vale 0, ela deve aparecer negada; se a variável vale 1, ela deve aparecer não negada. A tabela a seguir lista os termos produto associados a cada combinação de entradas para uma função Booleana de três variáveis (A, B e C, por exemplo).
	A B C
	mintermo
	0 0 0
0 0 1
0 1 0
1 0 0
1 0 1
1 1 0
1 1 1
	 A ⋅B ⋅C 
	
	 A ⋅B ⋅C
	
	 A ⋅B⋅C 
	
	
 A ⋅B⋅C
	
	 A⋅B ⋅C 
	
	
 A⋅B ⋅C
	
	
 A⋅B⋅C 
	
	 A⋅B⋅C
 Cada termo produto construído conforme a regra anteriormente descrita é denominado mintermo (ou minitermo). Note que, para um dado mintermo, se substituirmos os valores das variáveis associadas, obteremos 1. Porém, se substituirmos nesse mesmo mintermo quaisquer outras combinações de valores, obteremos 0. Dessa forma, se quisermos encontrar a equação para uma função a partir de sua tabela verdade, basta montarmos um OU entre os mintermos associados aos 1s da função (também chamados mintermos 1 ).
Exemplo : encontrar a equação em soma de produtos (SdP) para a função F, descrita pela seguinte tabela verdade:
	A B C
	F
	0 0 0
0 0 1
0 1 0 0 1 1
	0
	
	0
	
	1
	
	1
	1 0 0
1 0 1
1 1 0
1 1 1
	0
	
	1
	
	1
	
	0
F é função das variáveis A, B e C. Os valores de (A,B,C) para os quais F=1 são (0,1,0), (0,1,1), (1,0,1) e (1,1,0). Os mintermos associados a essas condições (ou seja, os mintermos
1), são A ⋅B⋅C , A ⋅B⋅C, A⋅B ⋅C e A⋅B⋅C , respectivamente. Logo, a equação em soma de produtos para F será o OU entre estes produtos, conforme segue:
	 F = A ⋅B⋅C + A ⋅B⋅C+ A⋅B ⋅C + A ⋅B⋅C 	
A fim de simplificar a notação, o símbolo da operação E pode ser omitido. Desta forma, a equação anterior pode ser reescrita de maneira mais concisa:
	F= ABC+ABC+ABC+ABC	
5.Portas Lógicas
 Uma Porta Lógica Digital é um dispositivo eletrônico que implementa funções lógicas (booleanas) e toma decisões baseado em diferentes combinações de níveis lógicos digitais (0 e 1) aplicados às suas entradas. Uma porta lógica pode ter uma ou mais entradas, dependendo do circuito lógico que é implementado, e no geral somente possui uma saída digital. Podemos conectar e combinar diversas portas lógicas para obter circuitos ou funções lógicas adicionais, como circuitos combinacionais ou sequenciais. As portas lógicas podem ser obtidas comercialmente na forma de circuitos integrados, que estão disponíveis em duas tecnologias ou famílias básicas, a tecnologia TTL (Transistor-Transistor Logic / Lógica Transístor-Transístor), que no geral utiliza transístores bipolares (BJT) NPN e PNP, e a tecnologia CMOS (Complementary Metal-Oxide Semiconductor / Metal-óxido Semicondutor Complementar), que usa Transístores de Efeito de Campo (FET) dos tipos MOSFET ou JFET. Também podemos criar portas lógicas com a combinação de componentes eletrônicos discretos, como diodos, transístores e resistores, e até mesmo com relés, válvulas eletrônicas e dispositivos mecânicos. As portas lógicas digitais são como blocos de construção básicos, com os quais são construídos circuitos eletrônicos digitais complexos, como microprocessadores, memórias de computador, circuitos de controle digitais, multiplexadores e muitos outros.
5.1 Estados Lógicos
 Em lógica digital existem apenas dois estados permitidos (dois níveis de tensão elétrica), sendo denominados como nível alto (ligado) e nível baixo (desligado), 1 e 0, ou ainda, Verdadeiro e Falso. Representamos esses estados lógicos em álgebra booleana por meio dos valores binários 1 e 0. Há duas formas de representar esses níveis lógicos por meio de um circuito digital:
Lógica Positiva: O nível lógico 0 (ou baixo / low) é representado eletricamente por uma tensão de zero volts (na prática, próxima a zero volts), e o nível lógico 1 (ou alto / high) é representado por uma tensão elétrica mais alta, como por exemplo 5 volts.
 Lógica Negativa: Os níveis lógicos são inversos em relação à Lógica Positiva. Esse tipo de lógica é muito pouco empregada, por isso vamos utilizar em nosso curso sempre as noções de lógica positiva.
É interessante notar que, quando usamos circuitos que implementem a tecnologia TTL, os estados lógicos são dados por intervalos de valores de tensão elétrica, e não valores específicos em si. A figura a seguir mostra os níveis lógicos de entrada e saída comuns (e aceitáveis) em um circuito TTL típico:
Figura 20: Níveis de Tensão Elétrica em Lógica TTL
 De acordo com a figura, ao usarmos um dispositivo lógico construído com tecnologia TTL, uma tensão elétrica entre 2,0V e 5,0V é considerada como um nível lógico 1 (ALTO), ao passo que uma tensão elétrica abaixo de 0,8V é considerada como um nível lógico 0 (BAIXO). Já a tensão elétrica entre 0,8V e 2,0V é uma região indeterminada, não representando nem o nível 0 nem o nível 1, e portanto devemos evitar que o circuito opere nessa região, para que nãosejam produzidos valores de saída errôneos / falsos. A seguir temos uma figura que traz os níveis lógicos e suas respectivas tensões elétricas utilizadas em tecnologia CMOS padrão:
Figura 21: Nível de tensão CMOS.
 Ao escolher entre as famílias de circuitos digitais TTL e CMOS para um projeto eletrônico, devemos levar alguns pontos em consideração, pois ambas possuem vantagens e desvantagens de uso:
 TTL: Uma de suas principais desvantagens é o fato de seu consumo elétrico ser relativamente elevado, por serem construídos co transistores bipolares, que consomem uma boa quantidade de corrente elétrica. Além disso, as portas TTL possuem uma velocidade de operação limitada por conta desses transistores, o que significa que a transição entre um estado lógico 0 (Desligado / OFF) para um estado lógico 1 (Ligado / ON) leva um certo tempo, denominado Atraso de Propagação, o que pode causar impacto negativo caso haja necessidade de alta velocidade de chaveamento entre os níveis lógicos.
 CMOS: O consumo elétrico de dispositivos CMOS é muito mais baixo do que o dos dispositivos TTL, por serem baseados em tecnologia FET, estando na faixa de 1 a 2 microampères (1 a 2 uA). Assim, são ideais para uso em dispositivos nos quais o consumo elétrico seja um ponto crítico - tais como dispositivos portáteis, por exemplo. Uma outra vantagem dos dispositivos CMOS é seu baixo tempo de chaveamento, o que significa que a passagem de um nível lógico para outro se dá de forma muito rápida também. Porém, os circuitos CMOS possuem uma desvantagem que deve ser levada em consideração: eles são danificados com muita facilidade por eletricidade estática. Por isso, devem ser protegidos contra descargas que possam afetar os circuitos onde se encontram, e também ao serem manuseados, pois os circuitos integrados CMOS são muito sensíveis, e podem se danificar até mesmo com um simples contato com as mãos do técnico que os manipula. Usar uma pulseira antiestática é uma boa ideia nesse caso.
 6. Mapas de Karnaugh
 Na descrição do método de simplificação literal, foi mencionado que os pares de mintermos que se diferenciam de somente uma variável são passíveis de simplificação. Observando a ordem com que os mintermos de uma função Booleana qualquer (com, por exemplo, 3 variáveis) aparecem na tabela verdade, vemos que, se trocarmos o 3° mintermo com o 4° e trocarmos também o 7° mintermo com o 8°, obteremos uma nova ordem, na qual quaisquer dois mintermos adjacentes são passíveis de simplificação. É interessante notar também que o 1° mintermo pode ser simplificado com o 5°, o 2° mintermo pode ser simplificado com o 6° e assim por diante.
	
	A B C
	mintermo
	0 0 0
	 A ⋅B ⋅C 
	
	 A ⋅B ⋅C
	
	 A ⋅B⋅C 
	
	
 A ⋅B⋅C
	
	 A⋅B ⋅C 
	
	
 A⋅B ⋅C
	
	
 A⋅B⋅C 
	
	 A⋅B⋅C
	
	
	
 Então, usando o novo ordenamento e re-arranjando os mintermos em duas linhas, temos a seguinte tabela:
	 A ⋅B ⋅C 
	 A ⋅B ⋅C
	
 A ⋅B⋅C
	 A ⋅B⋅C 
	 A⋅B ⋅C 
	
 A⋅B ⋅C
	 A⋅B⋅C
	
 A⋅B⋅C 
 Repare que nessa nova tabela, quaisquer dois mintermos adjacentes (na horizontal ou na vertical) são passíveis de serem simplificados, pois só se diferenciam de uma variável. É importante ressaltar que esse conceito de adjacência não está restrito aos limites da tabela, uma vez que os elementos extremos de uma mesma linha (ou de uma mesma coluna) também são simplificáveis. Isto implica que a tabela de adjacências de mintermos, pode e deve ser encarada como uma figura geométrica tridimensional do tipo “toróide” (ou uma “rosquinha”). A figura a seguir explicita as relações de adjacência dos mintermos para uma função de três variáveis.
 É importante ressaltar que o conceito de adjacência é aplicável na horizontal e na vertical, mas nunca na diagonal. Por exemplo, observe que m0 e m5 não são adjacentes, pois não estão nem na mesma linha, nem na mesma coluna.
 O processo de simplificação usando a nova disposição inicia pela construção da tabela em si: os valores da função que se quer simplificar devem ser preenchidos conforme a nova ordem. Após, identificam-se todos os grupos de mintermos-1 adjacentes entre si. Cada grupo origina um termo produto, no qual somente as variáveis comuns a todos os mintermos-1 permanecem. Desde que os grupos de mintermos-1 adjacentes tenham sido corretamente identificados, a simplificação se torna trivial.
Exemplo 1: simplificar a função F.
O primeiro passo é construir uma tabela para F, usando a nova disposição dos mintermos.
B
 Grupos de mintermos-1 adjacentes e termos produto para uma função de 3 variáveis.
Após, deve-se identificar todos os grupos de mintermos-1 adjacentes entre si. Cada grupo de mintermos-1 originará um produto, conforme indicado. A equação em soma de produtos simplificada será o OU entre os produtos encontrados:
	F= AB+ABC+BC	
 Mapas de Karnaugh e Subcubos
 A tabela modificada usada para a identificação dos mintermos-1 adjacentes no exemplo anterior é denominada mapa de Karnaugh (no caso, para 3 variáveis). São mostrados os mapas de Karnaugh para funções de 2, 3 e 4 variáveis.
nome da
	 função	B
		0	1B
A
	m0
	m1
	m2
	m3
0
	A 	1
nome da
C
 função
		00	01	11	10BC
A
	m0
	m1
	m3
	m2
	m4
	m5
	m7
	m6
0
	A 	1
B
nome da
 função
D
CD
AB
00
01
11
10
00
m
0
m
1
m
3
m
2
01
m
4
m
5
m
7
m
6
B
A
11
m
12
m
13
m
15
m
14
10
m
8
m
9
m
11
m
10
C
 O primeiro passo para simplificar-se uma função usando mapa de Karnaugh é escolher o mapa conforme o número de variáveis da função e preencher os valores dos mintermos conforme a tabela verdade fornecida, ou conforme a equação fornecida. O segundo passo é identificar grupos de mintermos adjacentes que formem grupos de 2m elementos adjacentes entre si, com 0mn, onde n é o número de variáveis da função. Estes grupos são denominados subcubos.
 No caso de se querer encontrar uma expressão em soma de produtos, estaremos interessados nos subcubos de mintermos-1. Então, cada subcubo contendo mintermos-1 irá originar um produto, no qual uma ou mais variáveis poderão estar ausentes devido à simplificação que é obtida. Os produtos associados aos subcubos de mintermos-1, simplificados ou não, são denominados implicantes. É importante ressaltar que quanto maior o número de elementos do subcubo, maior será a simplificação obtida.
Exemplo 2: determinar os implicantes das funções dadas a seguir.
D
F0
CD
AB
00
01
11
10
00
0
0
0
0
01
1
1
1
1
B
A
11
0
0
0
0
10
0
0
0
0
C
F1
D
CD
AB
00
01
11
10
00
0
0
0
0
01
1
1
0
0
B
A
11
1
1
0
0
10
0
0
0
0
C
F2
D
CD
AB
00
01
11
10
00
0
1
1
0
01
0
0
0
0
B
A
11
0
0
0
0
10
0
1
1
0
C
 F3
D
CD
AB
00
01
11
10
00
1
0
0
1
01
0
0
0
0
B
A
11
0
0
0
0
10
1
0
0
1
No caso de se querer encontrar uma expressão em produtos de somas, estaremos interessados nos subcubos de mintermos-0. Então, cada subcubo contendo mintermos-0 irá originar uma soma, no qual uma ou mais variáveis poderão estar ausentes devido à simplificação que é obtida. As somas associados aos subcubos de mintermos-0, simplificadas ou não, são denominadas implicados. Também neste caso, quanto maior o número de elementos do subcubo, maior será a simplificação obtida.
Exemplo 3: determinar os implicados das funções dadas a seguir.
F4
D
CD
AB
00
01
11
10
00
1
1
1
1
01
1
0
1
1
B
A
11
1
0
1
1
10
1
1
1
1
C
F5
D
CD
AB
00
01
11
10
00
0
1
1
0
01
0
1
1
0
B
A
11
0
1
1
0
10
0
1
1
0
C
F6
D
CD
AB
00
01
11
10
00
0
1
1
0
01
0
1
1
0
B
A
11
0
1
1
0
10
0
1
1
0
C
F7
D
CD
AB
00
01
11
10
00
0
1
1
1
01
1
1
1
1
B
A
11
1
1
1
1
10
1
1
0
0
C
6.1 Cobertura dos Mapas de Karnaugh
 Normalmente, é possível identificar-se numa mesma função Booleana mais de um implicante (ou mais de um implicado). Neste caso, é necessário determinar o conjunto de implicantes (ou implicados) que melhor “cobre” a função, onde a melhor cobertura significa necessariamentea expressão mais simplificada possível, a qual é denominada expressão mínima.
 O procedimento básico para se determinar a melhor cobertura (também chamada cobertura mínima) para uma expressão em soma de produtos é o seguinte:
 Identificar os subcubos de mintermos-1 com maior número de elementos possível, iniciando do tamanho 2n, onde n é o número de variáveis da função. Caso algum mintermo-1 fique isolado (isto é, não há nenhum outro mintermo-1 adjacente a ele), então ele constituirá um subcubo de um elemento;
Identificar o menor conjunto de subcubos de modo que cada mintermo-1 pertença a pelo menos um subcubo (= seja coberto pelo menos uma vez).
Observações:
1. Cada mintermo-1 pode ser coberto por mais de um subcubo, caso isso resulte numa simplificação maior;
2. Um último teste para verificar se a expressão obtida é realmente a mínima consiste em verificar se algum subcubo pode ser removido, sem deixar algum mintermo-1 descoberto. Um subcubo que poder ser removido sem descobrir mintermos é dito subcubo não-essencial. Logo, todo o subcubo que não pode ser removido é dito essencial.;
3. Pode haver mais de uma expressão mínima para uma mesma função Booleana;
4. A expressão mínima é aquela de menor complexidade. E a complexidade será medida pelo número de literais de uma função.
Conforme já mencionado anteriormente, também é possível obter-se uma expressão mínima em produto de somas a partir do mapa de Karnaugh da função Booleana. Para tanto, deve-se identificar os subcubos de mintermos-0, ao invés de subcubos de mintermos-1. Cada subcubo de mintermo-0 irá originar um termo soma, possivelmente já simplificado, o qual recebe o nome de implicado.
Os passos para a obtenção de uma cobertura mínima são os mesmos já descritos para a obtenção da expressão em soma de produtos.
7 Flip-Flops, Contadores de Cis.
 O flip-flop. Vimos que estes blocos poderiam ter diversos tipos de comportamento e que, quando reunidos, poderiam apresentar comportamentos interessantes como, por exemplo, a capacidade de dividir frequências, de armazenar informações (bits), além de outras. Nesta lição vamos nos dedicar justamente a uma das funções mais importantes dos flip-flops que é a de fazer a contagem do número de pulsos, o que corresponde em última análise a contagem de bits. A partir desta contagem podemos usar estes circuitos para a realização de operações mais complexas como somas, manipulação de dados etc.
7.1 OS TIPOS DE CONTADORES
 Em Eletrônica Digital devemos separar os circuitos lógicos sem sincronismo daqueles que possuam algum tipo de sincronismo externo, ou seja, que usam um sinal de CLOCK.
 Existem aplicações em que tudo o que importa para o circuito é fazer uma operação com determinados níveis lógicos aplicados à sua entrada, quando eles estão presentes, não importando quando isso ocorra. Tais circuitos não precisam de sincronismo algum e são mais simples de serem utilizados.
No entanto, com circuitos muito complexos, como os utilizados em computadores e em muitos outros casos, o instante em que uma operação deve ser realizada é muito importante e isso implica em que os circuitos devam ser habilitados no instante em que os níveis lógicos são aplicados em sua entrada.
Isso significa que tais circuitos devem ser sincronizados por algum tipo de sinal vindo de um circuito externo.
 E este circuito nada mais é do que um oscilador que produz um sinal de clock ou relógio. Os circuitos que operam com estes sinais são denominados circuitos
com lógica sincronizada. Para os contadores temos então diversas classificações que levam em conta estes e outros fatores, por exemplo:
Classificação quanto ao sincronismo:
 Os contadores podem ser ASSÍNCRONOS, quando existe o sinal de clock aplicado apenas ao primeiro estágio. Os estágios seguintes utilizam como sinal de sincronismo a saída de cada estágio anterior. Estes contadores também são denominados Ripple Counters.
 Os contadores também podem ser SÍNCRONOS, quando existe um sinal de clock único externo aplicado a todos os estágios ao mesmo tempo.
Classificação quanto ao modo de contagem
 Os contadores podem ser PROGRESSIVOS ou CRESCENTES, quando contam numa sequência de números crescentes, ou seja, dos valores mais baixos para os mais altos, como (1,2,3,4...). São também chamados pelo termo inglês de UP COUNTERS.
 Os contadores podem ser REGRESSIVOS ou DECRESCENTES, quando a contagem é feita dos valores mais altos para os mais baixos como (4,3,2,1...).O termo inglês é DOWN COUNTERS. Se bem que possamos fazer contadores usando funções lógicas comuns e mesmo flip-flops discretos, podemos contar na prática com circuitos integrados em lógica TTL ou CMOS que já possuam contadores completos implementados.
7.2 CONTADOR ASSÍNCRONO
 Conforme explicamos, neste tipo de contador, o sinal de clock é aplicado apenas ao primeiro estágio, ficando os demais sincronizados pelos estágios anteriores.
Na figura 1 temos a estrutura básica de um contador deste tipo usando flip-flops do tipo J-K.
Figura 22: contador assíncrono flip-flop JK.
 Usamos três estágios ou três flipflops ligados de tal forma que a saída Q do primeiro serve de clock para o segundo, e a saída Q do segundo serve de clock para o terceiro.
 Sabemos que os flip-flops ligados da forma indicada funcionam como divisores de frequência. Assim, o sinal de clock aplicado ao primeiro tem sua frequência dividida por 2.
 A frequência estará dividida por 4 na saída do segundo e por 8 na saída do terceiro. Tudo isso pode ser visualizado pelo diagrama de tempos mostrado na figura 2.
Figura 23: gráfico de Clock
 Mas, se elaborarmos uma tabela verdade com os níveis lógicos obtidos na saída de cada um dos flip-flops, a cada pulso do clock aplicado, a partir do instante em que todas as saídas sejam zero, teremos algo interessante a considerar:
	Entrada
	QC
	QB
	QA
	0
	0
	0
	0
	1
	0
	0
	1
	2
	0
	1
	0
	3
	0
	1
	1
	4
	1
	0
	0
	5
	1
	0
	1
	6
	1
	1
	0
	7
	1
	1
	1
 Veja que a sequência de valores obtidos 000, 001, 010, 011, 100, 101, 110 e 111 corresponde justamente à contagem em binário dos pulsos de 0 a 7! Em outras palavras, este circuito conta os pulsos de entrada e fornece saídas que são a representação binária desta contagem.
 Veja também que ele faz a contagem crescente, ou seja, de 0 até 7. Se, em lugar de três flip-flops, usarmos quatro, no circuito mostrado na figura 3, teremos a contagem de 0000 a 1111, ou seja, uma contagem crescente de 0 a 15 pulsos.
Figura 24: Flip flop JK.
 Oito desses flip-flops ligados em série podem contar até 256 pulsos e com isso fornecer uma saída de 8 bits ou 1 byte.
 O circuito apresentado comuta na transição negativa do sinal de clock. Vamos supor agora que em lugar de usarmos como saídas de contagem as saídas Q de cada flip-flop, usássemos as saídas complementares /Q, conforme a figura. 
Figura 25: Flip-Flop JK.
 É fácil perceber que, partindo da situação em que todos os flip-flops estejam ressetados, a tabela verdade obtida terá nas saídas os complementos da tabela anterior. Esta tabela será:
	Entrada
	QA
	QB
	QC
	Valor Binário
	0
	1
	1
	1
	7
	1
	1
	1
	0
	6
	2
	1
	0
	1
	5
	3
	1
	0
	0
	4
	4
	0
	1
	1
	3
	5
	0
	1
	0
	2
	6
	0
	0
	1
	1
	7
	0
	0
	0
	0
Portanto, este contador fornece em sua saída valores binários que correspondem à contagem decrescente dos pulsos de entrada, partindo de 7. Trata-se de um contador decrescente ou DOWN COUNTER.
 Como no caso anterior, se tivermos mais flip-flops, podemos contar a partir de valores mais altos. Com 4 flip-flops podemos partir a contagem de 15 e com 8 flip-flops, de 255. Veja que a quantidade máxima que podemos contar com um contador deste tipo depende da quantidadede flip flops usados. Um problema que ocorre com este tipo de flip-flop é que cada um precisa de um certo tempo para mudar de estado. Isso significa que à medida que usamos mais flip-flops em
sequência num contador, os tempos de mudança de estado são somados e o conjunto precisa cada vez de mais tempo para chegar ao estado final desejado.
 Se aplicarmos um novo pulso de clock para contagem à entrada do circuito, antes de ocorrer a mudança de estado do conjunto, pode ocorrer um funcionamento errático. Assim, a frequência máxima de operação de um contador é dada pelo tempo necessário para cada estágio mudar de estado multiplicado pelo número de estágios usados no contador.
7.3 CONTAGEM PROGRAMADA
 Conforme vimos, os ciclos de contagem dos circuitos dados como exemplos no item anterior são sempre potências de 2, ou seja, são circuitos que contam até 2, 4, 8, 16, 32 etc. O que fazer se precisarmos de um circuito que tenha um ciclo de contagem diferente desses valores, que não seja uma potência de 2?
Devemos levar em conta dois fatores:
 Podemos usar a entrada CLEAR para reiniciar a contagem, zerandoa, quando chegar ao valor desejado. Por exemplo, podemos reiniciar a contagem depois do 5 se quisermos um contador que conte de 0 a 5, ou seja, que tenha 6 estados de saída, conforme a tabela verdade dada a seguir:
	Entrada
	QC
	QB
	QA
	0
	0
	0
	0
	1
	0
	0
	1
	2
	0
	1
	0
	3
	0
	1
	1
	4
	1
	0
	0
	5
	1
	0
	1
	6
	0
	0
	0
	 
	 
	estado instável
 No sexto pulso que corresponde ao estado 110, o circuito vai a um estado que ativa a entrada CLEAR e leva todos os flip-flops a serem ressetados.
Para este circuito a solução é simples. Veja que a situação em que devemos ter a volta a zero da contagem e portanto, a ativação da linha CLR (clear) ocorre com uma única combinação de sinais: QA e QB no nível alto. 
 Se usarmos flip-flops que tenham entradas CLEAR ativadas pelo nível alto, basta usar uma porta AND de duas entradas com as entradas ligadas nas saídas QB e QC e a saída na linha comum de CLEAR de todos os flip-flops, conforme a figura 5. Se os flip-flops usados tiverem um CLEAR ativado no nível baixo como o 7476 (TTL), basta usar uma porta NAND em lugar de AND.
Figura 26: JK com entrada Clear.
 Se quiséssemos um contador até 4, por exemplo, o estado em que deveria ocorrer a ativação da entrada CLEAR ocorreria com a quinta combinação de saídas, ou seja, 101, o que significa QC=1 e QA=1. Bastaria então ligar as entradas da porta AND nessas saídas, conforme a figura 6.
Figura 27: JK com porta AND.
 Um diagrama de tempos pode mostrar exatamente o que ocorre com o contador elaborado desta maneira. Este diagrama é apresentado na figura 7. 
FIGURA 28: Gráfico de Clock.
 Observe que, quando as saídas chegarem ao estado 110, que seria a contagem do quinto pulso no circuito da figura, um pulso de reset de curta duração é produzido.
 Esta curta duração é dada justamente pelo tempo que os flip-flops demoram para mudar de estado ressetando, pois eles “realimentam” as entradas da
porta AND. Nos exemplos dados fizemos a programação da contagem usando as entradas de CLEAR de cada flip-flop.
 Uma outra maneira de projetarmos um contador consiste em usarmos as entradas PRESET em lugar de CLEAR.
 Para isso fazemos com que, no momento em que for atingida a contagem do valor imediatamente anterior àquele em que deve ocorrer a volta a zero, ou seja, n-1, em lugar de termos a comutação dos flip-flops, tenhamos a ativação das entradas de PRESET. Desta forma, no pulso seguinte de clock (n) teremos a volta a zero (reset) do contador. Para um contador de 6 estados, que depois do quinto pulso resseta, teremos a seguinte tabela verdade.
	Pulsos
	QC
	QB
	QA
	0
	0
	0
	0
	1
	0
	0
	1
	2
	0
	1
	0
	3
	0
	1
	1
	4
	1
	0
	0
	5
	1
	0
	1
	o PRESET é ativado
	X
	x
	x
	X
	volta a zero na transição do clock
	6
	0
	0
	0
	7
	0
	0
	1
	8
	0
	1
	0
Um circuito usando uma porta NAND é mostrado na figura abaixo.
Figura 29: JK com porta NAND.
 Veja que a detecção da condição de produção do pulso de PRESET deve ser reconhecida com os níveis 101 nas saídas dos estágios dos contadores e com o pulso indo ao nível alto na entrada de contagem. 
 Para obtermos a configuração 1111 que nos permitiria usar uma porta AND de quatro entradas, basta levar em conta a saída /QB em lugar de QB.
Assim, basta usar a porta AND e ligá-la nas entradas de PRESET (PR) dos flip-flops.
Se as entradas forem ativadas no nível baixo (/PR), basta trocar a porta AND por uma porta NAND de quatro entradas.
 Usando alguns artifícios, como por exemplo, portas apropriadas, é possível programar um contador de modo que ele tanto conte progressivamente como regressivamente.
Usando 3 estágios, podemos ter um contador UP/DOWN, conforme a figura 10. Uma entrada (UP/DOWN) pode ser usada para determinar o sentido da contagem.
Figura 30: JK com Data selector.
 Trata-se de uma entrada seletora de dados ou DATA SELECTOR, que pode ser usada para mudar o modo de funcionamento dos estágios deste circuito.
 Funcionamento: conforme vimos nesta lição, se usarmos as saídas Q dos flip-flops de um contador, a contagem será crescente, mas se usarmos as saídas /Q, a contagem será decrescente. Assim, o que fazemos é colocar um circuito seletor nessas saídas, de tal modo que ele coloque a saída Q de cada flip-flop na entrada de clock do seguinte, quando a contagem deve ser progressiva, e coloque a saída /Q na entrada do seguinte, quando na contagem descrescente. Três portas NAND para cada estágio podem fazer isso a partir do sinal de comando UP/DOWN.
7.4 CONTADORES SÍNCRONOS
 Sincronizar a contagem por um clock único aplicado a todos os estágios não é apenas uma necessidade dos circuitos mais complexos, principalmente, os usados em Informática e Instrumentação. O sincronismo de todos os estágios pelo mesmo clock tem ainda vantagens operacionais importantes.
 Conforme vimos, nos contadores assíncronos, os tempos de comutação dos flip-flops influem no funcionamento final do circuito, pois eles são cumulativos.
Em outras palavras, cada estágio precisa esperar o anterior completar a operação antes de iniciar a sua. Usando lógica sincronizada, ou seja, um contador em que todos os estágios são sincronizados por um clock único, este problema não existe e podemos ter contadores muito mais rápidos, na verdade, contadores cuja velocidade independe do número de etapas.
Figura 31: Flip Flop JK com Carry.
 Este circuito utiliza flip-flops tipo JK ligados de uma forma denominada PARALLEL CARRY. Nesta forma de ligação, J e K do primeiro flip-flop são mantidas no nível alto por meio de um resistor ligado ao positivo da alimentação (Vcc). Assim, o primeiro flip-flop muda de estado a cada pulso de clock. No entanto, J do segundo flip-flop está ligado à saída Q do primeiro. Isso significa que o segundo flip-flop só mudará de estado quando o primeiro flip-flop for ressetado,  ou seja, a cada dois pulsos de clock.
 Da mesma forma, com o uso de uma porta AND, o terceiro flip-flop só vai mudar de estado quando as saídas Q do primeiro e segundo flip-flop forem ao nível 1, ou seja, a cada 4 pulsos de clock.
Para 4 bits, utilizando 4 estágios, podemos usar o circuito mostrado na figura abaixo.
Figura 32: JK com 4 estágios.
 Um problema que ocorre com este tipo de configuração é que a partir de 3 estágios, a cada estágio que acrescentamos no contador devemos adicionar uma porta AND cujo número de entradas vai aumentando.
 Assim, para 4 estágios, a porta deve ter três entradas, para 5 estágios, 4 entradas e assim por diante. Uma maneira de não termos este problema consiste em usar uma configuração diferente de contador apresentada na figura abaixo e denominada RIPPLECARRY.
Figura 33: JK com Ripple carry.
 Neste circuito as portas usadas sempre precisam ter apenas duas entradas, o que é importante para a implementação prática do contador. 
 No entanto, como desvantagem deste circuito, temos uma limitação da velocidade de operação, pois como o sinal para os estágios vem da porta anterior, temos de considerar seu atraso.
7.5 CONTADORES SÍNCRONOS PROGRAMÁVEIS
 Da mesma forma que no caso dos contadores assíncronos, também é necessário, em determinadas aplicações, fazer a contagem até valores que não sejam potências de 2.
A divisão ou contagem por outros valores pode ser feita com a ajuda de portas ligadas de modo a “sentir” quando um determinado valor é alcançado, resetando então todos os flip-flops.
7.6 CONTADORES TTL
 Utilizando portas lógicas e flip-flops podemos implementar contadores que contenham ou façam a divisão de um sinal de entrada por qualquer valor. No entanto, na prática, podemos contar com muitos circuitos integrados em tecnologia TTL que já contenham estes circuitos completos num único chip e até com recursos que permitam alterar seu funcionamento de modo a ser obtida a contagem até um determinado valor.
A seguir veremos alguns dos principais circuitos integrados contadores em tecnologia TTL. 
7490 - Contador de Década
 Este é um dos mais populares dos contadores TTL e contém em seu interior quatro flip-flops já interligados de modo a funcionar como divisores por 2 e por 5. Isso significa que esses divisores podem ser usados para resultar num contador até 2 e num contador até 5, e em conjunto, num contador até 10.
Na figura 14 temos a disposição dos terminais deste circuito integrado.
Este circuito pode ser usado de três formas diferentes, sempre com as entradas R0(1), R0(2), R9(1) e R9(2) aterradas:
Quando ligamos a entrada B à saída QA e aplicamos o sinal de clock à entrada A, o circuito funciona como um contador BCD, ou seja, conta até
10, com as saídas em decimal codificado em binário apresentadas nos pinos QA, QB, QC e QD. Esta ligação é mostrada na figura 34.
Figura 34: CI 7490.
A tabela verdade para os pulsos aplicados na entrada neste modo de funcionamento será:
	Pulso
	QD
	QC
	QB
	QA
	0
	0
	0
	0
	0
	1
	0
	0
	0
	1
	2
	0
	0
	1
	0
	3
	0
	0
	1
	1
	4
	0
	1
	0
	0
	5
	0
	1
	0
	1
	6
	0
	1
	1
	0
	7
	0
	1
	1
	1
	8
	1
	0
	0
	0
	9
	1
	0
	0
	1
 Quando ligamos a saída QD à entrada A e aplicamos o sinal de clock à entrada B, teremos o circuito funcionando como um divisor de frequência por 10 simétrico. Teremos na saída QA um sinal quadrado (ciclo ativo de 50%) com 1/10 da frequência do clock. Este modo de funcionamento tem as ligações mostradas na figura 16.
Figura 35: CI 7490.
 Finalmente, quando quisermos usar o circuito como divisor por 2 ou por 5, independentes, não é preciso ligação externa alguma.
O sinal aplicado em CLK1 tem a frequência dividida por 2 e o sinal aplicado no CLK2 tem a frequência dividida por 5. Na operação normal as entradas R0(1) e R0(2) devem ser mantidas no nível baixo.
 7492 - Contador-Divisor por 12
 Este circuito integrado contém quatro flip-flops ligados como um divisor por 2 e um divisor por 6 que podem ser usados de maneira independente.
A pinagem deste circuito integrado TTL é mostrada na figura 17.
Figura 35: CI 7492.
O disparo dos flip-flops ocorre na transição do sinal de clock do nível alto para o nível baixo. Para ressetar o contador para 0000, basta aplicar o nível lógico 1 nas entradas R0.
Existem três modos de operação para este circuito integrado: Como contador até 12, basta ligar a saída QA à entrada B. O sinal de clock é aplicado à entrada A.
A tabela verdade para este modo de operação será:
	Entrada
	QD
	QC
	QB
	QA
	0
	0
	0
	0
	0
	1
	0
	0
	0
	1
	2
	0
	0
	1
	0
	3
	0
	0
	1
	1
	4
	0
	1
	0
	0
	5
	0
	1
	0
	1
	6
	0
	1
	1
	0
	7
	0
	1
	1
	1
	8
	1
	0
	0
	0
	9
	1
	0
	0
	1
	10
	1
	0
	1
	0
	11
	1
	0
	1
	1
 Na segunda forma de operação, ligamos a saída QD à entrada A. O circuito funcionará como um divisor simétrico de frequência. A frequência do sinal de clock aplicado à entrada B será dividida por 12 e o sinal terá um ciclo ativo de 50%.
 Na operação sem nenhuma ligação externa, o sinal aplicado à entrada A terá sua frequência dividida por 2 e o sinal aplicado na entrada B terá sua frequência dividida por 6.
7.7 CONTADORES E DIVISORES CMOS
 Temos ainda diversos circuitos integrados em tecnologia CMOS contendo contadores e divisores.
A seguir veremos um dos mais importantes.
 Na operação normal, contando até 10, as entradas RST e EN devem ser mantidas no nível baixo.
 Levando-se a entrada RST ao nível alto, o contador é ressetado. Se a entrada EN for levada ao nível alto, a contagem é paralisada.
Na figura 36 temos as formas de onda deste contador, mostrando de que forma em cada instante temos sempre apenas uma saída no nível alto.
Figura 36: Gráfico de Clok
Como em todos os circuitos CMOS, a frequência máxima de contagem depende da tensão de alimentação.
Para 10 V, a frequência máxima é da ordem de 5 MHz.
4018 - Contador/Divisor Por N
Este circuito integrado, que será melhor analisado na próxima lição, pode fazer a divisão ou contagem de pulsos em valores até 10 programados pelas ligações externas. Seu uso será visto posteriormente.
8 Memórias e Conversores.
8.1 Memórias Voláteis
 Memórias voláteis são as que requerem energia para manter a informação armazenada. São fabricadas com base em duas tecnologias: dinâmica e estática. Ver alocação de memória.
Figura 37: Memória SRAM de 64MB.
8.2 Memória dinâmica
 A memória dinâmica é a mais barata delas e, portanto, a mais utilizada nos computadores e são aquelas que foram popularizadas como memórias RAM. Este atributo vem do nome inglês Randomic Acess Memory (memória de acesso aleatório), que significa que os dados nela armazenados podem ser acessados a partir de qualquer endereço. As memórias RAM se contrapõem com as de acesso seqüencial, que exigem que qualquer acesso seja feito a iniciar pelo primeiro endereço e, seqüencialmente, vai “pulando” de um em um até atingir o objetivo. Na realidade, existem outras memórias de acesso aleatório nos computadores, inclusive não voláteis, portanto, é importante ter o conhecimento de que o nome RAM é apenas uma popularização do nome da memória principal dos computadores, utilizada para armazenar os programas e dados no momento da execução.
 O nome dinâmica é referente à tecnologia utilizada para armazenar programas e dados e não à forma de acessá-los. De modo simplista ela funciona como uma bateria que deve ser recarregada sempre que apresentar carga insuficiente para alimentar o equipamento.
Todas as vezes que a CPU (unidade de processamento central) for acessar a memória, para escrita ou para leitura, cada célula dessa memória é atualizada. Se ela tem 1lógico armazenado, sua “bateria” será recarregada; se ela tem 0 lógico, a “bateria” será descarregada. Este procedimento é chamado de atualizar, em inglês refresh de memória.
Memória estática
 A memória estática não necessita ser analisada ou recarregada a cada momento. Fabricada com circuitos eletrônicos conhecidos como latch, guardam a informação por todo o tempo em que estiver a receber alimentação.
Figura 38: Memória PROM.
8.3 Memórias não Voláteis
 São aquelas que guardam todas as informações mesmo quando não estiverem a receber alimentação. Como exemplos, citam-se as memórias conhecidas por ROM, FeRAM e FLASH, bem como os dispositivos de armazenamento em massa, disco rígido, CDs e disquetes. As memórias somente para leitura, do tipo ROM (sigla de Read Only Memory), permitem o acesso aleatório e são conhecidas pelo fato de o usuário não poder alterar o seu conteúdo. Para gravar uma memória deste tipo são necessários equipamentos específicos. Dentre as memórias do tipo ROM destacam-se as seguintes:

Outros materiais