02 março 2012

A álgebra de Boole



A álgebra de Boole
1 - A álgebra de Boole

Em meados do século passado George Boole, um matemático inglês, desenvolveu uma teoria completamente diferente para a época, baseada em uma série de postulados e operações simples para resolver uma infinidade de problemas.
Apesar da algebra de Boole, como foi chamada, poder resolver problemas práticos de controle e fabricação
de produtos, na época não havia Eletrônica e nem as máquinas eram suficientemente avançadas para utilizar
seus princípios.

A álgebra de Boole veio a se tornar importante com o advento da Eletrônica, especificamente, da Eletrônica
Digital, que gerou os modernos computadores.
Boole estabelece em sua teoria que só existem no universo duas condições possíveis ou estados, para qualquer coisa que se deseje analisar e estes dois estados são opostos.
Assim, uma lâmpada só pode estar acesa ou apagada, uma torneira só pode estar aberta ou fechada, uma fonte só pode ter ou não ter tensão na sua saída, uma pergunta só pode ter como resposta verdadeiro ou falso. Dizemos de maneira simples que na álgebra de Boole as variáveis lógicas só podem adquirir dois estados: 0 ou 1, Verdadeiro ou Falso, Aberto ou Fechado, Alto ou Baixo (HI ou LO), Ligado ou Desligado
Na Eletrônica Digital partimos justamente do fato de que um circuito só pode trabalhar com dois estados possíveis, ou seja, encontraremos presença do sinal ou a ausência do sinal, o que se adapta perfeitamente
aos princípios da álgebra de Boole.
Tudo que um circuito lógico digital pode fazer está previsto pela álgebra de Boole. Desde as mais simples operaçõ ou decisões, como acender um LED quando dois sensores são ativados de uma determinada maneira
ou quando uma tecla é pressionada, até girar no espaço uma imagem tridimensional.
.2 - Os níveis lógicos

Partimos então do fato de que nos circuitos digitais só encontraremos duas condições possíveis: presença
ou ausência de sinal, para definir alguns pontos importantes para o nosso entendimento.
Nos circuitos digitais a presença de uma tensão será indicada como 1 ou HI (de HIGH ou Alto) enquanto que
a ausência de uma tensão será indicada por 0 ou LO (de LOW ou baixo).
O 0 ou LO será sempre uma tensão nula, ou ausência de sinal num ponto do circuito, mas o nível lógico 1 ou HI pode variar de acordo com o circuito considerado (figura 1). Nos PCs de mesa, a tensão usada para a alimentação de todos os circuitos lógicos, por exemplo, é de 5 V. Assim, o nível 1 ou HI de seus circuitos será sempre uma tensão de 5 V. Nos laptops é usada uma tensão de alimentação menor, da ordem de 3,2 V,
portanto, nestes circuitos um nível 1 ou HI sempre corresponderá a uma tensão desse valor.
Existem ainda circuitos digitais que empregam componentes de tecnologia CMOS e que são alimentados tipicamente por tensões entre 3 e 15 V. Nestes casos, conforme vemos na figura 2, um nível lógico 1 ou HI poderá ter qualquer tensão entre 3 e 15 V, dependendo apenas da tensão de alimentação usada.
Na verdade, a idéia de associar a presença de tensão ao nível 1 e a ausência ao nível 0, é mera questão de convenção.
Nada impede que adotemos um critério inverso e projetemos os circuitos, pois eles funcionarão perfeitamente.
Assim, quando dizemos que ao nível alto (1) associamos a presença de tensão e ao nível baixo a ausência de tensão (0), estamos falando do que se denomina “lógica positiva”.
Se associarmos o nível baixo ou 0 a presença de tensão e o nível alto ou 1 a ausência de tensão, estaremos falando de uma “lógica negativa”, conforme ilustra a figura 3.

Para não causar nenhum tipo de confusão, todo o nosso curso tratará exclusivamente da lógica positiva, o mesmo acontecendo com os dispositivos eletrônicos tomados como exemplos.
Portanto, em nossa lógica, é possível associar os seguintes estados de um circuito aos valores 0 e 1:
0 V, Falso, Desligado, Nível baixo ou LO
1 - 5 V (ou outra tensão positiva, conforme o circuito),Verdadeiro, Ligado, Nível alto ou HI
3 - Operações

