Contemporary Logic Design DSD-51-119.en - PT

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 69

Traduzido do Inglês para o Português - www.onlinedoctranslator.

com

[Anterior ][Início] [Próximo]

2.1 Funções e Interruptores Lógicos

No Capítulo 1 você viu que (pelo menos algumas) expressões eBooleanas podem ser representadas por portas lógicas e
vice-versa. Na verdade, todas as funções booleanas podem ser implementadas em termos de AND, OR e NOT ga Devido a
esta estreita relação entre as leis da álgebra booleana e o comportamento da lógica g teoremas que são verdadeiros para
álgebra booleana também podem ser usados para transformar a lógica digital em mais simples

2.1.1 Álgebra Booleana

A álgebra booleana está no centro da compreensão de todos os sistemas digitais. Agora você está pronto para estudar sua
estrutura fundamental.

junto
Axiomas da Álgebra BooleanaUma álgebra booleana consiste em um conjunto de elementosB e,nto com dois
operações binárias{+} e{ e uma operação unária { ' }, tal que os seguintes axiomas são válidos:

O conjuntoBcontém pelo menos dois elementos a, b tais que a não é igual a b.

Encerramento: Para cada a, b emB,

a + b está emB
ab está emB

Leis comutativas: Para todo a, b em B,

a+b=b+a
ab = ba

Leis associativas: Para todo a, b, c em B,

(a + b) + c = a+ ( b + c) = a+ b + c (
ab) c = a ( bc) = abc

Identidades: Existe um elemento de identidade em relação a {+},designado por 0, tal


que a + 0 = a para todo a emB.

Existe um elemento de identidade em relação a {, designado por 1, tal que a 1 = a para


cada a emB.
Leis distributivas: Para cada a, b, c em B,
a + ( bc) = ( a + b) ( a + c) a
( b + c) = ( ab) + ( ac)

Complemento: Para cada a emB, existe um elemento a' emB(o complemento de a) tal
que

a + a'= 1
a a'= 0

Observação:Nós usamosUMA'e alternadamente para representar complemento neste capítulo.

É fácil verificar que sB et= { 0, 1} e as operações lógicas OR, AND e NOT satisfazem todos os
axiomas de uma álgebra booleana. Basta substituir 0 e 1 por a e b, O +,RAfN
orD para , e NOT para',
e mostre que as expressões são verdadeiras. Por exemplo, para verificar o comutativo+la : w para

0+1=1+0 01=10

1=1 0=0

Uma função booleana mapeia exclusivamente um certo número de entradas sobre th{e0,se 1}t no conjunto 0, 1} . UMA
A expressão booleana é uma declaração algébrica que contém variáveis e operadores booleanos. Uma álgebra
teobooleana afirma que qualquer função booleana pode ser expressa em termos de operações AND, OR e NO.
Por exemplo, na Seção 1.3.3 vimos uma maneira de mapear uma tabela-verdade em uma exp booleana na
forma soma( OR) de produtos( AND).

De fato, existem outras maneiras de representar a função usando novas operações lógicas, a serem apresentadas a
seguir. Essas operações são interessantes porque são mais fáceis de implementar com transistores reais

Operações Booleanas RevisitadasVamos revisar as operações booleanas elementares e como elas são
representadas como portas, tabelas-verdade e interruptores. A Figura 2.1, a Figura 2.2 e a Figura 2.3
resumem as representações das operações COMPLEMENT/NOT, AND e OR, respectivamente.
Pegue a expressão booleana . Uma versão da expressão com parênteses seria
.

Cada par de parênteses representa a expressão gerada por uma única porta. Assim, o circuito i através de um
conjunto de resultados intermediários, de dentro para fora:

A implementação no nível do portão é mostrada na Figura ( 2 a).4, usando duas portas de entrada. As portas primitivas
não precisa ser limitado a duas entradas, no entanto. Figura (b 2).4 mostra o mesmo circuito implementado usando um
porta AND de três entradas. Essas implementações são equivalentes por causa da lei associativa da álgebra de
Bo.

Cada aparição de uma variável ou seu complemento em uma expressão é chamada de literal. Na expressão
anterior, podemos ver que existem quatro variáveis e quatro literais. A seguinte expressão tem literais
mas apenas três variáveisA, B,eC): Cada literal representa o
conexão de uma variável ou seu complemento a uma entrada de porta única.

2.1.2 Tipos Adicionais de Portas Lógicas

Existem outras funções de duas variáveis booleanas além de AND, OR e NOT. De fato, existem funções
possíveis, o número de maneiras diferentes pelas quais você pode escrever as diferentes opções de 0 e
as quatro linhas possíveis da tabela verdade. Uma representação da tabela verdade das 16 funções é mostrada na Figura

As funções constantes 0 e 1 e a funçãoX io,ns,S,XY, eX+Srepresentam apenas metade do


funções possíveis. Apresentamos agora os operadores booleanos restantes.

NAND e NORDois dos operadores booleanos mais frequentemente encontrados são N(AnN otDAND)
e NOR(não OR). Suas representações de porta, tabela verdade e chave lógica são mostradas na Figura e na
Figura 2.7. A operação NAND se comporta como se um AND fosse composto por um NOT: ele produz um lo nas
linhas da tabela verdade onde AND é um 1, e produz um 1 nas linhas onde AND é 0. A representação do portão
é um portão AND com um pequeno círculo ou "bolha" em sua saída, denotando negação.

Se você observar atentamente a representação da chave lógica na Figura 2.6 e compará-la com a Figura 2, verá que
ela se parece com uma função AND com as entradas true e false invertidas. NAND é verdadeiro, existe um caminho
de comutação de verdadeiro para a saída, quando eiX thiesr0 (o interruptor normalmente fechado superior é
fechado) ouSé 0 (o interruptor normalmente fechado inferior é clo)se. dAlternativamente, é falso quandoX n eS
são ambos verdadeiros, fechando o caminho de falso para a saída.

NOR se comporta de maneira semelhante, mas agora em relação a OR. Mais uma vez as saídas da tabela
verdade se complementam e desenhamos a porta NOR como uma porta OR com uma bolha na saída. A
representação do switch na Figura 2.7 mostra uma topologia como a porta OR da Figura 2.3, com as entradas
mãoXSdeve ser zero para fechar as chaves normalmente fechadas e estabelecer o p
true e fals invertidas. Robô
de verdadeiro para a saída.

As portas NAND e NOR superam em muito as portas AND e OR em um design digital típico, embora t
funções são menos intuitivas. Por razões elétricas, reveladas com mais detalhes no Apêndice B, normalmente os
interruptores são melhores para passar baixas tensões do que altas tensões. Por exemplo, 0 V de um lado produzirá
quase 0 V do outro, mas 5 V produzirá aproximadamente 3,5 V do outro lado. O comportamento opp é verdadeiro
para switches normalmente fechados. Assim, as configurações de switch das Figuras 2.6 an são eletricamente mais
bem comportadas do que as das Figuras 2.2 e 2.3.

Como qualquer expressão booleana pode ser representada em termos de portas AND, OR e NOT, é difícil
surpreender que a mesma declaração possa ser feita sobre portas NAND, NOR e NOT. Na verdade, NOT são
supérfluos: se você examinar cuidadosamente as tabelas-verdade das Figuras 2.6 e 2.7, verá que NA e NOR
agem como NOT quando ambas as entradas são identicamente 0 ou 1. Veremos um método eficiente para
mapear expressões booleanas na lógica NAND e NOR na Seção 2.2.2.

XOR/XNORIsso deixa seis funções ainda sem nome na Figura 2.5. Dois deles, frequentemente de uso, OR exclusivo
(XOR, também conhecido como portão de desigualdade ou diversão de diferença) ação e NOR exclusivo
(XNOR, também conhecido como porta de igualdade ou diversão de coincidência)c.tiT oh
Neir tabelas verdade e portão
representações são dadas na Figura 2.8.

XOR é verdadeiro quando suas entradas diferem em valor. XNOR é verdadeiro quando suas entradas coincidem em valor.
O operador booleano para XOR é Ý; XNOR é geralmente representado como o complemento de XOR. Assim como a
função booleana, elas podem ser implementadas em termos de operações AND, OR e NOT:

XOR:

XNOR:

Se você examinar a tabela verdade da Figura (2a . 8), você pode ver que XOR é precisamente a função necessária
para implementar a soma de meio somador do Capítulo 1!

ImplicaçãoAs quatro funções restantes são baseadas em um operador booleano chamado impliX caitm
iopnl.ies
S(escritoX\xdeS)é verdade sob duas condições: eithX eris falso ou ambosXeSsão verdadeiros. Os quatro
funções restantes tornam-seXe\xdeS,S\xdeX, NÃO (X\xdeS),e não(S\xdeX).Estes não são
comumente encontrados como primitivos prontamente disponíveis para a realização de sistemas digitais, então eles não serão
de muita utilidade para você. As formas de onda de tempo para as funções comuns, AND, OR, NAND, NOR, XOR e XNOR, são
mostradas na Figura 2.9.

A figura assume um atraso de porta de uma unidade de tempo no cálculo de novas saídas de entradas.

2.1.3 Justificativa para Minimização Lógica

A minimização lógica usa uma variedade de técnicas para obter a implementação de nível de porta mais simples da
função booleana. Mas a simplicidade depende da métrica que usamos. Examinamos essas métricas nesta subseção.

Compromissos de tempo e espaçoUma maneira de medir a complexidade de uma função booleana é contar o
número t de literais que ela contém. Literais medem a quantidade de fiação necessária para implementar uma funçã
Por razões elétricas e de empacotamento, portas em uma determinada tecnologia terão um número limitado de
entradas Enquanto portas de duas, três e quatro entradas são comuns, portas com mais de oito ou nove entradas sã
Assim, uma das principais razões para realizar a minimização lógica é reduzir o número de litros da expressão da
função, reduzindo assim o número de entradas da porta.

Uma métrica alternativa é o número de portas, que mede a área do circuito. Existe uma forte correlação entre o
número de portas em um projeto e o número de componentes necessários para sua implementação. O projeto mais
simples de fabricar é geralmente aquele com o menor número de portas, não o menor número de literais.

Uma terceira métrica é o número de níveis de portas em cascata. Reduzir o número de níveis lógicos reduz o atraso geral,
pois há menos atrasos de porta no caminho das entradas para as saídas. No entanto, colocar o circuito em uma forma
adequada para atraso mínimo raramente produz uma implementação com o menor número de portas ou portas mais
simples. Não é possível minimizar todas as três métricas ao mesmo tempo.

As técnicas tradicionais de minimização que você estudará neste capítulo enfatizam a redução do atraso às custas da adição de
mais portas. Métodos mais novos, abordados no próximo capítulo, permitem uma compensação entre o aumento do atraso do
circuito e a redução da contagem de portas.

ExemploPara ilustrar os trade-offs discutidos, considere a seguinte função booleana de três


variáveis :
A tabela verdade para esta função é mostrada na Figura(2a.)9.

Você provavelmente implementaria a função diretamente da equação anterior, usando três portas NOT, quatro
portas AND de 3 entradas e uma única porta OR de 4 entradas. Isso é chamado de implementação de dois níveis
com variáveis e seus complementos no nível zero, portas AND no primeiro nível e OR g no segundo nível.

Você poderia implementar a mesma tabela verdade com menos portas. Uma implementação alternativa de dois níveis
dada na Figura 2.(9b) como funçãoZ1:

Ele usa o mesmo número de inversores e portas OR, mas apenas três portas AND. A função original 12 literais.
Esta alternativa possui apenas sete, reduzindo assim a complexidade da fiação.

A implementação da funçãoZn2 é chamado de multinível:

O caminho mais longo de uma entrada para uma saída passa por quatro portas. Isso contrasta com três atrasos g
nas funções de dois níveis. Em termos de contagem de portas, o circuito usa duas portas em vez de três inv e apenas
portas AND e OR de duas entradas. Aqui você pode ver uma troca entre contagem de portas e desempenhoZ
: 2 usa portões mais simples, mas não é tão fasZt1a.s

Z3 mostra uma terceira realização que usa uma porta XOR:


XOR às vezes é chamado de porta complexa, porque você normalmente a implementa combinando várias portas
NAND ou NOR. Embora esta implementação tenha a menor contagem de portas, também é provável que tenha o pio
atraso de sinal. Uma porta XOR tende a ser lenta em comparação com a implementaçãoZonbsasfoerd em portas AND
e OR simples.

A Figura 2.11 mostra as formas de onda de tempo para as três alternativas de circuito, ass(usm oim
o que é
irrealisticamente) um único atraso de unidade de tempo por porta. Todos têm comportamento equivalente, embora apresentem
atrasos de propagação ligeiramente diferentes. Todos os três circuitos mostram uma falha no tranUMA sitBio
Cn= 1 0 1 a
abc=1 1 0.

[Anterior ][Início] [Próximo]

Este arquivo foi atualizado pela última vez em 23/06/96 às


19:47:39. randy@cs.Berkeley.edu ;
[Anterior ][Início] [Próximo]

2.2 Lógica do Portão

Agora você sabe que existem muitas implementações em nível de porta com o mesmo comportamento de tabela de verdade.
Nesta seção, você aprenderá os métodos para derivar uma implementação de nível de porta reduzido de uma função Boole na
forma de dois níveis. Isso geralmente produz circuitos com atraso mínimo, embora as contagens de portas geralmente não sejam
minimizadas.

2.2.1 Leis e Teoremas da Álgebra Booleana

A álgebra booleana fornece a base para todas as técnicas de simplificação que discutiremos. B sobre as leis
Booleanas da Seção 2.1, podemos provar teoremas adicionais que podem ser usados como ferramentas para
simplificar expressões Booleanas. Por exemploE,1seE2 são duas expressões para a mesma função booleana,
dizemos queEt2 é mais simples queE1 se contiver menos literais. Isso geralmente significa que a expressão mais
simples também conterá menos operações booleanas.

DualidadeAntes de fornecermos uma tabulação de leis e teoremas úteis, é importante descrever o conceito de
dualidade. Toda expressão booleana tem um dual. Ele é derivado do original substituindo operações AND por
operações OR e vice-versa, e substituindo 0's lógicos constantes por 1's lógicos e vice-versa, deixando os literais
inalterados. É um teorema fundamental da álgebra booleana, que não prova aqui, que qualquer afirmação que
seja verdadeira sobre uma expressão booleana também é verdadeira para sua dual. descobrimos um teorema
útil para simplificar uma expressão booleana, obtemos seu dual como bônus. exemplo, o dual da teoria
booleanaXem + 0 =X, escrito(X+0) D, é o teoremaX1 =X.

Os diagramas de comutação das Figuras 2.2 e 2.3 ilustram a base física da dualidade entre as operações AN OR.
O caminho em série de chaves normalmente abertas no AND é substituído por caminhos paralelos OR. Uma
troca semelhante ocorre para os caminhos de chaves normalmente fechadas. NAND e NOR exibem o mesmo
tipo de relacionamento dual.

Leis e Teoremas ÚteisA seguir está uma lista de leis e teoremas da álgebra booleana usados com
frequência. Alguns são generalizados da Seção 2.1. A segunda coluna mostra os duais do expre a
primeira coluna.
Operações com 0 e 1:

1.X+0 =X1D.X1 =X
2.X+1 = 12D.X0 = 0

Teorema idempotente:

1.X+X=X3D.XX=X

Teorema da involução:

1. (X')'=X

Teorema da complementaridade:

1.X+X'=15D.X X'=0

Lei comutativa:

1.X+S=S+X6D.XY=YX

Direito associativo:

1. (X+S) +Z=X+ (S+Z) 7D.(XY)Z=X(YZ) =X+S+Z=XYZ

Direito distributivo:

1.X(S+Z) =XY+XZ8D.X+ (YZ) = (X+S) (X+Z)

Teoremas de simplificação:

1.XY+XY'=X9D.(X+S) (X+Y') =X
2.X+XY=X10D.X(X+S) =X
3. (X+Y')S=XY11D.(XY') +S=X+S

Teorema de De Morgan:

1. (X+S+Z+ ...)'=X'Y'Z'12D.(XYZ...)'=X'+Y'+Z'+
2. {(X1,X2,...,Xn,0,1+, ,'} = {(X1',X2',...,Xn',1,0,,+)}
Dualidade:

1. (X+S+Z+ ...)D =XYZ14D.(XYZ...)D =X+S+Z+


2. {(X1,X2,...,Xn,0,1,+,D)} = (X1,X2,...,Xn,1,0,+ , )

Teorema da multiplicação e fatoração:

1. (X+S)X'+Z)16D.XY+X'Z= (X+Z)X'+S) =XZ+X'Y

Teorema de consenso:

1.XY+YZ+X'Z=XY+X'Z17D.(X+S)S+Z)X'+Z) = (X+S)X'+Z)

