Anda di halaman 1dari 36

UEPB

Universidade Estadual da Paraíba


Centro de Ciências e Tecnologia – CCT
Departamento de Computação - DC

MATERIAL DE ESTUDO DA DISCIPLINA OAC


Sumário

Objetivos .....................................................................................................................................3
Introdução ..................................................................................................................................3
1. Portas básicas ...................................................................................................................3
1.1. Porta E (AND) ..............................................................................................................3
1.2. Porta OU (OR)..............................................................................................................4
1.3. Porta NÃO (NOT) .........................................................................................................5
2. Portas compostas .............................................................................................................5
2.1. Porta NÃO-E (NAND) ..................................................................................................5
2.2. Porta NÃO-OU (NOR) .................................................................................................6
2.3. Porta OU-EXCLUSIVO (OR-EXCLUSIVO) ...............................................................6
3. Álgebra Booleana ..............................................................................................................8
4. Circuitos Combinacionais ............................................................................................. 14
4.1. Multiplexadores .......................................................................................................... 14
4.2. Decodificadores ......................................................................................................... 15
4.3. Matriz Lógica Programável ....................................................................................... 16
4.4. Comparador................................................................................................................ 17
4.5. Somador ..................................................................................................................... 18
4.6. Deslocador ................................................................................................................. 21
5. Circuitos Sequenciais ....................................................................................................21
5.1. Flip-Flop .......................................................................................................................... 22
5.2. Registrador de Deslocamento ...................................................................................... 28
5.3. Contadores ..................................................................................................................... 29
6. Minimização de Circuitos............................................................................................... 32
Referencias/Vídeos/Leituras .................................................................................................36
Objetivos

Neste capítulo vamos apresentar os conceitos de Lógica Digital necessários para


entendimento das Unidades seguintes. Iniciamos com a apresentação das
unidades lógicas básicas, que possibilitam a construções de todos os circuitos
lógicos. Em seguida apresentamos os circuitos combinacionais mais tradicionais
em uma arquitetura e concluímos com a apresentação dos circuitos sequenciais,
que acrescentam o conceito de armazenamento da informação.

Introdução

Os blocos básicos de uma arquitetura de computador são as portas lógicas ou


apenas portas. As portas são os circuitos básicos que têm, pelo menos, uma
(geralmente mais) entrada e exatamente uma saída. Os valores da entrada e da
saída são os valores lógicos verdadeiro ou falso. Na convenção de computação é
comum usar 0 para falso e 1 para verdadeiro.

As portas não têm nenhuma memória. O valor da saída depende somente do valor
atual das entradas. Esse fato torna possível usar uma tabela de verdade para
descrever inteiramente o comportamento de uma porta. Para representar
matematicamente a lógica digital, utilizamos a Álgebra de Boole1.

1. Portas básicas

Portas básicas são portas fundamentais que podem formar outras portas com
funções especiais. Nós consideramos geralmente três tipos básicos das portas: as
portas E, as portas OU e as portas NÃO (ou inversores).

Também é usual chamar as portas pelo termo em inglês, respectivamente, AND,


OR e NOT.

1.1. Porta E (AND)

Uma porta E pode ter um número arbitrário de entradas. O valor da saída é 1 se e


somente se todas as entradas são 1. Se não, o valor da saída é 0. O nome foi

1
Álgebra de Boole foi criada pelo matemático George Boole no século XIX com objetivo de definir uma
série de operações lógicas aplicadas a sistemas binários (0s e 1s). Esta álgebra permite realizar inferências
lógicas em computadores binários.
escolhido porque a saída é 1 se e somente se a primeira entrada e a segunda
entrada, e,…, e a n-ésima entrada forem 1.

É frequentemente útil desenhar diagramas das portas e das suas interconexões.


Em tais diagramas, a porta E é desenhada como:

A tabela de verdade para uma porta E com duas entradas é mostrada abaixo:

1.2. Porta OU (OR)

Como a porta E, a porta OU pode ter um número arbitrário de entradas. O valor da


saída é 1 se e somente se pelo menos de um dos valores da entrada é 1. Caso
contrário, a saída é 0. Ou seja, o valor da saída é 0 somente se todas as entradas
são 0. O nome foi escolhido porque a saída é 1 se e somente se a primeira entrada
ou a segunda entrada, ou,…, ou a n-ésima entrada são 1.

Em esquemas de circuito, desenha-se a porta OU como:

A tabela de verdade para uma porta OU com duas entradas é mostrada abaixo:
1.3. Porta NÃO (NOT)

A porta NÃO também é conhecida como inversor e tem exatamente uma entrada e
uma saída. O valor da saída é 1 se e somente se a entrada é 0. Se não, a saída é
0, ou seja, o valor da saída é exatamente o oposto do valor da entrada.

Em esquemas de circuito, nós desenhamos a porta NÃO (NOT) como:

A tabela de verdade para um inversor é mostrado abaixo:

2. Portas compostas

Às vezes, é prático combinar funções das portas básicas em portas mais complexas
a fim reduzir o espaço em diagramas de circuito. Nesta seção, nós mostraremos
algumas portas compostas junto com suas tabelas de verdade.

2.1. Porta NÃO-E (NAND)

A porta NÃO-E é uma porta E com um inversor na saída. Assim, em vez de


desenhar diversas portas com esta,

desenha-se uma única porta-AND com um pequeno anel na saída, como este:

A porta NÃO-E (NAND), assim como a porta-E, pode ter um número arbitrário de
entradas.
A tabela de verdade para a porta NAND é semelhante à tabela para porta-AND,
exceto que todos os valores da saída são invertidos:

2.2. Porta NÃO-OU (NOR)

A porta NÃO-OU é uma porta OU com um inversor na saída. Assim, em vez de


desenhar diversas portas como esta,

desenha-se uma única porta OU com um pequeno anel na saída como este:

A porta NÃO-OU (NOR) , assim como a porta OU (OR) pode ter um número
arbitrário de entradas.

A tabela de verdade para a porta NÃO-OU (NOR) é semelhante à tabela para porta
OU (OR), exceto que todos os valores da saída são invertidos:

2.3. Porta OU-EXCLUSIVO (OR-EXCLUSIVO)

A porta OU-EXCLUSIVO (XOR) é similar a uma porta OU. Apesar de poder ter um
número arbitrário de entradas, normalmente representamos apenas duas. O valor
da saída é 1 se somente uma das entradas é 1, e a outra é 0, por isso, se diz OU-
EXCLUSIVO (OR-EXCLUSIVO). Se não, a saída é 0. Assim, em vez de desenhar
diversas portas como esta,

desenha-se uma porta OU-EXCLUSIVO como mostrada abaixo:

A tabela de verdade para uma porta ou-exclusivo com duas entradas é mostrada
abaixo:

Mas para que serve uma porta OR-EXCLUSIVO? Ela é um bloco essencial
para a construção de um circuito muito útil em computadores, o SOMADOR.

Resumo: Símbolos e comportamento funcional das cinco portas básicas.


3. Álgebra Booleana

Para descrever os circuitos que podem ser construídos combinando portas, é


necessário um novo tipo de álgebra, no qual variáveis e funções podem assumir
somente os valores 0 e 1. Essa álgebra é denominada álgebra booleana, nome que
se deve a seu descobridor, o matemático inglês George Boole (1815–1864). Em
termos estritos, estamos nos referindo a um tipo específico de álgebra booleana,
uma álgebra de comutação, mas o termo “álgebra booleana” é tão utilizado no lugar
de “álgebra de comutação” que não faremos a distinção.

Álgebra booleana é uma área da matemática que trata de regras e elementos de


lógica. O nome "booleana" é uma retribuição da comunidade científica ao
matemático inglês George Boole (1815-1864), que desenvolveu uma análise
matemática sobre a Lógica. Em 1854, ele publicou o famoso livro "An Insvestigation
of the Laws of Thought on Wich are Founded the Mathematical Theories of Logic
and Probabilitis" (Uma Investigação das Leis do Pensamento nas Quais estão
Alicerçadas Teorias Matemáticas de Lógica e Probabilidade), no qual ele propôs os
princípios básicos desta álgebra, com postulados e teoremas.

Talvez a álgebra booleana se tornasse apenas uma ferramenta de filosofia, se não


tivesse ocorrido o desenvolvimento tão acentuado da eletrônica nesteúltimos
tempos e a grande utilização da lógica digital nesse processo.

Em 1938, Claude Shannon, no MIT (Masschusetts Institute of Technology), utilizou


os conceitos desta álgebra para o projeto de circuitos de chaveamento (switching
circuits) que usavam relés. Atualmente, esta álgebra é largamente empregada no
projeto de circuitos digitais, para:

 análise - é um método prático e econômico de descrever as funções de um


circuito digital e, consequentemente, seu funcionamento; e
 projeto - ao identificar a função a ser realizada por um circuito, a álgebra
booleana pode ser aplicada para simplificar sua descrição e, assim, também
sua implementação.

Assim como na álgebra comum, a álgebra booleana trata de variáveis e de


operações a serem realizada com essas variáveis. A diferença é que, no que se
refere álgebra booleana, as variáveis usadas são binárias, tendo apenas dois
valores possíveis. VERDADE - V (equivalente ao bit 1) e FALSO-F (equivalente ao
bit 0). Da mesma forma que o bit só possui dois valores, também um relé ou uma
porta lógica pode estar em uma de duas possíveis posições: ou na posição
ABERTO (V=bit 1) ou na posição FECHADO (F=bit 0). O funcionamento desses
contatos encontra-se representado pelos símbolos indicados ao lado dos mesmos,
no diagrama abaixo. A
A

̅ ̅

Desta forma como há funções na álgebra “comum” (isto é, a álgebra do colegial),


também há funções na álgebra booleana. Uma função booleana tem uma ou mais
variáveis de entrada e produz um resultado que depende somente dos valores
dessas variáveis. Uma função simples, f, pode ser definida ao se dizer que f(A) é 1
se A for 0 e f(A) é 0 se A for 1. Essa função é a função NOT.

Como uma função booleana de n variáveis só tem 2n combinações possíveis de


valores de entrada, ela pode ser completamente descrita por uma tabela com 2n
linhas, na qual cada linha informa o valor da função para uma combinação diferente
de valores de entrada. Ela é denominada tabela verdade. As tabelas da Figura
anterior são todos exemplos de tabelas verdade. Se concordarmos em sempre
listar as linhas de uma tabela verdade em ordem numérica (base 2), isto é, para
duas variáveis na ordem 00, 01, 10 e 11, a função pode ser completamente descrita
pelo número binário de 2n bits obtido pela leitura vertical da coluna de resultado da
tabela verdade. Assim, NAND é 1110, NOR é 1000, AND é 0001 e OR é 0111.
É óbvio que só existem 16 funções booleanas de duas variáveis, correspondentes
às 16 possíveis sequências de 4 bits resultantes. Por outro lado, a álgebra ordinária
tem um número infinito de funções de duas variáveis, nenhuma das quais pode ser
descrita por meio de uma tabela de saídas para todas as entradas possíveis, porque
cada variável pode assumir qualquer valor de um número infinito de valores
possíveis.

A Figura seguinte mostra a tabela verdade para uma função booleana de três
variáveis: M = f(A, B, C). Essa função é a de lógica majoritária, isto é, ela é 0 se a
maioria de suas entradas for 0, e 1 se a maioria de suas entradas for 1.
Embora qualquer função booleana possa ser completamente especificada dada
sua tabela verdade, à medida que aumenta o número de variáveis, essa notação
fica cada vez mais trabalhosa. Portanto, costuma-se usar outra notação no lugar
dela.

Para ver como ocorre essa outra notação, observe que qualquer função booleana
pode ser especificada ao se dizer quais combinações de variáveis de entrada dão
um valor de saída igual a 1. Para a função da tabela acima, há quatro combinações
de variáveis de entrada que fazem com que M seja 1. Por convenção, marcaremos
a variável de entrada com uma barra para indicar que seu valor é invertido. A
ausência de uma barra significa que o valor não é invertido. Além disso, usaremos
a multiplicação implícita ou um ponto para representar a função booleana AND e +
para representar a função booleana OR. Assim, por exemplo, ABC assume o valor
1 somente quando A = 1 e B = 0 e C = 1. Além disso, + ̅ é 1 somente quando
(A = 1 e B = 0) ou (B = 1 e C = 0). As quatro linhas da Figura anterior que produzem
bits 1 na saída são: ̅ , , ̅e . A função, M, é verdadeira (isto é, 1) se
qualquer uma dessas quatro condições for verdadeira; daí, podemos escrever:
Como uma álgebra a álgebra booleana apresenta axiomas e leis. Algumas
identidades desta álgebra é mostrado na tabela abaixo:

A lei de De Morgan sugere uma notação alternativa. Na Figura seguinte a forma


AND é mostrada com negação indicada por bolhas de inversão tanto para entrada
quanto para saída. Assim, uma porta OR com entradas invertidas é equivalente a
uma porta MAMD . Por esta Figura), a forma dual da lei de De Morgan, deve ficar
claro que uma porta NORr pode ser desenhada como uma porta AND com
entradas invertidas. Negando ambas as formas da lei de De Morgan podemos
mostrar representações equivalentes das portas AND e OR.

Existem símbolos análogos para as formas de múltiplas variáveis da lei de De


Morgan (por exemplo, uma porta NAND com n entradas se torna uma porta OR
com entradas invertidas).

Como observação final em relação à equivalência de circuitos, demonstraremos


agora o surpreendente resultado, isto é, a mesma porta física pode calcular funções
diferentes dependendo das convenções usadas. Na Figura seguinte, mostramos a
saída de certa porta, F, para diferentes combinações de entrada. Tanto entradas
quanto saídas são representadas por volts. Se adotarmos a convenção de que 0
volt é 0 lógico e 1,5 volt é 1 lógico, denominada lógica positiva, obtemos a tabela
verdade da Figura 3.9(b), a função AND. Contudo, se adotarmos a lógica negativa,
na qual 0 volt é 1 lógico e 1,5 volt é 0 lógico, obtemos a tabela verdade da função
OR.

A próxima Figura mostra uma série de pacotes de iC comuns, usados para os chips
de hoje. Chips menores, como os usados para microcontroladores domésticos
ou chips de RAM, usarão pacotes duplos em linha (DiPs – dual Inline
Packages). Um DiP é um pacote com duas fileiras de pinos que se encaixam em
um soquete correspondente na placa-mãe. Os pacotes mais comuns têm 14, 16,
18, 20, 22, 24, 28, 40, 64 ou 68 pinos. Para chips grandes costumam ser usados
pacotes quadrados com pinos nos quatro lados ou na parte de baixo. Dois pacotes
comuns para chips maiores são Pin Grid arrays, ou PGas, e Land Grid arrays, ou
LGas. PGAs possuem pinos na parte inferior do pacote, que se encaixam em um
soquete correspondente na placa-mãe. Soquetes PGA normalmente utilizam um
mecanismo com força de inserção nula, onde uma alavanca aplica pressão lateral
sobre todos os pinos do PGA, mantendo-o firmemente no soquete PGA. LGAs, por
outro lado, possuem pequenas plataformas planas na parte inferior do chip, e um
soquete LGA terá uma capa que se encaixa sobre o LGA e aplica uma força para
baixo no chip, garantindo que todas as plataformas do LGA façam contato com as
plataformas do soquete LGA.
Como muitos pacotes de iC têm forma simétrica, descobrir a orientação correta é
um problema constante com a instalação de iC. DiPs normalmente têm um entalhe
em uma ponta, que combina com uma marca corresponde no soquete DiP. PGAs,
em geral, possuem um pino faltando, de modo que, se você tentar inserir o PGA no
soquete incorretamente, o PGA não se encaixará. Como os LGAs não possuem
pinos, a instalação correta é imposta colocando-se um entalhe em um ou dois lados
do LGA, que corresponde a um entalhe no soquete LGA. O LGA não entrará no
soquete a menos que os dois entalhes combinem.

Para todos os efeitos, todas as portas são ideais no sentido de que a saída aparece
logo que a entrada é aplicada. Na realidade, os chips têm um atraso de porta finito
que inclui o tempo de propagação de sinal pelo chip e o tempo de comutação.
Atrasos típicos são de centésimos de picos segundos a alguns nanos segundos.

A tecnologia moderna vigente permite colocar mais de 1 bilhão de transistores em


um chip. Como qualquer circuito pode ser construído com base em portas NAND,
você bem poderia imaginar que um fabricante poderia produzir um chip muito geral
que contivesse 500 milhões de portas NAND. Infelizmente, um chip como esse
necessitaria de 1.500.000.002 pinos. Como o espaço-padrão entre pinos é 1
milímetro, um chip LGA teria 38 metros de comprimento para acomodar todos
esses pinos, o que talvez tivesse um efeito negativo sobre as vendas. É claro que
a única maneira de tirar proveito da tecnologia é projetar circuitos com uma alta
relação porta/pino.

Vimos como executar tabelas verdade e outros circuitos simples usando portas
individuais. Na prática, poucos circuitos são construídos porta por porta, embora
tenha havido uma época em que isso era comum. Hoje, os blocos de construção
mais comuns são módulos que contêm várias portas. Nas próximas seções,
examinaremos esses blocos de construção mais de perto e veremos como eles
podem ser construídos com base em portas individuais.

Podemos construir estes blocos digitais (chamados circuitos digitais) de várias


maneiras e representa-los algebricamente e simplifica-los utilizando os conceitos
de álgebra de Boole.

Existe dois tipos de circuitos digitais: Combinacionais e Sequencias.


4. Circuitos Combinacionais

Um circuito combinacional é um circuito construído com portas de lógica digital


básicas onde sua saída depende unicamente dos valores de suas entradas e
implementam funções mais complexas. Assim, ao se colocar um conjunto
determinado de entradas, sempre obteremos a mesma saída. Os circuitos
combinacionais não possuem nenhum tipo de memória.

Existe uma grande variedade de tipos de circuitos combinacionais.


Apresentaremos aqui veremos alguns como o multiplexador, o decodificador, a
matriz lógica programável, os somadores, os deslocadores.

4.1. Multiplexadores

Um multiplexador, ou simplesmente mux, é um dispositivo que seleciona dados


procedentes de várias entradas para uma única saída. São utilizados em
situações onde é necessário escolher apenas uma entrada e isolar as demais.

Em circuitos digitais, o multiplexador é um dispositivo que possui várias entradas


de dados e somente uma saída. A partir de um circuito de controle no qual a entrada
é o valor da entrada desejada, é possível escolher a porta de entrada que se deseja
passar para a saída. Por exemplo: um multiplexador de duas entradas é uma
simples conexão de portas lógicas cuja saída S é a entrada A ou a entrada B,
dependendo do valor de uma entrada C que seleciona a entrada.

O circuito a seguir mostra um multiplexador com 8 entradas (D0 a D7) e 1 saída


(S). A seleção da entrada é realizada pela entrada de controle com 3 entradas (A,
B e C), que deve indicar o número binário da entrada que se quer selecionar. Se,
por exemplo, colocarmos o valor 111 nas entradas A, B e C, vamos habilitar a
entrada D7 (as entradas entram na porta AND onde a entrada D7 está ligada).
Assim, o valor da entrada AND (seja ele 0 ou 1) é copiado para a porta de saída F.

O circuito anterior pode ser apresentado assim:

MUX

Um demultiplexador, ou simplesmente demux, é um dispositivo que executa a


função inversa do multiplexador. Um circuito demultiplexador é construído a partir
de um decodificador, pois, a partir de um código de controle, podemos escolher
uma saída.

4.2. Decodificadores

Um decodificador, ou decodificador de endereços, é um circuito que possui dois