No dia-a-dia acostumados a realizar diversos operações lógicas, as que envolvem quantidades que variáveis. Assim, podemos soma como: Y = A + B.Onde o valor que vamos encontrar para Y depende dos valores atribuídos às letras A e B. Dizemos que temos neste caso uma função algébrica e que o valor Y é a variável dependente, pois seu valor dependerá justamente dos valores de A e B, que são as variáveis independentes. Na Eletrônica Digital, entretanto, existem operações mais simples do que a soma, e que podem ser perfeitamenteimplementadas levando em conta a utilização da álgebra booleana.
É interessante observar que com um pequeno número destas operações conseguimos chegar a uma infinidade de operações mais complexas, como por exemplo, as utilizadas nos computadores e que, repetidas em grande quantidade ou levadas a um grau de complexidade muito grande, nos fazem até acreditar que a máquina seja “inteligente”!
Na verdade, é a associação, de determinada forma das operações simples que nos leva ao comportamento muito complexo de muitos circuitos digitais, conforme ilustra a figura 4.
Assim, como observamos na figura 5, um computador é formado porum grande número de pequenos blocos
denominados portas ou funções em que temos entradas e saídas.
O que irá aparecer na saída é determinado pela função e pelo que acontece nas entradas. Em outras palavras, a resposta que cada circuito lógico dá para uma determinada entrada ou entradas depende do que ele é ou de que “regra booleana” ele segue.
Isso significa que para entender como o computador realiza as mais complexas operações teremos de começar entendendo como ele faz as operações mais simples com as denominadas portas e quais são elas.
Por este motivo, depois de definir estas operações lógicas, associandoas à álgebra de Boole, vamos estudálas uma a uma.
4 - Função Lógica NÃO ou Inversora

Nos manuais também encontramos a indicação desta função com a palavra inglesa correspondente, que é NOT.
O que esta função faz é negar uma afirmação, ou seja, como em álgebra booleana só existem duas respostas possíveis para uma pergunta, esta função “inverte” a resposta, ou seja, a resposta é o “inverso” da pergunta. O circuito que realiza esta operação é denominado inversor.
Levando em conta que este circuito diz sim, quando a entrada é não, ou que apresenta nível 0, quando a entrada é 1 e vice-versa, podemos associar a ele uma espécie de tabela que será de grande utilidade sempre que estudarmos qualquer tipo de circuito lógico.
Esta tabela mostra o que ocorre com a saída da função quando colocamos na entrada todas as combinações possíveis de níveis lógicos.
Dizemos que se trata de uma “tabela verdade” (nos manuais em Inglês esta tabela aparece com o nome de Truth Table). A seguir apresentamos a tabela verdade para a porta NOT ou inversora:
Entrada
Saída
0
1
1
0
Os símbolos adotados para representar esta função são mostrados na figura 6.

O adotado normalmente em nossas publicações é o mostrado em (a), mas existem muitos manuais técnicos e mesmo diagramas em que são adotados outros e os leitores devem conhecê-los.
Esta função pode ser simulada por um circuito simples e de fácil entendimento apresentado na figura 7.
Neste circuito temos uma lâmpada que, acesa, indica o nível 1 na saída e apagada, indica o nível 0. Quando a chave está aberta indicando que a entrada é nível 0, a lâmpada está acesa, indicando que a saída é nivel 1. Por outro lado, quando a chave é fechada, o que representa uma entrada 1, a lâmpada apaga, indicando que a saída é zero.
Esta maneira de simular funções lógicas com lâmpadas indicando a saída e chaves indicando a entrada, é bastante interessante pela facilidade com que o leitor pode entender seu funcionamento.
Basta então lembrar que:
Entrada: chave aberta = 0, chave fechada = 1
Saída: lâmpada apagada = 0, lâmpada acesa = 1
5 - Função Lógica E

A função lógica E também conhecida pelo seu nome em inglês AND pode ser definida como aquela em que a saída será 1 se, e somente se, todas as variáveis de entrada forem 1.
Veja que neste caso, as funções lógicas E podem ter duas, três, quatro ou quantas entradas quisermos eé representada pelos símbolos mostrados na figura 8.
As funções lógicas também são chamadas de “portas” ou “gates” (do inglês) já que correspondem a circuitos que podem controlar ou deixar passar os sinais sob determinadas condições.
Tomando como exemplo uma porta ou função E de duas entradas, escrevemos a seguinte tabela verdade:
Entrada A
Entrada B
Saída
0
0
0
0
1
0
1
0
0
1
1
1
Na figura 9 apresentamos o modo de simular o circuito de uma porta E usando chaves e uma lâmpada comum.
É preciso que S1 e S2 estejam fechadas, para que a saída (lâmpada) seja ativada.
Para uma porta E de três entradas tabela verdade será a seguinte:
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
Para que a saída seja 1, é preciso que todas as entradas sejam 1.
Observamos que para uma porta E de 2 entradas temos 4 combinações possíveis para os sinais aplicados.
Para uma porta E de 3 entradas temos 8 combinações possíveis para o sinal de entrada. Para uma porta de 4 entradas, teremos 16 e assim por diante.
6 - Função lógica OU
A função OU ou ainda OR (do inglês) é definida como aquela em que a saída estará em nível alto se uma ou mais entradas estiver em nível alto. Esta função é representada pelos símbolos mostrados na figura 10.
O símbolo adotado normalmente em nossas publicações é o mostrado em (a).
Para uma porta OU de duas entradas podemos elaborar a seguinte tabela verdade:
A
B
S
0
0
0
0
1
1
1
0
1
1
1
1
Vemos que a saída estará no nível 1 se uma das entradas estiverem no nível 1.
Um circuito simples com chaves e lâmpada para simular esta função é dado na figura 11.

Quando uma chave estiver fechada (entrada 1) a lâmpada receberá corrente (saída 1), conforme desejarmos. Para mais de duas variáveis podemos ter portas com mais de duas entradas. Para o caso de uma porta OU de três entradas teremos a seguinte tabela verdade:
A
B
C
S
0
0
0
0
0
0
1
1
0
1
0
1
0
1
1
1
1
0
0
1
1
0
1
1
1
1
0
1
1
1
1
1
7 - Função NÃO-E

As funções E, OU e NÃO (inversor) são a base de toda a álgebra booleana e todas as demais podem ser consideradas como derivadas delas. Vejamos:
Uma primeira função importante derivada das anteriores é a obtida pela associação da função E com a função NÃO, ou seja, a negação da função E que é denominada NÃO-E ou em inglês, NAND.
Na figura 12 temos os símbolos adotados para representar esta função.

Observe a existência de um pequeno círculo na saída da porta para indicar a negação.
Podemos dizer que para a função NAND a saída estará em nível 0 se, e somente se, todas as entradas estiverem em nível 1.
A tabela verdade para uma porta NÃO-E ou NAND de duas entradas é a seguinte:
A
B
S
0
0
1
0
1
1
1
0
1
1
1
0
Na figura 13 temos um circuito simples com chaves, que simula esta função.
Veja que a lâmpada só apagará (saída 0) quando as duas chaves estiverem fechadas (1), curto-circuitando assim sua alimentação. O resistor é usado para limitar a corrente da fonte.
Também neste caso podemos ter a função NAND com mais de duas entradas. Para o caso de 3 entradas teremos a seguinte tabela verdade:
A
B
C
S
0
0
0
1
0
0
1
1
0
1
0
1
0
1
1
1
1
0
0
1
1
0
1
1
1
1
0
1
1
1
1
0
.8 - Função NÃO-OU

Esta é a negação da função OU, obtida da associação da função OU com a função NÃO ou inversor. O termo inglês usado para indicar esta função é NOR e seus símbolos são apresentados na figura 14.

Sua ação é definida da seguinte forma: a saída será 1 se, e somente se, todas as variáveis de entrada forem 0.
Uma tabela verdade para uma função NOR de duas entradas é mostrada a seguir:
A
B
S
0
0
1
0
1
0
1
0
0
1
1
0
Um circuito simples usando chaves e lâmpada para simular esta função é mostrado na figura 15.
Observe que a lâmpada só se mantém acesa (nível 1) se as duas chaves (S1 e S2) estiverem abertas (nível 0).
Da mesma forma que nas funções anteriores, podemos ter portas NOR com mais de duas entradas. Para o
caso de três entradas teremos a seguinte tabela verdade:
A
B
C
S
0
0
0
1
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
0
9 - Função OU-exclusivo

Uma função de grande importância para o funcionamento dos circuitos lógicos digitais e especificamente para os computadores é a denominada OU-exclusivo ou usando o termo inglês, “exclusive-OR”. Esta função tem a propriedade de realizar a soma de valores binários ou ainda encontrar o que se denomina “paridade” (o que será visto futuramente).
Na figura 16 temos os símbolos adotados para esta função.
Podemos definir sua ação da seguinte forma: a saída será 1 se, e somente se, as variáveis de entrada forem diferentes. Isso significa que, para uma porta Exclusive-OR de duas entradas teremos saída 1 se as entradas forem 0 e 1 ou 1 e 0, mas a saída será 0 se as entradas forem ambas 1 ou ambas 0, conforme a seguinte tabela verdade:
A
B
S
0
0
0
0
1
1
1
0
1
1
1
0
Esta função é derivada das demais, pois podemos “montá-la” usando portas conhecidas (figura 17).
Assim, se bem que esta função tenha seu próprio símbolo e possa ser considerada um “bloco” independente
nos projetos, podemos sempre implementá-la com um circuito equivalente como o ilustrado nessa figura.
10 - Função NÃO-OU exclusivo ou coincidência

Podemos considerar esta função como o “inverso” do OU-exclusivo. Sua denominação em inglês é ExclusiveNOR e é representada pelo símbolo mostrado na figura 18.
Observe o círculo que indica a negativa da função anterior, se bem que essa terminologia são seja apropriada neste caso.
Esta função pode ser definida como a que apresenta uma saída igual a 1 se, e somente se as variáveis
de entrada forem iguais.
Uma tabela verdade para esta função é a seguite:
A
B
S
0
0
1
0
1
0
1
0
0
1
1
1
Podemos implementar esta função usando outras já conhecidas, conforme a figura 19.

11 - Propriedades das operações lógicas

As portas realizam operações com os valores binários aplicados às suas entradas. Assim, podemos representar
estas operações por uma simbologia apropriada, facilitando o projeto dos circuitos e permitindo visualizar melhor o que ocorre quando associamos muitas funções.
No entanto, para saber associar as diversas portas e com isso realizar operações mais complexas, é preciso conhecer as propriedades que as operações apresentam.
Exatamente como no caso das operações com números decimais, as operações lógicas com a álgebra Booleana se baseiam numa série de postulados e teoremas algo simples.
Os principais são dados a seguir e prová-los fica por conta dos leitores que desejarem ir além. Para entender,
entretanto, seu significado não é preciso saber como provar sua validade, mas sim memorizar seu significado.
Representações

As operações E, OU e NÃO são representadas por símbolos da seguinteforma:

a) Operação E

A operação E é representada por um ponto final(.). Assim, para uma porta E de duas entradas (A e B) e saída S podemos fazer a representação:

A . B = S

b) Operação OU

Esta operação é representada pelo sinal (+).
A operação de uma porta OU de entradas A e B e saída S pode ser representada como:

A + B = S

c) Operação NÃO

Esta operação é indicada por uma barra da seguinte forma:

A\ = S

Partindo destas representações, podemos enumerar as seguintes propriedades das operações lógicas:

1. Propriedade comutativa das operações E e OU:
A . B = B . A
A + B = B + A

2. Propriedade associativa das operações E e OU:

A.(B.C) = (A.B).C
A+(B+C) = (A+B)+C

3. Teorema da Involução:

(A negação da negação é a própria afirmação)

A\\ = A

4. A operacão E é distributiva em relação à operação OU:

A.(B+C) = A.B + A.C
5. Propriedades diversas:

A.A = A
A+A = A
A.0 = 0
A.1 = A
A+0 = A
A+1 = 1
A.A\= 0
A+A\= 1
A+A.B = A

6. Teoremas de De Morgan:
Aplicando a operação NÃO a uma operação E, o resultado obtido é igual ao da operação OU aplicada aos complementos das variáveis de entrada.

Aplicando a operação NÃO a uma operação OU o resultado é igual ao da operação E aplicada aos complementos das variáveis de entrada.
2.12 - Fazendo tudo com portas NAND

As portas NÃO-E, pelas suas características, podem ser usadas para obter qualquer outra função que estudamos. Esta propriedade torna essas portas blocos universais nos projetos de circuitos digitais já que, na forma de circuitos integrados, as funções NAND são fáceis de obter e baratas.
A seguir vamos mostrar de que modo podemos obter as funções estudadas simplesmente usando portas NAND.
Inversor

Para obter um inversor a partir de uma porta NAND basta unir suas entradas ou colocar uma das entradas no nível lógico 1, conforme figura 20.

Uma porta E (AND) é obtida simplesmente agregando-se à função NÃO-E (NAND) um inversor em cada entrada, (figura 21).
A função OU (OR) pode ser obtida com o circuito mostrado na figura 22. O que se faz é inverter a saída depois de aplicá-la a uma porta NAND.

Nenhum comentário: