Você está na página 1de 47

UNIVERSIDADE FEDERAL DA BAHIA

ESCOLA POLITÉCNICA
DEPARTAMENTO DE ENGENHARIA ELÉTRICA

ENGC26 Sistemas Lógicos

LIGIA SOUZA PALMA


2007
1. INTRODUÇÃO

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.

1947 – Descobrimento do transistor bipolar de junção.


1959 – Descoberta de um processo planar de fabricação de circuito integrado.
1960 - Desenvolvimento primeiro do transistor MOSFET funcional.
1962 – Surgimento dos primeiros circuitos integrados comerciais.

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:

1. Crescimento incomparável na evolução tecnológica e no mercado: 16% anual


2. Mercado global de eletrônica é maior que US$ 1 trilhão, maior do mundo!
3. Revolução econômica e social baseada na tecnologia da informação:
Internet, Internet sem fio, Bluetooth (internet sem fio e barata para curtas distâncias),
Telefonia celular, Navegação e Carro inteligentes, Realidade virtual, Jogos eletrônicos,
Equipamentos para diagnóstico médico de precisão, etc.

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

Em 1936, o engenheiro eletricista americano Claude


Elwood Shannon sistematizou a teoria de Boole. Ele
conseguiu mostrar que álgebra de Boole e a aritmética
binária poderiam ser utilizadas para simplificar arranjos de
relés eletromecânicos utilizados em circuitos aplicados à
comunicação telefonônica. Ele também provou que era
possível utilizar configuração de circuitos com esses relés
para resolver problemas da álgebra booleana e explorar
as propriedades das chaves elétricas, para fazer lógica
booleana, é o conceito básico que rege o funcionamento
de todos os computadores eletrônicos. Claude Shannon

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,".

Transistor Bipolar de Junção Bratain, Bardeen e Shockley


T i Bi l d J ã
Em 1958, o americano J. Kilby que trabalhava na Texas Instruments registra a patente do primeiro circuito
integrado, utilizando um processo de fabricação ainda rudimentar e com o germânio como elemento
semicondutor. Ele também foi um dos inventores da calculadora de bolso alguns anos depois.

Primeiro circuito integrado de germânio J. Kilby

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.

Primeiro circuito integrado planar Robert Noyce

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.

Primeiro MOSFET Atalla

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.

Primeiro CI analógico µA702 Amplificador operacional µA709

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.

Intel – Microprocessador 4004

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).

Estrutura interna de uma FPGA. CPLD – circuito interno


©Xilinx Inc.

Para assimilar mudanças tão radicais de desenvolvimento tecnológico é fundamental adquirir os


conhecimentos básicos da eletrônica digital sem os quais nenhuma tecnologia pode ser absorvida. Sendo

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.

1.2 SISTEMAS NUMÉRICOS


É uma linguagem de símbolos consistindo de um conjunto ordenado de dígitos com regras definidas para
adição, multiplicação e outras operações matemáticas. A base ou raiz desse sistema numérico especifica o
número de dígitos do sistema e seu ordenamento. Os sistemas numéricos permitem que um número possua
uma parte inteira e uma parte fracionária separada por um "ponto base".

(N)R = (parte inteira , parte fracionária)R

1.2.1 REPRESENTAÇÃO DE UM NÚMERO

a) Justaposicional → Dígitos são posicionados lado à lado

Exemplo: (N) R = (an-1, an-2, ..., a1, a0.a-1,a-2,...,a-m) R

(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)

b) Notação Polinomial → Dígitos representados na forma de um polinômio

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

d) Divisão 1010' 1'0' ⏐ 111


111 110
0011 1
11 1
00 0 0
000
0

1.3 CONVERSÃO DE BASES

a) Base binária para base decimal

Aplica-se a regra do polimônio

(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

b) Base decimal para base binária

• Parte inteira do número em decimal → Divide-se sucessivamente, o número escrito na base


decimal, pela base 2 até que o quociente seja igual a zero. Tomam-se os restos sucessivos. O bit
MSB é o último resto obtido da divisão sucessiva e o bit LSB é o primeiro resto.

• Parte fracionária do número decimal → Multiplica-se, a parte fracionária do número escrito na


base 10, sucessivamente pela base 2. A parte inteira resultante de cada multiplicação é o bit
procurado da conversão. O MSB fracionário é a primeira parte inteira obtida da multiplicação e
o LSB fracionário é a última parte inteira. A multiplicação acontece sucessivamente até que o
resto torne-se zero. Se isso não ocorrer é porque o resultado da conversão fracionária não é
exata.

10
(35,25) 10 → ( ? ) 2

Parte inteira Parte fracionária

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

c) Base A para base binária e vice-versa

• 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

Digitos base 8 = 23 Correspondência base 2


0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111

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.

( 10111,1101 ) 2 → ( ? ) 8 = ( 010 111 , 110 100 ) 2