A notação (X1,X2,...,Xn,0,1,+, usado nos teoremas 13 e 15, representa uma expressão em termos de
t variáveisX1,X2, ,Xn, as constantes 0, 1 e a ópera booleana+ tionnsd. Teorema 13 estados
sucintamente que, ao formar o complemento de uma expressão, as variáveis são substituídas por seus
complementos - ou seja, 0 é substituído por 1 e 1 por 0+ , é substituído por e b+y.

Como qualquer um dos teoremas listados pode ser derivado das leis originais mostradas na Seção 2.1, há
motivos para memorizar todos eles. Os primeiros oito teoremas são os mais usados na simplificação de
expressões booleanas.

Verificando os Teoremas BooleanosCada um dos teoremas pode ser derivado dos axiomas da álgebra booleana.
Podemos provar o primeiro teorema da simplificação, às vezes chamado de teorema da unidade, como fo

XY + XY ' = X?

X (Y + Y ') = X direito distributivo (8)

X (1) = X teorema da complementaridade (5)

X = X÷ identidade (1D)

Como outro exemplo, vamos olhar para o segundo teorema de simplificação:

X + XY = X?

X 1 + XY =X identidade (1D)

X (1 + Y) = X lei distributiva (8)


X (1) = X identidade (2)

X = X÷ identidade (1)

Teorema de De MorganO teorema de DeMorgan fornece um procedimento para complementar uma função
complexa A expressão complementada é formada a partir do original substituindo todos os literais pelo seu
complem todos os 1's tornam-se 0's e vice-versa, e os ANDs tornam-se ORs e vice-versa. Este teorema indica um
relação interessante entre NOR, OR, NAND e AND :

Observe que e Em outras palavras, NOR é o mesmo que AND com inp complementado
enquanto NAND é equivalente a OR com entradas complementadas! Isso é facilmente visto como verdade nas
tabelas da Figura 2.12.

Vamos usar o teorema de DeMorgan para encontrar o complemento da seguinte expressão


:

Passo a passo, o complemento é formado da seguinte forma

Observe que a dualidade e a lei de DeMorgan não são a mesma coisa. O procedimento para produzir o du
similar, mas os literais não são complementados durante o processo. Assim, o dual de NOR é (N um AdND

vice-versa) ; o dual de OR é AND( e vice-versa)a. Lembre-se, qualquer teorema que é verdadeiro para uma expressão
também é verdadeiro para seu dual.

Exemplo A Execução do Somador Completo Podemos usar as leis e teoremas que acabamos de apresentar para
verifique a expressão simplificada para a função carry-out do somador completo. A expressão original, derivada
da tabela verdade, é

O primeiro passo usa o teorema 3, o teorema idempotente, para introduzir uma cópia de tUMA BCteeurn.mEntão nós
he
Use a lei comutativa para reorganizar os termos:

Em seguida, usamos a lei distributiva para fatorar os literais comuns dos dois primeiros termos:

Aplicamos a lei da complementaridade:

e a lei de identidade:

Podemos repetir o processo para o segundo e terceiro termos. O teorema ste(p1s) ajuda:mpotente para
(2, ) lei comutativa para rearranjar o termo (s3,) lei distributiva para fatorar
introduzir um termo redundante
literais comuns (, 4) teorema de complementaridade para substituir por 1 e ( 5) lei de identidade para substituir 1X
porX:

A simplificação final, usando o teorema distributivo, teorema da complementaridade e lei de identidade, procede de
forma semelhante:

Essa é exatamente a forma reduzida da expressão que usamos no Capítulo 1. Embora leve a uma expressão
sim, aplicar as regras da álgebra booleana dessa maneira não garante que você obterá a expressão mais
simples. Uma abordagem mais sistemática será introduzida na Seção 2.3.

Álgebra Booleana e SwitchesJá observamos a estreita correlação entre funções booleanas e circuitos
de comutação. Cada uma das leis e teoremas que discutimos tem um circuito analógico de comutação.
Estes fornecem uma boa maneira de lembrar os vários teoremas.

Alguns dos equivalentes do circuito de comutação são mostrados na Figura 2.13.


Para simplificar os diagramas, mostramos apenas os caminhos de true até a saída. O teorema idempotente representado
na Figura 2.1(3a) . Obviamente, duas chaves controladas de forma idêntica, em série ou em paralelo, comportam-se como
uma única chave, pois ambas estão abertas ou fechadas ao mesmo tempo.

A Figura 2.13(b) mostra algumas das leis de identidade. Uma conexão aberta representa a lógica 0; uma
conexão em curto representa a lógica 1. Uma conexão aberta em paralelo com uma chave normalmente aberta
não tem função de chaveamento e pode ser eliminada. Uma conexão em curto em paralelo com uma chave
normalmente o garante que sempre exista um caminho conectado para a saída. Isso deixa a função com
independente da chave normalmente aberta.
Os teoremas de complementaridade são mostrados na Figura (2c). 1.3 Duas chaves em paralelo, controladas por
sinais complementares, garantem que uma esteja sempre aberta enquanto a outra está fechada, garantindo assim o
caminho até a saída. Dois interruptores em série, controlados por sinais complementares, garantem que o caminho
de conexão seja sempre interrompido por um deles. Isso é equivalente a uma conexão aberta.

A Figura 2.13(d) mostra os equivalentes de comutação de alguns teoremas de simplificação. Na primeira rede,
a existência de uma conexão entre entrada e saída dependeX n,lisãoSe estão em paralelo e
um dos interruptores será fechado enquanto o outro estiver abertoXn.isIftrue, a conexão é feitaX ; se é
false, a conexão é interrompida. Na segunda redeSo'srke,ffect é redundante pelo tX wo
interruptores em paralelo.

2.2.2 Formas Canônicas Lógicas de Dois Níveis

Para comparar funções booleanas quando expressas em termos algébricos, é útil ter um padrão para
representar a função. Esse termo padrão é chamado de forma canônica e é uma assinatura algébrica
uniq da função. Você encontrará frequentemente duas formas alternativas: soma de produtos e
produto de somas. Apresentamos estes a seguir.

Soma de ProdutosVocê já encontrou o formulário de soma de produtos na Seção 1.3.3. Também é conhecido como
uma forma normal disjuntiva ou expansão de prazo mínimo. Uma expressão de soma de produtos é a seguinte. Cada
linha da tabela verdade na qual a função assume o valor 1 contribui com um termo ANDe, usando a variável
declarada se houver um 1 em sua coluna para essa linha ou seu complemento se houver. Estes são chamados de
termos mínimos. Tecnicamente, um termo mínimo é definido como um produto AND de literais em cada variável
aparece exatamente uma vez na forma verdadeira ou complementada, mas não em ambas. O min-ter então fez um
OR para formar a expressão para a função. A expansão de termos mínimos é única porque é derivada
deterministicamente da tabela-verdade.

A Figura 2.14 mostra uma tabela verdade para uma função e seu complemento. A expansão min-termFionnsdfor são

Podemos escrever tais expressões em uma notação abreviada usando o sistema numérico binário para codifica
termos mínimos. A Figura 2.15 mostra a relação entre a linha da tabela verdade e a numeração do termo.
Observe que a ordenação das variáveis booleanas é crítica para derivar o índice de termos mínimos. NesteUMA s ca
determina o bit mais significativo aC ndi é o bit menos significativo. Você pode escrever a abreviação
expressão paraFe como

F (ABC) =S m(3,4,5,6,7) = m3 +m4 +m5 +m6 +m7

(ABC) =S m(0,1,2) = m0 +m1 +m2

Ondemeu represento issoeueth min-term. Os índices generalizam para funções de mais variáveis. Por
exemplo, seFé definido sobre a variávelUMAs, B, C,entãom3 (0112) é o termo mínimo. Mas seFé
definido sobreA, B, C, D,entãom3 (00112) é .

A expansão de termos mínimos não é garantida como a forma mais simples da função, em termos dos literais
ou termos f, nem é provável que seja. Você pode reduzir ainda mais a expressio Fnbfyoa
r aplicando booleano
álgebra:

O único passo que você pode achar complicado é o último, que aplica a regra 11D, substituindoUMA
paraSeBCporX.

UMAeBCsão chamados de termos de produto: strings de literais com AND contendo um subconjunto das possíveis
variáveis Bo ou seus complementos. FFordefinido sobre a variávelUMAs, B,eC, é um termo mínimo e um termo
produto, masB tCé apenas um termo de produto.

A implementação minimizada no nível do portãoFoifs mostrados na Figura 2.16.


Cada termo de produto é realizado por sua própria porta AND. O produtoUMAteisrm o caso degenerado de um único literal.
Nenhuma porta AND é necessária para formar este termo. As implementações dos termos do produto são a entrada para uma
porta OR de segundo nível. A forma de soma de produtos leva diretamente a uma realização de dois níveis

Podemos repetir o processo de simplificação, pois o teorema de DeMorgan nos dá um bom ponto de partida
para aplicar a simplificação booleana:

Embora este procedimento não garanta a obtenção da forma mais simples do complemento, ele o faz neste
caso.

Produto de somasO teorema da involução afirma que o complemento do complemento de uma expressão
booleana é a própria expressão. Usando o teorema de DeMorgan duas vezes, podemos derivar uma segunda
forma canônica para equações booleanas. Essa forma é chamada de produto de somas e, às vezes, forma
normal conjuntiva ou expansão de maxtermo.

O procedimento para derivar uma expressão de produto de somas de uma tabela verdade é o dual lógico do caso de
produtos. Primeiro, encontre as linhas da tabela verdade onde a função é 0. Um maxterm é definir uma soma de
literais em que cada variável aparece exatamente uma vez na forma verdadeira ou complementar, mas não em
ambas. Formamos um maxtermo fazendo OR da variável não complementada se houver um 0 em sua coluna para
essa linha, ou a variável complementada se houver um 1 lá. Isso é exatamente o oposto da forma como formamos os
termos mínimos. Existe um maxtermo para cada linha 0 da tabela verdade; estes são ANDe juntos no segundo nível.

Os produtos das somas para a funçãoFns da Figura 2.14 são

Mais uma vez, muitas vezes usamos uma notação abreviada.


A Figura 2.17 mostra a relação entre os maxtermos e sua forma abreviada. Nós cF ananwdrite
Como

F (A, B, C) = PM (0,1,2) = M0 M1 M2

(A, B, C) = PM (3,4,5,6,7) = M3 M4 M5 M6 M7

OndeMeu sou oeuº maxtermo.

Curiosamente, a expansão maxtermFocf poderia ter sido formado diretamente pela aplicação do teorema de
DeMorgan à expansão de termos mínimos de

Obviamente, o mesmo é verdadeiro para derivar a forma de termo mínimo Fforof m a forma maxterm de

É fácil traduzir uma expressão de produto de somas em uma realização no nível do portão. O nível zero dos
complementos das variáveis se forem necessários para realizar a função. O primeiro nível cria maxtermos
individuais como saídas de portas OR. O segundo nível é uma porta AND que combina os maxtermos.

Podemos encontrar uma forma de produto de somas minimizada começando com a expressão de soma de produtos
minimizada de Para complementar esta expressão, usamos o teorema de DeMorgan:
A Figura 2.18 mostra as quatro diferentes implementações em nível de portaFs dfoisrcussed até agora: canonical sum
o products(F1), soma minimizada de produto(s)F2) , produto canônico da(s) soma(s)F3) , e produto minimizado das
somas(F4). Em termos de contagem de portas, o produto da forma canônica das somas é mais econômico do que a
forma canônica da soma dos produtos. Mas a forma de soma de produtos minimizada usa menos porta que a forma
de produto de somas minimizada. Dependendo da função, uma ou outra dessas formas é melhor para implementar
função.

Para demonstrar que as implementações são equivalentes, a Figura 2.19 mostra a forma de onda de temporização
as respostas dos circuitos às mesmas entradas. Exceto por falhas de curta duração nas formas de onda,
formas são idênticas.

Conversão entre formas canônicasPodemos colocar qualquer função booleana em uma das duas formas
canônicas, soma de produtos ou produto de somas. É fácil mapear uma expressão de uma forma canônica
para outra. O procedimento, usando a notação abreviada que já introduzimos, é resumido aqui

1. Para converter da expansão min-term para a expansão maxterm, você reescreve a notação abreviada
min-ter para a abreviação maxterm, substituindo os números dos termos pelos não usados
lista de termos mínimos. Isso é equivalente a aplicar o teorema de DeMorgan ao complemento da função na
forma de termos mínimosE . exemplo: F(UMA,B,C) =Sm(3,4,5,6,7) = PM(0,1,2)
2. Para converter da expansão de maxterm para a expansão de min-term, você reescreve a notação abreviada de
maxterm para abreviação de min-term, substituindo os números dos termos por aqueles não usados na lista
de maxterms. Isso é equivalente a aplicar o teorema de DeMorgan ao complemento da função na forma de
maxtermoE . exemplo: F(UMA,B,C) =PM(0,1,2) = Sm(3,4,5,6,7)

3. Para obter a expansão de termos mínimos do complemento, dada a expansão de termos mínimos da função,
você simplesmente lista os termos nãoFin. O mesmo procedimento funciona para obter o complemento de
maxtermo de uma função expressa em maxterm fEoxrm sou
. ple:

4.F(ABC)
= Sm(3,4,5,6,7) ( F
ABC) =P M(0,1,2)

(ABC) =
Sm(0,1,2) (ABC)
= PM(3,4,5,6,7)

5. Para obter a expansão maxterm do complemento, dada a expansão min-term da função, você
simplesmente usa os mesmos números maxterm que nósFe'sdm expansão a prazo. o
mesmo procedimento se aplica se uma expansão de minitermo do complemento deve ser derivada da
expansão de maxtermo da funçãoEnx.amplo:

6.F(ABC)
= Sm(3,4,5,6,7) ( F
ABC) =P M(0,1,2)

7.
(ABC) =PM(3,4,5,6,7) (ABC) =Sm(0,1,2)
2.2.3 Lógica Positiva versus Lógica Negativa

