A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Tutoriais e Programação

AoA - Cap.2 - Circuitos eletrônicos e funções booleanas

Qui

22

Fev

2007


21:26

(32 votos, média 4.22 de 5) 


Image Afinal de contas, o que é que as funções booleanas têm a ver com os computadores?

Embora haja uma discreta relação entre funções e expressões booleanas e as linguagens de programação como C ou Pascal, você deve estar admirado com o tempo que foi dedicado a este tema. Entretanto, a relação entre lógica booleana e sistemas de computador é muito grande - na verdade há uma relação direta (de um-para-um) entre as funções booleanas e os circuitos eletrônicos. Engenheiros eletrônicos que desenvolvem CPUs e outros circuitos de computador precisam dominar este assunto. Mesmo que você nunca pretenda desenvolver seus próprios circuitos eletrônicos, entender esta relação é importante caso você queira tirar maior proveito de qualquer sistema computacional.

Correspondência entre Circuitos Eletrônicos e Funções Booleanas

Para toda e qualquer função booleana é possível desenvolver um circuito eletrônico e vice-versa. Como as funções booleanas precisam apenas dos operadores booleanos AND, OR e NOT, podemos construir qualquer circuito eletrônico usando exclusivamente essas operações. As funções booleanas AND, OR e NOT correpondem aos seguintes circuitos eletrônicos: portas lógicas AND e OR e inversores (NOT). Veja a Fig.1.

AND, OR e NOT
Fig.1 - Portas AND, OR e inversor (NOT)
NAND
Fig.2 - Porta NAND
Inversor de NAND
Fig.3 - Inversor construído de uma porta NAND

Um fato interessante é que precisamos apenas de um único tipo de porta lógica para implementar qualquer circuito. Esta porta é a NAND, mostrada na Fig.2 à esquerda.

Para provar que se pode construir qualquer função booleana usando apenas portas NAND, precisamos mostrar como construir um inversor (NOT), a porta AND e a porta OR usando-se um NAND (já que podemos criar qualquer função booleana usando apenas AND, NOT e OR). Construir um inversor é fácil, basta conectar as duas entradas (veja a Fig.3 à direita).

AND de NAND
Fig.4 - Porta AND construída com duas portas NAND

Já que criamos um inversor usando uma NAND, construir uma porta AND não é nenhum bicho de sete cabeças - basta inverter a saída de uma porta NAND. Afinal de contas, NOT (NOT (A AND B)) é equivalente a A AND B smile

É claro que isto consome duas portas NAND para se construir uma única porta AND, mas ninguém disse que circuitos construídos apenas com portas NAND seriam ótimos - foi dito apenas que isto seria possível de ser feito.

A última porta que precisamos compor é a porta OR. Podemos construir sem nenhuma dificuldade uma porta OR a partir de portas NAND aplicando os teoremas de DeMorgan.

(A or B)' = A' and B'   Teorema de DeMorgan.
A or B = (A' and B')'   Inverta os lados da equação.
A or B = A' nand B'     Definição da operação NAND.
OR de NAND
Fig.5 - Porta OR construída com duas portas NAND e um inversor

Aplicando essas transformações, obtém-se o circuito da Fig.5. Agora você poderia estar se perguntando porque estamos nos preocupando com isto. Afinal de contas, porque não usar simplesmente as portas AND, OR e inversora? Existem duas razões para isto. Primeiro, portas NAND são geralmente mais baratas de se construir do que outras portas. Segundo, é também muito mais fácil construir circuitos integrados complexos usando blocos básicos iguais do que construir um circuito integrado usando as diferentes portas básicas.

A propósito, note que é possível construir qualquer circuito lógico usando apenas portas NOR (NOT (A or B)). A correspondência entre a lógica NAND e NOR é ortogonal à correspondência entre as duas formas canônicas mostradas neste capítulo (soma de mintermos vs. produto de maxtermos). Apesar da lógica NOR ser útil em muitos circuitos, a maioria dos projetos eletrônicos usam a lógica NAND.

Circuitos combinatórios

Um circuito combinatório é um sistema composto por operações booleanas básicas (AND, OR e NOT), algumas entradas e um conjunto de saídas. Uma vez que para cada saída corresponde uma função lógica individual, um circuito combinatório geralmente implementa diversas funções booleanas diferentes. É muito importante que você se lembre deste fato - cada saída representa uma função booleana diferente.

A CPU de um computador é composta por vários circuitos combinatórios. Por exemplo, podemos implementar um circuito de soma usando funções booleanas. Suponha que você tenha dois números de um bit, A e B. Você pode produzir a soma de um bit, e o "vai um" (carry) de um bit desta adição, usando as duas funções booleanas a seguir:

S = AB' + A'B  Soma de A e B.
C = AB         "Vai um" da adição de A e B.

Estas duas funções booleanas implementam um meio-somador. Os engenheiros o chamam de meio-somador porque ele soma dois bits, mas não adiciona o "vai um" de uma operação anterior. Um somador completo adiciona três entradas de um bit (dois bits mais um "vai um" da soma anterior) e produz duas saídas: a soma e o novo "vai um". As duas equações lógicas para um somador completo são:

S = A'B'Cin + A'BC'in + AB'C'in + ABCin
Cout = AB + ACin + BCin
Somador completo
Fig.6 - Somador de N-Bits usando um meio-somador e somadores completos

Embora estas equações lógicas produzam apenas um único bit como resultado (ignorando o "vai um"), não é difícil construir uma soma de n bits combinando circuitos somadores (veja a Fig.6). Assim, como este exemplo ilustra claramente, podemos usar funções lógicas para implementar operações booleanas e aritméticas.

Display
Fig.7 - Display de 7 segmentos

Um outro circuito combinatório muito comum é o decodificador de sete segmentos. Este é um circuito combinatório que aceita quatro entradas e determina quais dos sete segmentos de um display luminoso de sete segmentos deverá ser ativado (1 lógico) ou desligado (zero lógico). Como um display de sete segmentos contém sete valores de saída (um para cada segmento), existirão sete funções lógicas associadas ao display (do segmento zero até o segmento seis). Veja a identificação dos sete segmentos na Fig.7. A Fig.8 mostra a quais segmentos correspondem a cada um dos dez valores decimais.

Display
Fig.8 - Valores de 0 a 9 para sete segmentos

As quatro entradas para cada uma das sete funções booleanas são os quatro bits de um número binário no intervalo de 0 a 9. Considere a variável D como o bit mais significativo deste número e a variável A como o bit menos significativo deste número. Cada função lógica produz um segmento ativado (resulta em 1) para uma dada entrada se aquele segmento em particular deve ser iluminado. Por exemplo, o S4 (segmento quatro) deve estar ativado para os valores binários 0000, 0010, 0110 e 1000 (que correspondem aos decimais 0, 2, 6 e 8). Para cada valor que acende este segmento, temos um mintermo na equação lógica:

S4 = D'C'B'A' + D'C'BA' + D'CBA' + DC'B'A'

S0, como um segundo exemplo, está ativo para os valores zero, dois, três, cinco, seis, sete, oito e nove. Então, a função lógica para S0 é:

S0 = D'C'B'A' + D'C'BA' + D'C'BA + D'CB'A + D'CBA' + D'CBA + DC'B'A' + DC'B'A

Você pode gerar as outras cinco funções lógicas de forma semelhante.

Circuitos combinatórios são a base para muitos dos componentes de um sistema de computação básico. Podemos construir circuitos para soma, substração, comparação, multiplicação, divisão e muitas outras operações usando a lógica combinatória.

Fonte

  • Art of Assembly de Randall Hyde.
  • Tradução meio que livre da vovó Vicki.
mfx опционысайт никосаменю никас харьков рецепт блендеркак выбрать сковороду с керамическим покрытиемхарьков новости кернесbroker mfx

Informações adicionais