Lição 5 - COMBINANDO FUNÇÕES LÓGICAS


Nas duas lições anteriores estu­damos as famílias lógicas CMOS e TTL, analisando suas características elétricas principais e a maneira como os componentes são fabricados atra­vés de alguns circuitos típicos.
Nesta lição continuaremos a es­tudar as funções lógicas, agora de uma forma mais completa. Analisare­mos o que ocorre quando juntamos diversas funções lógicas, prevendo o que acontece com suas saídas. Os circuitos complexos, como os usados nos computadores, por exemplo, se aproveitam das operações complica­das que muitas portas lógicas podem realizar em conjunto. Assim, é de fun­damental importância para nosso es­tudo saber analisar estas funções.

As tabelas verdade
Os diversos sinais de entrada apli­cados a uma função lógica, com to­das as suas combinações possíveis, e a saída correspondente podem ser colocados numa tabela.
Nas colunas de entradas coloca­mos todas as combinações possíveis de níveis lógicos que as entradas po­dem assumir. Na coluna correspon­dente à saída colocamos os valores que esta saída assume em função dos níveis lógicos correspondentes na entrada.


Figura 1

Vimos, desta forma, que a tabela verdade para uma função AND de duas entradas, como a representada na figura 1, pode ser dada por:
A B S
0 0 0
0 1 0
1 0 0
1 1 1

Veja que nas colunas de entrada (A e B) para termos todas as combi­nações possíveis, fazemos o equiva­lente à numeração binária de 0 a 3, já que:
00 = 0
01 = 1
10 = 2
11 = 3

Para uma tabela verdade feita para uma porta AND de 3 entradas tere­mos:
A B C S
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 0
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 1

Neste caso, as combinações de níveis lógicos na entrada correspon­dem à numeração binária de 0 a 7 já que:
000 = 0 001 = 1 010 = 2 011 = 3 100 = 4 101 = 5 110 = 6 111 = 7
O conhecimento da contagem bi­nária facilita bastante a elaboração de tabelas verdades, quando todas as combinações possíveis de níveis ló­gicos em 2, 3 ou 4 entradas devam ser estudadas.
Assim, uma vez que o leitor conhe­ça o comportamento das principais funções, sabendo o que ocorre na saída de cada uma quando temos determinadas entradas e sabendo elaborar tabelas verdades, fica fácil combinar funções e saber o que acon­tece em suas saídas. 

Lógica Combinacional
Vamos partir de um exemplo sim­ples de lógica combinacional usando tabelas verdades para saber o que ocorre na sua saída, com o circuito da figura 2.


Figura 2

Este circuito faz uso de uma porta AND, um inversor e uma porta OR. O resultado desta configuração é uma função combinacional com três entra­das e uma saída.
Para elaborar a tabela verdade para este circuito e assim determinar­mos todas as saídas possíveis em função das entradas, devemos levar em conta que ele é formado por duas etapas.
Na primeira etapa temos a porta AND e o inversor, enquanto que na segunda etapa temos a porta OR. Isso significa que as saídas dos circuitos da primeira etapa, que chamaremos de S1 e S2 são a entrada da segunda etapa.
Temos então de levar em conta estas saídas na elaboração da tabe­la verdade que terá no seu topo as seguintes variáveis:

A  B  C  S1 S2 S

A,B e C são as entradas dos cir­cuitos. S1 e S2 são pontos intermediá­rios do circuito que precisam ser ana­lisados para a obtenção de S, que é a saída final do circuito.
Começamos por colocar em A, B e C todas as suas condições possí­veis, ou todas as combinações de ní­veis lógicos que podem ser aplicadas ao circuito:
A B  C  S1  S2  S 
0  0  0 
0  0  1 
0  1  0 
0  1  1 
1  0  0 
1  0  1 
1  1  0 
1  1  1 

O passo seguinte é colocar os va­lores possíveis de S1, que corres­ponde à saída do inversor.

Sabemos que a tabela verdade para o inversor é:
A S
0 1
1 0

Ora, como em nosso caso A é a entrada do inversor e S1 é sua saída, podemos partir para a determinação de toda a coluna S simplesmente in­vertendo os valores de A, da seguin­te forma:

A  B  C  S1 S2 S
0  0  0  1
0  0  1  1
0  1  0  1
0  1  1  1
1  0  0  0
1  0  1  0
1  1  0  0
1  1  1  0
 
Para encontrar os valores da co­luna S2 devemos observar que ela corresponde à tabela verdade da fun­ção AND onde as entradas são B e C e a saída é S2.

B  C  S2
0  0  0 
0  1  0
1  0  0
1  1  1


Temos então:
A  B  C  S1  S2  S 
0  0  0   1   0 
0  0  1   1   0 
0  1  0   1   0 
0  1  1   1   1 
1  0  0   0   0 
1  0  1   0   0 
1  1  0   0   0 
1  1  1   0   1

Finalmente, levando em conta que S1 e S2 são entradas de uma por­ta OR de duas entradas cuja saída é S, podemos elaborar a coluna final de saídas (S)
S1  S2  S 
0   0   0 
0   1   1
1   0   1
1   1   1

Resultando na seguinte tabela:
A  B  C  S1 S2 S
0  0  0   1  0  1
0  0  1   1  0  1
0  1  0   1  0  1
0  1  1   1  1  1
1  0  0   0  0  0
1  0  1   0  0  0
1  1  0   0  0  0
1  1  1   0  1  1

Trata-se de uma função bastante interessante que pode ser definida como “a que fornece uma saída alta somente quando a entrada A estiver no nível baixo, não importando as demais entradas ou ainda quando as três entradas estiverem no nível alto”. 

Como Projetar Um Circuito Combinacional
O problema de saber o que acon­tece com a saída de um circuito for­mado por muitas funções lógicas quando suas entradas recebem diver­sas combinações de sinais não é o mais importante para o projetista de equipamentos digitais. Na verdade, muito mais importante que este pro­cedimento é justamente fazer o con­trário, ou seja, projetar um circuito que, em função de determinados si­nais de entrada, forneça exatamente na saída o que se deseja.
O projeto de um circuito que te­nha uma determinada função envol­ve um procedimento de síntese em algumas etapas.
Na primeira etapa deve ser defini­do o problema, estabelecendo-se exa­tamente qual a função a ser executa­da, ou seja, quais as entradas e quais as saídas.
Numa segunda etapa, coloca-se o problema numa tabela verdade ou ainda na forma de equações lógicas.
O procedimento que abordaremos neste curso será basicamente o da obtenção das funções a partir das ta­belas verdade e das equações lógi­cas.
Finalmente, numa terceira etapa, obtemos o circuito que exercerá as funções desejadas.
Na terceira etapa, um ponto impor­tante consiste na minimização do cir­cuito, já que na maioria dos casos pode-se implementar a mesma fun­ção de muitas formas diferentes como atesta o circuito simples apresentado na figura 3.


Figura 3

Veja que podemos ter o mesmo circuito com quantidades de portas diferentes, na prática devemos sem­pre levar este fato em conta. Não é apenas o número de portas que de­terminará a configuração final, mas sim, seu custo e a eventual utilização em outras partes do circuito.
Por exemplo, se o circuito já esti­ver usando dois inversores dos seis disponíveis num circuito integrado e a nossa função tiver uma solução um pouco maior, mas que use estes in­versores, será interessante adotá-la para aproveitar os inversores ociosos.
A seguir daremos um exemplo de como obter os circuitos a partir de uma tabela verdade.

a) Passo 1 - Determinação das equações lógicas
Lembramos que para as funções estudadas temos as seguintes repre­sentações:

Função E (AND)
Y=A.B

Função Não E (NAND)
    ___
Y=A.B

Função OU (OR)
Y=A+B

Função Não OU (NOR)
    ____
Y=A+B

Função Não (NOT) ou inversor
    __
Y=A

Função ou exclusivo
(Exclusive OR)
Y=A(+)B


Vamos tomar como exemplo a ta­bela verdade abaixo para determinar a função lógica correspondente:
A B C Y linha
0 0 0 0 1
1 0 0 1 2
0 1 0 1 3
1 1 0 0 4
0 0 1 1 5
1 0 1 0 6
0 1 1 0 7
1 1 1 1 8
 
Indicamos a linha na última colu­na de modo a facilitar as explicações seguintes.
Observamos que temos saídas no nível 0 para as linhas 0, 3, 5 e 6, en­quanto para as linhas 1, 2, 4 e 7 te­mos saídas 1.
Isso quer dizer que teremos a fun­ção OU para as linhas cuja saída é 1 que podem ser encaradas como ope­rações OR com tabelas que teriam 1 na saída apenas nas linhas 1, 2, 4 e 7, conforme mostrado a seguir:

A B C Y    A  B  C  S1    A B C S2    A  B C  S3    A B C S4 
0 0 0 0     0  0  0  0      0 0  0 0    0  0  0  0      0 0  0 0 
0 0 1 1     0 0   0  1      0 0  1 0    0  0  1  0      0 0  1 0 
0 1 0 1     0 1   0  0      0 1  0 1    0  1  0  0      0 1  0 0 
0 1 1 0  = 0 1  1   0  +  0 1 1  0 + 0  1  1  0  +  0 1  1 0 
1 0 0 1     1 0  0   0      1 0  0 0    1  0  0  1      1 0  0 0 
1 0 1 0     1 0  1   0      1 0  1 0    1  0  1  0      1 0  1 0 
1 1 0 0     1 1  0   0      1 1  0 0    1  1  0  0      1 1  0 0 
1 1 1 1     1 1  1   0      1 1  1 0    1  1  1  0      1 1  1 1 

Isso nos permite escrever as equa­ções lógicas para cada uma das qua­tro tabelas da seguinte forma:
        _   _
S1 = A . B . C que corresponde a A=0, B=0 e C=1
        _
S2 = A . B . C que corresponde a A=0, B=1 e A=0
             _   _
S3 = A . B . C que corresponde a A=1, B=0 e C=0
S4 = A . B . C que corresponde a A=1, B=1 e C=1

Como a saída S é a combinação das quatro funções temos:
S = S1 + S2 + S3 + S4

Substituindo pelos valores encon­trados teremos:
      _ _       _             _ _
S = A.B.C + A.B.C + A.B.C + A.B.C
Esta é então a função lógica que representa a tabela verdade que pro­pusemos como parte inicial do pro­blema e para a qual devemos encon­trar um circuito equivalente.


Passo 2 - Implementação dos Circuitos Combinacionais
Conforme estudamos em lições anteriores, é possível usar as portas NAND e NOR como blocos lógicos universais a partir dos quais podemos elaborar qualquer outra função ou mesmo funções mais complexas.
Para exemplificar vamos analisar uma função um pouco mais simples do que a obtida no passo anterior. Tomemos a expressão:
                  _    _   _
S = A . B . C + A . B . C Podemos tentar implementá-la usando portas NAND e eventualmente inversores, já que a barra sobre cada letra indica sua negativa, con-forme estudamos.
A operação (.) pode ser realizada utilizando-se uma porta NAND que li­gada a um inversor nos fornece uma porta AND.
Assim, conforme a figura 4, po­demos implementar A.B.C usando uma porta NAND de 3 entradas e um inversor.


Figura 4

Veja na figura 5 como a opera­ção A.B.C pode ser implementada.


Figura 5

A soma (+) pode ser implementa­da com uma porta OR ligada a dois inversores, figura 6.


Figura 6


Combinando os três circuitos po­demos chegar à configuração final desejada, figura 7.


Figura 7

Veja que a inversão da inversão usada no circuito anterior nos leva ao circuito original. Isso significa que po­demos simplificar a configuração eli­minando as duplas inversões em sé­rie. Isso nos leva à configuração final do circuito mostrada na figura 8.


Figura 8

Logo, quando temos uma expres­são formada pela soma de produtos, podemos usar portas NAND sem a necessidade de inversores, bastando apenas lembrar duas propriedades:
As combinações de entrada po­dem ser aplicadas a portas NAND.
As saídas das portas NAND po­dem ser aplicadas à entrada de uma segunda porta NAND obtendo-se na saída a função desejada.
Vamos agora fazer uma tentativa de implementar uma função usando portas NOR, o que será escolhido quando tivermos um produto de so­mas.
Tomemos como exemplo a função:
        _   _                        _
S = (A + B + C) . (A + B + C) As somas podem ser obtidas fa­cilmente a partir de portas NOR com as saída aplicadas a um inversor. A negação de NOR é OR. O circuito equivalente para três entradas é mos­trado na figura 9.


Figura 9

O produto das duas somas é obti­do com dois inversores aplicando os sinais a uma outra porta OR, ou seja, a uma outra configuração NOR.
Como nas duas linhas de sinais temos inversores em série, e o inver­sor do inverso de um nível lógico é ele mesmo, podemos simplificar o cir­cuito eliminando todos os inversores.


Figura 10  - Implementação  quase final da função


Isso nos permite chegar à confi­guração final que é mostrada na figura 11.


Figura 11 - Implementação final da função.

Assim, se quisermos implementar uma função que consiste num produ­to de somas, basta seguir dois proce­dimentos básicos:
Aplicar as entradas corresponden­tes a cada soma a uma porta OR que pode ser obtida associando-se uma porta NOR a uma inversor.
Aplicar as saídas obtidas nas fun­ções que devem ser multiplicadas a inversores que são ligados às entra­das de uma porta OR final, também obtida com a associação de um in­versor a uma porta NOR.
Como os inversores em série se anulam, eles podem ser eliminados e o circuito implementado utilizando-se apenas portas NOR.
É possível resolver o problema de implementar circuitos combinacionais reduzindo as funções a produtos de somas ou ainda a soma de produtos, casos em que podemos trabalhar com funções NAND ou NOR.
Como as duas soluções levam aos mesmos resultados, num projeto prá­tico é interessante analisar as confi­gurações obtidas para um problema nos dois casos. Adota-se então a so­lução que utilizar menos circuitos ou que for mais conveniente, por exem­plo, aproveitando portas ociosas de um circuito integrado já utilizado no mesmo projeto com outras finalida­des. 


SIMPLIFICANDO E MINIMIZANDO
Uma consequência da possibilida­de de construir funções complexas a partir de portas básicas como OR e AND (OU e E) é a otimização de um projeto aproveitando poucos tipos de circuitos integrados básicos.
Assim, se tivermos uma função que seja obtida utilizando-se portas AND e OR como a mostrada na figu­ra 12, ela terá o inconveniente de pre­cisar de dois tipos diferentes de cir­cuitos integrados.


 Figura 12.

Se quisermos esta função com cir­cuitos TTL, por exemplo, aproveitare­mos três das três portas de três en­tradas de um circuito 7411 e também precisaremos aproveitar uma das qua­tro portas OR de duas entradas de um circuito integrado 7432.
Evidentemente, estaremos usan­do dois circuitos integrados, desper­diçando 1/3 de um e 3/4 do outro.
Podemos simplificar consideravel­mente este circuito se usarmos ape­nas portas NAND com a configuração equivalente mostrada na figura 13.


Figura 13

Este circuito, que apresenta a mesma função do anterior, usa as três portas de um circuito integrado 7410. Utilizamos apenas um circuito inte­grado que é totalmente aproveitado, sem nenhuma parte ociosa. 


DIAGRAMAS DE KARNAUGH
Um processo bastante interessan­te para representar uma tabela ver­dade e a partir dela obter uma simpli­ficação dos circuitos utilizados para sua implementação é o que faz uso dos chamados diagramas ou mapas de Karnaugh.
O diagrama de Karnaugh consis­te numa tabela retangular com núme­ro de quadros que corresponde a 2 elevado ao expoente N, onde N é o número de variáveis do circuito.
Cada variável lógica ocupa no grá­fico metade da sua extensão e seu complemento ocupa a outra metade.
Na figura 14 temos o modo como são elaborados os diagramas de Karnaugh para 1, 2 e 3 variáveis, com as expressões lógicas corresponden­tes a cada caso.


Figura 14

Estas expressões são obtidas de uma forma muito semelhante à usa­da no conhecido joguinho de “bata­lha naval” onde a posição de cada “tiro” é dada por duas coordenadas, uma correspondente às linhas e ou­tra às colunas.
Na figura 15 mostramos, como exemplo, de que modo um diagrama de Karnaugh de 4 variáveis pode ser obtido com a inclusão dentro de cada quadro da expressão corresponden­te. No diagrama (b) da figura 14 os quadros foram preenchidos com os valores 0 e 1 correspondentes às en­tradas. Este diagrama é chamado também de diagrama de Veitch. Uma observação importante em relação a esta representação por 0 e 1 é que cada quadro difere do adjacente em apenas um dígito.


Figura 15

Dizemos que são adjacentes os termos que estão à direita e à esquer­da de cada quadro e também os que estão acima e abaixo. Também são adjacentes os que estiverem na mes­ma fila, mas um na primeira coluna e outro na última.
Na figura 16 temos um mapa com a identificação das adjacências.



Figura 16

Assim, o que fazemos é plotar a tabela verdade da função que dese­jamos implementar num mapa de Karnaugh com o que será possível identificar melhor as adjacências e assim fazer as simplificações.
Para que o leitor entenda como “funciona” o mapa de Karnaugh numa simplificação de uma função, vamos tomar como exemplo a função que é dada pela seguinte tabela verdade:
A  B  S
0  0  1
0  1  1
1  0  0
1  1  1 

Desejamos expressar esta tabela como a soma de produtos, o que sig­nifica que os valores adjacentes que devemos procurar na tabela são os “1”. Se fôssemos expressar esta fun­ção como o produto de uma soma, os valores considerados seriam os “0” e o procedimento final seria o mes­mo.
Construímos então o Diagrama de Karnaugh para esta tabela conforme a figura 17.


Figura 17

A partir deste diagrama nosso pró­ximo passo consiste em tentar fazer simplificações que possam levar a cir­cuitos mais simples na implemen­tação.
A idéia é agrupar os termos adja­centes iguais, havendo para isso di­versas possibilidades que são apre­sentadas na figura 18.


Figura 18

A primeira possibilidade mostrada em (a) nos leva a uma soma de três produtos, cada qual obtido pela intersecção da linha com a coluna em que está o “1” correspondente.
Assim, o primeiro está na coluna que intercepta A-0 com B-0. Ora, o valor zero na indexação indica inver­são, portanto, isso significa que o pri­meiro fator de nosso produto será:
_ _
A.B
O segundo “1” a ser considerado está na coluna A=1 e B=0, portanto, temos A invertido e B sem inversão, o que nos leva ao segundo fator de nos-so produto:
_
A.B
Finalmente, o terceiro “1” a ser considerado está na linha A=1 e B=1,
o que significa um fator com A multi-plicado por B sem inversões ou:

A.B
Como devemos expressar a fun­ção na forma de uma soma de produ­tos fazemos:
      _ _       _
S = A.B + A.B + A.B
Para o segundo caso (b) temos uma simplificação maior, já que agru­pamos os dois “1” da primeira linha de modo que podemos adotar para ele:
_
A
Para o outro valor “1” que está na casa que corresponde à intersecção de A-1 com B-1 vale a soma (sem in­versão):

A + B

A expressão final na forma de um produto de somas será então:
_
S = A + B.A
Da mesma forma chegamos à sim­plificação (b) que permite a expres­são mais simples, pois conseguimos juntar três casas adjacentes.
Raciocinando da mesma forma chegamos à expressão:
 _
S = A + B

O procedimento que vimos como exemplo envolveu uma função sim­ples com apenas duas variáveis de entrada.
No entanto, o mesmo procedimen-to é válido para qualquer número de variáveis. Os leitores interessados em aprofundar-se neste estudo devem procurar treinar os procedimentos in­dicados, trabalhando com funções cada vez mais complexas.


CONCLUSÃO
O espaço disponível para nosso curso não permite um aprofun­damento maior neste assunto e um certo treino se faz necessário para  o domínio das técnicas envolvidas. As­sim, para os leitores interessados no tema, sugerimos a procura de litera­tura complementar. Mostramos os procedimentos lógicos que permitem trabalhar com as funções de modo a chegar aos circuitos.
Assim, uma tabela verdade que tenha qualquer combinação de entra­das que nos leve a qualquer combi­nação de saída pode ser elaborada na prática com funções básicas (NOR e NAND) e isso não exige que se “que­bre a cabeça”.
Conhecendo os procedimentos para resumir tudo em produto de so­mas e soma de produtos e também o uso dos mapas de Karnaugh para simplificação, obteremos configura­ções simples que facilitam qualquer projeto.

QUESTIONÁRIO
1. Os valores combinados de to­das as entradas e a saída correspon­dente podem ser colocados numa tabela denominada:
a) Mapa de Karnaugh
b) Diagrama de Veitch
c) Tabela verdade
d) Produto de somas

2. A tabela verdade abaixo,
corresponde à qual função:
A B S
0 0 1
0 1 1
1 0 1
1 1 0

a) AND (E)
b) NAND (Não-E)
c) OR (OU)
d) NOR (Não-OU)

3. Qualquer circuito lógico pode ser implementado utilizando-se que funções básicas?
a) NAND e inversores
b) NAND e NOR
c) OR e Inversores
d) AND e Inversores

4. Para implementar um circuito que corresponda a uma função dada por uma soma de produtos usamos quais funções lógicas?
a) Portas NAND
b) Inversores
c) Portas OR
d) Não é possível fazer isso

5. Se numa implementação lógica precisarmos usar inversores em sé­rie, o que podemos fazer com eles?
a) Ligá-los à portas AND
b) Colocá-los em paralelo
c) Inverter suas saídas
d) Eliminá-los


Respostas: 1-C, 2-B, 3-B, 4-A, 5-D

Opinião

Avanços e Retrocessos (OP126)

Uma palavra muito em moda nos nossos meios, principalmente os políticos é “avanço”, se bem que dependendo da maneira como ela seja colocada, pode significar realmente um retrocesso. Nos meios tecnológicos, como o nosso o avanço é perceptível, constante e muito mais forte em sua penetração a ponto de pouco ser contestado.

Leia mais...

Informativo Mensal

 Para se manter atualizado com nossas novidades e notícias, Siga-nos pelo:
Twitter
Facebook
Linkedin

ou torne-se membro de nosso grupo:
Google Group 
Yahoo Group


Honestidade
O mundo está cheio de pessoas honestas que por toda parte só vêem patifes. (Le monde est plein debraves gens que voient partout que dês dredins.)
Jacques Chardonne (O Amor é muito mais que o amor)

Instituto Newton C Braga - 2014 - Entre em contato - Como Anunciar - Políticas do Site
+conexões

Seja mais um amigo facebook
Siga-me twitter
Apoio Social
Lions Clube de Guarulhos Sul SOS Mater Amabilis
Advertise in Brazil
If your business is Electronics, components or devices, this site is the correct place to insert your advertisement (see more)