↓ ↓ ↓ ↓
( 2 7 , 6 4 )8

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.

( 101011101,101101111 ) 2 → ( ? ) 16 = ( 0001 0101 1101 , 1011 0111 1000 ) 2


↓ ↓ ↓ ↓ ↓ ↓
( 1 5 D , B 7 8 )16

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

1.4 COMPLEMENTO DE NÚMEROS (Complemento da base R)

Na matemática, a técnica do complemento de um número permite realizar operações de subtração através de


operações de adição. Esta é a técnica utilizada pelos computadores digitais.

Por definição

(N)R,C = R n - N se N ≠0 e 0 se N = 0

n → número de dígitos da parte inteira do número N


R → base do número

12
Exemplos:

a) ( 147 ) 10,c = 103 - 147 = 853

b) ( 0,53 ) 10,c = 1 - 0,53 = 0,47

c) ( 147, 53 ) 10,c = 852,47

d) ( 1010 ) 2,c = 24 - 1010 = 10000 - 1010 = 00110

e) ( 0,101 ) 2,c = 1 - 0,101 = 0,011

f) ( 1010,101 ) 2,c = 101,011

1.4.1 COMPLEMENTO BINÁRIO

Para encontrar o complemento de 2 de um número binário aplica-se a seguinte técnica:

• Inverta cada dígito do número, ( complemento lógico)


• Some 1 ao bit menos significativo

Exemplo: ( 001011,110 ) 2,c = 110100,001 +


1
110100,010

1.4.2 SUBTRAÇÃO COM COMPLEMENTO DA BASE 2

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

• Verifique, no resultado, se houve o “vai 1” (overflow)

a) Se houver overflow, descarte-o. O restante é o resultado esperado.


b) Se não houver overflow, o resultado é negativo. Então tome o complemento de 2 do
resultado e adicione o sinal negativo ao complemento.

Exemplo 1: (1010 - 0111)2 1010 +


1001 (complemento de 2 de 0111)
overflow → 1 0011

resultado

Exemplo 2: (0111 - 1010)2 0111 +


0110 (complemento de 2 de 1010)
sem overflow → 1101
sinal negativo → - 0011 (complemento de 2 de 1101)

resultado

13
Exemplo 3: (1010,101000 - 0111,01)2 1010,101000 +
1000,110000 (complemento de 2 de B)
overflow → 1 0011,011000

resultado

1.5 COMPLEMENTO DE NÚMEROS (Complemento da base R-1)


Por definição

(N)R-1,C = R n - R -m - N

n → número de dígitos da parte inteira do número N


m → número de dígitos da parte fracionária do número N
R → base do número
Exemplo:

a) ( 147 ) 9,c = 103 - 1 - 147 = 852

b) ( 0,53 ) 9,c = 1 - 0,01 - 0,53 = 0,46

c) ( 147, 53 ) 9,c = 852,46

d) ( 1010 ) 1,c = 10000 - 1 - 1010 = 1111 - 1010 = 0101

e) ( 0,101 ) 1,c = 1 - 0,001 - 0,101 = 0,111 - 0,101 = 0,010

f) ( 1010,101 ) 1,c = 10000,000 - 0,001 - 1010,101 = 1111,111 - 1010,101 = 0101,010

1.5.1 COMPLEMENTO DE UM DE UM NÚMERO EM BINÁRIO

Para encontrar o complemento de 1 de um número binário aplica-se a seguinte técnica:

• Inverta cada dígito do número ( complemento lógico)

Exemplo: ( 001011,110 ) 1,c = 110100,001

1.5.2 SUBTRAÇÃO EM BINÁRIO COM COMPLEMENTO DE 1.

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

• Verifique, no resultado, se houve o “vai 1” (overflow)

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.

Exemplo 1: (1010 - 0111)2 1010 +


1000 (complemento de 1 de 0111)
overflow → 1 0010
1
0011

resultado

Exemplo 2: (0111 - 1010)2 0111 +


0101 (complemento de 1 de 1010)
sem overflow → 1100
sinal negativo → - 0011 (complemento de 1 de 1100)

resultado

Exemplo 3: (1010,101000 - 0111,01)2 1010,101000 +


1000,101111 (complemento de 1 de B)
overflow → 1 0011,010111
1
0011,011000

resultado

1.6 CÓDIGOS PARA REPRESENTAÇÃO DA INFORMAÇÃO


Os códigos são formatos internos de representação da informação no computador.
Muitas vezes, deseja-se armazenar no computador informações como: nome, endereço, CPF, etc, mas o
computador só consegue armazenar "0s" e "1s". Daí a necessidade de criar alguns tipos de códigos para
armazenamento de símbolos diferentes de números.
Internamente, o computador armazena esses "0’s" e "1’s" em grupos de bits. Costuma-se dizer em linguagem
computacional que:

• Bit → um dígito binário


• Nibble → um grupo de 4 bits ou 1/2 byte
• Byte → usualmente um grupo de 8 bits
• Palavra → um grupo de bytes
• ½ Palavra → metade de bytes de uma palavra
• Palavra dupla → dobro de bytes de uma palavra

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

Vejamos então alguns desses códigos:

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

1.6.2. CÓDIGO ASCII (American Standard Code for Information Interchange)

O código ASCII é um código de 7 bits, largamente utilizado na representação de caracteres alfanuméricos e


símbolos. É o código utilizado para representar os caracteres do teclado do computador. Por ser um código de
7 bits, pode representar até 27 símbolos diferentes.

MSB 000 001 010 011 100 101 110 111


LSB
0000 NUL DLE SP 0 @ P p
0001 SOH DC1 ! 1 A Q a q
0010 STX DC2 " 2 B R b r
0011 ETX DC3 # 3 C S c s
0100 EOT DC4 $ 4 D T d t
0101 ENQ NAK % 5 E U e u
0110 ACK SYN & 6 F V f v
0111 BEL ETB ' 7 G W g w
1000 BS CAN ( 8 H X h x
1001 HT EM ) 9 I Y i y
1010 LF SUB * : J Z j z
1011 VT ESC + ; K [ k {
1100 FF FS , < L \ l |
1101 CR GS - = M ] m }
1110 SO RS . > N ↑ n ~
1111 SI US / ? O _ o DEL

ACK Acknowledge FS Form separator


BEL Bell GS Group separation
BS Back space HT Horizontal tab
CAN Cancel NAK Negative acknowledge
CR Carriage return NUL Null
DC1 - DC4 Direct control RS Record separator
DEL Delete idle SI Shift in
DLE Data link escape SO Shift out
EM End of medium SOH Start of heading
ENQ Enquiry SP Space
EOT End of transmission STX Start text
ESC Escape SUB Substitute
ETB End of transmission back SYN Synchronous idle
ETX End text US Unit separator
FF Form feed VT Vertical tab

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.

2. Deve existir um elemento 0 em S tal que para cada A em S, A+0 = A

3. Deve existir um elemento 1 em S tal que para cada A em S, A.1=A

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)

8. Para cada elemento de S, existe um elemento A tal que A .⎯A = 0 e A +⎯A = 1

9. Existem pelo menos dois elementos A e B, em S, tal que A não é equivalente a B

Na álgebra de Boole, o conjunto de elementos definidos é:

S = {0,1}

E as regras prescritas para os operadores ( . + e inversão) são:

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:

1. A. 0=0 e A+1 =1 Absorção


2. A. 1=A e A+0 =A Neutralidade
3. A.A =A e A +A =A Dualidade
4. A . ⎯A = 0 e A + ⎯A = 1
5. A=A

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

PROVA DOS TEOREMAS:

1. A + AB = A ( 1 + B ) = A . 1 = A

2. A +⎯AB = A . ( B +⎯B ) + ⎯A B = AB + A⎯B +⎯AB = AB + AB + A⎯B +⎯AB =


= AB + A⎯B + AB +⎯AB = A (B +⎯B ) + B ( A +⎯A ) = A + B

3. AB + A⎯B = A ( B +⎯B ) = A

4. AC + ⎯A B C = C (A +⎯AB ) = AC+CB

5. AB + AC + ⎯B C = AB ( C +⎯C ) + AC ( B +⎯B ) + ⎯B C ( A +⎯A ) =


= AB C + AB⎯C + ABC + A⎯BC + A⎯B C +⎯ABC =
= AB C + AB⎯C + A⎯BC +⎯ABC = AB (C +⎯C ) + ⎯BC ( A +⎯A)
= AB +⎯BC
" "
6. A . B . C . ... = ⎯A +⎯B +⎯C + ... De Morgan 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 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

OPERAÇÃO ( - ) → Gate INVERSOR

Vcc
' '
A A
0 1 A L1
1 0

OPERAÇÃO ( . ) → Gate AND


Vcc A B
A B A.B
0 0 0
0 1 0 L1
1 0 0
1 1 1

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.

OR-Exclusivo ou (EX-OR) NOR-Exclusivo ou (EX-NOR)


' ' ' ' ' ' '
A B A.B + A.B A B A.B + A.B
0 0 0 0 0 1
0 1 1 0 1 0
1 0 1 1 0 0
1 1 0 1 1 1

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

1.11 EQUIVALÊNCIA DE FUNÇÕES: Aplicação do teorema de DeMorgan


Observe os dois circuitos abaixo:
Os circuitos são constituídos apenas de portas NANDs.

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.

X = A + ( B C ( A + B ) ) = A + ( ABC + BBC ) → postulado 7


X = A + ( ABC + BBC ) → identidade 3
X = A + ABC + BC → teorema 1
X = A + BC

Exemplo 2: Dado o circuito abaixo, encontrar uma expressão mais simples e sintetizar o circuito simplificado

X = A + ABC + ⎯AC → teorema 1


X = A +⎯AC → teorema 2
X=A+C

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.

2.2 MINIMIZAÇÃO DE FUNÇÕES BOOLEANAS


O segredo da minimização de funções booleanas está na utilização dos teoremas previamente introduzidos .
Os de maior interesse são:

Teorema 1: 1a) A + AB = A 1b) A(A + B) = A (absorção)

Teorema 2: 2a) A + ⎯AB = A + B 2b) A(⎯A + B) = A B

Teorema 3: 3a) AB + Α⎯B = A 3b) (A+ B) . (A +⎯B) = A (adjacência lógica)

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:

X = CD + A⎯BC + AB⎯C + BCD → Teorema 1 → (termos 1 e 4)

X = CD + A⎯BC + AB⎯C = CD + A (B xor C)

Exemplo 2:

Y = AB + BEF + ⎯ACD + ⎯BCD


' '
Y = AB + BEF + CD(⎯A +⎯B) por DeMorgan → (⎯A +⎯B) = AB
' '
Y = AB + BEF + CDAB → teorema 2 → (termos 1 e 3)

Y = AB + BEF + CD

Exemplo 3:

Z = ⎯A⎯B⎯C + ⎯A⎯BC + AB⎯C + A⎯B⎯C → teorema 3 → (termos 1 com 2; 3 com 4)

Z = ⎯A⎯B + A⎯C

A aplicação do teorema 3 é praticamente automática em expressões na forma canônica, entretanto deve-se


aplicá-lo com bastante cautela. Imagine que os termos da expressão anterior estivessem arrumados da
seguinte maneira:

Z = ⎯A⎯B⎯C + A⎯B⎯C + AB⎯C + ⎯A⎯BC

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:

Z = ⎯B⎯C + AB⎯C + ⎯A⎯BC


Z = ⎯C( ⎯B + AB) + ⎯A⎯BC → aplicando o teorema 2
1
Quando a expressão booleana possui pelo menos um dos termos que não é mínimo

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.

Deduz-se então que:


1. Termos que não se agruparão com outros termos devem ser extraídos primeiro.
2. Termos que se agruparão com apenas um outro termo devem ser extraídos em seguida.
3. Termos que se agruparão com outros termos de mais que uma forma deverão ser analisados com
mais atenção para prevenir redundâncias.

2.3 MAPAS DE KARNAUGH


M. Karnaugh, em seu artigo, "The Map Method for Synthesis of Combinational Logic Circuits", de 1953,
ordenou e dispôs os termos mínimos de uma função booleana num padrão geométrico tal que a aplicação do
teorema da adjacência lógica tornou-se imediata.

Considere as figuras e as tabelas de adjacências abaixo:

MAPAS DE KARNAUGH 4 variáveis

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

2 Variáveis 3 Variáveis 4 Variáveis


Termo mínimo Adjacência Termo mínimo Adjacência Termo mínimo Adjacência
0 1,2 0 1,2,4 0 1,2,4,8
1 0,3 1 0,3,5 1 0,3,5,9
2 0,3 2 0,3,6 2 0,3,6,10
3 1,2 3 1,2,7 3 1,2,7,11
4 0,5,6 4 0,5,6,12
5 1,4,7 5 1,4,7,13
6 2,4,7 6 2,4,7,14
7 3,5,6 7 3,5,6,15
8 0,9,10,12
9 1,8,11,13
10 2,8,11,14
11 3,9,10,15
12 4,8,13,14
13 5,9,12,15
14 6,10,12,15
15 7,11,13,14

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

2.3.1 PLOTAGEM DO MAPA DE KARNAUGH


O mapa de Karnaugh pode ser construído a partir da tabela verdade ou a partir da forma canônica de uma
função booleana, conforme mostrado abaixo:

2 Variáveis 3 Variáveis 4 Variáveis


AB X ABC Y ABCD Z
00 1 000 0 0000 1
01 0 001 1 0001 1
10 1 010 1 0010 0
11 0 011 1 0011 1
100 0 0100 1
X = ∑ 0,2 101 1 0101 0
110 1 0110 1
111 0 0111 1
1000 1
Y = ∑ 1,2,3,5,6 1001 0
1010 1
1011 1
1100 1
1101 1
1110 0
1111 1

Z = ∑0,1,3,4,6,7,8,10,11,12,13,15

MAPAS DE KARNAUGH 4 variáveis

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

2.3.2 IDENTIFICANDO AS REGIÕES NO MAPA DE KARNAUGH

B\A 0 1 B\A 0 1 B\A 0 1


0 ⎯A⎯B A⎯B
⎯A em comum 0 ⎯B em comum
1 A em comum 1 B em comum
1 ⎯AB AB

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

2.3.3 LENDO O MAPA DE KARNAUGH


Para realizar a leitura correta da expressão minimizada, através do mapa de Karnaugh, procede-se da seguinte
maneira. Inicialmente consideraremos como entradas no mapa apenas os 1’s da função booleana de cada
célula. Agrupando essas células, segundo as regras abaixo descritas, obteremos a função booleana na forma
de soma de produtos.

a) Pesquise, circule e extraia do mapa aquelas entradas isoladas (ilhas)


b) Procure, circule e extraia aquelas entradas que só formarão par com apenas uma outra entrada.
c) Procure no mapa aquelas entradas, ainda não foram cobertas, e que formam par com mais de
uma entrada, mas não podem formar um grupo maior. Aquelas entradas que formarão grupos
com entradas ainda não cobertas deverão ser extraídas em primeiro lugar. Depois extraia aquelas
entradas que formarão pares com entradas já cobertas.
d) Procure, circule e extraia aquelas entradas, não cobertas, que formarão quadras de uma única
maneira com outras 3 entradas ainda não cobertas mas não formam grupos maiores. Depois
pesquise, circule e extraia entradas, não cobertas, que formarão quadras de uma única maneira
com entradas já cobertas.
e) Procure aquelas entradas que formarão quadras, de mais de uma maneira, mas não formarão
grupos maiores. Estude-as e agrupe de forma idêntica as realizadas no passo c mas, nesse caso,
procure por quadras.
f) Continue pesquisando seu mapa de forma similar aos passos de b até e, procurando agora grupos
de 8, 16, etc até que todas as entradas estejam agrupadas.
g) Revise sua pesquisa para verificar se não houve algum erro.

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

1 ilha (a) 2 pares isolados (b)


1 par isolado (b) 2 pares opcionais (c)

f(A,B,C) = A⎯BC + ⎯A⎯C g(A,B,C) = ⎯BC + B⎯C +⎯AC ou


g(A,B,C) = ⎯BC + B⎯C +⎯AB

26
C \ AB 00 01 11 10
0 1 1 1 0
1 0 1 1 1

2 pares isolados (b)


1 quadra (d)

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

1 ilha (a) 1 quadra (d)


3 pares isolados (b) 1 óctupla (f)
1 quadra isolada (d)
k(A,B,C,D) = ⎯C⎯D +⎯B
j(A,B,C,D) =⎯AB⎯C⎯D +⎯A⎯BD + ABD + A⎯B⎯D +⎯BC

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

f(A,B,C,D) =⎯A⎯B + BD + CD + A⎯D f(A,B,C,D) =⎯B⎯D + AB +⎯AD + CD

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

f(A,B,C,D) =⎯BD +⎯AD + AB + ⎯BC f(A,B,C,D) =⎯A⎯B + BD +A⎯D + ⎯BC

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

F(A,B,C,D,E) = =⎯A⎯BC⎯DE +⎯A⎯BCD⎯E + A⎯B⎯D⎯E + ⎯C⎯D⎯E + ABE + B⎯C


↓ ↓ ↓ ↓ ↓ ↓
ilha ilha par quadra quadra óctupla
Regras: (a) (a) (b) (d) (d) (f)

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.

MAPA DE KARNAUGH DE 6 VARIÁVEIS

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

H(A,B,C,D,E,F) = ⎯A⎯B⎯D⎯E⎯F + B⎯CDEF +⎯A⎯B⎯CDF + ⎯B⎯CD⎯EF + A⎯BC⎯F + BC⎯E + ⎯AC⎯E


↓ ↓ ↓ ↓ ↓ ↓ ↓
par par par par quadra óctuplas
Regras: (b) (b) (b) (b) (d) (f)

2.3.5 IMPLICANTES PRIMITIVOS


IMPLICANTES PRIMITIVOS são todas as possibilidades de agrupamento de uma função booleana no mapa
de Karnaugh sempre levando em consideração a possibilidade de se obter grupos maiores, quando isso for
possível. Entretanto, observa-se que nem todos os agrupamentos são úteis para obtenção da expressão
booleana em sua forma mais simples. Assim, no agrupamento abaixo, podemos identificar quatro categorias
de grupos:
A=0 A=1
DE \ BC 00 01 11 10 DE \ BC 00 01 11 10
00 1 1 1 1 00 0 0 0 0
01 1 0 0 1 01 0 1 1 0
11 0 0 1 1 11 1 1 0 0
10 0 1 1 0 10 1 0 0 0

No agrupamento acima podemos identificar 4 categorias de grupos:


a) IMPLICANTES ESSENCIAIS → Aqueles grupos obtidos da única possibilidade de agrupamento
de uma célula.
Exemplo: células agrupadas em vermelho ( 1, 6, 18 e 29 )
b) IMPLICANTES NECESSÁRIOS → Aqueles grupos que representam a única opção para algumas
células, depois que os essenciais foram retirados.
Exemplo: grupo das células ( 15 com 11 ) em rosa
c) IMPLICANTES OPCIONAIS → Oriundos de células que apresentam mais de uma opção de
agrupamentos e um deles deve ser escolhido como necessário.
Exemplo: Célula marcadas com azul. {célula 23 grupos (21,23) e (23,25)}
d) GRUPOS REDUNDANTES → grupos que não devem ser inclusos na expressão minimizada por
serem desnecessários.
Exemplo: Grupos envolvendo as células (14,15), (9,11) e (0,4,8,12) em verde

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.

2.3.6 TRATAMENTO PARA ENTRADAS DON'T CARE


Entradas don't care são combinações de bits que, ao acontecerem num sistema, não causarão efeito algum. Por
exemplo, um contador BCD de 4 bits possui 16 possíveis combinações de bits porém somente 10 são
utilizadas como ação na saída do circuito. Nesse caso, as 6 combinações restantes não devem ser geradas pelo
contador. Essas entradas resultam em saídas don't care da função booleana em questão.

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

2.3.6 EXPRESSÕES EM POS UTILIZANDO MAPAS DE KARNAUGH


Uma vez sedimentado o conhecimento de como se obtém a expressão minimizada em forma de soma de
produtos SOP, utilizando mapa de Karnaugh, encontrar a função equivalente, expressa na forma de produto
de somas POS, é imediato.
Se F é uma função booleana de A, B, C,... utiliza-se a seguinte técnica.

1. Plota-se o mapa de Karnaugh da função booleana incluindo as entradas "0".


2. Agrupam-se as entradas "0", de forma semelhante a aquela utilizada para as entradas "1",
obtendo-se a expressão SOP correspondente da função ⎯F.
3. Utilize o teorema de DeMorgan e obtenha a função F em termos de POS

Exemplo: Seja a função booleana dada pela tabela verdade abaixo:

Lendo a função utilizando produto de somas, (POS) tem-se:


CD \ AB 00 01 11 10
00 1 1 0 1 F = (⎯A+⎯B + D) . (⎯B + C +⎯D ) . (⎯A + B +⎯D) . (⎯C + D)
01 1 0 0 0
11 1 1 1 0 Opcionalmente pode-se ler o mapa utilizando soma de produtos
10 0 0 0 0 (SOP)

⎯F(A,B,C,D) = AB⎯D + B⎯CD + A⎯BD + C⎯D

Para encontrar a expressão de F, deve-se aplicar o teorema de DeMorgan.

30
Por DeMorgan

⎯F = AB⎯D + B⎯CD + A⎯BD + C⎯D

' ' ' ' ' ' '


F = (AB⎯D ). ( B⎯CD) . (A⎯BD) . (C⎯D )

F = (⎯A+⎯B + D) . (⎯B + C +⎯D ) . (⎯A + B +⎯D) . (⎯C + D)

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

F.F = ⎯A⎯B⎯C. F + ⎯A⎯BC.F + ⎯AB⎯C.F + ⎯ABC.F + A⎯B⎯C.F + A⎯BC.F + AB⎯C.F + ABC.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:

• 1 para os termos mínimos desejados.


• 0 para os termos mínimos indesejados.
• φ para os termos que não têm significado no circuito desejado (don’t care).

F.F = ⎯A⎯B⎯C. 0 + ⎯A⎯BC. 0 + ⎯AB⎯C. 1 + ⎯ABC . 1 + A⎯B⎯C. 1 + A⎯BC. 0 + AB⎯C. φ + ABC. φ

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) +⎯A⎯B(C.F) +⎯AB(⎯C.F) +⎯AB(C.F) + A⎯B(⎯C.F) + A⎯B(C.F) + AB(⎯C.F) +


+ AB(C.F)

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.

2.4 LEITURA DO MAPA VEM

Considere que as variáveis escolhidas, para serem entradas do mapa, serão chamadas de MEV
(Map-Entered Variable) daqui para frente.

Para fazer a leitura de um mapa VEM deve-se seguir os seguintes passos:

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

c) Circule e extraia todos os MEVs que formarão pares com apenas um 1

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 φ → φ

c) Substitua 1 → 1 se não foi totalmente coberto _____


→ φ se totalmente coberto, isto é, circulado com MEV e MEV
'
d) MEVφ e MEVφ → 0
' ' '
e) ( MEV + MEV φ ) e ( MEV + MEVφ) → 1 se não foi coberto de forma alguma
ou se apenas φ foi coberto.
↑ ↑
termos necessários → φ se totalmente coberto ou se apenas o
termo necessário foi coberto.

Então proceda a leitura do mapa como se estivesse lendo um mapa de


Karnaugh. Isto completa o passo 2.

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

Passo 1: ⎯A⎯D + B⎯CD Passo 2: A⎯BC

F = ⎯A⎯D + B⎯CD + A⎯BC

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

Passo 1: A⎯D Passo 2: B⎯C + ⎯BC

F = A⎯D + B⎯C +⎯BC

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

Passo 1: ⎯A⎯BE + B⎯D⎯E + A⎯C⎯D⎯E + AB⎯CE Passo 2: ⎯AC⎯D + ⎯BCD

F = ⎯A⎯BE + B⎯D⎯E + A⎯C⎯D⎯E + AB⎯C⎯E + ⎯AC⎯D + ⎯BCD

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

2.5.1 CIRCUITOS ARITMÉTICOS

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.

2.5.1.1 MEIO SOMADOR

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

SOMA = A⎯B +⎯AB CARRY = AB


SOMA = A xor B

2.5.1.2 SOMADOR COMPLETO

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

SOMA = ⎯A⎯BCin + ⎯AB⎯Cin + ABCin + A⎯B⎯Cin


SOMA = ⎯A(⎯BCin +B⎯Cin ) + A( BCin + ⎯B⎯Cin )
SOMA = ⎯A ( B xor Cin ) + A ( B xnor Cin )
SOMA = ⎯A ( B xor Cin ) + A ( B xor Cin )

SOMA = A xor B xor Cin

Cin \ AB 00 01 11 10
0 0 0 1 0
1 0 1 1 1

Cout = AB + BCin + ACin

Outra maneira de implementar o somador completo: A B

Cin \ AB 00 01 11 10 Meio Somador


0 0 0 1 0
1 0 1 1 1 CARRY

Cout = AB + ⎯ABCin + A⎯BCin Cin


Cout = AB + Cin (⎯AB + A⎯B )
Cout = AB + Cin (A xor B) Meio Somador

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.

An Bn Cin n A2 B2 Cin 2 A1 B1 Cin 1 A0 B0

Somador Somador Somador Meio


Completo Completo Completo Somador

Cout n Sn Cout2 S2 Cout1 S1 Cout0 S0

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.

TTL 7483 CMOS 4008


10 11 8 7 3 4 1 16

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.

A1 A0 B1 B0 A>B A+B A<B


0 0 0 0 0 1 0
A1 A0 B1 B0
0 0 0 1 0 0 1
0 0 1 0 0 0 1 A>B A=B A<B
0 0 1 1 0 0 1
0 1 0 0 1 0 0
0 1 0 1 0 1 0
0 1 1 0 0 0 1 B1B0 \ A1A0 00 01 11 10
0 1 1 1 0 0 1 00 0 1 1 1
1 0 0 0 1 0 0
01 0 0 1 1
1 0 0 1 1 0 0
1 0 1 0 0 1 0 11 0 0 0 0
1 0 1 1 0 0 1 10 0 0 1 0
1 1 0 0 1 0 0
1 1 0 1 1 0 0
1 1 1 0 1 0 0 A>B = A1⎯B1 + A1A0⎯B0 + A0⎯B1⎯B0
1 1 1 1 0 1 0

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

A<B = ⎯A1B1 + ⎯A1⎯A0B0 + ⎯A0B1B0 (A=B) = ⎯A1⎯A0⎯B1⎯B0 + ⎯A1A0⎯B1B0 +


+ A1⎯A0B1⎯B0 + A1A0B1B0

(A=B) = (A1 xnor B1) (A0 xnor B0)

Observe que " " " " " "


A < B = ( A>B ) + ( A=B ) = ( A>B ) . ( A=B )

Logo, algum hardware pode ser economizado.

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

B2 A2 A=B A>B A<B A=B A1 Gnd

Comparador de 4 bits

(A>B) (A<B) (A=B)

2.5.2 GERADORES DE PARIDADE

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.

Tomemos como exemplo um gerador de paridade para um conjunto de 4 bits.

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)

PAR = ((C xnor D ) (A xor B)) + ((C xor D ) (A xnor B))

PAR = A xor B xor C xor D


Implementação

2.5.3 MULTIPLEXADORES E DEMULTIPLEXADORES

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

Saída = ⎯S1⎯S0 I0 + ⎯S1S0 I1 + S1⎯S0 I2 + S1S0I3

Forma genérica:

Saída = m0. I0 + m1.I1 + m2 . I2 + ... + mk . Ik em que


k = 2n -1
n = número de bits da seleção
mj = termos mímimos obtidos com as entradas de seleção
Ij = variável ou expressão conectada à entrada j

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

Agora podemos listar os termos mínimos da


tabela verdade que formam a função F no
mux

F = ∑ m0, m1, m3, m5, m13, m8, m14)


(⎯D + D ) D D D ⎯D ⎯D
(a) (b) (b) (b) (c) (c)

2.5.3.2 DEMULTIPLEXADORES

Os demultiplexadores realizam a função inversa da multiplexação. O circuito seleciona uma das


várias saídas para receber a informação que está chegando em sua única entrada. Verifiquemos o
caso de um demultiplexador de 1 entrada para 4 saídas (1x4 ), cuja tabela verdade está expressa
abaixo. Observe que os demultiplexadores comerciais fornecem saída em nível lógico zero quando
seleciona a linha, ou seja, fornece, à saída selecionada, o inverso da entrada.

S1S0 E G3 G2 G1 G0 Mapa de Karnaugh para a função G0


0 0 0 1 1 1 1
0 0 1 1 1 1 0 E \ S1S0 00 01 11 10
0 1 0 1 1 1 1 0 1 1 1 1
0 1 1 1 1 0 1 1 0 1 1 1
1 0 0 1 1 1 1
1 0 1 1 0 1 1 ⎯G0 = ⎯S1⎯S0 E
1 1 0 1 1 1 1 _______
1 1 1 0 1 1 1 G0 = ⎯S1⎯S0 E

Expressão geral : ⎯Gk = mk . E sendo k =0, ..., 2n - 1


_____ n = número de bits de seleção do demultiplexador
Gk = mk . E mk = termo mínimo referente às entradas seletoras

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

Na categoria dos codificadores temos:


a) Codificadores de prioridades
b) Decimal - BCD
c) Octal - Binário

2.5.4.1 DECODIFICADORES

2.5.4.1.1 DECODIFICADORES n x2n

Os decodificadores do tipo 2n são particularmente importantes devido a sua utilização na decodificação de


endereço de memória em computadores, possibilitando o acesso a uma locação de memória com objetivo
de leitura ou escrita da mesma. São conhecidos como circuito reconhecedor de termo mínimo, uma vez que
para cada combinação das variáveis de entrada apenas uma saída difere das demais, é a saída equivalente
ao termo mínimo representado pela combinação das entradas naquele momento. Os decodificadores
comerciais desse tipo, como os demultiplexadores, também fornecem a saída ativa em nível lógico zero.
Veremos um exemplo desse tipo de decodificador com o 3x8 cujo TTL comercial disponível é o 74138.

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 S5 = A⎯BC


________________
__________

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

Inverte-se a saída do decodificador referente


aos termos da função que se deseja
implementar e soma esses termos já invertidos.

_______ _____ _________ _______________ _________


_____________ _________ _______________ _________

F = ⎯A⎯BC +⎯ABC + A⎯B⎯C + ABC

F = ⎯A⎯BC +⎯ABC + A⎯B⎯C + ABC

2.5.4.1.2 DECODIFICADOR BCD - DECIMAL

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.

A B C D 0 1 2 3 4 5 6 7 8 9 Para a saída 2, por exemplo, a expressão booleana pode ser


0 0 0 0 0 1 1 1 1 1 1 1 1 1 descrita como:
0 0 0 1 1 0 1 1 1 1 1 1 1 1
0 0 1 0 1 1 0 1 1 1 1 1 1 1
0 0 1 1 1 1 1 0 1 1 1 1 1 1
CD \ AB 00 01 11 10
0 1 0 0 1 1 1 1 0 1 1 1 1 1 2 = A BC D
0 1 0 1 1 1 1 1 1 0 1 1 1 1 00 1 1 φ 1
0 1 1 0 1 1 1 1 1 1 0 1 1 1 01 1 1 φ 1
0 1 1 1 1 1 1 1 1 1 1 0 1 1
1 0 0 0 1 1 1 1 1 1 1 1 0 1
11 1 1 φ φ
1 0 0 1 1 1 1 1 1 1 1 1 1 0 10 0 1 φ φ 2 = A BC D
1 0 1 0 φ φ φ φ φ φφ φ φ φ
1 0 1 1 φ φ φ φ φ φφ φ φ φ
1 1 0 0 φ φ φ φ φ φφ φ φ φ
1 1 0 1 φ φ φ φ φ φφ φ φ φ
1 1 1 0 φ φ φ φ φ φφ φ φ φ Implementação em crcuito integrado:
1 1 1 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

2m ≥ n onde m é o número de bits de código


n é o número de elementos a serem codificados

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.

2.5.4.2.1 CODIFICADOR DE PRIORIDADES

O codificador de prioridades é um circuito combinacional capaz de selecionar uma determinada entrada,


dentre várias outras entradas, tentando conectar-se, com certo equipamento, ao mesmo tempo. Aquela
entrada com maior prioridade vai ser selecionada. A filosofia do circuito é atribuir uma prioridade maior a
uma entrada em relação às demais. É um circuito muito utilizado na seleção de dispositivos de entrada e
saída, que estão tentando se comunicar com a unidade central de processamento em computadores digitais.

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

E o código 00 está relacionado com o estado inativo do circuito.

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

Você também pode gostar