Escolar Documentos
Profissional Documentos
Cultura Documentos
ESCOLA POLITÉCNICA
DEPARTAMENTO DE ENGENHARIA ELÉTRICA
Quando Claude Elwood Shannon (1916 - 2001), em 1936, por intermédio de seu trabalho intitulado "A
Symbolic Analysis of Relay and Switching Circuits", sistematizou e adaptou o trabalho teórico de George
Boole (1815-1864) intitulado "An Investigation of the Laws of Thought" (1854) aos circuitos chaveados, se
quer suspeitava estar iniciando uma verdadeira revolução tecnológica aplicada ao projeto de circuitos
elétricos, introduzindo uma categoria de circuitos até então não existente, os circuitos chaveados ou circuitos
digitais.
A partir de então, observou-se um crescimento nas aplicações dos conceitos de circuitos digitais para
solução de problemas que até então só poderiam ser resolvidos utilizando-se circuitos analógicos.
A história dos circuitos digitais é uma história longa, porém passada em um curto espaço de tempo. Senão
observe-se alguns fatos marcantes que determinaram o desenvolvimento de toda tecnologia baseada na
informação, que só foi possível devido ao surgimento dessa modalidade de circuito elétrico.
Então, o transistor tem 60 anos de idade e o primeiro CI tem 45 anos de idade, entretanto, o
desenvolvimento da tecnologia digital, iniciada por Shannon, possibilitou à implementação dos mais diversos
tipos de circuitos lógicos utilizados nas mais diversas áreas do conhecimento e seus reflexos nos dias atuais
são muito marcantes, senão vejamos:
Toda esta tecnologia foi possível graças ao progresso em tecnologia de semicondutores e de circuitos
integrados. Pode-se dizer que hoje se vive a
“IDADE DO SILICIO”.
1
1.2 BREVE HISTÓRIA
Tudo começou com matemático inglês George Boole, que em 1854 publicou seu trabalho intitulado "An
Investigation of the Laws of Thought". Neste trabalho, Boole desenvolve uma teoria algébrica que tenta
explicar a lógica dos pensamentos humanos. Seu trabalho foi ignorado pelos matemáticos da época que
não souberam vislumbrar o que estava por trás de toda aquela teoria.
Em 1928, o austro-húngaro Julius Edgar Lilienfeld (1881-1963), registra a patente de um dos seus inventos,
o transistor de efeito de campo FET, porém sua descoberta não foi levada em consideração pelo fato de
que seu transistor não obteve sucesso experimentalmente.
Lilienfeld
2
Em 1940, R. Ohi trabalha com um semicondutor
importante para o desenvolvimentos dos circuitos
integrados, que é o silício Si, e descobre que realizando
dopagem com impurezas tipo p e tipo n poderia aumentar
muito a capacidade de condução desse material. O silício
dopado é a base para a construção da maioria dos
transistores que conhecemos hoje em dia.
Pastilha de Silício
Em dezembro de 1947, o engenheiro eletricista americano John Bardeen e o físico americano Walter
Houser Brattain descobrem o efeito transistor bipolar de junção. O transistor bipolar de junção veio substituir
o triodo, uma válvula eletrônica, descoberta em 1906 por Lee De Forest, que era utilizada nos circuitos
eletrônicos dessa época para realizar funções de amplificação e chaveamento. Logo depois, entre 1948 e
1950, o inglês, William B. Schockley, que trabalhava com Bardeen e Bratain nos Laboratórios da Bell,
desenvolveu a teoria matemática que explicava o funcionamento do transistor bipolar de junção e em 1956,
os três pesquisadores receberam o prêmio Nobel de Física pela publicação do artigo "Investigations on
Semiconductors and the Discovery of the Transistor Effect,".
3
Entre 1957 e 1958, J. Hoerni, que trabalhava na Fairchild, descobriu que ao aquecer uma lâmina de silício
na presença de vapor d’agua, crescia sobre a lâmina uma fina camada de óxido de silício que protegia a
lâmina. Essa camada de óxido poderia ser destruída seletivamente por processo de foto-gravação e nas
regiões descobertas do silício se implantariam regiões dopadas tipo p e tipo n que permitiriam a fabricação
de componentes eletrônicos na superfície do silício. Esse foi o primeiro passo para o desenvolvimento de
circuitos integrados sobre um plano.
Em 1959, Robert N. Noyce, da Fairchild, inventa o primeiro circuito Integrado em tecnologia planar. O
princípio de fabricação desenvolvido por ele é utilizado até hoje, com incorporação de forte evolução nas
técnicas de fabricação.
Em 1960, no Laboratório da Bell, D. Kahng and M. Atalla apresentam o primeiro transistor de efeito de
campo feito com metal, óxido e silício, o MOSFET (Metal Oxide Semiconductor Field Effect Transistor). No
ano seguinte, M. Atalla deixa o laboratório da Bell para tornar-se co-fundador da Hewllet & Packard.
4
Em 1961, a Fairchild, empresa criada por
Robert N. Noyce, G. Moore entre outros, lança
o primeiro circuito integrado. A comercialização
dos circuitos integrados inicia-se a partir de
1962.
Portanto, até os anos de 1960, os circuitos
lógicos eram construídos com componentes
discretos como transistores e resistores. Com o
advento do circuito integrado, foi possível
implantar certo número de transistores numa
única pastilha. No início, os circuitos integrados
possuíam poucos transistores e esses circuitos
realizavam funções lógicas simples. Primeiro circuito integrado
Em 1964, a Fairchild lança o primeiro circuito analógico integrado. O amplificador operacional µA702. Em
1965 a Fairchild também lança o amplificador operacional µA709, agregando um pouco mais de
complexidade na tecnologia de fabricação do CI.
Com o desenvolvimento tecnológico, nos anos de 1970 tornou-se possível a implementação de circuitos
digitais, ainda mais complexos.
Em 1970, a Fairchild, já sem Noyce e Moore, lança a memória estática de 256 bits. Nesse mesmo ano a
Intel, criada por Noyce, Moore e Grove, em 1968, lança a memória dinâmica de 1024 bits.
5
Fairchild- Memória estática 256 bits Intel - Memória dinâmica 1024 bits
Em 1971, a Intel lança o microcomputador 4004. Embora esse primeiro microprocessador tivesse baixa
capacidade de processamento, foi por meio da utilização dele que se pode desenvolver os primeiros
microcomputadores pessoais, e por conseqüência, a revolução que se observa hoje no processamento das
informações.
Nos anos de 1990 já era possível fabricar CIs com até 100 milhões de transistores uma única pastilha de
silício. Isto foi possível devido à invenção dos transistores com comprimento de canal cada vez mais curtos,
e, portanto, ocupando menos espaço na pastilha de silício e, por ser menores, propagando o sinal elétrico
com mais rapidez e confiabilidade.
No início dos anos de 1970 os CIs eram chips padrões, ou seja, continham até 100 transistores e
executavam funções lógicas simples. Para construir um determinado circuito lógico, o projetista escolhia os
6
chips, definia como eles se conectariam para executar as funções lógicas de seu projeto. Essa técnica
tornou-se ineficiente à medida que a tecnologia avançou e os motivos são fáceis de deduzir:
a) Chips eram de baixa funcionalidade (poucos transistores) ocupavam muito espaço na placa de
circuito impresso, o que impedia a miniaturização do produto final, e eram muito lentos devido ao
tamanho dos transistores integrados da época.
b) A funcionalidade de cada chip padrão era fixa e não podia ser modificada, o que dificultava a fase de
projeto pois, qualquer alteração no circuito que se fizesse necessária implicaria na substituição de
um conjunto de chips por outros.
Atualmente é possível fabricar CIs que contém circuitos internos que podem ser programados pelo projetista
para implementar uma grande quantidade de diferentes circuitos lógicos. Esses chips têm uma estrutura
geral e incluem uma coleção de chaves programáveis que permitem a configuração interna de seus circuitos
de muitas formas diferentes. Tais chips são chamados de PLDs (dispositivos de lógica programável). Muitos
deles permitem a reprogramação por um número muito grande de vezes. Nesta categoria estão as FPGA’s
(Field Programmable Gate Array) e as CPLD’s (Complex Programmable Logic Device) que contém mais de
100 milhões de transistores.
Hoje é possível, em nossa própria casa, desenvolver nosso próprio circuito digital integrado. Basta para isso,
possuir um computador, software adequado e chips como a FPGA (Field Programmable Gate Array). É
possível também desenvolver sistemas digitais com chips microprocessados, tais como microcontrolador ou
DSP(Digital Signal Processor).
7
assim, nosso curso se propõe a fornecer esses conhecimentos básicos e introduzir o aluno às técnicas de
projeto de circuito digital.
8
UNIDADE I - SISTEMAS NUMÉRICOS E CÓDIGOS
1.1 INTRODUÇÃO
O mundo físico fornece informações que, na sua grande maioria, tem um comportamento contínuo ao longo
do tempo; (temperatura, pressão, velocidade de fluídos, etc). Os circuitos digitais, por sua vez, possuem a
característica de operarem por estados discretos, (ligado ou desligado). Para que as informações do mundo
físico possam ser processadas pelos circuitos digitais, torna-se necessária uma adaptação dessas informações.
Circuitos especiais conhecidos como conversores analógico/digital e digital/analógico providenciam a
transformação das informações de características contínuas no tempo, ou seja, analógico, em informações que
possam ser processadas dentro dos circuitos digitais, transformando-as em uma linguagem de "0’s" e "1’s".
Neste capítulo introduziremos o conceito de sistemas numéricos dando ênfase ao sistema binário, que é a base
de representação dos circuitos digitais, suas operações e alguns códigos para processamento dessas
informações.
(N) R = (1011,1001) 2
R → base numérica
n → número de dígitos da parte inteira
m → número de dígitos da parte fracionária
a → dígitos an-1 mais significativo (MSB)
a-m menos significativo (LSB)
0 ≤ a ≤ (R - 1)
n-1
(N) R = Σ ajRj = an-1R n-1 + an-2 R n-2 + ...+ a1R 1 + a0R 0 + a -1R –1 + a -2R –2 +...+ a--mR -m
j = -m
(N) R = ( 11,101) 2 = 1 x 2 1 + 1 x 2 0 + 1 x 2 -1 + 0 x 2 -2 + 1 x 2 -3
9
1.2.2 OPERAÇÕES ARITMÉTICAS BÁSICAS COM SISTEMA BINÁRIO
a) Soma 1010 +
1100
10110
b) Subtração 10101 -
01011
01010
c) Multiplicação 1010 x
101
1010
1010 -
110010
(1101,101) 2 → ( ? ) 10
(1 x 2 3 + 1 x 2 2 + 0 x 2 1 + 1 x 2 0 + 1 x 2 -1 + 0 x 2 -2 + 1 x 2 -3) 10
↓ ↓ ↓ ↓ ↓ ↓ ↓
( 8 + 4 + 0 + 1 + 0.5 + 0 + 0,125 ) 10 = (13,625) 10
10
(35,25) 10 → ( ? ) 2
35 ⏐ 2 0,25 x
LSB → 1 17 ⏐ 2 2
1 8 ⏐2 MSB → 0,50 x
0 4 ⏐2 2
0 2 ⏐2 LSB → 1,00
0 1 ⏐2
MSB → 1 0
(35,25) 10 → ( 100011,01 ) 2
• Para tratar esse tipo de conversão utilizaremos a base 10 como base intermediária, convertendo o
número na base A para a base 10 e posteriormente para a base 2 e vice-versa. Exceção se fará
para as base múltiplas de 2
Exemplo 1: Base 2 para base 8: Toma-se, como referência, o ponto base e separa-se o número de 3 em 3
bits em cada sentido (direita e esquerda). Depois, transforma-se o conjunto de 3 bits em um dos dígitos da
base 8, conforme tabela acima.
Exemplo 2: Base 8 para base 2: É ainda mais simples pois cada dígito da base 8 corresponde a 3 dígitos da
base 2 conforme a tabela acima. Os pontos base são coincidentes.
( 723, 54 )8 → ( ? ) 2 = ( 7 2 3 , 5 4 )8
↓ ↓ ↓ ↓ ↓
( 111 010 011 , 101 100 ) 2
11
Digitos base 16 = 24 Correspondência base 2
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
A 1010
B 1011
C 1100
D 1101
E 1110
F 1111
Exemplo 3: Base 2 para base 16: Toma-se, como referência, o ponto base e separa-se o número de 4 em 4
bits em cada sentido (direita e esquerda). Depois, transforma-se o conjunto de 4 bits em um dos dígitos da
base 16, conforme tabela acima.
Exemplo 4: Base 16 para base 2: Cada dígito da base 16 corresponde a 4 dígitos da base 2 conforme a
tabela acima. Os pontos base são coincidentes
( A E F , C 5 )16 → ( ? )2 = ( A E F , C 5 ) 16
↓ ↓ ↓ ↓ ↓
( 1010 1110 1111 , 1100 0101 ) 2
Por definição
(N)R,C = R n - N se N ≠0 e 0 se N = 0
12
Exemplos:
A subtração entre dois números positivos (A - B), na base 2, segue a seguinte técnica:
• Some A ao complemento de 2 de B
13
Exemplo 3: (1010,101000 - 0111,01)2 1010,101000 +
1000,110000 (complemento de 2 de B)
overflow → 1 0011,011000
↓
resultado
(N)R-1,C = R n - R -m - N
A subtração entre dois números positivos (A - B) na base 2, com complemento de um, segue a seguinte
técnica:
• Some A ao complemento de um de B
a) Se houver overflow, some um ao bit menos significativo. Este então é o resultado esperado.
14
b) Se não houver overflow, o resultado é negativo. Então tome o complemento de 1 do
resultado e adicione o sinal negativo.
Existem muitos tipos de códigos, cada qual com suas vantagens e características. Eles são utilizados com fins
de padronização e também por questões de segurança. Alguns tipos de códigos são:
• Código binário
• Código binário codificado em decimal
• Código reflexivo
• Código de unidade de distância
• Código detector de erros
15
1.6.1 CÓDIGO BCD (DECIMAL CODIFICADO EM BINÁRIO)
Este sistema utiliza 4 bits para codificar um dígito decimal. O mais comum deles é o NBCD (Natural BCD)
ou 8421 BCD. É utilizado para dar saída em displays numéricos, como daqueles encontrados em voltímetros
digitais, relógios digitais, etc.
Dígito 0 1 2 3 4 5 6 7 8 9
NBCD 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001
16
1.7 ÁLGEBRA DE BOOLE
A álgebra de Boole reune um conjunto de regras que obedecem a determinados postulados, conhecidos como
postulados de Huntington, e que são aplicáveis a um conjunto de elementos.
POSTULADOS DE HUNTINGTON
1. Um conjunto de elementos S é fechado com respeito a um operador se, para cada par de
elementos de S, o operador especifica um único resultado que também pertence a S.
4. A + B = B + A
5. A . B = B . A
6. A+(B.C) = (A+B).(A+C)
7. A.(B+C) = (A.B)+(A.C)
S = {0,1}
AND OR INVERSÃO
'
. 0 1 A B A.B + 0 1 A B A+B A ⎯A
0 0 0 0 0 0 0 0 1 0 0 0 0 1
1 0 1 0 1 0 1 1 1 0 1 1 1 0
1 0 0 1 0 1
1 1 1 1 1 1
Uma vez que a álgebra de Boole atende aos postulados, podemos deduzir então algumas identidades:
17
A partir das identidades acima, desenvolveu-se os seguintes teoremas que podem ser provados:
1. A + AB = A Absorção
2. A +⎯AB = A + B
3. AB + A⎯B = A Adjacência lógica
4. AC + ⎯A B C = AC + BC
5. AB + AC + ⎯B C = AB +⎯BC
6. A . B . C . ... = ⎯A +⎯B +⎯C + .... DeMorgan
7. A + B + C + ... = ⎯A . ⎯B . ⎯C . ... DeMorgan
1. A + AB = A ( 1 + B ) = A . 1 = A
3. AB + A⎯B = A ( B +⎯B ) = A
4. AC + ⎯A B C = C (A +⎯AB ) = AC+CB
' ' ' ' ' ' ' ' ' ' ' ' ' '' ' ' '
ABC A.B A.B.C A B C A+B A.B.C A+B+C
000 0 0 1 1 1 1 1 1
001 0 0 1 1 0 1 1 1
010 0 0 1 0 1 1 1 1
011 0 0 1 0 0 1 1 1
100 0 0 0 1 1 1 1 1
101 0 0 0 1 0 1 1 1
110 1 0 0 0 1 0 1 1
111 1 1 0 0 0 0 0 0
" "
7. A + B + C + ... = ⎯A . ⎯B . ⎯C . ... DeMorgan Usando a tabela verdade
' ' ' ' ' ' ' '' ' '' ' ' ' ' '
ABC A+B A+B+C A B C A.B A.B.C A+B+C
000 0 0 1 1 1 1 1 1
001 0 1 1 1 0 1 0 0
010 1 1 1 0 1 0 0 0
011 1 1 1 0 0 0 0 0
100 1 1 0 1 1 0 0 0
101 1 1 0 1 0 0 0 0
110 1 1 0 0 1 0 0 0
111 1 1 0 0 0 0 0 0
18
1.8 GATES LÓGICOS
As operações definidas por Boole, em sua álgebra, foram simbolizadas pela sua adaptação aos circuitos
eletrônicos chaveados para os seguintes símbolos lógicos e considerando:
Chave aberta → nível lógico 0
Chave fechada → nível lógico 1
Vcc
' '
A A
0 1 A L1
1 0
OPERAÇÃO ( + ) → Gate OR
A B A+B Vcc A
0 0 0
0 1 1
1 0 1 B L1
1 1 1
19
1.9 OUTROS GATES
A partir desses três operadores, gerou-se mais dois gates resultantes do processo de inversão dos gates AND e
OR. São eles, então, os gates NAND e NOR.
Gate NAND
' '
A B A.B
0 0 1
0 1 1
1 0 1
1 1 0
Gate NOR
' '
A B A+B
0 0 1
0 1 0
1 0 0
1 1 0
Ainda mais duas expressões booleanas, resultantes da operação entre os gates básicos, também são
consideradas como gates. São conhecidos como OR-Exclusivo e NOR-Exclusivo.
20
1.10 PORTAS LÓGICAS BÁSICAS COM PORTAS NAND E PORTAS NOR
Em circuitos integrados programáveis, como as FPGAs, todas as funções lógicas são realizadas com um único
tipo de porta lógica. Em geral a porta NAND é escolhida para tal função. Observe abaixo que tanto a operação
inversão quanto a operação AND e a operação OR, da álgebra de Boole, podem ser implementadas
exclusivamente com portas NAND ou portas NOR.
A ⎯A
A ⎯A ← Inversão →
A
A AB
AB
← AND → ⎯A AB
B
B
A ⎯A ⎯B
A+B ← OR →
B ⎯B
A A+B A+B
B
Portas NAND Portas NOR
X = AB.CD = AB + CD = AB + CD
A substituição de última porta Nand pelo equivalente, obtido da aplicação do teorema de DeMorgan, permite
a melhor visualização da função que o circuito realiza, visto que se agrupam, portas ANDs, porta inversoras e
depois porta OR. Em adição, permite implemantar expressões do tipo AND/OR mais facilmente.
21
1.12 SIMPLIFICAÇÕES DE FUNÇÕES BOOLEANAS
Exemplo 1: Dado o circuito abaixo, encontrar uma expressão mais simples e sintetizar o circuito simplificado.
Exemplo 2: Dado o circuito abaixo, encontrar uma expressão mais simples e sintetizar o circuito simplificado
22
UNIDADE II - ANÁLISE E SÍNTESE DE CIRCUITOS COMBINACIONAIS
2.1 INTRODUÇÃO
Neste capítulo serão apresentadas algumas técnicas de minimização de funções booleanas. A seguir
utilizaremos essas técnicas nos projetos de circuitos combinacionais dos mais diversos tipos e com larga
aplicação prática. Essas técnicas de análise e síntese de circuitos também serão estendidas aos circuitos
seqüenciais.
Os teoremas 1 e 2 têm especial relevância quando aplicados a expressões na forma padrão1 , enquanto o
teorema 3 é relevante na simplificação de expressões na forma canônica.
Exemplo 1:
Exemplo 2:
Y = AB + BEF + CD
Exemplo 3:
Z = ⎯A⎯B + A⎯C
Se, a primeira vista, você reconhecesse que os termos (⎯A⎯B⎯C) e ( A⎯B⎯C ) eram adjacentes e agrupasse-
os logo, a expressão resultante seria:
23
Z = ⎯B⎯C + A⎯C + ⎯A⎯BC
Z = ⎯B(⎯C + ⎯AC) + A⎯C → aplicando o teorema 2
Z = ⎯B⎯C + ⎯A⎯B + A⎯C
Que não é a mais simples como vimos anteriormente! O termo ⎯B⎯C, na expressão, é redundante.
Observe que os termos (⎯A⎯BC ) e ( AB⎯C ) só se agruparão uma vez enquanto os termos (⎯A⎯B⎯C ) e
( A⎯B⎯C ) possuem duas possibilidades de agrupamento. Para obter uma melhor eficiência do teorema
precisamos agrupar primeiro os termos que só podem ser agrupados de uma única maneira.
2 variáveis 3 variáveis CD \ AB 00 01 11 10
00 0 4 12 8
B\A 0 1 C \ AB 00 01 11 10 01 1 5 13 9
0 0 2 0 0 2 6 4 11 3 7 15 11
1 1 3 1 1 3 7 5 10 2 6 14 10
A → MSB A → MSB A → MSB
B → LSB C → LSB D → LSB
Para cada um dos mapas acima, Karnaugh estabeleceu uma tabela de adjacência relacionada a cada termo
mínimo da expressão booleana na forma canônica. As tabelas acima mostram essa correspondência em que,
cada termo adjacente é calculado a partir do termo mínimo de referência (M) pela seguinte expressão:
24
M/(2(i-1) )
(i-1) M = termo mínimo de referência
Si = M + [2 ][(-1) ] Si = termos mínimos adjacentes
i = 1, 2, 3, ..., n onde: n = no de variáveis
M/2(i-1) é definida como divisão inteira
Z = ∑0,1,3,4,6,7,8,10,11,12,13,15
2 variáveis 3 variáveis CD \ AB 00 01 11 10
00 1 1 1 1
B\A 0 1 C \ AB 00 01 11 10 01 1 0 1 0
0 1 1 0 0 1 1 0 11 1 1 1 1
1 0 0 1 1 1 0 1 10 0 1 0 1
C \ AB 00 01 11 10 C \ AB 00 01 11 10 ⎯A em comum
0 ⎯A⎯B⎯C ⎯AB⎯C AB⎯C A⎯B⎯C 0 A em comum
1 ⎯A⎯BC ⎯ABC ABC A⎯BC 1
C \ AB 00 01 11 10 C \ AB 00 01 11 10
0 ⎯B em comum 0 ⎯B em comum
1 B em comum 1 B em comum
25
CD \ AB 00 01 11 10 CD \ AB 00 01 11 10
00 00
01 01
11
⎯A em comum 11
⎯B em comum
10
A em comum B em comum
10
CD \ AB 00 01 11 10 CD \ AB 00 01 11 10
00
01 01
⎯C em comum ⎯D em comum
11 11
C em comum D em comum
10 10
Exemplos:
C \ AB 00 01 11 10 C \ AB 00 01 11 10
0 1 1 0 0 0 0 1 1 0
1 0 0 0 1 1 1 1 0 1
26
C \ AB 00 01 11 10
0 1 1 1 0
1 0 1 1 1
h(A,B,C) = ⎯A⎯C + AC + B
CD \ AB 00 01 11 10
CD \ AB 00 01 11 10
00 1 1 1 1
00 0 1 0 1
01 1 0 0 1
01 1 0 1 0
11 1 0 0 1
11 1 0 1 1
10 1 0 0 1
10 1 0 0 1
CD \ AB 00 01 11 10
1 par essencial (b)
00 1 1 0 0
2 pares opcionais (c)
01 0 1 1 0
1 quadra essencial (d)
11 1 0 1 0
10 1 1 1 0
p(A,B,C,D) =⎯A⎯BC + B⎯CD + ABC +⎯A⎯D
Nesse exemplo observa-se a diversidade de possibilidades para minimização da mesma função devido
à quantidade de grupos opcionais.
00 01 11 10 CD \ AB 00 01 11 10
CD \ AB
00 00 1 0 1 1
1 0 1 1
01 01 1 1 1 0
1 1 1 0
11 11 1 1 1 1
1 1 1 1
10 10 1 0 1 1
1 0 1 1
CD \ AB 00 01 11 10 CD \ AB 00 01 11 10
00 1 0 1 1 00 1 0 1 1
01 1 1 1 0 01 1 1 1 0
11 1 1 1 1 11 1 1 1 1
10 1 0 1 1 10 1 0 1 1
27
2.3.4 MAPA DE KARNAUGH DE 5 E 6 VARIÁVEIS
Para encontrar adjacências lógicas, no mapa de Karnaugh de 5 variáveis, deve-se imaginar que os dois mapas
estão um sobre o outro, então exemplificando, a célula 0 é adjacente à célula 16. Observe a figura abaixo:
A=0 A=1
DE \ BC 00 01 11 10 DE \ BC 00 01 11 10
00 1 0 0 1 00 1 1 0 1
01 0 1 0 1 01 0 0 1 1
11 0 0 0 1 11 0 0 1 1
10 0 1 0 1 10 0 0 0 1
A=0 A=1
DE \ BC 00 01 11 10
DE \ BC 00 01 11 10
00 16 20 28 24
00 0 4 12 8
01 17 21 29 24
01 1 5 13 9
11 19 23 31 27
11 3 7 15 11
10 18 22 30 26
10 2 6 14 10
O mapa de Karnaugh de seis variáveis possui 4 células construídas a partir do mapa de Karnaugh de 4
variáveis. A adjacência entre as células de cada mapa pode ser visualizada de forma idêntica aquela utilizada
para o mapa de 4 variáveis. Entretanto, as adjacências entre as células em mapas diferentes funcionam como
num agrupamento de um mapa de 2 variáveis. Por exemplo, agrupamento na vertical elimina a variável A e,
na horizontal, a variável B.
B=0 B=1
EF \ CD 00 01 11 10 EF \ CD 00 01 11 10
00 0 4 12 8 00 16 20 28 24
A=0 01 1 5 13 9 01 17 21 29 24
11 3 7 15 11 11 19 23 31 27
10 2 6 14 10 10 18 22 30 26
EF \ CD 00 01 11 10 EF \ CD 00 01 11 10
A=1 00 32 36 44 40 00 48 52 60 56
01 33 37 45 41 01 49 53 61 57
11 35 39 47 43 11 51 55 63 59
10 34 38 46 42 10 50 54 62 58
28
Exemplo:
B=0 B=1
EF \ CD 00 01 11 10 EF \ CD 00 01 11 10
00 1 0 1 1 00 0 0 1 1
01 0 1 1 1 01 0 0 1 1
A=0 11 0 1 0 0 11 0 1 0 0
10 0 0 0 0 10 0 0 0 0
EF \ CD 00 01 11 10 EF \ CD 00 01 11 10
00 0 0 1 1 00 0 0 1 1
A=1 01 0 1 0 0 01 0 0 1 1
11 0 0 0 0 11 0 1 0 0
10 0 0 1 1 10 0 0 0 0
29
Do exemplo acima, pode-se concluir que a busca no mapa de Karnaugh se resume em, agrupar células
procurando inicialmente pelos implicantes essenciais, depois os implicantes necessários e finalmente os
implicantes opcionais.
Quando se lê um mapa de Karnaugh, onde existem entradas don't care, utiliza-se a seguinte regra:
Só agrupe 1's, com entradas don't care, se e somente se esse agrupamento resultar numa razoável
simplificação do circuito. Caso contrário, trate-os como se fossem zeros na tabela verdade.
Exemplo:
CD \ AB 00 01 11 10
00 1 1 1 1
F = ∑0,1,4,8,10,11,12, Φ (2,3,6,9,15)
01 1 0 0 Φ
11 Φ Φ Φ 1
Onde Φ representa a entrada don't care
10 Φ Φ 0 1
Lendo sem considerar as saídas don't care
F =⎯A⎯B⎯C + ⎯C⎯D + A⎯BC 00 01 11 10
CD \ AB
00 1 1 1 1
Considerando as saídas don’t care
01 1 0 0 Φ
F = ⎯B + ⎯C⎯D
11 Φ 0 Φ 1
10 Φ Φ 0 1
30
Por DeMorgan
31
2.4 VARIABLE - ENTERED MAPPING ( TÉCNICA VEM )
A técnica VEM é uma extensão da técnica de Karnaugh para leitura de mapas contendo acima
de 6 variáveis de entrada. Essa técnica, além de aceitar as entradas tradicionais do mapa de
Karnaugh ( 0 1 e φ ), também aceita variáveis e expressões booleanas como entradas do mapa
VEM.
ABC F
Seja a tabela verdade de 3 variáveis para a função F.
000 0
001 0
F = ⎯A⎯B⎯C + ⎯A⎯BC + ⎯AB⎯C + ⎯ABC + A⎯B⎯C + A⎯BC + AB⎯C + ABC 010 1
011 1
O processo de gerar uma expressão booleana específica para F, é o de 100 1
selecionar os termos mínimos apropriados da expressão booleana geral. 101 0
Isto pode ser pensado como o processo de associar o valor da função 110 φ
para um termo mínimo específico e operá-lo utilizando uma função AND 111 φ
com cada o termo mínimo equivalente da função em questão.
Por exemplo: F. F = F
Aqui ambos os lados da expressão são logicamente operados pela função AND e portanto, não
viola nenhuma regra algébrica.
Para gerar a função específica para F precisamos prescrever o valor de F para cada termo
mínimo. Fazemos então F ser:
Temos então a função definida para F conforme mostra a tabela verdade e o mapa de Karnaugh.
Para determinar a expressão mínima, nesse caso, ou aplica-se o teorema da adjacência lógica
na expressão F ou aplica-se o mesmo teorema no mapa de Karnaugh.
C \ AB 00 01 11 10
0 0 1 φ 1
1 0 1 φ 0
F = A⎯C + B
B
F = ⎯A⎯B⎯C. 0 + ⎯A⎯BC. 0 + ⎯AB⎯C. 1 + ⎯ABC . 1 + A⎯B⎯C. 1 + A⎯BC. 0 + AB⎯C. φ + ABC. φ
A⎯C
F = A⎯C + B
32
Para desenvolver a técnica VEM, precisamos apenas estender essa idéia de plotar o valor dado
da variável associada com cada termo mínimo, para aquela de plotar o valor dado de alguma
expressão associada com cada termo mínimo.
Para ilustrar a idéia, vamos operar logicamente a variável menos significativa da tabela verdade
com a variável F conforme abaixo:
F.F = ⎯A⎯B (⎯C.F + C.F) +⎯AB (⎯C.F + C.F) + A⎯B (⎯C.F + C.F) + AB (⎯C.F + C.F)
Vamos agora definir como subtermos mínimos os termos resultantes de todas as possíveis
combinações entre as variáveis (A e B) , ou seja ( ⎯A⎯B, ⎯AB, A⎯B, AB )
Agora vamos subdividir a tabela verdade de acordo com os subtermos mínimos e observar o
desenvolvimento algébrico da expressão acima.
F.F = ⎯A⎯B (⎯C F + CF) +⎯AB (⎯CF + CF) + A⎯B (⎯CF + CF) + AB (⎯CF + CF)
AB C F
00 0 0
F.F = ⎯A⎯B (⎯C 0+C0) +⎯AB (⎯C1+C1) + A⎯B (⎯C1+C0) + AB (⎯Cφ+Cφ )
00 1 0
01 0 1
F.F = ⎯A⎯B ( 0 ) +⎯AB (⎯C + C) + A⎯B (⎯C ) + AB (φ )
01 1 1
10 0 1 Então podemos plotar o mapa com o valor DADO de 0 1
B\A
10 1 0
cada termo, (⎯CF + CF), também chamado de Map- 0 0 ⎯C
11 0 φ
11 1 φ
Entered Variable (MEV), só que agora em um mapa de 1 1 φ
Karnaugh de 2 variáveis. Nota: (⎯C + C ) = 1
Uma vez construído o mapa pela técnica VEM, sua leitura deve ser feita seguindo as seguintes
regras.
Considere que as variáveis escolhidas, para serem entradas do mapa, serão chamadas de MEV
(Map-Entered Variable) daqui para frente.
Passo1: Primeiro imagine que todas as entradas 1, no mapa, foram substituídas pelas variáveis
do mapa VEM somada com seu complemento, ou seja, 1 = D+⎯D. Então circule sobre
todas as entradas MEV de acordo com as regras:
a) Primeiro circule e extraia todos os MEVs isolados que não se agrupam com outro
MEV idêntico nas células adjacentes ou com um 1 ou com um φ (don't care).
Lembre-se que um C e um ⎯C em células adjacentes não podem ser agrupados por
não serem idênticos.
b) Circule e extraia todos os MEVs que formam pares apenas com outro MEV idêntico
em células adjacentes
33
d) Circule e extraia todos os MEVs que formarão pares com apenas um φ (don't care)
e) Qualquer MEV que se agrupará de 2 maneiras com outro MEV idêntico, 1 ou φ, mas
não formarão quadras deve ser deixado para depois
f) Continue agrupando e extraindo, de forma similar, quadras, óctuplas, etc até que
cada MEV tenha sido coberto pelo menos 1 vez. Isto completa o passo 1.
Passo 2: Uma vez que todos os MEVs foram cobertos, transforme o mapa da seguinte forma;
' ' ' '
a) Substitua o MEV e o MEV por 0, ou seja MEV e MEV → 0
b) Substitua 0 → 0 e φ → φ
Exemplo 1: B\A 0 1
0 0 ⎯C
1 1 φ
Passo 1: Passo 2:
B\A 0 1 B\A 0 1
0 0 ⎯C 0 0 0
1 1 φ AC
1 1 φ B
F = AC + B
34
Exemplo 2:
AB C F1 B\A 0 1
00 0 0 0 0 1
00 1 0 1 ⎯Cφ+C C
01 0 φ
01 1 1 0 1 0 1
B\A B\A
10 0 1
10 1 1
0 0 ⎯C+C 0 0 1
11 0 0
1 ⎯Cφ+C C 1 φ 0
11 1 1
Passo 1: BC Passo 2: A⎯B
F = BC + A⎯B
Exemplo 3:
C/AB 00 01 11 10 C/AB 00 01 11 10
0 Dφ+⎯Dφ D+⎯D D 0 0 φ φ 0 0
1 ⎯D ⎯Dφ Dφ D+⎯D 1 0 0 0 1
Exemplo 4:
C/AB 00 01 11 10 C/AB 00 01 11 10
0 Dφ 1 D+⎯Dφ φ 0 0 1 1 φ
1 ⎯D+Dφ 0 ⎯D 1 1 1 0 0 1
Exemplo 5:
CD \ AB 00 01 11 10 CD\AB 00 01 11 10
00 E φ 1 ⎯E 00 0 φ φ 0
01 E+⎯Eφ 0 E 0 01 φ 0 0 0
11 1 1 11 1 0 0 1
Eφ Eφ
10 1 1 0 0
10 Eφ+⎯E 1 ⎯E 0
35
2.5 ANÁLISE E SÍNTESE DE CIRCUITOS COMBINACIONAIS
A partir de agora vamos utilizar as técnicas de manipulação de expressões booleanas nos projetos de
circuitos combinacionais bem como, aos poucos, adquirir alguma experiência na análise desses circuitos.
Existem muitas categorias de circuitos combinacionais dos quais veremos as seguintes:
• Circuitos Aritméticos
• Comparadores
• Geradores de Paridade
• Multiplexadores e Demultiplexadores
• Decodificadores e Codificadores
Os computadores digitais são projetados para realizar uma gama de instruções aritméticas e lógicas com
dados codificados em binário. A parte do computador que realiza tais operações chama-se Unidade
Aritmética e Lógica (ALU). Uma das operações aritméticas básicas é a adição entre dois números. No
computador, todas as operações aritméticas básicas são realizadas fazendo uso da operação de adição e de
deslocamento de bits. Um dos circuitos que realiza a adição entre dois bits é conhecido como meio-
somador, o outro é o somador completo.
O meio somador realiza a soma algébrica entre dois dígitos binários conforme mostra a tabela verdade
abaixo.
AB SOMA CARRY
00 0 0
01 1 0
10 1 0
11 0 1
B\A 0 1 B\A 0 1
0 0 1 0 0 0
1 1 0 1
1 0
O somador completo difere do meio somador pelo fato de possuir mais uma entrada chamada de CARRY-
IN, ou seja, a soma entre dois bits binários mais o vai um resultante da soma dos termos anteriores. A
tabela verdade do circuito é apresentada abaixo:
36
A B Cin SOMA Cout
A B Cin
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0 Somador
0 1 1 0 1 Completo
1 0 0 1 0
1 0 1 0 1 Cout Soma
1 1 0 0 1
1 1 1 1 1
Cin \ AB 00 01 11 10
0 0 1 0 1
1 1 0 1 0
Cin \ AB 00 01 11 10
0 0 0 1 0
1 0 1 1 1
CARRY SOMA
Cout
37
Para gerar uma soma entre 2 números binários de N bits, tem-se o seguinte esquema de conexão dos dois
módulos vistos anteriormente. Essa configuração de somador é conhecida com o nome de somador
paralelo.
Apresenta-se aqui os circuitos integrados que realizam a soma binária entre dois números de 4 bits das
famílias TTL e CMOS que são duas das famílias de dispositivos eletrônicos utilizadas na implementação de
circuitos digitais.
13 A1 B1 A2 B2 A3 B3 A4 B4 14 A4 B4 A3 B3 A2 B2 A1 B1
Cin Cout Cin Cout
Vcc ∑1 ∑2 ∑3 ∑4 Gnd Vcc ∑4 ∑3 ∑2 ∑1 Gnd
5 9 6 2 15 12
2.5.1.3 COMPARADOR
O circuito comparador é projetado para comparar a magnitude relativa de dois números binários. A
estrutura geral do comparador e sua tabela verdade são mostradas à seguir. No caso, trata-se de um
comparador de 2 bits.
38
B1B0 \ A1A0 00 01 11 10
B1B0 \ A1A0 00 01 11 10
00 1 0 0 0
00 0 0 0 0
01 0 1 0 0
01 1 0 0 0
11 0 0 1 0
11 1 1 0 1
10 0 0 0 1
10 1 1 0 0
B1 B0 A1 A0
Vcc A3 B3 A>B A<B B0 A0 B1
16 15 14 1 3 12 11 10 9
TTL 7485
1 2 3 4 5 6 7 8
Comparador de 4 bits
Os geradores de paridade são circuitos utilizados principalmente na transmissão assíncrona entre terminais
remotos. O propósito desses circuitos é o de garantir confiabilidade na transmissão e na recepção das
informações que circulam entre eles. Um gerador de paridade bastante conhecido é aquele que gera
paridade par, ou seja, fornece saída 1 se a quantidade de bits iguais a 1 for um número par, incluindo o bit
de paridade.
39
A B C D PAR CD \ AB 00 01 11 10
0 0 0 0 0 00 0 1 0 1
0 0 0 1 1
01 1 0 1 0
0 0 1 0 1
0 0 1 1 0 11 0 1 0 1
0 1 0 0 1 10 1 0 1 0
0 1 0 1 0
0 1 1 0 0
0 1 1 1 1 PAR = ⎯AB⎯C⎯D + ⎯A⎯B⎯CD + A⎯B⎯C⎯D + AB⎯CD +
1 0 0 0 1 ⎯ABCD + ⎯A⎯B C⎯D + A⎯BCD + ABC⎯D
1 0 0 1 0
1 0 1 0 0
1 0 1 1 1 PAR = ⎯AB (⎯C⎯D + CD ) + A⎯B (⎯C⎯D +CD ) +
1 1 0 0 0 + C⎯D (⎯A ⎯B + AB ) +⎯CD (⎯A⎯B + AB )
1 1 0 1 1
1 1 1 0 1 PAR = ⎯AB (C xnor D ) + A⎯B (C xnor D ) +
1 1 1 1 0
+ C⎯D (A xnor B ) +⎯CD (A xnor B)
2.5.3.1 MULTIPLEXADORES
Os multiplexadores são algumas vezes chamados de seletores de dados e é um dos circuitos combinacionais
mais utilizados em projetos digitais. Por definição, um multiplexador é um circuito projetado para
selecionar uma de muitas entradas para ser ativada como saída do circuito num determinado instante.
No exemplo abaixo, vemos um multiplexador 4x1 cujo formato geral é dado por:
S1S0 I3 I2 I1 I0 Saída S0 \ S1 0 1
0 0 X X X X I0 0 I0 I2
0 1 X X X X I1 1 I1 I3
1 0 X X X X I2
1 1 X X X X I3
Forma genérica:
40
Implementação:
Os multiplexadores são também utilizados para implementar funções booleanas como mostrado abaixo. A
função, neste caso, é de 4 variáveis e pode ser implementada utilizando mux 8x1 e seguido os seguintes
passos:
ABC D F Mapa VEM da função
000 0 1
000 1 1 00 01 11 10
001 0 0
C \ AB
001 1 1
0 D+⎯D D D ⎯D
010 0 0 1 D 0 ⎯D 0
010 1 1
011 0 0
011 1 0
100 0 1 Mapa VEM do MUX
100 1 0
101 0 0 00 01 11 10
101 1 0
S0 \ S2S1
0 I0 I2 I6 I4
110 0 0
1 I1 I3 I7 I5
110 1 1
111 0 1
111 1 0
• Utilizando a técnica VEM separe a variável D, uma vez que A, B e C serão as entradas de
seleção do mux respectivamente (S2, S1, S0)
• Como o mux é de 8x1 seu mapa VEM está mostrado juntamente com o mapa VEM da função.
• Logo vai existir uma equivalência direta entre células idênticas de ambos os mapas, ou seja:
a) A célula 000 (D+⎯D) do mapa VEM é igual à célula ⎯S2⎯S1⎯S0(I0) do mapa do MUX. No
mux, (D+⎯D) significa 1, logo a entrada I0 deve ser conectada ao nível lógico 1 (Vcc).
b) A célula 001(D) é igual a célula ⎯S2⎯S1S0(I1). No mux, D deve ser conectado à entrada I1.
Idem para a célula 010(D) em I2 e 110(D) em I6
c) A célula 100(⎯D) é igual a S2⎯S1⎯S0(I4). No mux,⎯D deve ser conectado à entrada I4.
Idem para a célula 111(⎯D) em I7
d) A célula 011( 0 ) é igual a célula ⎯S2S1S0(I3). No mux, I3 deve ser conectado nível lógico
zero, significando que esse termo mínimo não faz parte da função desejada. Idem para a
célula 101( 0 ) que leva a entrada I5 ser conectada também em nível lógico zero.
41
Implementação
2.5.3.2 DEMULTIPLEXADORES
Implementação:
G0
E Demux G1
G2
2 (1x4) G3
TTL 74155
S1 S0
42
2.5.4 DECODIFICADORES E CODIFICADORES
São circuitos combinacionais com vasta aplicação em projetos digitais. Na categoria dos decodificadores
encontramos alguns exemplos como:
a) Decodificadores 4x16, 3x8, 2x4, etc
b) BCD - Decimal
c) BCD - 7 segmentos
2.5.4.1 DECODIFICADORES
AABBC S0
S0 S1
S1 SS2
2 SS3
3 S4S4S5 S5
S6 S7 ⎯S0 = ⎯A⎯B⎯C
C0 0 0 S60 S7
1 1 1 1 1 1 1 ⎯S1 = ⎯A⎯BC
00 00 1 01 01 11 1 1 1 11 11 11 ⎯S2 = ⎯AB⎯C
00 1 0 11 1 0 1 1 1 1 1 ⎯S3 = ⎯ABC
0 1 1 1 1 1 0 1 1 1 1
01 00 0 11 0 1 1 1 1 1 ⎯S4 = A⎯B⎯C
1 1 1 0 1 1 1
11 0 1 11 ⎯S5 = A⎯BC
1 1 1 1 0 1 1
⎯S6 = AB⎯C
01 11 0 11 11 10 1 1 1 11 10 11
⎯S7 = ABC
01 1 1 11 1 1 1 1 1 1 0
_______________
0 1 1 1 1 0 1 1 1 S0 = ⎯A⎯B⎯C
______________
S1 = ⎯A⎯BC
______________
00 01 11 10
C \ AB S2 = ⎯AB⎯C
0 0 1 1 1 ____________
1 1 1 1 1 S3 = ⎯ABC
______________
S4 = A⎯B⎯C
____________
S0 = ⎯A⎯B⎯C S6 = AB⎯C
_________
S7 = ABC
43
Uma outra aplicação desses tipos de decodificadores é a geração de funções booleanas na forma de SOP.
F = ∑m1,m3, m4, m7
Recebe como entrada 4 bits contendo o código BCD e gera na saída equivalente ao valor decimal desse
código o nível lógico zero e nas demais saídas o nível lógico 1.
44
2.5.4.1.3 DECODIFICADOR BCD - 7 SEGMENTOS
É utilizado na conversão do código BCD para o display de 7 segmentos com a finalidade de fazer o display
acender mostrando o dígito decimal que o código BCD representa.
ABCD a b c d e f g a CD \ AB 00 01 11 10
0 0 0 0 1 1 1 1 1 1 0
0 0 0 1 0 1 1 0 0 0 0
00 1 0 φ 1
f g b 01 0 1 φ 1
0 0 1 0 1 1 0 1 1 0 1
0 0 1 1 1 1 1 1 0 0 1 11 1 1 φ φ
0 1 0 0 0 1 1 0 0 1 1 e c
0 1 0 1 1 0 1 1 0 1 1 d
10 1 0 φ φ
0 1 1 0 0 0 1 1 1 1 1
0 1 1 1 1 1 1 0 0 0 0
1 0 0 0 1 1 1 1 1 1 1 a = A⎯B⎯C + ⎯A⎯B⎯D + ⎯ACD + ⎯ABD
1 0 0 1 1 1 1 0 0 1 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 φ φ φ φ φ φ φ
2.5.4.2 CODIFICADORES
Os codificadores são circuitos combinacionais projetados para gerar um código de saída diferente para cada
combinação de bits à entrada. A quantidade de bits do código na saída deve satisfazer a relação abaixo
Entretanto esse código gerado deve ser único para cada entrada. No problema a seguir observa-se que uma
combinação de C1 C0 está relacionada a 4 entradas distintas e é por causa desse problema que os
codificadores não são considerados circuitos gerais. Entretanto existe o codificador de prioridades que é
extremamente útil e deve ser discutido.
O codificador de prioridades a seguir estabelece que a entrada E2 é de alta prioridade, a entrada E1é de
média prioridade e a entrada E0 é de baixa prioridade.
E2 é codificado com 01
E1 é codificado com 10
E0 é codificado com 11
45
E0 \E2E1 00 01 11 10 E0 \E2E1 00 01 11 10
E2 E1 E0 C1 C0
0 0 1 0 0 0 0 0 1 1
0 0 0 0 0
1 1 1 0 0 1 1 0 1 1
0 0 1 1 1
0 1 0 1 0
0 1 1 1 0 C1 = ⎯E2E1 + ⎯E2E0 C0 = E2 + ⎯E1E0
1 0 0 0 1
1 0 1 0 1
1 1 0 0 1
1 1 1 0 1
46