ou mais bits de controle como entrada (por exemplo, um barramento de endereço)
e um ou mais dispositivos de saída que poderá ser selecionado. Quando colocamos
um dado nas entradas de controle A, B e C, uma das saídas D0 a D7, e apenas
uma, é selecionada. Um decodificador com N bits de controle de entrada pode
selecionar até 2N dispositivos individuais de saída.
Um decodificador também pode ser chamado de demultiplexador ou demux
quando associamos uma entrada comum a cada porta AND. Quando o circuito de
controle ativar uma porta E, ela vai copiar o dado de entrada para uma determinada
saída, fazendo a função inversa de um multiplexador.

4.3. Matriz Lógica Programável

Uma matriz lógica programável, também conhecido por PAL (Programable Array
Lógic) ou PLD (Programmable logic device) é um dispositivo eletrônico de lógica
digital programável que possibilita implementar uma grande variedade de circuitos
combinacionais.

Entretanto, ao contrário de uma porta lógica fixa, que tem uma função determinada,
um dispositivo de matriz lógica programável tem uma função indefinida no momento
de sua fabricação. O circuito deve ser programado para executar a função
desejada. Existe uma gama enorme de fabricantes de dispositivos programáveis e
de categorias de dispositivos, cada um com uma aplicação específica. Alguns
dispositivos são programáveis apenas uma vez, e outros podem ser programados
várias vezes. Alguns dispositivos reprogramáveis perdem sua programação
quando desligados, e outros mantêm a gravação mesmo quando a energia é
desligada.

Qualquer função booleana pode ser construída a partir da combinação de portas


AND e portas OR. O circuito mostrado na figura a seguir mostra um exemplo de um
dispositivo de matriz de lógica programável. As entradas A e B são sinais de entrada
do circuito. A primeira função implementada é gerar o sinal próprio e a negação de
cada sinal. Uma matriz faz todas as combinações possíveis na matriz de portas
AND. Como temos duas entradas A e B, teremos 4 combinações possíveis de
função AND. Essa etapa gera todos os produtos dos sinais de entrada.

A etapa seguinte é uma matriz de portas OR, que permite a combinação de todas
as entradas E. Nesse caso temos um fusível, queimado no processo de gravação,
que vai definir quais funções lógicas serão implementadas para cada saída. Essa
etapa gera as somas dos produtos desejados. Com essa organização, podemos
implementar qualquer função de lógica binária.

4.4. Comparador

Outro circuito útil é o comparador, que compara duas palavras de entrada. O


comparador simples da Figura 3.14 toma duas entradas, A e B, cada uma de 4 bits
de comprimento, e produz um 1 se elas forem iguais e um 0 se elas não o forem.
O circuito é baseado na porta XOR (XOR-exclusivo), que produz um 0 se suas
entradas forem iguais e um 1 se elas forem diferentes. Se as duas palavras de
entrada forem iguais, todas as quatro portas XOR devem produzir 0. Então, pode-
se efetuar uma operação OR nesses quatro sinais; se o resultado for 0, as palavras
de entrada são iguais; caso contrário, não. Em nosso exemplo, usamos uma porta
NOR como o estágio final para reverter o sentido do teste: 1 significa igual, 0
significa diferente.

4.5. Somador

O somador binário é um circuito que realiza a operação de soma e de subtração


em complemento de dois, de um bit. Essencialmente o somador completo é
constituído por um OR-EXCLUSIVO que calcula o resultado e por um AND que
calcula o “vai um”. O princípio é mostrado no meio somador, ou half somador, mas
um circuito real é o somador completo, ambos mostrados a seguir.

O circuito somador completo, ou simplesmente somador, realiza a soma de um bit,


tendo como resultado a valor da soma e o bit de vai um conforme diagrama
mostrado a seguir:

Meio somado

Só a porta Exclusive OR é chamada de half somador, ou meio somador.


Embora um meio-somador seja adequado para somar os bits de ordem baixa de
duas palavras de entrada de múltiplos bits, ele não servirá para uma posição de bit
no meio da palavra porque não trata o transporte de bit da posição à direita (vem-
um). Em seu lugar, precisamos do somador completo. Pela inspeção do circuito do
somador completo, deve ficar claro que um somador completo é composto de dois
meios-somadores. A linha de saída Soma é 1 se um número ímpar A, B e o vem-
um (carry in) forem 1. O vai-um (carry out) é 1 se A e B forem ambos 1 (entrada
esquerda para a porta or ) ou se exatamente um deles for 1 e o bit de vem-um
(carry in) também é 1.

Juntos, os dois meios-somadores geram a soma e também os bits de transporte.


Para construir um somador para palavras de 16 bits, por exemplo, basta repetir o
circuito 16 vezes. O vai-um de um bit é usado como vem-um para seu vizinho da
esquerda. O vem-um do bit da extrema direita está ligado a 0. Esse tipo de somador
é denominado somador de transporte encadeado porque, na pior das hipóteses,
somando 1 a 111...111 (binário), a adição não pode ser concluída até que o vai-um
tenha percorrido todo o caminho do bit da extrema direita até o da extrema
esquerda. Também existem somadores que não têm esse atraso e, portanto, são
mais rápidos – em geral, são os preferidos.

Como exemplo simples de um somador mais rápido, considere subdividir um


somador de 32 bits em uma metade inferior e uma metade superior de 16 bits cada.
Quando a adição começa, o somador superior ainda não pode trabalhar porque não
sabe qual é o vem-um por 16 tempos de adição.
Grande parte dos computadores contém um único circuito para efetuar and , or e
soma de duas palavras de máquina. No caso típico, tal circuito para palavras de n
bits é composto de n circuitos idênticos para as posições individuais de bits. A
Figura seguinte é um exemplo simples de um circuito desses, denominado unidade
lógica e aritmética (ULa) (arithmetic Logic Unit – aLU). Ela pode calcular qualquer
uma das quatro funções – a saber, A and B, A or B, ou A + B, dependendo de
as linhas de entrada de seleção de função F0 e F1 conterem 00, 01, 10 ou 11
(binário). Note que, aqui, A + B significa a soma aritmética de A e B, e não a
operação booleana OR.

O canto inferior esquerdo de nossa ULA contém um decodificador de 2 bits


para gerar sinais de enable (habilitação) para as quatro operações, com base
nos sinais de controle F0 e F1 . Dependendo dos valores de F0 e F1 , exatamente
uma das quatro linhas de habilitação é selecionada. Ativar essa linha permite que
a saída para a função selecionada passe por ela até a porta OR final, para saída.

O canto superior esquerdo contém a lógica para calcular A and B, A OR , B e ,


mas no máximo um desses resultados é passado para a porta OR final,
dependendo das linhas de habilitação que saem do decodificador. Como
exatamente uma das saídas do decodificador será 1, exatamente uma das quatro
portas AND que comandam a porta OR será habilitada; as outras três resultarão
em 0, independente de A e B.
4.6. Deslocador

O circuito aritmético a seguir é um deslocador de oito entradas e oito saídas. Oito


bits de entrada são apresentados nas linhas D0 , ..., D7 . A saída, que é apenas a
entrada deslocada de 1 bit, está nas linhas S0 , ..., S7 . A linha de controle, C,
determina a direção do deslocamento, 0 para a esquerda e 1 para a direita. Quando
o deslocamento for para a esquerda, um 0 é inserido no bit 7. De modo semelhante,
quando o deslocamento for para a direita, um 1 é inserido no bit 0.

Para ver como o circuito funciona, observe os pares de portas and para todos os
bits, exceto as portas na extremidade. Quando C = 1, o membro da direita de cada
par é ligado, passando o bit de entrada correspondente para a saída. Como a porta
AND da direita está ligada à entrada da porta OR à sua direita, é executado um
deslocamento para a direita. Quando C = 0, o membro da esquerda do par da porta
AND é ligado, o que provoca um deslocamento para a esquerda.

5. Circuitos Sequenciais

Nos Circuitos sequencias suas saídas dependetem de suas entradas e do seu


estado precedente. Diferente dos circuitos combinacionais que não têm nenhuma
memória, os circuitos sequencias tem memória. Para construir circuitos de lógica
digitais mais sofisticados, incluindo computadores, nós precisamos de um
dispositivo mais poderoso. O dispositivo eletrônico mais conhecido com memória é
o chamado Flip-flop, que é um circuito cuja saída depende, além das suas entradas
no circuito, do seu estado precedente. Ou seja, é um circuito que tem a memória
do estado passado.

Para que um dispositivo sirva como uma memória, deve ter três
características:

• o dispositivo deve ter dois estados estáveis (tratamos de dados binários);

• deve haver uma maneira de ler o estado do dispositivo; e

• deve haver uma maneira de atribuir, pelo menos uma vez, o seu estado.

É possível produzir circuitos digitais com memória usando portas lógicas que já
foram vistas. Para fazer isso, nós precisamos introduzir o conceito de realimentação
(feedback).

Até agora, o fluxo lógico nos circuitos que estudamos foi da entrada à saída, ou um
circuito “acíclico”. Agora nós introduziremos um circuito em que a saída realimenta
a sua entrada, permitindo realizar a manutenção de um estado, mesmo quando a
informação na entrada cessa.

5.1. Flip-Flop

O Flip-flop é um tipo simples de circuito sequencial, isto é, o estado da entrada


depende da saída anterior. Existem vários tipos de flip-flop. A figura abaixo
mostra o diagrama esquemático de um simples flip-flop SR ou latch S-R e o seu
símbolo usualmente utilizado.

A saída da porta NOR é verdadeira somente quando ambas as entradas são falsas.
A saída de cada uma das portas NOR é realimentada de volta à entrada da outra
porta. Isso significa que, se a saída de uma porta NOR é verdadeira, a saída da
outra deve ser falsa. Se a saída Q da parte superior da porta NOR é verdadeira ou
1, isso significa que uma das entradas da porta do NOR de baixo, é verdadeira,
e a saída do NOR de baixo deve ser falsa.

Para que a saída do NOR superior ser verdadeira, ambas as suas entradas têm
que ser falsas.
Ao acionar a entrada S, a saída da porta NOR de baixo torna-se falso, e a saída
da porta Q NOR superior, é forçada a verdadeiro. Ao acionar S outra vez e desligá-
lo em seguida, a saída do circuito permanece inalterada. O que aconteceu é que
nós armazenamos o valor do S no circuito que permanece S mesmo que altere a
entrada. Os valores de saída Q e são sempre opostos.

Desligando S e acionando R e desligando-o em seguida, qualquer que seja o valor


armazenado fará com que a saída da porta NOR superior, é forçada a falso, e
saída da porta NOR de baixo torna-se verdadeiro. Daí podemos concluir que a
entrada S verdadeira torna a saída Q verdadeira, e a entrada R verdadeira torna a
saída Q falsa.

Esse circuito é um latch S-R (uma trava). As entradas S e R ajustam a trava,


fazendo verdadeiro e falso. A saída do circuito é estável em um ou outro estado
com as entradas removidas. Nós podemos remover a entrada que causou uma
saída particular, e a saída permanecerá inalterada. O estado e a saída mudará
somente quando a entrada complementar é aplicada. O circuito tem dois estados
estáveis, por isso chamamos de circuito biestável.

A entrada S=R=1 não é permitida. Se ambas as entradas são verdadeiras, ambas


as saídas devem ser falsas. Isso implica saída Q = = 0, que é logicamente
incompatível. Nessa situação, o circuito é instável e, quando uma das entradas
retorna ao estado falso, a entrada restante determina o estado estável e as
mudanças da saída.

A figura acima mostra um flip-flop SR com habilitador que acrescenta um par de


portas lógicas AND com uma entrada comum E (Enable). Nesse caso, quando a
entrada E está falsa (zero), a saída delas e a entrada das portas NOR permanecem
em falso, não importando o valor de S ou de R.

Quando a entrada E fica verdadeira, o valor das portas S e R são encaminhadas


para as portas NOR. Isso garante que, apenas quando o habilitador estiver ativo, é
que poderemos acionar as portas R e S.

Podemos construir um circuito de flip-flop SR com portas NAND como mostrado


abaixo. O funcionamento é muito semelhante ao circuito com porta NOR. Sua
grande vantagem é que industrialmente é mais fácil construir uma porta NAND do
que uma porta NOR.

Podemos cascatear dois circuitos flip-flop consecutivos, possibilitando o isolamento


do sinal de entrada e de saída. O flip-flop com duas seções, também conhecido
como flip-flop mestre-escravo (master-slave), tem esse nome porque o registro de
entrada é operada pela seção mestra (master), enquanto a seção de saída escrava
(slave) é ativada apenas durante a segunda metade de cada ciclo de pulso de
disparo do relógio.

O flip-flop mestre-escravo RS NAND é mostrado abaixo:

O flip-flop RS mestre-escravo consiste realmente em dois circuitos idênticos


de flip-flop RS, como mostrado acima. Entretanto, um inversor conectando as duas
entradas de relógio (C) assegura-se de que as duas seções estejam habilitadas
durante metade de ciclos com sinal oposto. Como é impossível essas duas portas
de relógio sejam ativadas no mesmo instante, evitamos que o valor passe
diretamente para o estágio seguinte.

Se começamos com a entrada C = 0, as entradas S e R estão desconectadas do


flip-flop mestre de entrada. Consequentemente, nenhuma mudança nos sinais de
entrada irá afetar o estado das saídas finais.

Quando o sinal de C vai à lógica 1, as entradas de S e de R podem controlar o


estado do flip-flop de entrada, apenas como com circuito de flip-flop RS já
examinado. Entretanto, ao mesmo tempo o sinal invertido de C é aplicado ou flip-
flop escravo (slave) da saída impedindo que o estado do flip-flop de entrada tenha
efeito no segundo estágio. Consequentemente, todas as mudanças de sinais de
entrada nas portas R e de S são seguidas pela trava da entrada quando C estiver
na lógica 1, mas não refletindo nas saídas de Q e .

Quando C cai outra vez à lógica 0, as entradas de S e de R estão isoladas outra


vez da entrada. Ao mesmo tempo, o sinal invertido de C permite agora que o estado
atual da trava da entrada alcance a trava da saída. Consequentemente, as saídas
de Q e podem somente mudar o estado quando o sinal de C cai de uma lógica 1
à lógica 0.

Há, ainda, um problema não resolvido com a organização mestre-escravo, a


condição de corrida2 possível de ocorrer quando as entradas de S e R estão na
lógica 1 e C cair de 1 para 0. No exemplo acima, nós supomos automaticamente,
que a raça terminará sempre com a trava mestra na lógica 1 estado, mas não será
certo que está com componentes reais. Consequentemente, precisamos ter uma
maneira de impedir que essas condições ocorram. Uma solução é adicionar algum
feedback adicional do setor escravo para o mestre. O circuito resultante é chamado
um flip-flop JK.

Isto para impedir a possibilidade de uma condição indefinida que ocorre quando as
entradas de S e de R estão em nível 1 quando a entrada de relógio habilita a porta
E de um flip-flop SR, nós devemos garantir que as portas não deixarão ocorrer essa

2
Condição de corrida é uma falha em sistema eletrônico ou programa de computador em que o resultado
do processo é inesperadamente dependente da sequência ou sincronia de outros eventos.
situação. Ao mesmo tempo, nós ainda queremos que o flip-flop deve poder mudar
o estado em cada transição da entrada de relógio CLK, se os sinais da lógica da
entrada JK estiverem em 1.

Se a saída de Q está em 1 (o flip-flop está no estado “Set”), a entrada S não pode


fazê-lo ajustar-se ao que ele já é. Consequentemente, nós podemos incapacitar a
entrada S sem incapacitar o flip-flop. Na mesma maneira, se a saída de Q está em
0 (o flip-flop está no estado “Reset”), a entrada de R pode ser desabilitada sem
causar nenhum dano.

O circuito abaixo mostra a solução. Ao flip-flop RS nós adicionamos duas conexões


novas das saídas de Q e de de volta às portas de entrada originais. Lembre-se
que uma porta de NAND pode ter qualquer número de entradas. Para mostrar que
nós fizemos uma alteração no funcionamento do circuito, nós mudamos as
designações das portas de entradas e do flip-flop próprio. As entradas são
designadas agora J (em vez de S) e K (em vez de R).

O circuito inteiro é conhecido como um flip-flop JK.

Na maioria das vezes, o flip-flop JK comporta-se da mesma forma que um flip-flop


RS. As saídas de Q e de mudarão de estado somente quando houver queda no
sinal CLK, e as entradas J e K controlarão o estado das saídas.

Mas há uma diferença. Como uma das duas entradas da lógica é sempre
desabilitada de acordo com o estado de saída do flip-flop, o latch mestre não pode
mudar o estado enquanto a entrada de CLK estiver em 1. Em lugar disso, a entrada
de habilitação pode mudar o estado do latch mestre apenas uma vez, depois da
qual ele não mudará outra vez. Isso não acontecia com o flip-flop RS.

Se as entradas de J e de K estiverem ambas em nível 1, e o sinal de

CLK continua a mudar, as saídas de Q e de Q mudarão simplesmente o estado


com cada borda de queda do sinal de CLK (o circuito mestre do latch mudará o
estado com cada transição da borda de CLK). Nós podemos usar essa
característica para garantir a estabilidade do flip-flop. Para vários tipos, esta é a
única maneira de assegurar-se de que o flip-flop mude o estado somente uma vez
em cada impulso de relógio.

Uma vez que nós aplicamos a ideia de usar um relógio no nosso latch SR, nós
podemos começar nos livrando do problema de fazer S = R = 1 e simplificar a
entrada a nosso circuito.

Geralmente, o que nós queremos fazer com um dispositivo de armazenamento é


guardar um bit de informação. A necessidade para explicitamente ajustar e
restaurar é uma complexidade adicional. O que nós gostaríamos é um circuito que
tenha uma única entrada de dados D e uma única saída de dados Q. Quando o
sinal de pulso de disparo é elevado, o que aparece em D deve ser o valor
armazenado em Q.

O esquema do circuito de figura circuito é tal circuito. Tem uma entrada de dados
D e uma entrada de controle C usado apara relógio. A entrada de dados é
conectada através do E da porta à entrada de S de um latch SR. É conectada
igualmente através de um inversor e o E da porta à entrada de R. As portas são
conectadas à entrada de C do circuito. Se C é falso, nenhum sinal alcança a trava
e seu estado permanece inalterado. Se C é verdadeiro, e D é verdadeiro, a entrada
de S é verdadeira, e o valor armazenado tem um valor de verdade que é igual ao
D. Se C é verdadeiro, e D é falso, a entrada de R da trava está conduzida através
do inversor e um valor de falso, que é igual a D, é armazenado.

O conceito de um flip-flop D, onde o bit a ser armazenado está aplicado à entrada


de S de um flip-flop SR, e através de um inversor à entrada de R, pode ser feito
para trabalhar somente quando o CLK for habilitado.

O flip-flop D armazena o que está na porta D quando CLK é verdadeiro. Se CLK


está verdadeiro, somente depois que os circuitos de entrada se estabilizem, esse
circuito armazenará o valor correto do D, porque há somente uma entrada de dados
D. Nesse caso uma situação indefinida como, por exemplo, S=R=1 não pode
ocorrer nunca.

Enquanto a entrada CLK é verdadeira, as mudanças a D estão refletidas na saída


do circuito. O valor D é então copiada para o circuito do latch, mantendo o
dispositivo estável.

Um ponto essencial sobre o flip-flop de D é que, quando a entrada de pulso de


relógio cai a 0 as suas, saídas podem mudar o estado. A saída Q exibe sempre o
estado da entrada D no momento do pulso de disparo. Isso não acontecia nos flip-
flops RS e JK. A seção mestra do RS mudaria repetidamente o estado para
estabilizar os sinais de saída quando a linha do pulso de disparo do relógio for a 1,
e a saída de Q refletiria qualquer entrada que recebeu recentemente. A seção
mestra do JK receberia e guardaria uma entrada até a mudança do estado, e nunca
mudaria esse estado até que o ciclo seguinte do pulso de relógio ocorra. Esse
comportamento não é possível com o flip-flop tipo D.

5.2. Registrador de Deslocamento


O Registrador de Deslocamento é um circuito para realizar a conversão de dados
seriais em dados paralelos, assim como a conversão de dados paralelos para
serial. A figura a seguir mostra um circuito de registrador de deslocamento serial-
paralelo.

O circuito é construído com flip-flops D ligados em série, isto é, a saída Q de um


flip-flop é ligada à entrada D do flip-flop seguinte. O sinal de relógio é aplicado a
todos os flip-flops de forma que se possa garantir a sincronização do circuito. O
sinal serializado é introduzido no circuito através da porta D do primeiro flip-flop. A
cada ciclo do relógio, o dado da porta D é transferido para a porta Q. No próximo
ciclo, esse dado é copiado para o flip-flop seguinte, e assim sucessivamente. Ao
final de 4 ciclos, em que 4 é o tamanho da palavra desse exemplo, podemos ler os
dados paralelizados através das portas QA a QD. O circuito pode, também, dispor
de um sinal Clear para iniciar o registrador (limpar o conteúdo anterior).
Outra possibilidade de circuito Registrado de Deslocamento é realizar a função
inversa, isto é, transformar dados paralelos em serial, mostrado na figura abaixo.

Agora nesse exemplo, o dado paralelo é aplicado as portas PA a PD. Observe que
o bit mais significativo é aplicado na extremidade direita do circuito, pois este será
o primeiro a ser transmitido, enquanto PD será o último. A cada ciclo de relógio, o
dado da porta D é transferido para a porta Q, que está ligada à porta D do flip-flop
seguinte. Ao final de 4 ciclos, em que 4 é o tamanho da palavra desse exemplo,
podemos ler os dados serializados através da porta Q do último flip-flop.

5.3. Contadores

Uma exigência comum em circuitos digitais é realizar contagem, tanto para frente
como para trás. Os relógios digitais pulsos estão em toda parte; os temporizadores
são encontrados em uma grande variedade de equipamentos, como, fornos de
micro-ondas, máquinas de lavar, além dos vários dispositivos em automóveis.

Embora existam muitas variações de contador básico, são todos fundamentalmente


muito semelhantes. Dividimos os contadores em dois grandes grupos: os
contadores assíncronos e os contadores síncronos.

Um contador assíncrono não precisa de um sinal de relógio comum para sincronizar


o circuito. Basta aplicar um relógio na sua entrada, e, a cada pulso, será
incrementada (ou decrementada) uma contagem.

A figura seguiinte mostra o tipo o mais básico do circuito de contagem binário. Esse
contador é contruído com dois flip-flops JK, onde a saída Q do primeiro é ligada à
porta de relógio do segundo flip--flop. O flip-flop JK apresenta um comportamento
interessante: quando ambas as portas, J e K, estão em 1, na transição do relógio,
a saída Q vai mudar de estado. Assim, quando ocorre uma transição na porta de
relógio de 1 para 0, a saída Q vai trocar de nível.

A saída Q do primeiro flip--flop está ligada na porta de relógio do segundo flip-flop.


Agora, o segundo flip-flop somente vai trocar de estado quando a saída Q sofrer
uma transição de 1 para 0. Com isso, o segundo flip-flop vai trocar de estado
apenas a cada duas transições do primeiro flip-flop. Observe na figura do contador
assíncrono o resultado da saída Q0 e Q1. Ela mostra números de 0 a 3 no formato
binário, isto é, a cada transição no relógio, ele incrementa um número, exibindo
uma sequência 0, 1, 2 e 3.

Ao adicionarmos mais flip-flops cascateando as portas de saída com a porta de


relógio seguinte, podemos construir contadores de qualquer quantidade binária. Um
circuito contador geralmente apresenta uma entrada para zerar o contador (reset)
de forma que a contagem possa ser reiniciada.

Um problema grave com os contadores assíncronos é que os flip-flops individuais


não mudam o estado ao mesmo tempo. Como cada flip-flop leva um tempo para
mudar de estado, ao trabalharmos com um circuito de contador com vários dígitos,
precisamos esperar um tempo grande para que os dados se estabilizem ao longo
do circuito, mostrando valores errôneos até estabilizar. Quando o ciclo de contagem
é baixo, isto é, quando os tempos de mudança de cada contagem forem grandes,
e devido à incapacidade do olho humano de identificar a contagem rápida, esse
fenômeno não causa grandes impactos. Porém, se a contagem for rápida, os erros
tornam o circuito impossível de usar.
Para resolver esse problema, podemos usar um contador síncrono, isto é, todas as
mudanças de estado ocorrem simultaneamente, cadenciadas por um relógio único.

Com a necessidade de enviar o sinal relógio simultaneamente a todos os flip-flops


de modo que os bits de contagem mudassem o estado ao mesmo tempo, fez surgir
o flip-flop síncrono. Para realizar isso, precisamos aplicar o mesmo pulso de relógio
em todos os flip-flops. Entretanto, não queremos que todos os flip-flops mudem de
estado a cada pulso de relógio. Para isso, precisamos adicionar algumas portas de
controle para determinar quando cada flip-flop deve mudar o estado e quando não
deve.

Na figura a seguir, mostramos um contador síncrono de 3 dígitos construído com


três flip-flops tipo JK. Podemos observar que o sinal de relógio é o mesmo para
todos os flip-flops, então todos irão trocar de estado simultaneamente, evitando a
Condição de Corrida, que pode ocorrer no contador assíncrono. O primeiro flip-flop
JK tem ambas as entradas em 1, portanto a sua saída Q0 irá trocar de estado a
cada ciclo de relógio. Outro ponto importante é a colocação de uma porta AND no
último flip-flop, cujo motivo será mostrado a seguir.

Observando o diagrama de forma de onda, podemos entender o funcionamento. O


ponto importante é que o flip-flop JK troca o estado de sua saída quando as
entradas J e K estão em 1. Por outro lado, quando as entradas J e K estão em 0 a
sua saída Q permanece no mesmo estado. Como JK do flip-flop FF0 está em 1, a
saída Q0 troca em cada transição de clock, assim, o estado de Q1 somente vai
trocar quando Q0 e também J e K do FF1 realizarem a transição de 1 para 0. O
terceiro bit Q2 vai trocar apenas quando Q0 e Q1 realizarem a transição de 1 para
0, por isso a porta AND.
6. Minimização de Circuitos

A minimização dos circuitos que executam é de grande importância por propiciar a


redução do número de dispositivos a serem utilizados, reduzir o tempo necessário
ao desempenho previsto, aumentar a confiabilidade e, obviamente, a economia, na
implementação dos circuitos ou sistemas lógicos.

Numa expressão booleana quando todos seus termos são representado por
funções AND contendo todas variáveis em funções OR, dizemos que temos
Termos Máximos (MAXTERMS) da função; isto porque a função é verdadeira
para o número máximo de parcelas verdadeiras, presentes na expressão. Assim:

A função é F está expressa em forma de MAXTERMS.

Quando a expressão contem em cada um dos seus termos todas suas variáveis
em função NAND e conectados por uma função OR, denominamos Termos
Mínimos (MINTERMS). Assim:

Exemplo: Seja a função F(X,Y,Z) definida pela tabela verdade a seguir:

Podemos escrever, na forma de MINTERM’s:

Ou:

Da mesma maneira, na forma MAXTERM’s:

Ou:
Os métodos mais usados na minimização de funções são:

 método algébrico;
 mapas de Karnaugh (MK);
 método tabular de Quine McCluskey e
 algoritmos computacionais.

O método algébrico aplica-se sobretudo quando o número de variáveis é pequeno


e as relações entre as mesmas são facilmente identificáveis. Neste caso, aplicam-
se os postulados e teoremas da álgebra de Boole para se encontrar
expressões mais simples, como vimos anteriormente.

A minimização através dos mapas de Karnaugh, baseada no teorema da


adjacência (AB + A = A), é muito eficiente, simples e prática, permitindo a
eliminação de grande número de manipulações algébricas. A sua utilização
é recomendada quando a função depende de até cinco variáveis, embora
seja possível a sua aplicação a funções que dependam de até seis variáveis.

O algoritmo devido a Quine & McCluskey, permite a busca exaustiva de


MINTERM’s ou MAXTERM’s adjacentes, e se presta à identificação da função mais
simples para grande número de variáveis. Embora não exista uma limitação formal
quanto ao número de variáveis da função, para a sua aplicação, os seus
procedimentos repetitivos torna-o enfadonho para a sua execução de modo não
mecanizado.

O processo mais utilizado para a minimização dos circuitos de reduzido grau de


integração (SSI), os quais são extremamente necessários inclusive para a
interligação dos circuitos de maior grau, é conhecido como Mapas de Karnaugh
(MK).

M. Karnaugh criou, em 1953, uma representação gráfica que ordena e mostra os


MINTERM’s e os MAXTERM’s das funções lógicas de uma forma geométrica tal
que a aplicação do teorema da adjacência, citado anteriormente, se torna óbvia por
inspeção.

Os Mapas de Karnaugh são aplicados sobretudo aos circuitos lógicos


combinacionais, ou àqueles cuja função de saída depende única e exclusivamente
dos estados lógicos das variáveis de entrada, definidos em termos de 0’s e 1’s,
embora também possam ser aplicados a circuitos seqüenciais.

Os números internos aos lugares geométricos, representados nos MK’s,


correspondem aos MINTERM’s ou aos decimais equivalentes às configurações
binárias indicadas pelos níveis lógicos das variáveis, respeitando-se a hierarquia
da variável mais significativa. Os estados lógicos das variáveis, que estão
representados em todos os mapas, obedecem a uma distribuição típica do código
de Gray. Por esta razão, os lugares geométricos se distribuem de modo
continuamente adjacente tal que, somente uma única variável muda o seu estado
lógico, em relação aos lugares geométricos vizinhos. Esses lugares geométricos,
por sua vez, são definidos como estados adjacentes, identificando as variáveis às
quais o teorema da adjacência pode ser aplicado.

Os mapas criados para representar as funções até 4 variáveis são mostrados


a seguir, com os seus MINTERM’s e respectivas adjacências:

Mapa de Karnaugh para 2 variáveis:

Mapa de Karnaugh para 3 variáveis:

Mapa de Karnaugh para 4 variáveis:


As tabelas-verdade, definidas a partir das relações que as variáveis guardam com
determinada função lógica, definem os MINTERM’s e MAXTERM’s da função. Em
se conhecendo a tabela-verdade, ou mesmo apenas a representação numérica de
qualquer função, pode-se representá-la diretamente no Mapa de Karnaugh.
Conhecendo-se o teorema da adjacência e a filosofia da construção dos Mapas de
Karnaugh, as simplificações mostradas a seguir se tornam óbvias, por inspeção,
sem a necessidade de desenvolvimentos ou manipulações algébricas:

Por exemplo a simplificação de uma função dada pela tabela-verdade da


expressão:

Que podemos expressar: ou .

O Mapa da Karnaugh correspondente à função dada, pode ser construído


conforme indicado: (faça sua tabela-verdade).

No MK em questão, que os termos adjacentes 0 e 1 estão indicados por um


enlace para facilitar a sua identificação. Este enlace quer dizer que entre os
elementos ou termos mínimos 0 e 1, pode-se aplicar o teorema da adjacência. Vê-
se que a função em soma de produtos é verdadeira para os termos mínimos
adjacentes m{0 e 1}, situação em que apenas a variável B muda de estado.
Considerando-se que a mudança de estado de B não afeta o valor lógico da
função, conclui-se que a mesma não depende desta variável.

Assim, como A se mantém constante com o valor lógico 0, na situação


identificada pelo enlace, o resultado da simplificação é:
Referencias/Vídeos/Leituras

Stallings, William. Arquitetura e Organização de Computadores: Projeto para o


Desempenho. tradução: Carlos Camarão de Figueiredo e Lucília Camarão de
Figueiredo; revisão técnica: Edson Toshimi Midorikawa. São Paulo: Prentice Hall,
2002

Eletrônica Digital - Projeto de Circuitos Combinacionais (Aula 44). Duração:


29min 59s. Vídeo aula que discute sobre Circuitos Combinacionais. Acesso em:
https://www.youtube.com/watch?v=0G_uPyUosEc.

FLOYD, Thomas. Sistemas Digitais: Fundamentos e Aplicações. Porto Alegre:


Bookman, 2007.

TOOLEY, Mike. Circuitos eletrônicos: fundamentos e aplicações. Rio de Janeiro:


Elsevier, 2007.

Tanenbaum, , Andrew S. Organização estruturada de computadores. tradução


Daniel Vieira; revisão técnica Wagner Luiz Zucchi. -- São Paulo : Pearson Prentice
Hall, 2013.

Curso de Lógica Digital (em Português) http://pt.wikiversity.org/wiki/Lógica_Digital

Saito, José Hiroki. Introdução à arquitetura e à organização de computadores:


Síntese do processador MIPS / José Hiroki Saito. -- São Carlos: EdUFSCar, 2010.