Quando você implementa portas lógicas como dispositivos eletrônicos, elas operam em voltagens em vez de lógica.
Sempre há duas interpretações de qualquer tabela verdade que descreva a operação de uma porta, com base na
lógica positiva ou negativa. É somente através da escolha de uma dessas convenções que a tensão le pode ser
interpretada como níveis lógicos. As tensões de saída são as mesmas; apenas a interpretação lógica diferente.

Conceito geralAté agora, assumimos que a lógica 1 é representada por uma tensão mais alta que log Esta convençã
é frequentemente chamada de lógica ativa alta ou positiva. Quando você deseja que um determinado sinal seja
afirmado (por exemplo, "abra a garagem do)o,ry" ou coloque uma tensão positiva no sinal - e ele é interpretado como
um 1 lógico. Uma convenção alternativa às vezes é mais conveniente, especialmente quando as portas NAND e NOR
implementam uma lógica que inicia uma e(lógica ventable) ou inibe que ela ocorra( desabilitar lógica) . É chamado de
lógica ativa baixa ou negativa. Neste caso, uma baixa tensão é usada para denotar que um sinal é afirmado, enquant
a alta tensão é usada para representar um sinal não afirmado.

Considere a Figura 2.20, que mostra uma tabela verdade expressa em termos de duas tensões relativas, alto
baixo. Sob a interpretação da lógica positiva, a tabela verdade descreve uma função AND. Mas se interpretarmo
os níveis de tensão de acordo com a lógica negativa, obteremos uma função OR. Isso ocorre porque uma função
OR e uma função AND são duais, derivadas da substituição de 0s em uma tabela de verdade, 1s na outra e vice-
versa.

Dada uma função na lógica positiva, podemos encontrar sua função lógica negativa equivalente simplesmente
aplicando a dualidade. Por exemplo, o dual da função NOR, é Claro, este é o
NAND. Podemos verificar isso com as tabelas-verdade da Figura 2.21.
ExemploPor causa das possibilidades muito reais de confusão, os designers preferem evitar misturar pos e
lógica negativa em seus projetos. No entanto, isso nem sempre é possível. Por exemplo, uma saída l positiva,
declarada alta, pode se conectar a uma entrada lógica negativa, declarada baixa. Para ilustrar este ponto, tome
um exemplo do controlador de semáforo do Capítulo 1.

Sua tarefa é definir três sinais, Change_Lights, Change_Request e Timer_Expired, de modo que
Change_Lights seja ativado sempre que -Change_Request e Timer_Expired forem ativados. Em notação
alta ativa, os dois últimos sinais devem ser ANDed para implementar Change_Lights. Isso é mostrado
na Figura 2.2(2a).

Se você usa lógica negativa e os sinais devem ser declarados ativos baixos, a porta AND é substituída por b dual
uma porta OR. Change_Lights é declarado baixo somente quando Change_Request e Timer_Ex estão baixos. Em
todos os outros casos, Change_Lights é alto não declarado. Isso é mostrado na Fig(ubre ). 2.22

Pode ser confuso acompanhar se as convenções lógicas positivas ou negativas estão sendo usadas no circuito.
Como alternativa, adotamos uma notação que assume que todas as portas são lógicas positivas, mas
explicitamente acompanhamos se os sinais são declarados altos ou baixos. Uma "bolha" é colocada na entrada
ou saída que deve ser declarada baixa.

Para tornar mais fácil seguir a polaridade do sinal dentro de um esquema, as bolhas ativas de baixa entrada devem
ser combinadas com as bolhas ativas de baixa saída. Continuando com o exemplo, Figur(ec2) .2s2 mostra um caso
com bolhas incompatíveis. Começando com a Figura 2( .d2)2, adicionamos bolhas para indicar a baixa polaridade
ativa dos três sinais. Você pode ver que as entradas e saídas da porta OR não correspondem à polaridade dos sinais
aos quais estão conectadas.
Como fazemos para combinar as polaridades? Pelo teorema de DeMorgan, o seguinte é verdadeiro:

Uma porta OR é equivalente a uma porta AND com entradas e saídas invertidas. Ao substituir a OR ga
Figura 2.22(c) por uma porta AND desse tipo, não alteramos o sentido da lógica, mas aumentamos as
polaridades do sinal. Isso é mostrado na Figura 2 (.d2)2. A figura indica claramente que
Change_Request e Timer_Expired devem ser ambos declarados baixos para fazer com que o sinal Change_ ativo
baixo seja declarado.

2.2.4 Funções Incompletamente Especificadas

Assumimos que devemos definirn-ainnput em todas as suas 2n combinações de entrada possíveis. Isso
não é sempre o caso. Estudamos o caso de funções incompletamente especificadas nesta subseção

Exemplos Funções especificadas incompletamente Vamos considerar uma função lógica que leva
como entrada um dígito decim(aBl CD) codificado em binário. Dígitos BCD são dígitos decimais, no intervalo de 0 a 9, que
são representados por números binários de quatro bits, usando as combinações (000)00 até 10012(9) .
As outras combinações, 1010( 210) a 11112( 15) , nunca devem ser encontradas. É possível simplificar a
expressões booleanas para a função se assumirmos que não nos importamos com seu beh nesses
casos "fora de alcance".

A Figura 2.23 mostra a tabela verdade para um incremento BCD de 1 circuito. Cada número BCD é representado por
quatro variáveis booleanasUMA,BCD. A saída do incrementador é representada por quatro funções booleanas de 4
variáveisC , XYZ.

As funções de saída têm o valor "X" para cada uma das combinações de entrada que nunca devemos encou. Quando
usado em uma tabela verdade, o valor X é freqüentemente chamado de não importa. Não confunda isso com o va
relatado por muitos simuladores lógicos, onde representa um valor indefinido ou um não sei. Qualquer
implementação ac do circuito gerará alguma saída para os casos não-cuidados. Quando usado em um tr
tabela, um X significa simplesmente que temos a opção de atribuir um 0 ou 1 à entrada da tabela verdade.
Escolhemos o valor que levará à implementação mais simples.

Para ver que don't cares eventualmente são substituídos por algum valor lógico, vamos considerar a tabela-verdade
incremental BCD. A função Zparece que poderia ser realizado simplesmente como a função que escolhemos
implementoZdesta forma, os X's serão substituídos por valores lógicos reais. Como as entradas 10102 a
11112 nunca serão encontradas pelo circuito operacional, não importa quais valores avaliamos essas linhas
da tabela verdade. Escolhemos uma atribuição que torna a implementação tão simples quanto po

Não se importa e a terminologia das formas canônicasEm termos das notações S e P padrão, os termos
mínimos ou máximos atribuídos a não importa são escritosdeinoar sDeu, respectivamente. Assim, a forma
canônica paraZé escrito como

Z=m0 + m2 +m4 +m6 +m8 +d10 +d11 +d12 +d13 +d14 +d15

Z= M1M3M5M7M9D10D11D12D13D14D15

A especificação adequada de don't cares é crítica para a operação bem-sucedida de muitas ferramentas d auxiliadas por
computador que realizam a minimização de expressões booleanas. A terminologia que eles usam é ligeiramente diferente
daquela comumente encontrada na literatura de projeto lógico, mas na verdade nada mais é do que uma reformulação da
especificação básica da tabela-verdade.

Vamos introduzir os conceitos por meio da tabela verdade da Figura 2.23. Esta função é multisaída porque é
representada por quatro bits de saída definidos sobre as mesmas entradas. É incompletamente específico porque
contém don't cares em suas saídas. Para cada uma das colunas de saída da função, podemos definir três conjuntos: o
conjunto on-set, off-set e don't-careo.nT-hsetcontém todas as combinações de entrada para as quais a função é 1. O
Deslocamentoenão se importe seuma tre definido analogamente para 0 e X, respectivamente. Assim
on-set para o incrementadorCa saída de é{[ 0,1,1,1] , [ 1,0,0,0]} ; seu deslocamento é {[ 0,0,0,0] , [ 0,0,0,1] ,
[0,0,1,0] , [ 0,0,1,1] , [ 0,1,0,0] , [ 0,1,0,1] , [ 0,1,1,0] , [ 1,0,0,1] ; e seu conjunto indiferente {i[s 1,0,1,0] , [
1,0,1,1] , [ 1,1,0,0] , [ 1,1,0,1] , [ 1,1,1,0] , [ 1,1,1,1]} .

[Anterior ][Início] [Próximo]

Este arquivo foi atualizado pela última vez em 23/06/96 às


19:47:39. randy@cs.Berkeley.edu ;
[Início] [Próximo] [Anterior ]

2.3 Simplificação em dois níveis

Agora você está pronto para aprender os métodos práticos para reduzir uma expressão booleana ao seu simples em
dois níveis. O resultado é uma expressão com o menor número de literais e, portanto, menos fios na implementação
final do nível ga.

Começamos definindo o conceito essencial de cubos booleanos. Essas são entradas da tabela verdade que podem ser
combinadas em expressões booleanas com uma contagem literal reduzida. Em seguida, examinamos o K-map e
encontramos uma abordagem eficaz de papel e lápis para identificar cubos booleanos para funções com um número
modesto de variáveis. O método reorganiza as linhas da tabela verdade em uma estrutura tabular especial que coloca as
entradas candidatas para combinação próximas umas das outras.

2.3.1 Motivação

Sempre podemos usar as regras da álgebra booleana da Seção 2.1 para simplificar uma expressão, mas o
método tem alguns problemas. Por um lado, não há algoritmo que você possa usar para determinar que você
obteve uma solução mínima. Quando você para de procurar um teorema de simplificação para aplicar? Um
problema é que muitas vezes você precisa tornar a expressão mais complicada antes de simplificar em nossos
exemplos, às vezes substituímos 1 para adicionar mais termos. Em seguida, reorganizamos os termos para obte
agrupamentos vantajosos que ajudaram a simplificar a expressão em uma etapa posterior. É contra a natureza
sair de um "mínimo local" na esperança de encontrar uma solução global melhor. Mas isso é exatamente o que
muitas vezes temos que fazer. E, finalmente, é muito complicado manipular expressões booleanas
manualmente.

Dado que as ferramentas baseadas em computador foram desenvolvidas para simplificação booleana, por que se preocupar em
usar qualquer método manual, especialmente quando eles falham por problemas com muitas variáveis? Certamente o método
manual será eficaz para equações envolvendo mais de seis variáveis. Mas você ainda precisa de conhecimento da abordagem
básica. Observar as simetrias na função de um circuito ajuda a entender seu comportamento e a visualizar o que está
acontecendo dentro do circuito. À medida que as ferramentas CAD se tornam cada vez mais sofisticadas, você precisa de um
conhecimento mais profundo dos algoritmos que elas aplicam para usar as ferramentas com eficiência. A não se esqueça que as
ferramentas CAD são escritas por meros mortais e nem sempre fazem as coisas certas! Você ainda deve ser capaz de verificar a
saída da ferramenta.

A essência da simplificação booleana Vejamos o que realmente está acontecendo em simplificação com o
tabela verdade simples da Figura 2.(24uma) .
A função é Podemos simplificar esta equação aplicando uma das simplificações booleanas
teoremas, chamado de teorema da unidade:

Observe que as duas linhas da tabela verdade que compõem os on-sFética depoisUMAafirmado, enquanto uma linha hB como=
0 e o outro haBs= 1. Para um subconjunto de on-s(e neste caso, todo on-)se, o valor de tA permanece o mesmo
enquantoBO valor de 's muda. Isso nos permite fatorarBultrapassando o teorema da união.

Agora examine a Figura 2.2(4b). A função é Aplicando novamente o teorema da unidade, obtemos
Mais uma vez, o set contém duas linhas em wh Bi'cshvalue não muda (eé igual a
0) eUMA's muda. Assim podemos fatorarUMAo, ule t aving

A essência da simplificação é encontrar repetidamente subconjuntos de dois elementos do on-set nos quais
apenas a variável muda seu valor, enquanto as outras variáveis não. Você pode eliminar a única variação va do
termo aplicando o teorema da unidade.

Não seria bom se houvesse uma maneira de organizar as linhas da tabela verdade de modo que as entradas às quais a
técnica pudesse ser aplicada fossem óbvias? Apresentaremos exatamente essa representação, a seguir a booleana.

2.3.2 Cubos Booleanos

Um cubo é geralmente definido como um objeto sólido delimitado por seis quadrados iguais. Este conceito pode ser
generalizado para outras dimensões. Um cubo bidimensional é um quadrado, um de uma dimensão é uma linha e
um cubo de dimensão zero é um ponto.

Podemos representar a tabela verdade denuma função booleana de entrada como um "cubo" emna-ndimensional booleano
espaço. Há um eixo para cada variável, sobre o qual ela pode assumir exatamente dois valores: 0 ou
A Figura 2.25 mostra a forma dos cubos booleanos 1-, 2-, 3- e 4-cubes. Cada nó na figura é rotulado de
coordenadas w nonespaço tridimensional. Os eixos estão listados em ordem alfabética, do mais alto ao mais baixo
ordem. A estrutura se generaliza além das quatro dimensões, mas é bastante difícil visualizá-las.

Exemplos Mapeando Tabelas Verdade em Cubos Agora vamos examinar como mapear uma tabela verdade
em um cubo, usando os exemplos simples da Figura 2.24. Os elementos do on-set são representados por
nós pretos e os do off-set por no branco (ddeosn't cares são representados por X nós, embora não
tenhamos nenhum neste exame) p.le

A Figura 2.26 mostra o mapeamento. Observe que os elementos dos on-sets das funções estão próximos a
outro no cubo booleano da tabela verdade. Isso informa que o teorema da unidade pode ser usado para eliminar a
variável. Na figura, circulamos os elementos do on-set que são diretamente adjacentes. Chamamos su grupo de nós
circulados de plano de adjacência. Cada plano de adjacência corresponde a um termo de produto. Figura 2.26(a), os
nós circulados produzem o terUMAm; na Figura 2.26 (b), o termo é

Você pode pensar nessas adjacências como distâncias entre nós no cubo booleano. Dois acenam à distância de
se estiverem conectados por uma aresta no cubo. Eles estão separados por uma distância de 2 se estiverem
separados por um caminho de duas arestas conectadas. Se este for o caso, os dois nós estão no mesmo pl nós
estão separados por uma distância de 3 se eles são separados por um caminho de três arestas conectadas e não
existe curto entre os dois nós. Então os nós estão no mesmo cubo tridimensional.

e's varia entre 0 e 1. Este


No plano no set/adjacência da Figura 2(.a2)6,UMAo valor de permanece 1 enquantoB
é uma pista imediata de que o teorema da unidade pode reduzir a função ao únicoUMA e.liSteim
ferroviário, em

Figura 2.26(b) o plano de adjacência é circulado e os nós envolvidosBha retendo seu valor enquanto A
varia. O teorema da unidade reduz a expressão ao termo

Como exemplo de uma função de três variáveis e seu mapeamento em um cubo de 3, vamos retornar à função de
transporte de anúncio completa examinada na Seção 2.2.1. A tabela verdade e seu mapeamento em um cubo de 3 são sh
Figura 2.27.

O on-set é organizado em 3 planos de adjacência unidimensionais: as arestas contendo os nós 0


111-101 e 110-111. No primeiro segmentoUMAnvt,aries entre 0 e 1 whB ilhaCinpermanecer afirmado
e invariável. Isso se reduz ao teBrm Cin. Para o segundo segmentoB nt, varia, produzindo o termoUMA
Cin. No segmento finalCt,dentrovaria, e o termo resultanteUMAéB. A expressão final torna-se

Cout=B Cin+A Cin+AB

Esse método nos permite obter a expressão final muito mais rapidamente do que usando a álgebra booleana. Não,
cada plano de adjacência contribui com um termo de produto para a expressão final. Como cada plano é um cubo
tridimensional, os dois termos mínimos de 3 variáveis no plano são reduzidos a um único termo de produto de 2
variáveis.

Adjacências de Dimensões SuperioresE quanto aos planos de adjacência de maior dimensionalidade do que
arestas singelas, como um plano bidimensional dentro de um 3-cubo? Considere a função representada na 3- Figura
2.28.
Uma face inteira do cubo está incluída no set. Intuitivamente, devemos esperar que essa superfície se refira ao
único litroUMA l porque todas as outras variáveis variam entre 0 e 1 dentro da superfície.

Vamos verificar se este é o caso. Os quatro segmentos de linha na superfície são indicados pelos nós 1 101-111,
100-101 e 100-110. Aplicando o teorema de união a cada segmento independentemente dos termosAB,CA,UMA
UMArespectivamente. Podemos continuar a aplicar o teorema da unidade
:

No 3-cubo, se o on-set for um plano bidimensional, ele contribui com um único produto de 1 variável
para a expressão da função.

Para o 3-cubo, a relação entre a dimensionalidade do plano de adjacência e o termo que ele
representa é a seguinte:

- Um plano de adjacência de dimensão zero, um único nó, produz um termo produto de três literais. Por
exemplo, 101= Isso é o mesmo que um termo mínimo.
- Um plano unidimensional, uma aresta, produz um termo produto de dois literais. Por exemplo, 1=00-101
- Um plano bidimensional produz um termo produto de um literal. Por exemplo, 100-101-11=1UMA - 1. 10
- Um plano tridimensional, o cubo inteiro, produz um termo sem literais; isto é, reduz à
lógica constante 1.

Isso generaliza para cubos de dimensões mais altasm . UMA


- plano de adjacência dimensional dentronum
cubo dimensional se reduzirá a um termo wncom-mliterais.

Quanto menos planos forem necessários para incluir todos os 1's na tabela-verdade, menor será o número de termos na
expressão final funcional. Planos de maior dimensionalidade geram termos com menos literais neles. Assim, algoritmos de
projeto auxiliados por computador para minimização tentam encontrar o menor número de planos de adjacência de alta
dimensionalidade que contêm todos os nós da função (opne-rsheatps incluindo elementos do conjunto don't-care
como )w.eTlleste processo é chamado de encontrar uma cobertura mínima da função

2.3.3 Método K-Map

A notação de cubo torna óbvias as adjacências entre as linhas da tabela verdade. As adjacências fornecem
vi pistas sobre onde aplicar o teorema de união aos elementos do on-set que são di(sa , 2 (um
talinência) 1
quadrado), 3 (um cubo), etc. separados dentro do ncubo tridimensional que representa a função. O problema
para os humanos é a dificuldade de visualizar adjacências em mais de três dimensões. Para contornar o problema,
pelo menos para expressões de até seis variáveis, introduzimos uma reformulação alternativa da tabela-verdade
chamada de mapa de Karnaugh ou K-map.

Conceito geralUm K-map para uma função booleana especifica valores da função para cada
combinação das variáveis da função. Assim como uma tabela verdade
n-,vaanriable K-map tem 2n entradas.
Em vez da enumeração linear das entradas da tabela verdade, um K-map tem duas e, às vezes, três
dimensões, indexadas pelos valores das variáveis de entrada.

A Figura 2.29 mostra os modelos do K-map para funções booleanas de duas, três e quatro variáveis. Os ent
são rotulados com o equivalente decimal do número binário formado pela união da coluna com os índices.
Por exemplo, a entrada 3 no K-map de três variáveis é rotulada pelo cUMAoB lu=
mn1
0 e a linha
C=1 (abc=0112= 3) . Os rótulos são incluídos apenas para sua conveniência no preenchimento do K-map da
tabela verdade: eles correspondem ao número da linha da entrada da tabela verdade associada.

A única coisa surpreendente é a ordenação dos índices: 00, 01, 11, 10. Isso é chamado de código Gray. I a
propriedade que ao avançar de um índice para o próximo índice adjacente, apenas um único bit chan valor. Esta
propriedade não é verdadeira para a sequência binária padrão 00, 01, 10, 11.

A estrutura do K-map é escolhida de forma que quaisquer dois elementos adj(cheonritzontal ou vertical, mas não diagonal)
estejam separados por uma distância de 1 no cubo equivalente represe(nth ae
tio
ynshare uma borda comum
Isso é mostrado na Figura 2.30 para um K-map de três variáveis e um cubo booleano tridimensional. O
quadrado 0 não do K-map é adjacente aos quadrados 1, 2 e 4. O K-map na verdade se dobra sobre si mesmo. O
el na coluna mais à direita são adjacentes aos elementos na coluna mais à esquerda; os elementos no para são
adjacentes aos elementos na linha inferior.

Exemplo de Mapas de Duas Variáveis A Figura 2.31 mostra os mapas de duas variáveis para o exemplo
funçõesFeGda Figura 2.24. O K-map é preenchido diretamente da tabela verdade. Cada linha da tabela verdade
corresponde a uma entrada do K-map. Os valores das variáveis são os índices, e o valor de saída da tabela
verdade é colocado no quadrado do K-map com o índice correspondente.

Na Figura 2.31(a), os termos da função são como denotado pelos 1's em tUMAele = 1,B=0 eUMA=
1,B=1 entradas de mapa. Podemos aplicar o teorema da unidade para reduzir isso ao únicoUMA.litTehraelK-mapa
mostra
imediatamente que as duas entradas são adjacentes.UMAO valor de tv permanece inalterado enquanto o valor Bo
valor varia de 0 a 1. Olhando para este grupo, você deve saber queBt pode ser eliminado, deixando-nos comUMA.

A mesma análise vale para a Figura 2(.b 3)1. A função é , e seu on-set é uma linha adjacente no
K-mapa. Isso demonstra a vantagem do K-map sobre a tabela verdade para reconhecer adjacências UMA
varia de 0 a 1 enquantoBmantém em 0 para esta linha do K-map. Podemos reduzir a função ao único literal
Exemplo de Mapas de Três Variáveis A Figura 2.32 mostra o K-map de três variáveis para a adição completa
função de execução da Figura 2.27. Você pode ver que três diferentes adjacências de dois elementos cobrem t set
(lembre-se que a adjacência não é definida para diagonal en)tr.ie Tshe primeiro é a coluna indexada bUMAy = 1,
B=1. DesdeCinvaria de 0 a 1, pode ser eliminado, obtendo-se o tUMA erB. m
O segundo é o
adjacência indexada bUMAy = 0,B=1,Cin=1 eUMA=1,B=1,Cin=1.UMAvaria enquantoBeCinpermanecem
inalterados, produzindo o terBmCin.

Observe que a etiqueta da barraB eda ao longo da parte inferior do K-map informa que Barte permanece inalterado dentro
as duas colunas do meio e nas duas colunas externas. A adjacência final é indexeUMA d p =or 1,B=1,
Cin=1 eUMA=1,B=0,Cin=1.Bvaria eUMAeCinpermanecem inalterados, resultando noUMArm Cin. Mais uma
vez, a barra rotulada na parte superior do K-map lembra vocêUMAsrtehm permanece inalterado dentro do
duas últimas colunas e nas duas primeiras colunas. A expressão finalUMAeuBs+B Cin+A Cin. Há
um termo na expressão reduzida para cada grupo de adjacência circulado no K-map.

Vamos revisitar a função da Figura 2.28. Seu K-map é dado na Figura 2.33. Os quatro elementos do conjunto são
adjacentes e podemos circulá-los todos. Dentro deste agrupamentoB dCvariar enquantoUMArestos
, banho
. eu
afirmou, reduzindo à única liteUMAra

(cUMAtB
Outro caso de adjacência é ilustrado pela Figura 2.34, que mostra o K-map para o fF un ,io n,
C) =m0 +m4 +m5 +m7. Lembre-se de que as colunas mais à esquerda e mais à direita do K-map são adjacentes
e0
Assim, podemos combinar m( ) em4 ( ) para formar o termo Também podemos combinarme5 em7 a
formar o termoCA. Desta forma,

Você pode ficar tentado a circular os termos 4 em5, pois também são adjacentes. Mas você obtém a solução mo
reduzida apenas encontrando o menor número dos maiores grupos de adjacência possíveis que cobrem
completamente o set. Lembre-se de que o número de grupos é igual ao número de termos do produto, os
agrupamentos maiores têm um número menor de literais. O termo formadomf4 vagandom5 é redundante
porque ambas as entradas já estão cobertas por outros termos. Nós nos tornaremos mais formais sobre o p de
obter a solução mínima um pouco mais adiante nesta seção.

Os K-maps fornecem um bom mecanismo para encontrar a forma reduzida do complemento muito rapidamente.

A Figura 2.35 contém o K-map para o complemento da Figura 2.34. Tudo o que fizemos foi substituir
0's por 1's e vice-versa. O complemento pode ser lido imediatamente como Compare este método com
o método usando álgebra booleana:

O K-map produz o resultado muito mais rapidamente!


Exemplo de mapas de quatro =Sm (A,B,C,D)
Agora vamos considerar uma função de quatro variáveisF sobre
variáveis . O K-map é mostrado na Figura 2.36. Lembre-se que a estratégia é c
(0,2,3,5,6,7,8,10,11,14,)15
o set com o menor número de grupos possível, então devemos tentar encontrar grandes grupos de adjacência. Além disso,
esqueça que o número de elementos em um grupo de adjacência é sempre uma potência de 2.

Os elementosm2,m3,m6,m7,m10,m11,m14,m15 formam um grupo adjacente de oito. Isso


colapsa a única eu
litera C
. (Lembre-se de que um plano tridimensional dentro de um cubo quadridimensional produz um te
com 4 - 3= 1 literal.) Os elementosm5 em7 resultam no termo (um plano unidimensional em um espaço
quadridimensional resulta em um termo com 4=-31literais). O agrupamento final envolve os termos de canto:m
0,m2,m8,m10. Para ver essa adjacência, você deve reconhecer que o mapa se dobra sobre si mesmo

O exame da Figura 2.37 deve tornar isso mais claro. Na figura, procure os índices de termos mínimos 0000,
1010 e 1000. Os elementos de canto se reduzem ao termo (m um plano bidimensional dentro de um
espaço dimensional resulta em um termo com 4=-22literais). A forma minimizada da função é

Encontrando o Produto Mínimo de Formulários de SomasO K-map também pode ser usado para encontrar a expressão
de produto mínimo de somas de uma função. Neste caso procuramos por elementos do deslocamento, simplesmente ci os
grupos adjacentes máximos de 0's. Interpretamos os índices de forma complementar ao procedimento para encontrar a
soma mínima da expressão dos produtos. Se a variável que é deixada inalterada em um agrupamento de 0's tem índice 0,
então essa variável contribui com um literal declarado para o termo. Se o em 1, contribui com um literal complementado.

Esse método funciona porque começamos resolvendo o complemento da função na soma dos produtos circulando
os 0's. Em seguida, aplicamos o teorema de DeMorgan para obter uma expressão de produto de somas por
interpretando os índices como complementos. Vejamos um exemplo.

Vamos reconsiderar o K-map na Figura 2.36in . soma mínima da forma de produtos é encontrada circulando o
0's do K-map em vez de 1's: . Aplicando o teorema de DeMorgan, obtemosFeitn

produto de somas forma:

A Figura 2.38 mostra o mesmo K-map da Figura 2.36, mas desta vez com os zeros circulados. Você pode ver três
grupos de dois zeros cada um pode ser encontrado. Como esses são grupos de adjacência unidimensionais no
espaço dimensional, existem três literais em cada termo. O termo formaM d4fra médicoM12 é (+C+
sobre

D):B,C, eDpermanecer inalterado umBo índice de d é 1 enquantoC'areiaD's são 0. Isso é apenas uma abreviação
para aplicar o teorema de DeMorgan ao termo do complemento. Os termos formados porMom 1,M9 e
M9,M13 são (B+C+)e (+C+ ), respectivamente. Cada termo é ANDed para formar o final
expressão:

Não se importa em K-mapsA última ruga que consideramos é o uso de don't cares no K-map. FIG
2.39 mostra um K-map para a funçãoFn(A,B,C,D) =Sm(1,3,5,7,9) + Sd(6,12,13). O gro

até de quatro elementos se reduz a. Se assumirmos que os X's são todos 0, podemos
cobrir o membro restante do set com o prazo. No entanto, se assumirmos que o elemento d13 é 1,
podemos formar um grupo de adjacência maior que produz o te.rT mhis tem menos literais. Então o
valores de don't cares devem ser selecionados para maximizar o tamanho dos grupos de adjacência. A expressão
Ftorna-se +.

Na forma de produto de somas, a expressão abreviada é escritaFn(UMA Como,B,C,D) =PM


(0,2,4,8,10,11,14,1)5PD(6,12,13).
A Figura 2.40 mostra os agrupamentos que usamos para encontrar a forma de produto mínimo de somas. Formamo
um gro oito 0's (lembre-se que as linhas superior e inferior são adj)acaenndt um dos quatro 0's pelo uso criterioso de
don't cares(D6,D12 = 0). A expressão paraFr torna-se .

Projeto

Comparador de dois bitsAgora estamos prontos para examinar um exemplo de projeto bastante substancial usando os
métodos que vimos até agora. O objetivo é projetar um circuito que receba como entrada dois números de comparação de
2 bitsN , 1 eN2, e gera três saídasNt1 s:=N2,N1 <N2, eN1 >N2. Indicamos o
númerosN1 eN2 pela entrada de bit únicoUMAs,BeC,D, respectivamente.

O primeiro passo para resolver qualquer problema como esse é entender completamente o comportamento do circuito que está
sendo projetado. Você pode fazer isso melhor desenhando um diagrama de blocos mostrando as entradas e saídas e criando
uma tabela-verdade para cada saída em função das entradas.

Estes são mostrados na Figura 2.41.

É bastante simples preencher a tabela. Por exemplo, a primeira linha comparaN finocoloque 00 para o
N2 entrada 00. OF1 função(=) é verdadeira, enquantoF2 (<) eF3 ( >) são falsos. Na segunda linha, 00 < 01, entãoF1 eF
3 são falsos enquantoF2 é verdade. O restante da tabela é preenchido de maneira semelhante.

O próximo passo é preparar K-maps para cada uma das saídas. Isso é mostrado na Figura 2.42.
Vamos começar com o K-map foFr1. Não há adjacências neste K-map! Cada um dos quatro elementos do set
contribui com um termo de quatro variáveis para a expressão.Fn1: para

Esta é a forma de soma minimizada de produtos para a função. No entanto, usando álgebra booleana, w pode
simplificar ainda mais essa expressão:

Podemos obter uma forma muito mais simples (UMA, XNORC) (BXNORD),mas não é em forma de soma de produtos.
1's nas diagonais do K-map fornecem uma boa dica de que a função pode ser expressa mais economicamente em
termos de operações XOR ou XNOR.

O mapa K paraF2 tem três grupos de adjacência, dois com dois elementos e outro com quatro elementos. O
primeiro produz termos de produto com três literais e , o último um termo com dois literais, .
A expressão paraFr2 se torna

O mapa K paraF3 é um pouco mais complicado. Consiste em dois grupos de dois elementos (literais etharcehe)
e um grupo de quatro elementos (literais ttswo). A soma mínima de expressão de produtos para F3 torna-se

Somador binário de dois bitsA próxima função que examinamos é um somador binário de 2 bits. Toma como entrada dois 2
números bináriosN , 1 eN2, e produz um numb binário de 3 bitsNe3r, como resultado. O diagrama de blocos
e a tabela verdade para essas funções são mostradas na Figura 2.43.
De novoN , 1 é representado pela entradaUMAtsandB,N2 porCeD, eN3 pelas funções booleanas
X,S, eZ.

Os K-maps para as saídas são mostrados na Figura 2.44.

Os mapas para oXeZsaídas são mais diretas do queSfo, vamos começar com estes. o
função paraXreduz para dois grou de 2 elementos (literais ptshree cada) e um grou de 4 elementos (literais
ptwo) :

Zexibe dois grupos de 4 elementos (stwo literais cada) he reduz à expressão :

Por um exame cuidadoso do K-map, muitas vezes podemos identificar oportunidades de redução usando os
ctiboynbom
operadores XOR e XNOR. Vamos mostrar isso reduzindo a contagem literal para se divertir S uso de XOR/
XNOR.

Os dois termos simples o Starifa e . Os quatro grupos de elemento único restantes rendem th
termos e . Podemos reduzir ainda mais e no momento não (para e ) mas para o
fazemos isso.

A fatoração produz as expressões


Podemos fatorar as duas últimas expressões :

Storna-se :

Esta expressão tem apenas sete literais. Compare-o com a forma reduzida, assumindo que apenas portas AND, OR,
NOT são permitidas :

Esta expressão requer duas portas AND de 4 entradas, quatro portas AND de 3 entradas e uma porta OR de 6 entradas,
totalizando 7 portas e 20 literais. A expressão revisada requer uma porta OR de 2 entradas, duas portas XO de 2 entradas e
duas portas AND de 2 entradas, um total de 5 portas mais simples e 7 literais para implementar a função. As duas
implementações alternativas são mostradas na Figura 2.45.

Incremento BCD por 1 FunçãoIntroduzimos a função BCD incremento por 1 na Seção 2.2.4 como exemplo de
uma função com don't cares. A tabela verdade da Figura 2.23 produz os quatro Km de 4 variáveis da Figura
2.46.
Tentamos formar os maiores grupos de adjacências que podemos, aproveitando que não nos preocupamos em expandir o
grupo sempre que possível. As funçõesC onpode ser implementado por dois termos: . Estes são
formados a partir de grupos de adjacência de dois elementos e quatro elementos, respectivamente.
Observe como aproveitamos as adjacências que vão da parte superior do K-map até a linha inferior.

A funçãoXé implementado por três termos: . Mais uma vez, tentamos levar
vantagem das adjacências que envolvem de cima para baixo ou da esquerda para a direita no K-map.

A funçãoSé implementado por dois termos: . Isto é derivado de grupos de dois e quatro
entradas, respectivamente. A função finalZnis implementado por um grupo de oito nós, que se reduz
ao único literal .

Mais uma vez, observe que os grupos de adjacência são sempre formados por grou(p4 litfe1rals), 2 (3 literais), 4
assim

(2 literais), 8 ( 1 literal) , ou 16( 0 literais, uma constante 0 ou) 1elementos, sempre uma potência de 2. Observe
também como as adjacências são formadas: acima, abaixo, à esquerda, à direita de um elemento do o incluindo
aqueles que envolvem as bordas do K-map.

2.3.5 Processo de Minimização Booleana

Agora estamos prontos para ser mais precisos sobre o processo de obtenção de uma expressão minimizada. Um
implicante de uma funçãoFé um único elemento do set ou qualquer grupo de elementos que podem ser reunidos em
um K-map. Temos chamado esses grupos ou planos de adjacência até este ponto. Um implicante pr é um implicante
que não pode ser combinado com outro para eliminar um literal. Em outros casos, você cresce implicantes para
cobrir tanto do on-set quanto pos(seibalceh o implicante principal é um implicante com o menor número de literais
possível) l.eCada implicante principal corresponde a um termo produto na expressão da soma mínima dos produtos
para o função. O truque é encontrar o menor número de implicantes primos que co
os elementos do set. Se um elemento particular do on-set é coberto por um único primo implícito é chamado de
implícito primo essencial. Todos os primos essenciais devem fazer parte da expressão minimizada

Exemplo que ilustra as definições Vejamos alguns exemplos para fazer estes
conceitos mais concretos.

,,e.
O K-map de quatro variáveis da Figura 2.47 contém seis implicantes primos,: , ,
Apenas e são essenciais. Adicionar o implicante adicional cobre todo o set. Assim, a
expressão minimizada para a função torna-se :

Como outro exemplo, considere a função cujo K-map é dado na Figura 2.7.

Ele contém cinco implicantes primos: , , , , e . Todos, exceto o primeiro implicante, são essenciais.
A forma minimizada é

Como exemplo final, considere o K-map da Figura 2.49.


Ele contém quatro implicantes primos: , , , e . O implicante não é essencial, pois os 1s que ele
cobre já estão cobertos pelos demais implicantes, todos essenciais. A função minimizada é

Derivando uma expressão minimizada de um K-mapUm procedimento para encontrar uma soma mínima de
expressão do produto do K-map é o seguinte:

Passo 1:Escolha um elemento do set. Encontre todos os grupos "máximos" de 1's e X's adjacentes a esse
elemento. Verifique a adjacência nas direções horizontal e vertical. Lembre-se de que o K-map envolve da linh
superior para a inferior e da coluna mais à esquerda para a mais à direita. Os implicantes primos (grupo de
adjacência) assim formados sempre contêm um número de elementos que é um pow de 2.

Repita o passo 1 para cada elemento do on-set para encontrar todos os implicantes primos.
Passo 2:Visite um elemento dos elementos no set. Se for coberto por um único implicante primo, é essencial
e contribuirá com um termo para a expressão final da soma dos produtos. Os 1s cobertos pelo implicante
não precisam ser visitados novamente.
Repita o passo 2 até que todos os implicantes primos essenciais tenham sido encontrados.
Etapa 3:Se sobrarem 1's descobertos por implicantes primos essenciais, selecione um mínimo de implicantes
primos entorpecidos que os cubram. Tente várias coberturas alternativas para encontrar aquela com os poucos
possíveis implicantes.

Exemplo de Aplicação do Algoritmo Passo a Passo

A Figura 2.50 mostra o algoritmo aplicado a um exemplo completo. A função representada i


K-mapa éF(A,B,C,D) =UMAm(4,5,6,8,9,10,1)3 +d(0,7,15).

A Figura 2.50(a) fornece a configuração inicial. Percorremos as colunas do K-map, de cima para baixo, da esquerda
para a direita, pulando 0's e X's, procurando por 1. O primeiro 1 que encontramos im s 4te. rEmxpand em todos

direções, combinando 1's e X's adjacentes nos maiores grupos implicantes que você puder encontrar. Dois desses
agrupamentos são possíveis, representados pelos termosnd . Estes estão circulados na Figura 2(.5b0).

Continuando a coluna, chegamos em seguidamt5o. Neste ponto, devemos adicionar apenas novos implicantes que ainda não
estejam contidos em um implicante encontrado até agora. o único implicante que podemos adicionar sob esta regra, conforme
mostrado na Figura 2.(5c0) .

O próximo elemento do setmis6, mas nenhum novo implicante pode ser adicionado porque o conjunto de
implican já contém . Então continuamos procurando o próximo elemento do set, whmic1h3.is Podemos agora
adicionar o implicante . Observe que o implicante já está coberto pelo implicante principal,t, então não o
adicionamos ao K-map. O estado do processo até este ponto é mostrado na Fig(urde) .2.50

O próximo 1 ém8, que contribui com três implicantes primos adicionais, na , e . Isso é mostrado
Figura 2.50(e). O processo continua comm th9 em10, mas estes não adicionam novos implicantes primos.

Todos os elementos do on-set estão agora cobertos e obtivemos todos os implicantes primos. O ne é
identificar os implicantes primos essenciais. Os principais implicantes destacados de Figur(ef)2,.50 e
, são os primos essenciais porque eles exclusivamentem co6vaprtdm10, respectivamente.

O último passo é cobrir os 1 restantes que ainda não foram cobertos pelos primos essenciais. Isso é
realizado pelo único implicante primo. O processo de enumerar os principais implicantes encontrou s
deles, mas três foram suficientes para cobrir todo o set. A função final minimizada é

2.3.6 K-Maps Revisitados: Funções de Cinco e Seis Variáveis

O método K-map não se limita a quatro variáveis ou menos, embora usá-lo para visualizar funções com
mais de quatro variáveis seja mais desafiador. É importante lembrar que wnit-hin um mapa de variável,
devemos verificar a adjacênciandireções. Felizmente, podemos lidar com a adjacência de até seis variáveis,
simplesmente empilhando dois ou quatro K-maps de 4 variáveis.

K-Maps de cinco variáveisUm mapa de cinco variáveis é mostrado na Figura 2(.5a1).


Vamos considerar a seguinte função booleana:

F(A,B,C,D,E) =UMA m(2,5,7,8,10,13,15,17,19,21,23,24,29,31)

O K-map preenchido é mostrado na Figura 2.(5b1) . Omitimos as entradas 0 para reduzir a confusão na figura.
Ao procurar por adjacências, além de olhar nos quatro squ horizontais e verticais que fizemos no K-map de
quatro variáveis, também devemos olhar para cima ou para baixo. O início do exemplo é coberto pelos quatro
implicantes principais (grupo de 8), (grupo de 4), (grupo de 2) e
(grupo de 2).
K-Map de Seis VariáveisO mapa K de seis variáveis está para o mapa de cinco variáveis como o mapa de quatro variáveis
está para t três variáveis: o número de planos de quatro variáveis é aumentado de dois para quatro. Isso é mostrado em F
2.52(a).

Um exemplo de K-map de seis variáveis é mostrado na Figura 2(.b5)2. A função é

F(A,B,C,D,E,F) =UMAm(2,8,10,18,24,26,34,37,42,45,50,53,58,61)

Além das adjacências horizontais e verticais, devem ser verificados os planos imediatamente acima
e abaixo do elemento examinado. O plano superior também envolve o plano inferior. No set é
coberto por três implicantes principais: (um grupo de 8) , (um grupo de 4) e (uma
grupo de 4).

[Início] [Próximo] [Anterior ]

Este arquivo foi atualizado pela última vez em 23/06/96 às


19:47:39. randy@cs.Berkeley.edu ;
[Início] [Próximo] [Anterior ]

2.4 Ferramentas CAD para Simplificação

O algoritmo que apresentamos na seção anterior para extrair implicantes primos essenciais de um mapa pode formar a
base para ferramentas baseadas em computador. Nesta seção, examinamos algoritmos baseados em computador para
simplificação de dois níveis com mais detalhes. Começamos com o método Quine-McCluskey, primeiro algoritmo completo
para simplificação. Completamos esta seção abordando os métodos usados para o expresso, uma ferramenta popular
para minimização de dois níveis. Embora não seja garantido encontrar a melhor expressão de dois níveis, o espresso usa
vários truques para encontrar uma boa solução o mais rápido possível.

2.4.1 Método Quine-McCluskey

Exceto em casos especiais ou para tabelas verdade particularmente esparsas, o método K-map simplesmente quebra além
de seis variáveis. Precisamos de um algoritmo mais sistemático. O método Quine-McCluskey, desenvolvido em meados da
década de 1950, encontra a representação minimizada de qualquer expressão booleana. Ele fornece um procedimento
sistemático para gerar todos os implicantes primos e então extrair um conjunto mínimo de prims cobrindo o on-set.

O método encontra os implicantes primos aplicando repetidamente o teorema da unidade, exatamente como fizemo
e nesta seção. A contribuição de Quine-McCluskey é fornecer um método tabular que garante que os implicantes
primos sejam encontrados. Para entender como funciona, vamos usar o mesmo exemplo da FigFclaro 2 =UMAm(
4,5,6,8,9,10,1)3 +d(0,7,15).

Encontrando implicantes primosO primeiro passo é listar todos os elementos do conjunto on-set e don't-care em termos
de seus índices de termos mínimos, representados como um número binário. Os elementos são agrupados de acordo com
o número de 1's na representação binária.
A Tabela 2.1 mostra a estrutura de uma tabela implicante de Quine-McCluskey. A primeira coluna contém os termos do on
set, ou seja, pontos únicos no espaço booleano. No exemplo, cada um desses termos de produto de quatro variáveis de
representação (um termo mínimo). Como resultado da aplicação do método, a segunda coluna
contêm implicantes que formam arestas no espaço booleano: termos de produto de três variáveis. Após outra
iteração do método, a terceira coluna conterá implicantes maiores que representam planos no espaço
booleano: termos de duas variáveis. Uma terceira iteração encontrará cubos implicantes no espaço: termos one
vari.

Começamos o método preenchendo a primeira coluna da tabela da seguinte forma. Cada grupo dos índices min-ter
do conjunto on-set e don't care é separado por uma linha em branco. O primeiro grupo não tem 1's em th índices, o
segundo tem um 1 em cada índice, o terceiro tem dois 1's em cada índice e assim por diante.

Para aplicar o teorema da união sistematicamente, compare os elementos do primeiro grupo com cada elemento do
segundo. Se eles diferirem por um único bit, isso significa que os termos mínimos que os números representam são
adjacentes ao espaço booleano in-dimensional. Por exemplo, 0=000 e 0100= podem ser combinados no implicante de
acordo com o teorema da unidade. O último termo é representado simbolicamente por 0-00. Cada vez que um novo
implicante é formado, ele é colocado na próxima coluna. Como e grupo difere em sua contagem de 1 por um, é
suficiente restringir as comparações com grupos adjacentes para de quando o teorema da unidade pode ser
aplicado.

Vamos aplicar o algoritmo Quine-McCluskey a toda a primeira coluna. Começamos com o primeiro grupo (
no 1's) contra o segundo grupo (pone 1). 0000 é comparado com 0100 e 1000, rendendo prazo
para a segunda coluna de 0-00 e -000 respectivamente. Cada vez que um termo contribui para um novo imp ele recebe
uma marca de verificação. Isso significa que o implicante não é primo: ele pode ser combinado com algum elemento para
formar um implicante maior.

Repetimos para o segundo grupo contra o terceiro grupo. 0100 combina com 0101 e 0110, dando e
01-0 na segunda coluna. 1000 combina com 1001 e 1010, resultando em 100 e 10-0.

Agora vamos tentar o terceiro grupo contra o quarto grupo. 0101 combina com 0111 e 1101 para dar 01 e
-101. 0110 combina com 0111 para produzir 011-. 1001 combina com 1101 para dar 1-01. 1010 combinam
com qualquer elemento do quarto grupo.

Quando comparamos o quarto com o quinto grupo, dois termos adicionais são adicionados: -111 e 11-1.

O procedimento é repetido para os grupos da coluna II. Para que os elementos sejam combinados, eles devem
ser por um único bit e devem ter seu "-" na mesma posição de bit. Os elementos do primeiro grupo não
combinam com quaisquer elementos do segundo grupo. Marcamos estes com asteriscos porque eles são
implicantes p: nós os expandimos tanto quanto possível.

No segundo e terceiro grupos, 010- pode ser combinado com 011-, resultando em 01-- para a terceira coluna e 01-1
são combinados para derivar o mesmo termo condensado. 100- e 10-0 não podem ser combinados fu e são
implicantes principais.
Entre o terceiro e quarto grupos apenas o termo adicional -1-1 é adicionado à terceira coluna,
derivado das combinações de -101 e -111, e 01-1 e 11-1.

Os elementos da terceira coluna não podem ser reduzidos ainda mais. Ambos são marcados como implicantes primos,
nenhum novo implicante é adicionado, encontramos todos os implicantes primos e a primeira fase do algoritmo pode
agora terminar.

O algoritmo encontrou os seguintes implicantes principais:

0-00 = - 000 =

100- = 10-0 =

1-01 = 01-- =

- 1-1 =

Estes são mostrados circulados no K-map da Figura 2.53.

Eles são exatamente os mesmos implicantes principais que encontramos na seção anterior. Observe que
na parte t do procedimento, os don't cares foram tratados como se fossem 1's.

Encontrando a Cobertura MínimaO segundo passo do método é encontrar a menor coleção de implicantes
prim que cobrem o conjunto completo da função. Isso é feito por meio do gráfico de implicantes primários (em
oposição ao gráfico de implicação usado no primeiro p)h,a como mostrado na Figura 2.54.

O gráfico dos principais implicantes está organizado da seguinte forma. As colunas são rotuladas com o termo
mínimo que indica o início. Observe que don't cares não estão incluídos nesta etapa. As linhas são rotuladas com
a mincoberta por um determinado implicante primo. Isso é feito tomando os índices da representação
implicante principal e substituindo cada "-" por todas as combinações possíveis de 1's e 0's. Por exemplo, -1-
torna-se 0101, 0111, 1101, 1111, que são os índices do min.m 5r,ms7,m13, em15. UmXé
- te
colocado no local (linha, coluna) se o termo mínimo representado pela coluna for coberto pelo
implicante pr associado à linha. A configuração inicial é dada na Figura ( 2 a).5.4
Em seguida, procuramos implicantes primos essenciais. Estes são imediatamente aparentes sempre que há um Xem
qualquer coluna. Isso significa que existe um termo mínimo que é coberto por um e apenas um implicante primo. Os
implicantes principais essenciais devem participar da cobertura final. Colocamos uma linha através de coluna e linha
na qual o implicante primo essencial foi encontrado e colocamos uma caixa ao redor do primo. Isso é mostrado na
Figura 2.(5b4).

Os implicantes primos essenciais geralmente cobrem termos mínimos adicionais. Cruzamos todas as colunas
que umXem uma linha associada a um primo essencial. Esses termos mínimos já estão cobertos pelos ess
primos. Isso é mostrado na Figura 2.(5c4).

No exemplo, dois termos mínimos ainda estão descobertos, representados pelas colunas 9 e 13. O final para
encontrar o menor número possível de primos que cubram os termos mínimos restantes. Em nosso exemplo, o
único implicante p 1-01 cobre ambos. Adicioná-lo aos dois implicantes primos essenciais já encontrados
completa a capa. Isso é mostrado na Figura (2d . 5)4. A solução encontrada aqui é idêntica à w
encontrado anteriormente na Figura 2.50.

2.4.2 Método Expresso

Infelizmente, o número de implicantes primos cresce muito rapidamente à medida que o número de entradas
aumenta, pode-se mostrar que o limite superior do número de implicantes primosns.isFi3nnd/ing um conjunto mínimo
A cobertura também é conhecida por ser um problema muito difícil, o chamado problema NP-completo. Isso significa
provavelmente não haverá algoritmos eficientes para resolvê-lo.

Assim, grande parte do trabalho em minimização lógica concentrou-se em métodos heurísticos para realizar as duas
etapas mais rapidamente, encontrando uma solução mínima rapidamente em vez de garantir que um sol mínimo
será encontrado. A técnica primária evita gerar todos os implicantes primos calculando judiciosamente o
subconjunto de primos que ainda cobrem o on-set. Nesta subseção, examinaremos os algoritmos e as técnicas
usadas no café expresso.

Algoritmos usados emExpressoEspresso é um programa para minimização de funções booleanas de dois níveis,
prontamente disponível na Universidade da Califórnia, Berkeley. Ele combina muitas das melhores técnicas
heurísticas desenvolvidas em programas anteriores, como mini e presto. Embora uma explicação detalhada do
funcionamento do espresso esteja além do escopo deste (bsoeoekBrayton et al. na referência do capítulo), as idéias
básicas empregadas pelo programa não são difíceis de entender. Eles são os seguintes:

1. Em vez de começar gerando todos os implicantes e depois encontrar aqueles que são primos, o
expresso expande os implicantes em seu tamanho máximo. Implicantes que são cobertos por
implicante expandido são removidos de consideração adicional. Este processo é chamado
EXPANDIR. Quão bem isso funciona depende criticamente da ordem e direção em que os
implicantes são expandidos. Muito do poder do expresso está em seus métodos para direcionar e
ordenar a expansão.
2. Uma cobertura irredundante (ou seja, uma para a qual nenhum subconjunto próprio é também extraído do
implicantes expandidos. O método é essencialmente o mesmo que o método do gráfico implicante princip
de Quine-McCluskey. Esta etapa é chamada de COBERTURA IRREDUNDANTE
3. Neste ponto, a solução geralmente é muito boa, mas sob certas condições pode ser melhorada.
Pode haver outra capa com menos termos ou o mesmo número de termos, mas menos literais.
Para tentar encontrar uma cobertura melhor, o espresso primeiro reduz a implica principal para
menor tamanho que ainda cobre a função lógica. Este processo é chamado de REDUZIR
4. Como a redução produz uma cobertura que normalmente não é mais primo, a sequência de
etapas REDUÇÃO, EXPANDIR e COBERTURA IRREDUNDANTE são repetidas de tal forma que os
implicantes primos alternativos são derivados. O Espresso continuará repetindo essas etapas
enquanto gerar uma cobertura que melhore a última solução encontrada.
5. Várias outras estratégias são usadas para melhorar o resultado ou para computá-lo mais qu Estas
incluem (a) identificação precoce e extração de implicantes primos essenciais, para que não
precisem ser revisitados durante a etapa (b4); usando o complemento da função para verificar
eficientemente se um passo EXPAND realmente aumenta a cobertura do fu(ntchte íon
min-termos cobertos por um implicante expandido podem já estar cobertos por outro implicante
expandido, então o implicante recém-expandido não deve ser colocado em the; cov e(c) um passo
especial de "último suspiro" que garante que nenhum implicante primo ca adicionado à cobertur
de tal forma que dois primos possam ser eliminados.

A entrada do Espresso é uma tabela verdade codificada. Para o exemplo da Figura 2.50, a entrada é mostrada em F 2.55.
As duas primeiras linhas descrevem o número de entradas e saídas da função. Os próximos dois descrevem os
nomes dos símbolos de entrada e o nome da função de saída. A próxima linha fornece o número de termos
produ usados para especificar a função. Neste caso, há 10 termos: sete 1's e três não ca Cada termo é listado
por seu índice de mínimo-termo, codificado em binário, seguido por um 1 ou um "-". O último indica um não me
importo. A última linha indica o final da lista de termos do produto.

A tabela verdade minimizada de saída é mostrada na Figura 2.56.

As primeiras quatro linhas têm o mesmo significado de antes. A codificação para a cobertura mínima é
idêntica à utilizada no método Quine-McCluskey. 1-01 corresponde a ,to10-0 a , e 01-- a .

Para ver como a iteração de REDUCE, IRREDUNDANT COVER e EXPAND pode melhorar a co, considere o
K-map de quatro variáveis da Figura 2.57.
A Figura 2.57(a) mostra os primos encontrados pelo espresso depois de executar os passos 1 e 2 para o primeiro tempo te
quatro implicantes primos e é uma cobertura irredundante, mas esta não é a cobertura mínima possível.

Os resultados da etapa REDUCE são mostrados na Figura (2b.) 5.7 O implicante primo foi
reduzido ao implicano (tnão mais primo)e, e foi reduzido a (também não é mais primo). A
escolha particular de reduções depende da heurísticae ssumapness
rd 'os ordem de execução. o
resultado da segunda iteração de EXPAND é mostrado na Figura (2c.) 57 . O expresso mantém a última
cobertura irredundante, e seus algoritmos de expansão garantem que nunca gere a mesma cobertura A
COBERTURA IRREDUNDANTE extraída pelo expresso é dada na Figura (2d.)5.7 A cobertura de três produtos é de
fato uma melhoria em relação ao resultado original.

[Início] [Próximo] [Anterior ]

Este arquivo foi atualizado pela última vez em 23/06/96 às


19:47:39. randy@cs.Berkeley.edu ;
[Início] [Próximo] [Anterior]

2.5 Questões Práticas

Até agora, nos concentramos nos aspectos matemáticos da representação de hardware em termos de
funções B e nas técnicas e algoritmos para obter expressões booleanas minimizadas. Nesta seção,
mudamos o foco para considerações mais práticas, como as tecnologias subjacentes que implementam
funções digitais, como as portas lógicas são combinadas em pacotes de circuitos integrados e as
técnicas padrão para documentar esquemas lógicos.

2.5.1 Métricas de Tecnologia

Quando se trata dos aspectos de desempenho do design, existem diferenças nas tecnologias subjacentes que
podem tornar uma tecnologia mais atraente do que outra. Os circuitos bipolares vêm em uma ampla gama de
famílias TTL (log de transistor-transistor) ic, com diferentes compensações em velocidade e potência do circuito,
e a família E(CeLmitter-coupled logi)c de velocidade muito alta. A família MOS mais popular é a CMOS (MO
complementar)S, composta porn-canal ep-dispositivo de canal (consulte o Apêndice B ).

As principais métricas de tecnologia, resumidas na Figura 2.58, incluem atraso de porta, grau de dissipação de energia de
integração, margem de ruído, custo do componente, fan-out e capacidade de acionamento. Em geral, os mais rápidos
consomem mais energia, geram mais calor, não podem ser embalados de forma tão densa e são mais sensíveis a
problemas de ruído.

Atraso do portão:Se uma alteração na entrada causar uma alteração na saída, o atraso da porta é o atraso d
tempo das alterações. Geralmente é medido desde a entrada atingindo 90% do seu valor final até a saída
atingindo 90% do seu valor final. Em geral, as tecnologias bipolares são mais rápidas que MOS, com E
alcançando os tempos de comutação mais rápidos, embora a diferença entre MOS e bipolar seja estreita Gra
de integração:Isso representa a área necessária para implementar uma determinada função na tecnologia
subjacente. Os circuitos MOS são muito mais densos do que os bipolares. Para circuitos integrados de
pequena escala (SSI), um pacote contendo até 10 portas lógicas, e para circuitos integrados de média escala
(MSI), um pacote contendo até 100 portas, essa métrica provavelmente não é importante. No entanto, em
matrizes de portas de grande escala e integração de muito grande escala (cV irL
cu
SiIt)s,
contendo milhares de portas, MOS tem uma vantagem de integração distinta sobre bipolar. Dissipação de
energia:Os portões consomem energia à medida que realizam suas funções lógicas, gerando h
que deve ser dissipado. Circuitos bipolares normalmente comutam mais rápido que MOS, gerando calor e
consumindo mais energia. Os circuitos ECL consomem mais energia. Os circuitos MOS, especialmente o CMOS,
podem ser projetados para consumir muito pouca energia, como evidenciado pela vida útil da bateria que aliment
os circuitos CMOS de um relógio digital. No entanto, em circuitos MOS, a potência é em parte uma função da
frequência com que o circuito altera as saídas. Surpreendentemente, os circuitos CMOS podem exceder a
dissipação de energia dos circuitos bipolares nas mesmas velocidades de comutação muito altas.

Margem de ruído:Esta é a tensão máxima que pode ser adicionada ou subtraída das tensões logi e
ainda assim o circuito interpreta a tensão como o valor lógico correto. As modernas tecnologias TT e
CMOS têm boas margens de ruído. ECL ganha um pouco de sua velocidade de tensões reduc para
representar 0 e 1, e esta oscilação de tensão reduzida requer um ruído mais apertado ma Custo do
componente:Em geral, os componentes TTL são muito baratos, os componentes MOS são de custo
médio e os componentes ECL são os mais caros.
Espalham:Definimos fan-out no Capítulo 1 como o número de entradas de porta às quais uma determinada
saída de gat pode ser conectada devido a limitações elétricas. Fan-out é uma métrica relacionada com a qual
portas podem ser compostas em funções mais complexas. Os circuitos MOS podem ser em cascata com um
grande número de outros circuitos MOS sem sofrer degradação nos sinais transmitidos. No entanto, os
atrasos de sinal aumentam com o fan-out. A velocidade dos circuitos bipolares varia com o fan-out, mas a
qualidade do sinal é drasticamente reduzida à medida que o fan-out aumenta.
Capacidade de condução:Portões discretos, conforme apresentados neste capítulo, geralmente são colocados
com outros portões em pacotes prontos para uso. A capacidade de condução mede a velocidade das comunicaçõe
entre os componentes empacotados. Em geral, os circuitos MOS têm menos acionamento de circuito do que os
circuitos bipola, tornando seu atraso pacote a pacote maior. Por causa das diferenças na eletrônica inter, você dev
ter muito cuidado ao misturar bipolar e MOS dentro do mesmo sistema. Embora os circuitos MOS possam conduzi
muitos outros circuitos MOS, eles normalmente podem conduzir apenas um circuito bipolar sin.

2.5.2 Lógica empacotada TTL

TTL é uma família de componentes lógicos empacotados que possui amplo uso na indústria. Na verdade, é bem conhecido
pelos projetistas que mesmo bibliotecas para componentes VLSI, implementadas na tecnologia MOS radicalmente diff,
fornecem exatamente os mesmos tipos de funções lógicas de portas NAND para adição binária e além. O conhecimento da
funções lógicas disponíveis no TTL é facilmente transferido para quase todas as tecnologias ev que podem ser usadas para
projetos digitais. E a maioria dos alunos que estão aprendendo design de hardware na época trabalhará com a tecnologia
TTL em seus laboratórios introdutórios de hardware.

Neste capítulo vimos os vários tipos de portas lógicas simples. Um pacote de circuito integrado TTL
normalmente contém vários deles. Os componentes da série 74 da Texas Instruments fornecem o esquema de
numeração stan usado pela indústria. Por exemplo, o nome de um pacote contendo quatro portas NAND de 2
entradas é "7400", enquanto um "7404" contém inversores (sihxex).

Integração de pequena e média escalaComponentes contendo um punhado de portas primitivas são chamados de
integração de pequena escala ou componentes SSI. Esses componentes normalmente contêm menos de 10 log
portões em um único pacote. No Capítulo 4, conheceremos a integração de média escala ou componentes MSI. Eles
implementam funções mais complexas do que portas simples de duas entradas e normalmente contêm entre 100
portas lógicas.

Na tecnologia TTL, portas lógicas estão disponíveis em pacotes retangulares duplos em linha, também conhecidos como "d
Os pinos que conectam a lógica interna à externa são colocados ao longo das duas bordas longas do pacote de pinos do
pacote mostrado na Figura 2.59, juntamente com um diagrama de sua lógica interna e conectividade de pinos

Um pacote típico de 14 pinos mede aproximadamente 0,75 polegada em uma dimensão e 0,3 polegada no o

Os pacotes TTL vêm em uma variedade de configurações de pinos, desde o pacote de 14 pinos (a7gpeisns por sid)e até o
pacote de 64 pinos (s32 pinos por sid)e. Em um pacote TTL, a borda superior geralmente é distinguida por um recuo. O pin
imediatamente à esquerda deste é rotulado como #1. Muitas vezes você encontrará um pequeno b próximo a este pino.

Os pinos são numerados no sentido anti-horário começando com o pino #1 no canto superior esquerdo. O pi
no canto inferior esquerdo (rpin #7 neste caso) é geralmente conectado ao solo (dGND), enquanto o pino em
o milho superior direito (erpin #14) está conectado à fonte de alimentação (lV yCC). Em caso de dúvida, você deve
sempre consulte o livro de dados dos componentes lógicos que você está usando para verificar o esquema de
numeração Certifique-se sempre de entender quais pinos devem ser conectados à fonte de alimentação.

A figura também mostra a conectividade dos pinos para um pacote de 14 pinos contendo quatro portas NAND de 2
entradas. Observe como os pinos são conectados dentro do pacote às entradas e saídas das portas. Normalmente, os pino
de entrada e saída são adjacentes na embalagem, mas nem sempre é assim. Você deve sempre consultar o livro de dados
da família lógica para mapas de pinagem de componentes.

Subfamílias de TTLTTL é uma família lógica. Isso significa que os componentes foram projetados para que possam
ser interconectados sem muita preocupação com a operação elétrica adequada. Por exemplo, um componente opera
com uma fonte de alimentação de 5 V. Na verdade, existem várias subfamílias de TTL, todas implementando as
mesmas funções lógicas, mas representando diferentes compensações entre a velocidade de operação e a
quantidade de energia que consomem. Em geral, quanto mais rápido o componente, mais energia ele consome.

Os componentes TTL padrão são listados como 74XX, onde XX é o número do componente. T de alta velocidade
componentes são indicados por 74HXX e componentes TTL de baixa potência por 74LXX. Os componentes H são cerca de
um terço mais rápidos que o padrão, mas usam o dobro de energia. Os componentes L usam um décimo de potência, mas
sofrem quatro vezes o atraso. Essas famílias eram populares na década de 1970, mas agora são consideradas obsoletas.

Uma grande inovação foi a introdução do Schottky TTL em meados da década de 1970. O design interno das portas t
foi alterado para incorporar um tipo mais rápido de estrutura de transistor. A família 74SXX era H TTL rápida, mas
usava aproximadamente a mesma potência que H. Isso levou à introdução de LS TTL, Schottky TTL de baixa potência
que é uma das famílias mais populares em uso atualmente. O LS TTL é tão rápido quanto o TTL padrão, mas usa
apenas 20% de sua energia.

A inovação não parou por aí. Duas famílias TTL adicionais, AS e ALS agora também estão disponíveis. O AS TTL tem o
dobro da velocidade do S TTL com consumo de energia comparável, e o ALS usa menos energia enquanto oferece
maior velocidade. Embora o catálogo completo de componentes padrão esteja disponível em TTL, apenas um
subconjunto relativamente pequeno está disponível nessas tecnologias mais recentes.

Produto Speed-PowerA partir da discussão anterior, você pode achar um pouco difícil saber qual família TTL é
melhor usar. É sempre desejável ter um sistema de alta velocidade, mas geralmente os comp são mais caros e o
sistema consome mais energia. O maior consumo de energia traduz o sistema que funciona mais quente e
precisa de refrigeração e fontes de alimentação mais caras. Uma figura importante para fins de comparação da
eficiência de famílias lógicas é o produto velocidade-potência. Para esta métrica, multiplicamos o atraso através
de uma porta pela potência que ela consome. Números menores são b retardo reduzido e potência reduzida são
ideais.

Um portão TTL padrão típico tem um atraso de 9 nanossegundos(onsd) e consome 10 miliwat(tsmW) . Seu produto
velocidade-potência é 90. A mesma porta em LS TTL experimenta o mesmo atraso, mas consome mW. O produto
velocidade-potência é melhor 18. ALS TTL tem um atraso de 5 ns e consome apenas 1,3 Seu produto velocidade-
potência é ainda melhor 6,5. Isso representa uma tecnologia extremamente eficiente. Os componentes L ALS são
usados quando o objetivo é uma boa velocidade com baixo consumo de energia.

Agora vamos ver os componentes de alta velocidade. O S TTL tem um atraso de 3 ns, um consumo de energia de 2 e
um produto velocidade-potência de 60. Não é muito mais rápido que o ALS, mas usa muito mais energia! Atraso AS
TTL de 1,6 ns, consumo de energia de 20 mW e produto velocidade-potência de 32. Esta é a tecnologia escolhida para
projetos de alta velocidade onde o consumo de energia não precisa ser baixo.

Até agora, consideramos a contagem literal como a principal maneira de determinar a simplicidade de um projeto A
contagem de pacotes de circuitos integrados é outra métrica crítica de projeto. Na tecnologia TTL, um único pacote
normalmente contém seis inversores, quatro portas de 2 entradas, três portas de 3 entradas e duas portas complexas por
pacote integrado.

Reveja as três implementações da funçãoZtioi Figura 2.9. ImplementaçãoZ g1 em TTL


requer três pacotes: um pacote de inversores, um pacote de três portas AND de 3 entradas e um pacote
de três portas OR de 3 entradasZ e2 s.também usa três pacotes: um pacote de inversores, um pacote
de quatro portas AND de 2 entradas, um pacote de quatro portas OR de 2 entradasZ. 3Bunteeds apenas dois pacotes.
De novoZ , 3 é o projeto mais eficiente em área.

2.5.3 Padrões de Documentação Esquemática

Embora seja frequentemente ignorada, a documentação adequada é uma das habilidades mais importantes de um des
Você deve ser capaz de descrever seu projeto para outros designers.

Isso significa que a documentação é principalmente sobre formas padrão de fazer as coisas. Inclui o
seguinte:

- Representando o design em papTehr.Isso envolve formas de desenhar componentes e descrever


suas composições. Uma equipe de projeto deve desenvolver e aderir a uma convenção padrão para
os componentes e os fios de sinal que os interligam.
- Representando a interfaceUMA s.n interface descreve tudo o que você precisa saber sobre um subsistema
usá-lo sem entender todo o seu funcionamento interno. Isso é como a descrição de uma sub-rotina em
um programa de computador: a documentação descreve o que as sub-rotinas fazem como os nomes,
tipos e funções de seus parâmetros. As interfaces de hardware são semelhantes às interfaces so, mas um
pouco mais complicadas. Uma interface de hardware descreve o comportamento do projeto, bem como
os nomes dos sinais e como se conectar a eles.

Símbolos Esquemáticos PadrãoAo longo deste capítulo, usamos símbolos de porta padrão para
representar componentes SSI comuns, como portas AND, OR, NAND, NOR, XOR e inversoras. G
sempre têm duas representações: lógica normal e lógica dual. A representação dupla é usada
conservar inversões ao usar sinais baixos ativos.

Alguns exemplos são mostrados na Figura 2.60.

Eles são reconhecidos por designers digitais em todos os lugares, portanto, você deve usá-los em seu trabalho, pois não
usaremos outros símbolos para as mesmas funções.

As convenções para componentes MSI são menos rígidas, mas as seguintes são típicas. As funções são representadas por
blocos com sinais de entrada/saída em vez de portas discretas. A Figura 2.61 contém um sistema esquemático
para o 74112 duaJeu-Kflip-flop, um componente TTL de 16 pinos que será apresentado no Capítulo 6.

As entradas são desenhadas à esquerda, as saídas à direita. O fluxo geral de dados é da esquerda para a direita e
inferior. Todos os sinais são rotulados com nomes significativos. Bolhas em pinos ou nomes que terminam em um sla
( "/")indicam sinais que estão ativos baixos. Os números identificam os números dos pinos do pacote. A conexão ao
terra (pino nº 8) e a fonte de alimentação (pino y nº 16) geralmente não são mostradas nos esquemas. Todo símbolo
lógico deve, sem exceção, ter seu número de peça escrito dentro dele.

Às vezes, você irá usar diferentes instâncias do mesmo conjunto de portas em vários lugares em
seu esquema. Figura 2.62.

Quando você usar essas portas em um local específico em seu esquema, desenhe um único símbolo para que a
diversão seja realizada, como o único inversor de 4 bits na figura, rotulando-o com a letra do detalhe. A ideia é
que você expanda o detalhe com sua definição.

NomesTodos os sinais que não são totalmente locais para um desenho esquemático individual devem receber um na
Se um sinal se conectar a muitos lugares em um desenho, é mais conveniente nomear o sinal uma vez que rotule os
fios locais com este nome onde ele é usado, em vez de desenhar fios para conectar os usos juntos

Os nomes são uma forma importante de documentação, por isso é uma boa ideia nomear qualquer fio cujo uso seja
trivial. Você deve usar nomes que sejam compreensíveis e descrevam a função executada pelo Por exemplo, se um
sinal fizer com que o Registro B seja apagado, então nomeie o sinal como CLEAR BREG ou CB. Mais de uma palavra
em um nome é bom. Muitas pessoas colocam os nomes dos sinais em maiúsculas para que possam distinguir do
texto na documentação. Cada nome de sinal deve ser exclusivo dentro do projeto.
Polarização e bolhasPara ver uma aplicação prática do casamento de bolhas, considere a Figura 2.63.

O designer está tentando E juntos dois bits de dados relacionados, identificarXdUMA0asandXA1. Infelizmente,
a saída da porta NAND tem o sentido oposto do que o projetista quer: se ambos os bits são 1's, a saída NAND é
0. À medida que os sinais passam pelos níveis da lógica, é bastante típico que a polaridade gire para frente e
para trás.

Para tornar mais fácil lidar com a lógica invertida, pensamos nos sinais de duas maneiras separadas,
ambas refletidas na convenção para nomes de sinais. O primeiro elemento de um nome de sinal indica
a função: LOAD PC, ou XA<0> AND XA<1>. O segundo fornece a polaridade do sinal como (r .high H) ou
baixa ( .L) . Um indicador de polaridade .H ou .L é adicionado a cada nome de sinal para indicar se sua
função ocorre quando o -sinal é 1 ou 0. Por exemplo, na Figura 2.63, o sinal XA<0>_AND_XA<1>.L está
em uma baixa voltagem( "true") quando XA<0> e XA<1> estão em altas voltagens (também "true") .
Assim, o sinal recebe uma polaridade .L. Se uma porta AND tivesse sido usada em vez de NAND, a
polaridade seria .H. Se um sinal não estiver marcado com um indicador de polaridade, o padrão é a
lógica positiva.

Um sinal com polaridade positiva(.H) é afirmado em um nível de alta tensão, e um sinal com polaridade negativa(a.Lti)ve é
afirmado em um nível de baixa tensão. Uma bolha em um símbolo lógico indica que uma entrada ou saída está invertida.
Uma entrada com uma bolha significa que o sinal de entrada deve ser declarado baixo. Uma saída borbulhada é afirmada
quando sua tensão está baixa. Uma entrada borbulhada deve quase sempre corresponder a uma saída borbulhada ou a
outro sinal especificado como sendo afirmado como ativo baixo. Entradas e saídas sem bolhas m Sinais H ou outras
entradas e saídas sem bolhas.

Porque torna os desenhos muito mais fáceis de ler, você deve combinar as bolhas sempre que possível,
você pode simplesmente ignorar a polaridade. Por exemplo, embora a Figura 2.64 e a Figura 2.65 sejam
equivalentes, na Figura 2.65 é muito mais fácil ver que cinco sinais ativos de entrada alta estão sendo AND
juntos.
Em alguns casos, as bolhas não podem ser feitas para combinar. Geralmente esses casos envolvem alguma forma de
inibição, ou seja, quando o sinal é afirmado, algo NÃO está acontecendo.

A Figura 2.66 mostra um exemplo em que um claro p(uClslearReg) está sendo controlado por outro
sinal (Permitir) . O sinal de limpeza real está ativo baixo e deve ser ativado somente quando Enable e
ClearReg forem ativados. Quando a saída da porta NAND é alta, o sinal Clear é inibido. N uso da forma
lógica positiva da polaridade do sinal de saída.

Como a saída do portão está ativa baixa, mas o rótulo do sinal está ativo alto, temos uma incompatibilidade. Ficaria mais
claro se a saída do portão fosse rotulada com a ação que entra em vigor quando o sinal é declarado baixo. A renomeação
cuidadosa de um sinal pode fazer com que a incompatibilidade desapareça. Nesse caso, você simplesmente substitui
InhibitClear.H por EnableClear.L.

Crossovers e conexõesTodas as conexões entre os fios devem ser marcadas com "blobs", conforme mostrado na
Figura 2.67.
Tenha cuidado para deixar bem claro quando os sinais se cruzam sem conexão e quando as conexões são
feitas.

Documentação Hierárquica e Referência Cruzadaeu sprojetos de arge não podem caber em uma única folha de
papel. Eles devem ser distribuídos adequadamente por muitas páginas, e os sinais cruzarão os limites da página
se tudo coubesse em uma folha, provavelmente não seria prático desenhar fios para cada conexão que a folha
transformasse em um ninho de ratos de linhas. Assim, você precisa fazer uso adequado de hierarquia e
abstração em sua apresentação do design.

As primeiras páginas devem conter um diagrama de blocos grosseiro mostrando o grupo principal de componentes.
Os sinais que saem ou entram em um desses blocos devem ser mostrados. As páginas subsequentes expandirão os
blocos hierarquicamente em mais e mais detalhes. Assim, o mesmo sinal pode aparecer em vários lugares
desconectados. É importante manter o controle de onde os sinais são usados, facilitando a verificação de desenhos e
a verificação de fan-outs de sinal.

Espera-se que você observe várias convenções para acompanhar o uso do sinal. Todas as fichas de entrada
devem entrar na margem superior ou esquerda da ficha; todas as saídas da folha devem terminar na margem
inferior ou direita. Se um sinal é tanto uma entrada quanto uma saída, você pode escolher.

Cada página de seu projeto deve ser nomeada em algum lugar visível e também deve ser entorpecida. Os sinais
que saem de uma página devem levar um rótulo único e uma indicação de outras páginas nas quais se encontra
entrando. Da mesma forma, todos os sinais de entrada devem levar o rótulo do nome próprio e uma indicação
da página de onde vêm. Idealmente, se cada página corresponde a algum bloco em uma página anterior, então
essa página anterior é um diagrama de blocos que mostra todas as interconexões entre os blocos. As entradas e
saídas de qualquer bloco devem corresponder a todos os s de entrada e saída na página detalhada e devem ter
os mesmos nomes de sinal.
Revisão do Capítulo

Neste capítulo, apresentamos uma variedade de blocos de construção lógicos primitivos: as portas Inversor, AND, O
NAND, NOR, XOR e XNOR, com as quais podemos implementar qualquer função booleana. Apresentamos também as
duas formas canônicas primárias para descrever uma função booleana: soma dos produtos produto das somas. Uma
função pode ter muitas expressões booleanas equivalentes, mas apenas uma representação em uma forma canônica
O processo de minimização lógica busca encontrar a expressão equivalente com o menor número de termos e o
menor número de literais por termo. As condições não importa nas entradas podem ser usadas para simplificar
substancialmente a expressão. Expressões reduzidas levam a realizações de circuitos com menos portas e menos
entradas, pelo menos se o alvo for um circuito de dois níveis, a minimização lógica real será discutida no próximo
capítulo.

A expressão mínima pode ser obtida através da aplicação criteriosa das leis e teoremas da álgebra
booleana, embora este seja um processo tedioso e sujeito a erros. O K-map fornece uma reformulação
gráfica da tabela verdade que nos ajuda a visualizar adjacências multidimensionais. Estes identificam
oportunidades para aplicar sucessivamente o teorema unificador ) reduzir uma função ao seu
forma equivalente mínima. Obviamente, o método K-map não fornece um algoritmo, uma sequência
detalhada de etapas, que garante que a melhor solução possível será obtida. Embora seja adequado para
soluções de lápis e papel, para todos os propósitos práticos, o método é limitado a seis variáveis

Por outro lado, o método de Quine-McCluskey é um algoritmo rigoroso adequado para qualquer número de
variáveis, mas requer um grande número de etapas para encontrar a forma mínima. Como compromisso,
apresentamos os algoritmos do espresso, uma ferramenta de projeto auxiliado por computador para
minimização lógica. Ele identifica os implicantes e os expande em primos da mesma maneira que um designer
humano faz, mas aplica métodos heurísticos sistematicamente para melhorar a boa solução obtida inicialmente
Como não é garantido obter a expressão mínima de dois níveis, apenas uma solução muito boa.

Na seção final do capítulo, examinamos alguns aspectos da lógica TTL e da documentação de esquemas. A lógic
TTL vem em pacotes com convenções padrão para conexão e pinagem da fonte de alimentação. Os padrões de
documentação lidam com maneiras de desenhar esquemas, tornando-os legíveis para outros projetistas. As
convenções incluem abordagens padrão para formas esquemáticas, conservação da polaridade do nome do
sinal, fluxo de dados e interconexão de componentes.

Leitura adicional
O trabalho original de George Boole foi publicado em meados do século XIX. Obviamente, ele não tinha
hardware de computador em mente na época. Em vez disso, ele tentou desenvolver uma lógica ba matemática.
Os axiomas básicos que apresentamos na Seção 2.1 são chamados de axiomas de Huntington. Estes foram
publicados por EV Huntington em um artigo intitulado "Sets of Independent Postulates for the Algebra Logic",
em Transactions of the American Mathematical Soc(ieVto). ylume 5) em 1904. CE Shannon foi
o primeiro a mostrar como a álgebra booleana pode ser aplicada ao design digital em seu artigo de referência
"A Symbolic Analysis of Relay and Switching Circuits", em Transactions of the AIEE, 57, 713-723, 193
O método K-map foi descrito em um artigo de M. Karnaugh em(1"9A5M 3 ap Método para Síntese
of Combinational Logic Circuits," Transactions of the AIEE, Communications and Electronics, 72,
593-599, novembro de 195) 3. Curiosamente, apesar de Karnaugh receber o crédito, a ideia de
origem é de EW Veitch ("A Chart Method para Simplifying Boolean Functions," Proceedings of
the ACM, May 1952, pp. 127-13). 1", código mais difícil de lembrar.

O método K-map é adequado apenas para problemas relativamente simples. O método Quine-McCluskey
forma a base de todos os algoritmos para reduzir equações de um número arbitrário de variáveis. Os
artigos que descrevem o método podem ser encontrados em WV Quine, "A Way to Simplify Truth Functions
American Mathematical Monthly, 62, 9, 627-p;631, 1955, e EJ McCluskey, "Minimization of Boolean
Functions", Bell Systems Technical Journal, 35, 5, 1417-p;1444, novembro de 1956.

Uma descrição matemática muito detalhada dos algoritmos no coração do design assistido por
computador, como o expresso, pode ser encontrada em RK Brayton, GD Hachtel, CT McMullen e AL
Sangiovann Vincentelli, Logic Minimization Algorithms for VLSI Synthesis, Kluwer Academic Publishers,
Bosto 1984 .

Todos os livros didáticos de design digital descrevem a simplificação booleana de uma forma ou de outra.
Para abordagens alternativas, ver JF Wakerly, Digital Design Principles and Practices, Prentice-Hall,
Englewood NJ, 1990; SH Unger, The Essence of Logic Circuits, Prentice-Hall, Englewood Cliffs, NJ, 1989; a CH
Roth, Jr., Fundamentals of Logic Design, West Publishing Co., St. Paul, MN, 1985.

[Início] [Próximo] [Anterior ]

Este arquivo foi atualizado pela última vez em 23/06/96 às


19:47:39. randy@cs.Berkeley.edu ;
[Topo] [Próximo][Anterior ]

Exercícios

1.(Gate Logic) Desenhe esquemas para as seguintes funções em termos de AND, OR e inversor gat X(S+
Z)

XY+XZ

C(X+YZ)

2. ( Gate Logic) Desenhe os esquemas para as seguintes funções usando portas NOR e inversores o

3. (Gate Logic) Desenhe os esquemas para as seguintes funções usando apenas portas NAND e inversores:

4.( Gate Logic) Desenhe redes de comutação para os operadores booleanos XOR e XNOR.
5.( Gate Logic) Projete um circuito de luz de hall para a seguinte especificação. Há um interruptor em
cada extremidade de um corredor que controla uma única luz. Se a luz estiver apagada, mudar a posição de qualquer um dos
interruptores fará com que a luz acenda. Da mesma forma, se a luz estiver acesa, alterar a posição de qualquer um dos
interruptores fará com que a luz se apague. Escreva suas suposições, deduza uma tabela-verdade e descreva como implementar
essa função em termos de portas lógicas ou redes de comutação.
6.(Leis e Teoremas da Alge Booleana)brU ase diagramas de comutação para demonstrar a validade de t
seguintes teoremas de simplificação:

X+XY=X

7.(Leis e Teoremas da Álge Booleana)brP sobre os seguintes teoremas de simplificação usando th


\xas primeiras oito leis da -álgebra booleana:

X(X+S) =X

8.(Leis e Teoremas da Álge Booleana)brV aerifique que OR e AND são duais um do outro.

NOR e NAND são duais um do outro.


XNOR e XOR são duais um do outro.
XNOR é o complemento de XOR:

9.(Leis e Teoremas da Álge Booleana)brP acima, usando tabelas verdade, que

10. (Leis e Teoremas da Alge Booleana)brU use o teorema de DeMorgan para calcular o compleme
das seguintes expressões booleanas:

UMA(B+CD)

11.(Leis e Teoremas da Alge Booleana)brFaorm o complemento das seguintes funções:

(A,B,C,D) = (
A,B,C,D) =

12.(euaws e Teoremas da Alge Booleana)brU Usando álgebra booleana, verifique se o esquema de


A Figura Ex2.12 implementa uma função XOR.

13.(Boolean Simpli\xde catio)nSimplifique as seguintes funções usando os teoremas de Boolean


álgebra. Escreva a lei ou teorema particular que você está usando em cada etapa. Para cada diversão
simplificada que você deriva, quantos literais ela tem?

(X,S) =
(X,S) =
(X,S,Z) =
(X,Y,Z) =
(C,X,S,Z) =

14.(Boolean Simpli\xde catio)nConsidere a função(nA,B,C,D) = . Desenhe seu


esquemático usando portas AND, OR e inversoras. Usando álgebra booleana, coloque a função em sua
forma minimizada e desenhe o esquema resultante.
15. (Formas Canônicas Considere a função(n)A,B,C,D) =Sm(0,1,2,7,8,9,10,1)5.

Escreva isso como uma expressão booleana na forma canônica de termos


mínimos. Reescreva a expressão na forma canônica maxterm.
Escreva o complemento de em "pequenom" e como uma expressão canônica de termos mínimos.
Escreva o complemento de em "biM g " e como uma expressão canônica de maxtermo.

16.(Formas Canônicas e Boolean Simpli\xde ca)tioGniven a seguinte função na forma de produto de


somas, não necessariamente minimizada:

F(W,X,S,Z) =

Expresse a função na forma canônica de soma de produtos. Usarm "li"tnleotação.


Reexpresse a função na forma de soma minimizada de produtos.
Expresse na forma de soma minimizada de produtos.
Reexpresse na forma de produto minimizado de somas.

17.(Simplificação Booleana ) Usando K-maps, encontre o seguinte:

Soma mínima de produtos para a função e seu complemento dado no Exercício 2.15.

Forma produto mínimo de somas para a função e seu complemento dado no Exercício 2.15.

18.(Simplificação Booleana ) Use o mapa de Karnaugh (sK-maps) para simplificar as seguintes funções em
forma de soma de produtos. Quantos literais aparecem em suas soluções minimizadas?

(X,S,Z) =PM(0,1,6,7)
(W,X,S,Z) =PM(1,3,7,9,11,1)5
(V,W,X,S,Z) =PM(0,4,18,19,22,23,25,2)9 (
A,B,C,D) =Sm(0,2,4,6)
(A,B,C,D) =Sm(0,1,4,5,12,1)3
(ABC,D,E) =Sm(0,4,18,19,22,23,25,2)9
(A,B,C,D,E, F) =Sm(3,7,12,14,15,19,23,27,28,29,31,35,39,44,
45,46,48,49,50,52,53,55,56,57), 5,9

19.(Simplificação Booleana ) Determine a realização minimizada das seguintes funções no


soma de produtos forma:

(W,X,S,Z) =Sm(0,2,8,9) + Sd(1,3)


(W,X,S,Z) =Sm(1,7,11,13) + Sd(0,5,10,15)
(V,W,X,Y,Z) =Sm(2,8,9,10,13,15,16,18,19,)23+ Sd(3,11,17,22) (
V,W,X,Y,Z) =Sm(0,1,2,9,13,16,18,24,2) 5+ Sd(8,10,17,19)

20.(Simplificação Booleana ) Use o método K-map para definir o produto minimizado das somas
expressões para as seguintes funções booleanas:

(ABC) =UMAÝBÝC (ABC)


=AB+BC+CA
(ABC,D) =Sm(1,3,5,7,9) + Sd(6,12,13) (ABC
,D) =PM(0,1,6,7) (A,B,C,D) =Sm(0,2,4,6)

21.(Logicamente Positivo e Negativo Mostre o seguinte:

Uma lógica positiva AND é equivalente a uma lógica negativa OR. Um


NOR lógico positivo é equivalente a um NAND lógico negativo. Uma
lógica positiva XOR é equivalente a uma lógica negativa XNOR. Uma
lógica positiva XNOR é equivalente a uma lógica negativa XOR.

22.(Método Quine-McCluskey)dUse o método Quine-McCluskey para \xde nd as formas


equivalentes mínimas para as seguintes expressões booleanas.

(X,S,Z) =Sm(2,3,4,5)
(ABC,D) =Sm(0,1,4,5,12,1)3

23.(Método Quine-McCluskey)dDada a funçãoF(A,B,C,D) =Sm(1,5,7,8,9,13,1)5 +d(4,14) , encontre a soma


mínima de produtos usando o método de Quine-McCluskey. Mostre seu processo de derivação dos
implicantes principais. Inclua o gráfico de implicação do qual sua soma mínima de formulário de produção
derivada.
24.(Método do Mapa de Karnaugh)dPode haver mais de uma forma equivalente mínima verdadeira para uma doação
Expressão booleana. Demonstre isso desenhando um K-map de quatro variáveis que tem duas formas minimizadas
diferentes para a mesma expressão booleana, cada uma com o mesmo número de termos e litera
25.(Método do Mapa de Karnaugh) d Usando um K-map de quatro variáveis, preencha-o com 1's e 0's para encontrar uma
função que ilustre os seguintes pontos. Escreva as expressões para cada uma das formas solicitadas e conte o número de
termos e literais para cada uma:

As formas de soma de produtos e produto de somas minimizadas têm o mesmo número de


termos e literais.
A forma de soma de produtos minimizada tem menos termos e literais do que a forma de produto de
somas minimizada.
A forma de produto de somas minimizada tem menos termos e literais do que a forma de soma de
produtos minimizada.

26.(Projeto de Lógica Combinacional Considere uma função booleana de cinco entradas que é ativada quando exatamente
duas de suas entradas são ativadas.

Construa sua tabela verdade.


Qual é a função na forma de soma de produtos, usando "lim ttl"notação?
Qual é a função na forma de produto de somas, usando "M bi"gnotação?
Use o método do mapa de Karnaugh para simplificar a função na forma de soma de produtos.

27.(Projeto de lógica combinacional Neste capítulo, examinamos a função incremento BCD por 1 Agora
considere uma função de incremento binário por 1 definida sobre os números binários de 4 bits de 0000 a
1111.

Preencha a tabela verdade para a função.


Preencha os quatro K-maps de 4 variáveis e \xde nd a soma minimizada dos produtos para cada
função de saída.
Repita o processo para a forma de produto minimizado de somas. O que leva à implementação
mais simples em termos do número de literais?

28.(Projeto de lógica combinacional Neste capítulo, examinamos um circuito somador binário de 2 bits. Agora
,B
np areiaC,Dformar os dois 2 bits
considere um subtrator binário de 2 bits, definido como segue. O euUMA
númerosN1 eN2. O circuito formará a diferençaN e1 -N2 no bit de saídaF s ( mais signi\xde
não pode) eG(menos signi\xde ca)nt. Suponha que o circuito nunca veja uma combinação de entrada na qual N1
é menor queN2. Os bits de saída não importam nestes casos.

Preencha a tabela verdade de quatro variáveis paraFr eG.


Preencha o K-map para a soma mínima da expressão de produtos para a funçãoFtioansdG.
Repita para encontrar a expressão do produto mínimo das somasFfaonrdG.

29.(Desenho de Lógica Combinacional nConsidere uma função de quatro entradas que produz um 1 sempre que um valor ímpar
número de suas entradas é 1.

Preencha a tabela verdade para a função.


Preencha o K-map para \xde nd a expressão da soma mínima dos produtos para a função. O
que é isso? A função pode ser minimizada usando o método K-map?
Você pode pensar em uma maneira mais econômica de implementar essa função se as portas XOR
forem permitidas?(Aviso: Será muito tedioso tentar simplificar esta função usando álgebra booleana,
então pense primeiro na questão!

30.(Combinational Logic Design)nProjete um circuito combinacional com três entradas de dadosDu2ts,D1,D0,


duas entradas de controleC1,C0, e duas saídasRs1,R0.R1
eR0 deve ser o resto depois de dividir th
número binário formado porD2,D1,D0 pelo número formado bCy1,C0. Por exemplo, euD 2,D1,D0 =
111 eC1,C0 = 10, entãoR1,R0 = 01 (ou seja, o resto de 7 dividido por 2) é. 1Observe que a divisão
por zero nunca será solicitada.

Preencha as tabelas verdade para as funções lógicas combinacionais R1 e R0.


Derive a soma minimizada de realizações de produtos dessas funções usando o método de mapa de
Karnaugh.
Desenhe um esquema de circuito que implemente R1 e R0 usando apenas portas NAND. Você pode assumir
quaisquer portas fan-in que você precisar.

[Topo] [Próximo][Anterior ]

Este arquivo foi atualizado pela última vez em 26/06/96 às


21:04:10. randy@cs.Berkeley.edu ;

Você também pode gostar

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy