Sistemas digitais

7,049 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
7,049
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
118
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Sistemas digitais

  1. 1. 1 Introdução Um sistema pode ser definido como sendo um conjunto de elementos que sãointerligados de alguma maneira para compor um todo e assim realizar funcionalidadeespecífica. Por exemplo, um aparelho de som hi-fi é composto de vários componentes, taiscomo compartimento para discos e fitas, amplificador e auto-falantes. Todos sãointerconectados por cabos elétricos. Um sistema também possui uma função bem definida, a qual pode ser identificada apartir das funcionalidades de seus componentes. Por exemplo, a função do aparelho de somhi-fi é transformar a informação armazenada em discos e/ou fitas em som audível, o que éalgo que nenhum dos componentes do sistema pode realizar por si só. Neste sentido, pode-se identificar dois aspectos fundamentais em qualquer sistema: suaestrutura e seu comportamento. A estrutura reflete os componentes e como eles estãointerconectados e o comportamento reflete a funcionalidade do sistema. Sistemas em que o número de componentes é alto e/ou as inter-relações entre eles nãosão muito claras ou difíceis de serem estabelecidas e entendidas são ditos complexos. Noprojeto de tais sistemas complexos, a identificação de alguma ordem ou regularidade é deextrema importância, o que normalmente requer uma abordagem estruturada e sistemática. Dependendo de quais aspectos se está tentando identificar, deve-se usar um tipo derepresentação e um nível de abstração adequados. Os três tipos mais comuns de representaçãosão o comportamental, o estrutural e o físico. Uma representação comportamental captura o sistema como uma caixa preta e seconcentra na especificação do comportamento como uma função dos valores de entrada e otempo (ver figura 1.1). Em outras palavras, uma representação comportamental descreve afuncionalidade mas não a implementação de um dado sistema, definindo as respostas da caixapreta para qualquer combinação dos valores de entrada mas sem descrever como projetar ouconstruir o sistema usando dados componentes. x z z=f(x,y) y Figura 1.1 - Sistema como uma caixa preta. Uma representação estrutural define a caixa preta como um conjunto decomponentes e suas interconexões. Diferente da representação comportamental, arepresentação estrutural especifica a implementação do sistema sem qualquer referência à suafuncionalidade. Isto é ilustrado na figura 1.2. Obviamente, muitas vezes a funcionalidade pode ser derivada a partir dos componentesinterconectados. No entanto, derivar a funcionalidade de um sistema desta maneira é muitodifícil, principalmente se o sistema possui um grande número de componentes.
  2. 2. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 1-2 x a z c y b Figura 1.2 - Sistema como um conjunto de componentes interconectados. Uma representação física especifica as características físicas da caixa preta, indicandoas dimensões e as posições de cada componente e conexão existentes na descrição estruturaldo sistema. Enquanto a representação estrutural fornece a conectividade do sistema, somente arepresentação física é que descreve precisamente as relações espaciais dos várioscomponentes. Ou seja, a representação física é usada para descrever o sistema depois que elefoi fabricado, especificando seu peso, tamanho, consumo de potência e posição de cada pinode entrada ou saída. Uma maneira natural e conveniente para representar a estrutura de um sistema é o usode diagramas de bloco, onde componentes são representados por retângulos, chamadosblocos, e conexões que são denotadas por linhas interligando os blocos. A figura 1.3 mostraum diagrama do aparelho de som hi-fi. Compartimento Compartimento para discos Amplificador para fitas Auto-falante Auto-falante esquerdo direito Figura 1.3 - Diagrama de blocos para o aparelho de som hi-fi. O processo de projeto de sistemas, principalmente produtos eletrônicos em geral esistemas digitais em particular, consiste sempre de pelo menos três fases, cada uma centradaem uma das representações de projeto: 1. derivar uma representação comportamental da funcionalidade do produto 2. converter esta representação para uma representação estrutural contendo componentes de uma dada biblioteca de componentes 3. produzir uma representação física que especifica como montar e fabricar o produto Qualquer projeto pode ser realizado seguindo estes passos usando diferentes níveis deabstração. Em um nível de abstração apenas determinados detalhes são representados.Normalmente, os detalhes capturados em uma dada fase do projeto dependem dacomplexidade do sistema. Por exemplo, é praticamente impossível projetar ummicroprocessador inteiro usando apenas portas lógicas básicas. Normalmente, inicia-se oprojeto pelos blocos básicos no nível lógico. A seguir, estes blocos são interconectados paracompor um sistema mais complexo, como por exemplo um microprocessador.
  3. 3. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 1-3 Na próxima seção, serão abordados outros formalismos para a representação daestrutura e do comportamento de sistemas, além dos níveis de abstração mais comumenteutilizados no projeto de sistemas digitais.1.1 Sistemas Digitais Este texto tem por objetivo introduzir o estudo de sistemas digitais, dando especialatenção aos componentes básicos destes sistemas. Um sistema digital pode ser definido comoum conjunto de componentes interconectados que processam informações em forma digital oudiscreta. Na maioria dos sistemas digitais, os componentes básicos utilizados são dispositivoseletrônicos chamados circuitos integrados (CIs). As ligações entre estes componenteseletrônicos são conexões físicas através das quais a informação digital pode ser transmitida. Sistemas digitais modernos abrangem uma vasta gama de graus de complexidade. Oscomponentes disponíveis para a construção de sistemas digitais vão desde chaves do tipo liga-desliga até computadores completos. O número de componentes em um sistema digital podevariar de um, dois ou de milhares de componentes. Obviamente, quanto mais componentessão necessários à implementação de um sistema digital, mais complexo ele é e,conseqüentemente, mais difícil de entender seu funcionamento e de projetá-lo. Daí aimportância do uso de níveis de abstração no processo de projeto de sistemas digitais. Um nível de abstração, ou de granularidade, é caracterizado pelo tipo de objetosutilizados na representação. Em geral, pode-se identificar quatro diferentes tipos de objetosem um produto eletrônico: transistores, portas, registradores e processadores. Oscorrespondentes níveis de abstração são sumarizados na tabela 1.1. Tabela 1.1 – Níveis de abstração. Nível Comportamento Estrutura Físico Transistor Equações diferenciais, Transistores, Células analógicas e diagramas corrente- resistores, digitais voltagem capacitores Portas Equações Booleanas, Portas lógicas, Módulos, unidades máquinas de estado Flip-flops finitas (FSM) Registrador Algoritmos, flowcharts, Somadores, Microcircuitos conjunto de instruções, comparadores, generalizações de FSMs contadores, registradores Processador Especificação Processadores, Placas de circuito executável, programas controladores, impresso, módulos ASICs multicircuitos Como mostrado na tabela 1.1, os principais componentes no nível de transistores sãotransistores, resistores e capacitores, que são combinados para formar circuitos analógicos edigitais que realizam uma dada funcionalidade. Esta funcionalidade é usualmente descrita porum conjunto de equações diferenciais ou por algum tipo de relacionamento entre corrente etensão. A representação física destes circuitos, denominados células, podem consistir decomponentes do nível de transistores e as conexões que os interconectam.
  4. 4. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 1-4 Os principais componentes do nível de portas são portas lógicas e flip-flops. Portaslógicas são circuitos especiais que implementam operações Booleanas, tais como E e OU. Umflip-flop é um elemento básico de memória que é capaz de armazenar um bit de informação,podendo assumir o valor 0 (falso) ou 1 (verdadeiro). Portas e flip-flops são células digitais quepodem ser grupadas para formar módulos ou unidades aritméticas e de memória. Os módulossão utilizados como componentes básicos no nível de registradores. O comportamento de cadamódulo pode ser descrito com o uso de equações Booleanas e diagramas de máquinas deestados finitas (Finite State Machines - FSMs). No nível de registradores, os principais componentes são unidades aritméticas e dememória, tais como, somadores, comparadores, multiplicadores, contadores, registradores,bancos de registradores, filas, etc. Cada um destes componentes é um módulo com dimensõesfixas, um atraso de propagação e um conjunto de posições (fixas) para as entradas e saídas domódulo. Estes componentes do nível de registradores podem ser montados e interconectadosem microcircuitos, que podem ser usados como componentes básicos no nível de abstraçãoacima. Usualmente, estes microcircuitos são descritos por fluxogramas, conjuntos deinstruções, diagramas de FSMs ou tabelas de estados. O mais alto nível de abstração apresentado na tabela é o nível de processador, onde oscomponentes básicos são processadores, memórias, controladores e interfaces, além decircuitos de aplicação específica (Application Specific Integrated Circuits - ASICs).Geralmente, um ou mais destes componentes são montados em uma placa de circuitoimpresso e conectados com fios que são impressos na placa. O comportamento de sistemascompostos destes componentes do nível de processadores é usualmente descrito utilizando-seuma linguagem natural, uma especificação executável em alguma linguagem de descrição dehardware (Hardware Description Language - HDL), ou um algoritmo ou programa escrito emuma linguagem de programação convencional. A representação estrutural mais comum para sistemas digitais é o diagrama de blocos.Dependendo do nível de abstração, cada bloco pode representar objetos correspondentes aonível, por exemplo, portas lógicas no nível de abstração de portas; registradores, somadores,etc. no nível de registradores; e controladores e ASICs no nível de processador. Asinterconexões representam as conexões entre os objetos. A figura 1.4 mostra o diagrama de blocos para a unidade lógica e aritmética (ULA) eos registradores de entrada e saída, os quais constituem partes essenciais de qualquersistema computacional. No diagrama de blocos, não há detalhamento dos componentes, masapenas uma idéia genérica da estrutura como um todo. Cada bloco pode ser mostrado commais detalhes, em algum outro diagrama de blocos mais detalhado, ou num diagramaesquemático. Isto revela a natureza hierárquica existente por detrás de qualquer projeto desistema. R1 R2 4 4 1 Cout ULA controle 1 4 R3 Figura 1.4 - Diagrama de blocos genéricos de uma ULA e seus registradores.
  5. 5. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 1-5 A figura 1.5 mostra o diagrama de blocos mais detalhado para a unidade lógico-aritmética (ULA) da figura 1.4. Já a figura 1.6 detalha o somador completo, que é o tipo debloco usado para compor a ULA. R13 R2 3 R12 R2 2 R11 R2 1 R10 R2 0 Controle xor 3 xor 2 xor 1 xor 0 I3 I2 I1 I0 Ci Ci Ci Ci FAD 3 FAD 2 FAD 1 FAD 0 Cout Co Co Co Co R3 3 R3 2 R3 1 R3 0 Figura 1.5 - Diagrama de blocos mais detalhado de uma ULA. R1 i Ii FAD i Ci X0 A0 A1 A2 X1 O0 Co R3 i Figura 1.6 - Esquemático de um somador completo (full-adder - FAD). Para representar o comportamento de sistemas digitais no nível de portas lógicas usam-se tabelas verdades e equações Booleanas. No nível de registradores, usa-se algum tipo delinguagem para descrever as transferências de dados entre os registradores. Para possibilitar asimulação do sistema no nível de processador são geralmente utilizadas linguagensprocedurais para descrever os algoritmos na forma de programas executáveis. Por exemplo, para a estrutura da ULA dada na figura 1.4, a descrição algorítmicapoderia ser: se (controle=0) R3_ R1+R2; senão R3_ R1-R2; Esta descrição indica que o valor de controle determina se a ULA realizará umasoma ou uma subtração.
  6. 6. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 1-61.2 Tipos de Dados e Representação de Dados Nesta seção, iremos estudar os tipos de dados mais comumente encontrados nossistemas digitais, mostrando como eles podem ser codificados em formato binário. Os dadosencontrados nos sistemas digitais (note-se que os computadores atuais são sistemas digitais)podem ser classificados em uma das seguintes categorias: • Números usados em cálculos aritméticos; • Letras do alfabeto, usadas no processamento de dados; • Símbolos discretos, usados para diversos propósitos Todos os dados são representados em formato binário porque o uso deste formatofacilita o projeto de circuitos eletrônicos que exibem duas condições possíveis, as quais sãoconvenientemente interpretadas como os valores 0 e 1 de um dígito binário (bit). Taiscircuitos eletrônicos são projetados para realizar um repertório de operações necessárias quesão disponibilizadas nos computadores.1.2.1 Notação Posicional Todos os sistemas numéricos utilizados pelo ser humano são posicionais. Em umsistema posicional, cada dígito possui um peso associado. Assim, o valor de um dado númerocorresponde a uma soma ponderada de seus dígitos, como por exemplo: 1999 = 1 × 1000 + 9 × 100 + 9 × 10+ 9 × 1 Note que, no número anterior, o peso de cada posição é 10i, onde i corresponde àposição do dígito, contada a partir da direita, e sendo i=0. para o dígito mais à direita. Em geral, qualquer número decimal D , no formato d1 d0 d-1 d-2 tem como valor: D = d1 × 101 + d0 × 100 + d-1 × 10-1 + d-2 × 10-2onde 10 é chamado base. Num sistema posicional genérico, a base pode ser qualquer valor inteiro r, e um dígitonuma posição i assume peso ri . Logo, podemos escrever o formato genérico de um númeroem tal sistema como sendo dm-1 dm-2 … d1 d0 . d-1 d-2 … d-nonde há m dígitos à esquerda do ponto e n dígitos à direita do ponto. Note que, se não houverponto, assume-se que este está à direita do dígito mais à direita. O valor deste número é osomatório dos produtos de cada dígito pela correspondente potência da base: m−1 D= ∑d i × ri i =− n
  7. 7. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 1-7 Para um número qualquer, o dígito mais à direita é comumente referenciado comodígito menos significativo (least-significative bit - LSB, em inglês), ao passo que o dígitomais à esquerda é denominado dígito mais significativo (most-significative bit – MSB, eminglês). Desde que sistemas digitais usam dígitos binários, estaremos particularmenteinteressados no sistema binário. Neste sistema, a base utilizada é 2, de modo que um númeroem binário assume a forma: bm-1 bm-2 … b1 b0 . b-1 b-2 … b-ne seu valor pode ser encontrado por m −1 B= ∑b ×2 i i i= −n Similarmente ao sistema decimal, o ponto no sistema binário é denominado pontobinário. Normalmente, quando se trabalha com sistemas de base não-decimal, indica-se abase subscrevendo-se o valor da base à direita do número. Exemplos: 101012 = 1 × 16 + 0 × 8 + 1 × 4 + 0 × 2 + 1 × 1 = 2110 .11112 = 1 × 0.5 + 1 × 0.25 + 1 × 0.125 + 1 × 0.0625 = 0.9375101.2.2 Números Octais e Hexadecimais Além do sistema decimal e do sistema binário, dois outros sistemas são de grandeimportância por proverem representações convenientemente compactas de números grandes.Trata-se dos sistemas octal (base 8) e hexadecimal (base 16). No sistema octal, cada dígito representa um valor entre 0 e 7. Já no sistemahexadecimal, cada dígito representa um valor entre 0 e 15. Para representar os valores maioresdo que 9 usando apenas um dígito, utilizam-se letras. Assim, o valor 10 é representado por A,o 11, por B e assim por diante, até 15 (que é representado por F). A tabela 1.2 mostra osinteiros binários de 0 a 10001, juntamente com os equivalentes octal, decimal e hexadecimal.Note que cada dígito octal pode ser representado por 3 dígitos binários, enquanto que umdígito hexadecimal pode ser representado por 4 dígitos binários. Tabela 1.2 - Representação de inteiros em binário, octal, decimal e hexadecimal. Binário Octal Decimal Hexa 0 0 0 0 1 1 1 1 10 2 2 2 11 3 3 3 100 4 4 4 101 5 5 5 110 6 6 6
  8. 8. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 1-8 111 7 7 7 1000 10 8 8 1001 11 9 9 1010 12 10 A 1011 13 11 B 1100 14 12 C 1101 15 13 D 1110 16 14 E 1111 17 15 F 10000 20 16 10 10001 21 17 11 A tabela 1.3 mostra os inteiros binários de 0 a 10001 e seus equivalentes octal, decimale hexadecimal codificados em binário. Tabela 1.3 - Representação de inteiros em binário, octal, decimal e hexadecimal. Binário Octal Decimal Hexadecimal codificado em codificado em codificado em binário binário binário 0 000 0000 0000 1 001 0001 0001 10 010 0010 0010 11 011 0011 0011 100 100 0100 0100 101 101 0101 0101 110 110 0110 0110 111 111 0111 0111 1000 001 000 1000 1000 1001 001 001 1001 1001 1010 001 010 0001 0000 1010 1011 001 011 0001 0001 1011 1100 001 100 0001 0010 1100 1101 001 101 0001 0011 1101 1110 001 110 0001 0100 1110 1111 001 111 0001 0101 1111 10000 010 000 0001 0110 0001 0000 10001 010 001 0001 0111 0001 0001 Para se converter um número binário em octal separam-se os dígitos em grupos de 3, apartir do ponto binário para a esquerda. Após, substitui-se cada grupo pelo dígito octalcorrespondente. Exemplo:
  9. 9. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 1-9 10100111002 = 001 010 011 100 = 12348 E para converter-se um número em binário para hexadecimal, o procedimento éanálogo, exceto que os grupos deverão ser de 4 dígitos.Exemplo 1.1: converter-o número binário que segue para hexadecimal 10100111002 = 0010 1001 1100 = 29C16 Note que nestes exemplos foram adicionados zeros à esquerda, de modo que todos osgrupos tivessem 3 dígitos, no caso da conversão direta binário-octal, e 4 dígitos no caso daconversão direta binário-hexadecimal. A conversão no sentido oposto também é bastante simples. Substitui-se cada dígitooctal ou hexadecimal pelo conjunto de 3 ou 4 dígitos binários que o representa.Exemplo 1.2: converter-os números que seguem para binário. 7658 = 1111101012 FED16 = 11111110110121.2.3 Conversão entre Sistemas Numéricos Como regra geral, não se pode converter um número representado numa determinadabase para outra base simplesmente substituindo-se dígitos de uma base pelos seusequivalentes na outra. Isto funciona somente nos casos em que ambas bases são potências deum mesmo número (como os casos mostrados anteriormente). Quando não é este o caso, seránecessário utilizar-se um procedimento mais complexo o qual requer operações aritméticas..A seguir, será mostrado como converter um número em qualquer base para a base 10, e vice-versa, usando aritmética de base 10. Como indicado na sub-seção 1.2.1, o valor de um número em qualquer base érepresentado pela fórmula: m−1 D= ∑d i × ri i =− n Onde r é a base do número, m indica o número de dígitos à esquerda do ponto e nindica o número de dígitos à direita do ponto. Uma outra alternativa à equação anterior é re-escrever a parte inteira da equação por: D = ((…(( dm-1 ) r + dm-2 ) r + … ) r + d1 ) r + d0 Desta equação, é possível derivar um procedimento iterativo que obtém cada um dosdígitos do número a partir do mais significativo, acumulando a soma decimal ponderada.
  10. 10. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 1-10 Essa equação é também um bom ponto de partida para converter um número decimalD para outra base r qualquer. Se dividirmos D por r na equação, a parte parametrizável daequação representa o quociente Q = (…(( dm-1 ) r + dm-2 ) r + … ) r + d1com resto R = d0 . Em outras palavras, d0 é obtido como o resto da divisão inteira de D por r.Além disso, como o quociente Q na equação anterior tem o mesmo formato do númerooriginal, sabe-se que sucessivas divisões por r permitem obter-se sucessivos dígitos de D, dadireita para a esquerda, até que todos os dígitos de D tenham sido encontrados.1.2.4 Soma e Subtração de Números Binários O procedimento para a adição e subtração de números binários é semelhante ao que seusa para números decimais. A principal diferença está nas tabelas de adição e subtração, quecontêm apenas os dígitos 0 e 1. Para somar dois números decimais, faz-se a soma de um par de dígitos de cada vez,começando com o dígito menos significativo de cada número. Se a soma de um dado par éigual ou maior que 10, o excesso (também chamado de transporte ou carry) é usado na somado próximo par de dígitos mais significativos. Para somar dois números binários, oprocedimento é basicamente o mesmo, mas usa-se um carry inicial c0 igual a 0. A tabela 1.4mostra a soma si e o bit de carry ci+1 para cada possível combinação de xi, yi e ci. Tabela 1.4 - Adição de números binários. xi + yi + ci si ci+1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1Exemplo 1.3: Somar os números binários 987 e 123. 512 256 128 64 32 16 8 4 2 1 x 1 1 1 1 0 1 1 0 1 1 y 1 1 1 1 0 1 1 carries 1 1 1 1 1 1 1 0 1 1 x+y 1 0 0 0 1 0 1 0 1 1 0 S10 S9 S8 S7 S6 S5 S4 S3 S2 S1 S0 Primeiro se soma x0 = 1 e y0 = 1, produzindo carry c1 = 1 e soma s0 = 0. Em seguida, sesoma x1 = 1, y1 = 1 e c1 = 1, obtendo-se carry c2 = 1 e soma s1 = 1. Este processo continua atése gerar c11 = 1 e carry s10 = 0.
  11. 11. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 1-11 A subtração de números binários é realizada de maneira semelhante, subtraindo-se umpar de bits, um a cada vez, no entanto, é sempre gerado um bit de empréstimo (borrow) e nãoum bit de carry, e um bit de diferença ao invés de um bit de soma. A tabela 1.5 mostra adiferença di e o bit de borrow bi+1 para cada possível combinação de xi, yi e bi. Tabela 1.5 - Subtração de números binários. xi - yi - bi di bi+1 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 1 1 0 1 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 1 1 1 1 1 O procedimento para subtração é muito semelhante ao de adição: a partir dos dígitosmenos significativos, gera-se os bits de borrow b1 e de diferença d0, de acordo com a Tabela4, e assim por diante, da direita para a esquerda, até o bit de borrow mais significativo bm e obit de diferença mais significativo dm-1.Exemplo 1.4: Subtrair o número binário 123 de 987. 512 256 128 64 32 16 8 4 2 1 x 1 1 1 1 0 1 1 0 1 1 y 1 1 1 1 0 1 1 borrows 0 0 1 1 0 0 0 0 0 x-y 1 1 0 1 1 0 0 0 0 0 D9 D8 D7 D6 D5 D4 D3 D2 D1 d0 Primeiro faz-se a subtração entre x0 = 1 e y0 = 1, produzindo borrow b1 = 0 e diferençad0 = 0. Em seguida, faz-se a subtração de y1 = 1, b1 = 1 de x1 = 1, obtendo-se borrow b2 = 0 esoma s1 = 0. Este processo continua até se gerar d9 = 1.1.2.5 Representação de Números Negativos Até o presente momento, tratamos somente de números positivos. Números negativospodem ser representados de diversas formas. A representação que usamos normalmente édenominada sinal-magnitude. No entanto, a maioria dos computadores usa o sistema derepresentação em complemento, para facilitar a implementação dos circuitos aritméticos.1.2.5.1 Representação de números binários positivos e negativos Números binários positivos podem ser representados como números sem sinal. Noentanto, para se representarem números negativos, é necessária a utilização de alguma
  12. 12. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 1-12notação. A forma de representação mais simples é sinal-magnitude. Nesta representação, onúmero consiste de duas partes: a magnitude e o sinal. A magnitude expressa a quantidade eo sinal indica se a quantidade é positiva ou negativa. Quando sinal-magnitude é usado para números binários, o sinal é representado pelodígito mais significativo: “0’” indica sinal positivo ao passo que “1” indica sinal negativo.Assim, os números +9 e –9 escritos em binário se diferenciam somente pelo bit maissignificativo: +9 = 01001 -9 = 11001 Note que foram necessários 5 bits para representar esses números: 4 para a magnitudee 1 (o mais da esquerda) para representar o sinal. Dado um número binário com n bits, o intervalo de representação possível será de -(2 -1) até +(2n-1-1). Note também que há duas representações possíveis para o zero: -0 e +0. n-11.2.5.2 Sistema de representação em complementos A representação em complemento foi criada com o intuito de simplificar a operação desubtração e manipulações lógicas, evitando a necessidade de comparações de magnitude esinal. Dado um sistema de base r qualquer, existem dois tipos de complementos possíveis: • Complemento de r • Complemento de (r-1). Iniciemos o estudo pelo complemento de (r-1). Seja um número N na base rrepresentado com n dígitos. O complemento de (r-1) de N é definido por (rn-1) – N. Paranúmeros decimais, r = 10, (r-1) = 9 e o complemento de 9 de N é dado por (10n-1) – N.Exemplo 1.5: encontrar o complemento de 9 dos números decimais que seguem. 98710: (1000 - 1) - 987 = 999 - 987 = 12 54670010: 1238910: No caso de N ser um número binário, r = 2, (r-1) = 1 e o complemento de 1 de N édado por (2n-1) – N.Exemplo 1.6: encontrar o complemento de 1 dos números binários que seguem. 101112: (32 - 1) - 23 = 31 - 23 = 8 = 10002 10110012: 00011112:
  13. 13. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 1-13 Já o complemento de r de um número N na base r representado com n dígitos édefinido por rn – N, se N ≠ 0 e 0 se N = 0. Comparando-se com o complemento de (r-1),notamos que o complemento de r é obtido somando-se 1 ao complemento de (r-1). Paranúmeros decimais, r = 10, e o complemento de 10 de N é dado por 10n – N. O complemento de r de um número binário é chamado complemento de dois e arepresentação derivada dele é chamada representação em complemento de dois. Para números binários, o sinal do número é representado pelo bit mais significativo,que é 0 para números positivos e 1 para negativos. Assim, pode-se obter um número negativoa partir de um número positivo, complementando-se cada bit (i.e., substituindo-se cada 0 por 1e cada 1 por 0), incluindo o bit de sinal e somando-se 1. O bit de carry que ocorra deve serignorado. Portanto, quando se complementa o 0 e o bit de carry mais significativo édescartado, obtém-se 0 como complemento de dois. Isto mostra que o 0 tem umarepresentação única em complemento de dois. Como o 0 é um número positivo, se terá umnúmero positivo não-zero a menos do que números negativos, ou seja, o intervalo de númerosque podem ser representados em complemento de dois é -(2n-1) até +(2 n-1 - 1).Exemplo 1.7: determine o intervalo de representação para números binários com 4 dígitos (bits), assumindo-se o uso de complemento de 2 Pelas fórmulas acima, conclui-se que o intervalo de representação para números dequatro bits em complemento de 2 vai de -2 3 = -8 até 2 3 - 1 = +7. Uma maneira simples de se obter o complemento de dois de um número binário é fazero complemento do número e somar 1 a ele.Exemplo 1.8: encontre o complemento de 2 do número binário que segue. 101112: 010002 + 12 = 0100121.2.5.3 Adição e subtração em complemento de dois Como dito anteriormente, a representação em complemento de dois foi desenvolvidapara facilitar a implementação de adição e subtração de números binários. Com ocomplemento de dois é possível realizar somas e subtrações de números com e sem sinalusando o mesmo circuito lógico. Para somar números em complemento de dois, usa-se a aritmética binária mostrada natabela 1.4 e ignora-se qualquer bit de carry além do bit de sinal. Por exemplo, somar doisnúmeros positivos gera um resultado positivo correto: 0010 (+2) + 0100 (+4) 0110 (+6) Da mesma maneira, somar dois números negativos sempre produzirá uma somanegativa correta, desde que seja ignorado o bit de carry além do bit de sinal:
  14. 14. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 1-14 1110 (-2) + 1100 (-4) 1010 (-6) No entanto, existem casos em que uma operação produz um resultado que excede ointervalo de representação do sistema numérico, criando uma condição chamada estouro ouoverflow. Via de regra, a adição de dois números com sinais diferentes nunca produz umoverflow. Entretanto, quando se somam dois números com o mesmo sinal que produz umasoma que é maior que o maior número representável, pode-se obter um resultado incorreto.Por exemplo, 0100 (+4) + 0101 (+5) 1001 (-7) Do mesmo modo, 1100 (-4) + 1011 ( -5) 0111 (+7) Como os exemplos sugerem, é possível identificar uma regra simples para detectaroverflow em adições: ocorre um overflow sempre que o sinal da soma é diferente do sinal dosoperandos. Mas, como será visto, para implementar um circuito implementando a soma, émais fácil identificar oveflow usando a seguinte regra: ocorre um overflow sempre que os bitsde carry para o bit de sinal e a partir do bit de sinal são diferentes. Para realizar a subtração em complemento de dois, pode-se usar o mesmoprocedimento usado para números binários sem sinal e as regras para a detecção de overflowsão as mesmas da adição. Mas, para implementar a subtração não se usa este procedimento.Ao invés disto, faz-se o complemento de dois do número que se quer subtrair (subtraendo) efaz-se a soma dele com o número do qual vai se subtrair. Por exemplo, 0010 (+2) + 1100 Complemento de dois de (+4) 000 Carries 1110 ( -2) Em complemento de dois Para se implementar esta subtração basta um circuito complementador e um somador.Como se está realizando uma adição, a regra para detecção de overflow é a da adição.ExercíciosExercício 1.1 - Realizar as conversões indicadas a seguir.a) 179 para binário
  15. 15. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 1-15 179 ÷ 2 = 89 resto = 1 (dígito menos significativo) 89 ÷ 2 = 44 resto = 1b) 467 para octal 467 ÷ 8 = 58 resto = 3 (dígito menos significativo) 58 ÷ 8 =c) 3417 para hexadecimal 3417 ÷ 16 =Exercício 1.2 - Encontrar a representação em complemento de r para os exemplos anteriores.98710 : 1000 - 987 = 1354670010:1238910:101112: 32 - 23 = 9 = 1001210110012:00011112:
  16. 16. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 1-16Exercício 1.3 - Encontrar, para os exemplos anteriores, a representação em complemento de 2 usando operações de complemento.10110012:00011112:Bibliografia Suplementar[1] GAJSKI, Daniel D. Principles of Digital Design, New Jersey: Prentice Hall, 1997 (ISBN 0-13-301144-5)[2] MANO, M. Morris; Computer Engineering: Hardware Design. New Jersey: Prentice Hall, 1988 (ISBN 0-13-162926-3)
  17. 17. 2 Álgebra Booleana e Circuitos Lógicos Uma álgebra Booleana pode ser definida com um conjunto de operadores e umconjunto de axiomas, que são assumidos verdadeiros sem necessidade de prova. Em 1854, George Boole introduziu o formalismo que até hoje se usa para o tratamentosistemático da lógica, que é a chamada Álgebra Booleana. Em 1938, C. E. Shannon aplicouesta álgebra para mostrar que as propriedades de circuitos elétricos de chaveamento podemser representadas por uma álgebra Booleana com dois valores. Diferentemente da álgebra ordinária dos reais, onde as variáveis podem assumirvalores no intervalo (-∞;+∞), as variáveis Booleanas só podem assumir um número finito devalores. Em particular, na álgebra Booleana de dois valores, cada variável pode assumir umdentre dois valores possíveis, os quais podem ser denotados por [F,V] (falso ou verdadeiro),[H,L] (high and low) ou ainda [0,1]. Nesta disciplina, adotaremos a notação [0,1], a qualtambém é utilizada em eletrônica digital. Como o número de valores que cada variável podeassumir é finito (e pequeno), o número de estados que uma função Booleana pode assumirtambém será finito, o que significa que podemos descrever completamente as funçõesBooleanas utilizando tabelas. Devido a este fato, uma tabela que descreva uma funçãoBooleana recebe o nome de tabela verdade, e nela são listadas todas as combinações devalores que as variáveis de entrada podem assumir e os correspondentes valores da função(saídas).2.1 Operações Básicas da Álgebra Booleana (ou Álgebra deChaveamento) Na álgebra Booleana, existem três operações ou funções básicas. São elas, operaçãoOU, operação E e complementação. Todas as funções Booleanas podem ser representadasem termos destas operações básicas.2.1.1 Operação OU (Adição Lógica) Uma definição para a operação OU, que também é denominada adição lógica, é: “A operação OU resulta 1 se pelo menos uma das variáveis de entrada vale 1”. Como uma variável Booleana ou vale 1 ou vale 0, e como o resultado de uma operaçãoqualquer pode ser encarado como (ou atribuído a) uma variável Booleana, basta quedefinamos quando a operação vale 1. Automaticamente, a operação resultará 0 nos demaiscasos. Assim, pode-se dizer que a operação OU resulta 0 somente quando todas as variáveisde entrada valem 0. Um símbolo possível para representar a operação OU é “+”, tal como o símbolo daadição algébrica (dos reais). Porém, como estamos trabalhando com variáveis Booleanas,
  18. 18. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-2sabemos que não se trata da adição algébrica, mas sim da adição lógica. Outro símbolotambém encontrado na bibliografia é “∨”. Listando as possibilidades de combinações entre dois valores Booleanos e osrespectivos resultados para a operação OU, tem-se: 0+0 = 0 0+1 = 1 1+0 = 1 1+1 = 1 Note que a operação OU só pode ser definida se houver, pelo menos, duas variáveisenvolvidas. Ou seja, não é possível realizar a operação sobre somente uma variável. Devido aisso, o operador “+” (OU) é dito binário. Nas equações, não costuma-se escrever todas as possibilidades de valores. Apenasadotamos uma letra (ou uma letra com um índice) para designar uma variável Booleana. Comisso, já se sabe que aquela variável pode assumir ou o valor 0 ou o valor 1. Então, supondoque queiramos demonstar o comportamento da equação A+B (lê-se A ou B), poderíamosfazê-lo utilizando uma tabela verdade, como segue: A B A+B 0 0 0 0 1 1 1 0 1 1 1 1 Da mesma forma, podemos mostrar o comportamento da equação A+B+C (lê-se A ouB ou C) por meio de uma tabela verdade. Como na equação há somente o símbolo “+”, trata-se da operação OU sobre três variáveis. Logo, pode-se aplicar diretamente a definição daoperação OU: o resultado será 1 se pelo menos uma das variáveis de entrada valer 1. A B C A+B+C 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 É importante notar que, devido ao fato de haver somente um operador na equação,pode-se também avaliar a equação decompondo-a em pares. Por exemplo, pode-seprimeiramente achar o resultado de A+B, para depois operar os valores resultantes com osrespectivos valores de C. Esta propriedade é conhecida como associativa. Também a ordemem que são avaliadas as variáveis A, B e C é irrelevante (propriedade comutativa). Estaspropriedades são ilustradas pela tabela verdade a seguir. Nela, os parêntesis indicamsubexpressões já avaliadas em coluna imediatamente à esquerda. Note que os valores das
  19. 19. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-3colunas referentes às expressões A+B+C, (A+B)+C e (B+C)+A são os mesmos (na mesmaordem). A B C A+B+C A+B (A+B)+C B+C (B+C)+A 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 0 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 12.1.2 Operação E (Multiplicação Lógica) A operação E, ou multiplicação lógica, pode ser definida da seguinte forma: “A operação E resulta 0 se pelo menos uma das variáveis de entrada vale 0”. Pela definição dada, pode-se deduzir que o resultado da operação E será 1 se, esomente se, todas as entradas valerem 1. O símbolo usualmente utilizado na operação E é “⋅”, porém outra notação possível é“∧”. Podemos, também, listar as possibilidades de combinações entre dois valores Booleanose os respectivos resultados, para a operação E: 0⋅0 = 0 0⋅1 = 0 1⋅0 = 0 1⋅1 = 1 Assim como a operação OU, a operação E só pode ser definida entre, pelo menos duasvariáveis. Ou seja, o operador “⋅” (E) também é binário. Para mostrar o comportamento da equação A ⋅ B (lê-se A e B), escreve-se uma tabelaverdade, como segue: A B A⋅B 0 0 0 0 1 0 1 0 0 1 1 1 De forma semelhante, pode-se determinar o resultado da equação A⋅B⋅C (lê-se A e B eC) utilizando diretamente a definição da operação E: o resultado será 0 se pelo menos umadas variáveis de entrada valer 0.
  20. 20. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-4 A B C A⋅B⋅C 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 Também para a operação E valem as propriedades associativa e comutativa. Então, aequação A⋅BC pode ainda ser avaliada tomando-se as variáveis aos pares, em qualquer ordem.Veja a tabela verdade a seguir e compare os resultados. A B C A⋅B⋅C A⋅B (A⋅B)⋅C B⋅C A⋅(B⋅C) 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 1 0 0 1 0 0 0 1 1 1 1 1 1 1 12.1.3 Complementação (ou Negação, ou Inversão) A operação complementação dispensa uma definição. É a operação cujo resultado ésimplesmente o valor complementar ao que a variável apresenta. Também devido ao fato deuma variável Booleana poder assumir um entre somente dois valores, o valor complementarserá 1 se a variável vale 0 e será 0 se a variável vale 1. Os símbolos utilizados para representar a operação complementação sobre umavariável Booleana A são A , ~A e A (lê-se A negado). Nesta disciplina, adotaremos oprimeiro símbolo. O resultado da operação complementação pode ser listado: 0 = 1 1 = 0 Diferentemente das operações OU e E, a complementação só é definida sobre umavariável, ou sobre o resultado de uma expressão. Ou seja, o operador complementação édito unário. E a tabela verdade para A é: A A 0 1 1 0
  21. 21. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-52.2 Avaliação de Expressões Booleanas Dada a equação que descreve uma função Booleana qualquer, deseja-se saberdetalhadamente como esta função se comporta para qualquer combinação das variáveis deentrada. O comportamento de uma função é descrito pela sua tabela verdade e este problema éconhecido como avaliação da função ou da expressão que descreve a função considerada. Emsuma, deseja-se achar a tabela verdade para a função Booleana. Uma tabela verdade consiste basicamente de um conjunto de colunas, nas quais sãolistadas todas as combinações possíveis entre as variáveis de entrada (à esquerda) e oresultado da função (à direita). Também, pode-se criar colunas intermediárias, onde sãolistados os resultados de subexpressões contidas na expressão principal. Isto normalmentefacilita a avaliação, principalmente no caso de equações muito complexas e/ou contendomuitas variáveis. Quando numa mesma equação Booleana aparecem operações E e OU, é necessárioseguir a ordem de precedência. Tal como na álgebra dos reais, a multiplicação (lógica) temprecedência sobre a adição (lógica). Além disso, expressões entre parêntesis têm precedênciasobre operadores E e OU que estejam no mesmo nível. Quanto à complementação, esta deveser avaliada tão logo seja possível. Caso a complementação seja aplicada sobre umasubexpressão inteira, é necessário que se avalie primeiramente a subexpressão para, só após,inverter o seu resultado. O número de combinações que as variáveis de entrada podem assumir pode sercalculado por 2n, onde n é o número de variáveis de entrada. O procedimento para a criação da tabela verdade a partir de uma equação Booleana é: 1. Criar colunas para as variáveis de entrada e listar todas as combinações possíveis, utilizando a fórmula no de combinações = 2n (onde n é o número de variáveis de entrada); 2. Criar uma coluna para cada variável de entrada que apareça complementada na equação e anotar os valores resultantes; 3. Avaliar a equação seguindo a ordem de precedência, a partir do nível de parêntesis mais internos: 1o multiplicação lógica 2o adição lógica Tomemos como exemplo a expressão W = X + Y ⋅ Z . A variável W representa afunção Booleana propriamente dita. Esta variável depende das variáveis que estão à direita dosinal =, ou seja, depende de X, Y e Z. Logo, são 3 as variáveis de entrada. O total decombinações entre 3 variáveis será 23=8. Então, a tabela verdade para W deverá ter 3 colunasà esquerda e 8 linhas. Seguindo o procedimento dado acima, cria-se uma coluna, na quallistam-se os valores para Z. Após, inicia-se a avaliação propriamente dita, a partir do nívelmais interno de parêntesis. Como não há parêntesis na expressão, resolvem-se assubexpressões que envolvem a operação E. No caso em questão, há somente uma talsubexpressão, que é X ⋅Y . Então, cria-se uma coluna para X ⋅Y , na qual anotam-se osresultados para este produto. Finalmente, utilizam-se os resultados de X ⋅Y , listados nacoluna anterior, para operar o OU com a variável X. Repare os passos descritos na tabelaverdade que segue. Nela, os parêntesis em torno do produto X ⋅Y indicam somente que este
  22. 22. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-6termo já foi avaliado e que no passo referente a esta coluna, tomaram-se apenas os valorespreviamente encontrados. X Y Z Z X ⋅Y W = X + Y⋅ Z 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 1 1 0 1 1 0 0 0 1 0 0 1 0 1 1 0 1 0 0 1 1 1 0 1 1 1 1 1 1 0 0 12.3 Portas Lógicas Já vimos que uma função Booleana pode ser representada por uma equação oudetalhada pela sua tabela verdade. Mas uma função Booleana também pode ser representadade forma gráfica, onde cada operador está associado a um símbolo específico, permitindo oimediato reconhecimento visual. Tais símbolos são conhecidos por portas lógicas. Na realidade, mais do que símbolos de operadores lógicos, as portas lógicasrepresentam recursos físicos, isto é, circuitos eletrônicos, capazes de realizar as operaçõeslógicas. Na eletrônica que trabalha com somente dois estados, a qual é denominada eletrônicadigital, o nível lógico 0 normalmente está associado à ausência de tensão (0 volt) enquanto onível lógico 1, à presença de tensão (a qual geralmente é 5 volts). Nesta disciplina, noslimitaremos ao mundo da álgebra Booleana, admitindo que as portas lógicas representamtambém circuitos eletrônicos que, de alguma maneira, realizam as funções Booleanassimbolizadas. Então, ao conjunto de portas lógicas e respectivas conexões que simbolizamuma equação Booleana, denominaremos circuito lógico.2.3.1 Porta OU O símbolo da porta OU pode ser visto na figura 2.1. Tal como na porta E, as entradassão colocadas à esquerda e a saída, à direita. Deve haver no mínimo duas entradas, mas hásomente uma saída. O funcionamento da porta E segue a definição da operação E, dada naseção 2.1.1. A A A+B A+B+C B B C (a) (b) Figura 2.1 - Símbolo da porta lógica OU com 2 entradas (a) e com 3 entradas (b).
  23. 23. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-72.3.2 Porta E O símbolo da porta E é mostrado na figura 2.2. À esquerda estão dispostas as entradas(no mínimo duas, obviamente) e à direita, a saída (única). As linhas que conduzem asvariáveis de entrada e saída podem ser interpretadas como fios que transportam os sinaiselétricos associados às variáveis. O comportamento da porta E segue extritamente a definição(e tabela verdade) dada na seção 2.1.2. A A.B.C A A.B B B C (a) (b) Figura 2.2 - Símbolo da porta lógica E com 2 entradas (a) e com 3 entradas (b).2.3.3 Inversor (ou Porta Inversora, ou Negador) A porta que simboliza a operação complementação é conhecida como inversor (ouporta inversora, ou negador). Como a operação complementação só pode ser realizada sobreuma variável por vez (ou sobre o resultado de uma subexpressão), o inversor só possui umaentrada e, obviamente, uma saída. Caso se queira complementar uma expressão, é necessárioobter-se primeiramente o seu resultado, para só então aplicar a complementação. O símbolodo inversor é mostrado na figura 2.3. A A Figura 2.3 - Símbolo do inversor (também conhecido como negador ou porta inversora).2.3.4 Exemplo de Circuito Lógico Dada uma equação Booleana qualquer, é possível desenhar-se o circuito lógico que aimplementa. O circuito lógico é composto das portas lógicas relacionadas às operações quesão realizadas sobre as variáveis de entrada. Os resultados das operações são conduzidos porfios, os quais, no desenho, são representados por linhas simples. Os passos a serem seguidos para se realizar o desenho do circuito lógico a partir deuma equação são praticamente os mesmos usados na avaliação da expressão. Tomemos comoexemplo a equação, avaliada na seção 2.2. Inicialmente, identificamos as variáveisindependentes, que no caso são X, Y e Z. Para cada uma destas, traçamos uma linha (daesquerda para a direita), representando os fios que conduzem os valores. Feito isto, deve-seseguir desenhando as portas necessárias para representar cada uma das subexpressões, namesma ordem tomada para a avaliação, ou seja: 1o parêntesis (dos mais internos para os mais externos); 2o operações E;
  24. 24. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-8 3o operações OU. A figura 2.4 mostra o circuito lógico para a equação W = X + Y ⋅ Z . X W Y Z Figura 2.4 - Um circuito lógico.2.4 Leis Fundamentais e Propriedades da Álgebra Booleana As leis da álgebra Booleana dizem respeito ao espaço Booleano (isto é., valores queuma variável pode assumir) e operações elementares deste espaço. Já as propriedades podemser deduzidas a partir das definições das operações. Sejam A e B duas variáveis Booleanas. Então, o espaço Booleano é definido: se A≠0, então A=1; se A≠1, então A=0. As operações elementares deste espaço são operação OU, operação E ecomplementação, cujas definições foram dadas nas seções 2.1.1, 2.1.2 e 2.1.3,respectivamente. As propriedades da álgebra Booleana são as seguintes. Da adição lógica: (1) A+0 = A (2) A +1 = 1 (3) A+A = A (4) A+A = 1 Da multiplicação lógica: (5) A⋅ 0 = 0 (6) A ⋅1 = A (7) A⋅ A = A (8) A⋅ A = 0 Da complementação: (9) A=A Comutatividade: (10) A + B = B+ A (11) A⋅ B = B ⋅ A
  25. 25. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-9 Associatividade: (12) A +(B + C ) =(A + B )+ C = ( A + C )+ B (13) A ⋅ (B ⋅ C) = (A ⋅ B) ⋅ C = (A ⋅ C) ⋅ B Distributiva (da multiplicação em relação à adição): (14) A ⋅ (B + C) = A ⋅ B + A ⋅ C2.4.1 Teoremas de De Morgan O primeiro teorema de De Morgan diz que a complementação de um produto (lógico)equivale à soma (lógica) das negações de cada variável do referido produto. Sob a forma deequação, teríamos: A ⋅ B⋅ C ⋅... = A + B + C + ... (2.1) O segundo teorema é o dual ( i.e., o espelho) do primeiro, ou seja, a complementaçãode uma soma (lógica) equivale ao produto das negações individuais das variáveis: A + B + C + ... = A ⋅ B⋅ C⋅... (2.2) Particularizando os teoremas de De Morgan para duas variáveis, temos: A⋅ B = A + B (2.3) A + B = A⋅ B (2.4)2.5 Derivação de Expressões Booleanas Dada uma função Booleana, descrita por sua tabela verdade, derivar uma expressãoBooleana para esta função é encontrar uma equação que a descreva. Logo, a derivação deexpressões Booleanas é o problema inverso da avaliação de uma expressão Booleana, descritona seção 2.2 Há basicamente duas maneiras de se definir (ou descrever) uma função Booleana:descrevendo-se todas as situações das variáveis de entrada para as quais a função vale 1 ou,alternativamente, todas as situações em que a função vale 0. O primeiro método é conhecidopor soma de produtos (SdP), enquanto que o segundo é chamado produto de somas (PdS).Qualquer função Booleana pode ser descrita por meio de soma de produtos ou por meio deproduto de somas. Como as funções Booleanas só podem assumir um dentre dois valores (0ou 1), basta usar-se um dos dois métodos para se encontrar uma equação para uma função. A seguir, são detalhados os métodos de derivação de expressões Booleanas.
  26. 26. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-102.5.1 Derivação de Expressões usando Soma de Produtos (SdP) Dada uma função Booleana de n variáveis (ou seja, n entradas), haverá 2n combinaçõespossíveis de valores. Dizemos que esse conjunto de valores que as variáveis podem assumir,juntamente com os respectivos valores da função, constituem o espaço da função. A cadacombinação de entradas podemos associar um termo produto, no qual todas as variáveis dafunção estão presentes, e que é construído da seguinte forma: se a variável correspondentevale 0, ela deve aparecer negada; se a variável vale 1, ela deve aparecer não negada. A tabelaa seguir lista os termos produto associados a cada combinação de entradas para uma funçãoBooleana de três variáveis (A, B e C, por exemplo). A B C mintermo 0 0 0 A⋅ B ⋅ C 0 0 1 A ⋅ B ⋅C 0 1 0 A⋅ B ⋅ C 0 1 1 A ⋅ B ⋅C 1 0 0 A⋅ B ⋅ C 1 0 1 A⋅ B ⋅ C 1 1 0 A ⋅ B⋅ C 1 1 1 A ⋅ B⋅ C Cada termo produto construído conforme a regra anteriormente descrita é denominadomintermo (ou minitermo). Note que, para um dado mintermo, se substituirmos os valores dasvariáveis associadas, obteremos 1. Porém, se substituirmos nesse mesmo mintermo quaisqueroutras combinações de valores, obteremos 0. Dessa forma, se quisermos encontrar a equaçãopara uma função a partir de sua tabela verdade, basta montarmos um OU entre os mintermosassociados aos 1s da função (também chamados mintermos 1 ).Exemplo 2.1: encontrar a equação em soma de produtos (SdP) para a função F, descrita pelaseguinte tabela verdade: A B C F 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 0 F é função das variáveis A, B e C. Os valores de (A,B,C) para os quais F=1 são (0,1,0),(0,1,1), (1,0,1) e (1,1,0). Os mintermos associados a essas condições (ou seja, os mintermos1), são A ⋅ B ⋅ C , A ⋅ B ⋅C , A ⋅ B ⋅ C e A ⋅ B⋅ C , respectivamente. Logo, a equação em somade produtos para F será o OU entre estes produtos, conforme segue: F = A ⋅B ⋅ C + A ⋅ B⋅ C + A ⋅ B ⋅C + A ⋅B ⋅ C (2.5)
  27. 27. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-11 A fim de simplificar a notação, o símbolo da operação E pode ser omitido. Destaforma, a equação anterior pode ser reescrita de maneira mais concisa: F = A BC + A BC + A BC + A BC (2.6)2.5.2 Derivação de Expressões usando Produto de Somas (PdS) O método de derivação usando produto de somas é o dual (isto é, o oposto) do métodode derivação em soma de produtos. A cada combinação das variáveis de entrada de umafunção podemos associar um termo soma, no qual todas as variáveis da função estãopresentes, e que é construído da seguinte forma: se a variável correspondente vale 1, ela deveaparecer negada; se a variável vale 0, ela deve aparecer não negada. A tabela a seguir lista ostermos soma associados a cada combinação de entradas para uma função Booleana de trêsvariáveis (A, B e C, por exemplo). A B C maxtermos 0 0 0 A + B+ C 0 0 1 A + B+ C 0 1 0 A + B+ C 0 1 1 A + B+ C 1 0 0 A + B+ C 1 0 1 A + B+ C 1 1 0 A + B+ C 1 1 1 A + B+ C Cada termo soma construído conforme a regra anteriormente descrita é denominadomaxtermo (ou maxitermo). Note que, para um dado maxtermo, se substituirmos os valoresdas variáveis associadas, obteremos 0. Porém, se substituirmos nesse mesmo maxtermoquaisquer outras combinações de valores, obteremos 1. Dessa forma, se quisermos encontrar aequação para uma função a partir de sua tabela verdade, basta montarmos um E entre osmaxtermos associados aos 0s da função (também chamados maxtermos 0 ).Exemplo 2.2: encontrar a equação em produto de somas (PdS) para a função F, descrita pelaseguinte tabela verdade: A B C F 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 0
  28. 28. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-12 Foi escolhida a mesma função do exemplo anterior, para que se possa estabelecercomparações entre os dois métodos de derivação. Os valores das variáveis de entrada (A,B,C)para os quais F=0 são (0,0,0), (0,0,1), (1,0,0) e (1,1,1). Os maxtermos associados a essascondições (ou seja, os maxtermos 0), são A + B + C , A + B + C , A + B + C e A + B + C ,respectivamente. Logo, a equação em produto de somas para F será o E entre estas somas: F =(A + B + C)(A + B + C)(A + B + C)(A + B + C) (2.7) Note que a ordem de precedência de uma expressão em produto de somas é “primeirocada soma deve ser avaliada, para só então avaliar-se o produto”. Isto significa que osparêntesis em torno de cada termo soma são obrigatórios! Repare também que os símbolosreferentes à operação E (entre os termos soma) podem ser omitidos.2.6 Formas Canônicas, Padrão e Não-Padrão As representações em soma de produtos e em produto de somas são denominadasformas padrão. A soma de produtos e o produto de somas descritos nas duas seçõesanteriores apresentam ainda uma característica bastante particular: em cada termo soma e emcada termo produto todas as variáveis da função estão presentes. Devido a essa característica,essas formas são chamadas canônicas. Além das representações descritas nas seções anteriores, há representações alternativas(e mais concisas) para as expressões canônicas. Se associarmos cada combinação dasvariáveis de entrada ao seu equivalente em decimal, cada mintermo pode ser representado pormi, onde i é o decimal associado. De forma similar, cada maxtermo pode ser representado porMi, onde i é o decimal associado. A tabela a seguir lista todos os mintermos e maxtermos deuma função de três variáveis (A, B e C). A B C mintermo maxtermo 0 0 0 m0 M0 0 0 1 m1 M1 0 1 0 m2 M2 0 1 1 m3 M3 1 0 0 m4 M4 1 0 1 m5 M5 1 1 0 m6 M6 1 1 1 m7 M7 Voltando à função F das seções anteriores, podemos reescrever a expressão em somade produtos, na forma canônica, como segue: F = m2 + m3 + m5 + m6 (2.8) Ou ainda, de maneira mais concisa: F = ∑ (2,3,5,6) (2.9)
  29. 29. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-13 E sua expressão em produto de somas, na forma canônica, pode ser reescrita como: F = M0 ⋅ M1 ⋅ M4 ⋅M7 (2.10) Ou simplesmente, como: F = ∏ (0,1,4,7) (2.11) Apesar da praticidade das representações canônicas, elas são pouco úteis para aimplementação de circuitos digitais. O número de elementos (portas lógicas e conexões) deum circuito lógico depende diretamente do número de operações Booleanas (inversão, E eOU) contidas na expressão associada. Desta forma, é normal que se deseje reduzir o númerode operações contidas numa função, de modo a poder-se implementá-la com circuitos lógicosmais simples, e portanto, de menor custo. A redução do número de operações é obtidamediante a eliminação de literais da expressão, aplicando-se as propriedades da álgebraBooleana descritas na seção 2.4. Um literal é uma variável negada ou uma variável nãonegada. O processo de redução de literais (ou de redução de operações, equivalentemente) édenominado simplificação. Para exemplificar os passos básicos para a simplificação algébrica (literal) deexpressões Booleanas, tomemos a expressão canônica, em soma de produtos, para a função F: F = A BC + A BC + A BC + A BC (2.12) O primeiro passo é identificar pares de mintermos que se diferenciam por apenas umliteral, a fim de aplicar a propriedade (14). Os mintermos ABC e ABC , por exemplo,possuem os mesmos literais, exceto pela variável C: no primeiro, o literal é C , enquanto nosegundo, o literal é C. Então, com o uso da propriedade (14), pode-se fatorar esses doismintermos, obtendo-se: F = A B(C + C)+ A BC + A BC (2.13) Pela propriedade (4), tem-se que C + C=1. Então, substituindo em 2.13, segue: F = AB ⋅ 1 + ABC + ABC (2.14) E pela propriedade (6), AB ⋅1 = AB. Substituindo em 2.14, obtém-se: F = A B + A BC + A BC (2.15) Assim, pela manipulação algébrica, obtivemos uma expressão em soma de produtosque é simplificada em relação a sua expressão em soma de produtos na forma canônica, pois onúmero de operações e também de literais foram reduzidos (compare 2.15 com 2.12). Entretanto, na equação 2.12, o mintermo ABC também poderia ter sido agrupado como mintermo ABC , pois ambos possuem os mesmos literais, exceto pela variável A ( A noprimeiro e A no segundo). Naturalmente, os passos a serem seguidos seriam os mesmosdescritos anteriormente. E a equação resultante seria um pouco diferente, mas com o mesmonúmero de operações, sendo portanto, de mesma complexidade. Na verdade, o melhor seria sepudéssemos agrupar o mintermo ABC com o mintermo ABC e ao mesmo tempo com omintermo ABC . Felizmente, a propriedade (3) da álgebra Booleana diz que o OU entre duasou mais variáveis Booleanas iguais é igual a própria variável Booleana em questão.Estendendo esta propriedade, pode-se dizer que o OU entre duas ou mais funções (inclusive
  30. 30. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-14produtos) Booleanas iguais equivale à própria função Booleana em questão. Desta forma,pode-se expandir o mintermo ABC para ABC = ABC + ABC (2.16)que é uma manipulação algébrica decorrente da propriedade (3). Retomando a equação 2.12 e utilizando 2.16, segue que: F = A BC + A BC + A BC + A BC + A BC (2.17) Então, a propriedade (3) garante que as expressões 2.12 e 2.17 são equivalentes,embora o mintermo ABC apareça duplicado. E pelo fato de aparecer duas vezes, pode-se usaruma cópia de ABC para simplificar com ABC e outra para simplificar com ABC . Os passosda simplificação são os mesmos já descritos: pela propriedade (14), segue: F = A B(C + C)+ A BC +(A + A)BC (2.18) E pela propriedade (6), vem: F = AB⋅1+ ABC + 1⋅ BC (2.19) Finalmente, pela propriedade (4), tem-se: F = A B + A BC + BC (2.20) Repare que o mintermo A BC não pôde ser agrupado com nenhum outro mintermo.Note também que foram feitas todas as simplificações possíveis, uma vez que foramagrupados e simplificados todos os pares de mintermos que se diferenciam de somente umavariável. Logo, a expressão 2.20 representa a máxima simplificação possível sob a forma desoma de produtos. E por esse motivo, ela é dita equação mínima em soma de produtos dafunção F. Quanto a expressão 2.15, diz-se ser uma equação em soma de produtossimplificada (porém, não-mínima). Logo, toda equação mínima é simplificada, porém, nemtoda equação que foi simplificada é necessariamente mínima. Embora a equação mínima em soma de produtos apresente menor número deoperações Booleanas que a representação na forma canônica, as vezes pode ser possívelreduzir-se ainda mais o número de operações, fatorando-se literais. Por exemplo, na expressão2.20 pode-se fatorar o primeiro e o terceiro mintermos como segue: F = B(A + C)+ A BC (2.21) A expressão 2.21, obtida pela fatoração de 2.20, não é nem do tipo soma de produtos,nem produto de somas, pois há um termo que não é nem produto, nem soma. Diz-se que aexpressão está na forma fatorada. No caso de 2.21, a fatoração não resultou em redução donúmero de operações. No que se refere a terminologia, as formas soma de produtos e produto de somas sãoditas formas padrão (formas standard). A forma fatorada é dita não-padrão. As formascanônicas são, pois, casos especiais de formas padrão, nas quais os termos são mintermos oumaxtermos. A fim de diferenciar somas de produtos canônicas de somas de produtossimplificadas, usaremos a expressão “soma de mintermos”. De maneira similar, usaremos aexpressão “produto de maxtermos” para diferenciar produtos de somas canônicos deprodutos de somas simplificados.
  31. 31. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-152.7 Circuitos Lógicos para Formas Padrão e Não-Padrão As regras gerais para se realizar o desenho de circuitos lógicos já foram apresentadasna seção 2.3 (item 2.3.4). As regras seguintes devem ser observadas, a fim de facilitar acompreensão do desenho: • as variáveis de entrada devem ser identificadas preferencialmente à esquerda, juntoaos respectivos fios; • inversores devem ser providos para as variáveis que aparecem negadas na equação; • as portas que implementam as operações Booleanas que aparecem na equaçãonormalmente são posicionadas da esquerda para a direita, seguindo a ordem de avaliação dosoperadores (descrita em 2.3.4). No caso de equações na forma soma de produtos (canônica ou simplificada), há umprimeiro nível (desconsiderando-se possíveis inversores), constituído somente por portas E,onde cada porta E implementa um dos produtos da equação. Há ainda um segundo nível,constituído por uma porta OU, responsável pela “soma” lógica dos produtos. A figura 2.5mostra um possível circuito lógico para a equação 2.12. Repare que em todas as interseções de fios em que há conexão física, deve haver umponto (suficientemente grande), como se fora uma “solda”. Logo, quando não há o referidoponto na interseção de fios, significa que tais fios estão “eletricamente isolados”. 1o nível 2o nível A B C F Figura 2.5 - Um circuito lógico para soma de produtos. O circuito da figura 2.5 pode ainda ser desenhado utilizando-se uma notaçãosimplificada para os inversores das entradas. Ao invés de se desenhar um inversor para cadavariável que aparece negada na equação, coloca-se um círculo junto a cada entrada de cada
  32. 32. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-16porta na qual há uma variável negada. A aplicação desse procedimento para o circuito dafigura 2.5 resulta no seguinte desenho: 1o nível 2o nível A B C F Figura 2.6 - Um circuito lógico para soma de produtos - outra possível representação. No caso de equações na forma produto de somas (canônica ou simplificada), oprimeiro nível é constituído por portas OU, sendo cada uma responsável por uma das “somas”lógicas da equação. O segundo nível, por sua vez, é constituído por uma porta E, que realiza oproduto lógico das parcelas. A figura 2.7 mostra um possível circuito lógico para a equação2.7. 1o nível 2o nível A B C F Figura 2.7 - Um circuito lógico para produto de somas.
  33. 33. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-17 Pelo fato de apresentarem apenas dois níveis de portas (dois níveis lógicos), circuitospara equações representadas nas formas padrão, canônicas ou simplificadas, são ditoscircuitos em dois níveis (ou lógica a dois níveis). Dada a equação canônica de uma função qualquer, o circuito para uma equaçãosimplificada a partir da canônica possui menos portas e/ou portas de menor complexidade. (Acomplexidade relativa de uma porta pode ser medida pelo número de entradas que elaapresenta). A figura 2.8 mostra o circuito lógico para a equação 2.20, que é a forma mínimapara a função da equação 2.12. Note que este circuito é de menor complexidade que o circuitoda figura 2.6. A complexidade relativa de um circuito lógico pode ser calculada somando-se onúmero de entradas das portas. Nos circuitos das figuras 2.6 e 2.7 há 4 portas de 3 entradas e1 porta de 4 entradas. Então, a complexidade relativa será 4x3+1x4=16. No circuito da figura2.8 há 2 portas de 2 entradas e 2 portas de 3 entradas. Sua complexidade relativa será2x2+2x3=10. Claramente, o circuito da figura 2.8 é de menor complexidade que os circuitosdas figuras 2.6 e 2.7. Estes dois são de mesma complexidade relativa. No cálculo dacomplexidade relativa, as inversões normalmente não são levadas em conta. Circuitos para formas fatoradas podem ser vistos como o caso mais genérico. Emgeral, as formas fatoradas conduzem a circuitos cujo número de níveis lógicos é maior do quedois. Por isso, circuitos lógicos para formas fatoradas são denominados circuitos multinível(lógica multinível). Como dito na seção 2.6, as vezes uma forma fatorada pode apresentarmenor número de operações do que a respectiva forma padrão. Quando isso ocorre, o circuitoassociado à forma fatorada também será de menor complexidade relativa. Entretanto, se nãoocorrer redução no número de operações, mesmo assim é possível que o circuito para a formafatorada seja de menor complexidade relativa, pois o conceito de complexidade relativatambém inclui o número de entradas de cada porta. Então, a maneira mais segura de saber se ocircuito associado à forma fatorada é de menor complexidade ou não é desenhá-lo e somar onúmero de entradas. A figura 2.9 mostra o circuito para a equação 2.21, obtida a partir daequação 2.20 fatorando-se o literal B. Note que o número de operações Booleanas destasequações é o mesmo: 4. No entanto, a complexidade do circuito da forma fatorada é3x2+1x3=9, portanto menor do que a complexidade do circuito da figura 2.8. 1o nível 2o nível A B F C Figura 2.8 - Circuito lógico para a equação 2.20.
  34. 34. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-18 1o nível 2o nível 3o nível A C F B Figura 2.9 - Circuito lógico multinível, associado à equação 2.21, a qual está na forma fatorada.2.8 Simplificação de Funções Booleanas usando Mapas deKarnaugh O método de simplificação apresentado na seção 2.6 é de aplicabilidade limitada, umavez que é bastante difícil certificar-se que todos os pares de mintermos que podiam sersimplificados foram determinados. Alternativamente àquele método, há outro método desimplificação baseado na identificação visual de grupos de mintermos passíveis de seremsimplificados. No entanto, para que se possa identificar tais grupos, é necessário que osmintermos sejam dispostos de maneira mais conveniente, o que será explicado a seguir. Na descrição do método de simplificação literal, foi mencionado que os pares demintermos que se diferenciam de somente uma variável são passíveis de simplificação.Observando a ordem com que os mintermos de uma função Booleana qualquer (com, porexemplo, 3 variáveis) aparecem na tabela verdade, vemos que, se trocarmos o 3° mintermocom o 4° e trocarmos também o 7° mintermo com o 8°, obteremos uma nova ordem, na qualquaisquer dois mintermos adjacentes são passíveis de simplificação. É interessante notartambém que o 1° mintermo pode ser simplificado com o 5°, o 2° mintermo pode sersimplificado com o 6° e assim por diante. A B C mintermo 0 0 0 A⋅ B ⋅ C 0 0 1 A ⋅ B ⋅C 0 1 0 A⋅ B ⋅ C 0 1 1 A⋅ B ⋅C 1 0 0 A⋅ B ⋅ C 1 0 1 A⋅ B ⋅ C 1 1 0 A ⋅ B⋅ C 1 1 1 A ⋅ B⋅ C Figura 2.10 - Mintermos para uma função de 3 variáveis. Então, usando o novo ordenamento e re-arranjando os mintermos em duas linhas,temos a seguinte tabela:
  35. 35. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-19 A⋅ B ⋅ C A⋅ B ⋅C A⋅ B ⋅C A⋅ B ⋅ C A⋅ B ⋅ C A⋅ B ⋅ C A ⋅ B⋅ C A ⋅ B⋅ C Figura 2.11 - Tabela de adjacências para uma função de 3 variáveis. Repare que nessa nova tabela, quaisquer dois mintermos adjacentes (na horizontal ouna vertical) são passíveis de serem simplificados, pois só se diferenciam de uma variável. Éimportante ressaltar que esse conceito de adjacência não está restrito aos limites da tabela,uma vez que os elementos extremos de uma mesma linha (ou de uma mesma coluna) tambémsão simplificáveis. Isto implica que a tabela de adjacências de mintermos da figura 2.11 podee deve ser encarada como uma figura geométrica tridimensional do tipo “toróide” (ou uma“rosquinha”). A figura a seguir explicita as relações de adjacência dos mintermos para umafunção de três variáveis. m0 m1 m3 m2 m4 m5 m7 m6 Figura 2.12 - Simplificações possíveis entre os mintermos de uma função de 3 variáveis. É importante ressaltar que o conceito de adjacência é aplicável na horizontal e navertical, mas nunca na diagonal. Por exemplo, observe que m0 e m5 não são adjacentes, poisnão estão nem na mesma linha, nem na mesma coluna. O processo de simplificação usando a nova disposição inicia pela construção da tabelaem si: os valores da função que se quer simplificar devem ser preenchidos conforme a novaordem. Após, identificam-se todos os grupos de mintermos-1 adjacentes entre si. Cada grupoorigina um termo produto, no qual somente as variáveis comuns a todos os mintermos-1permanecem. Desde que os grupos de mintermos-1 adjacentes tenham sido corretamenteidentificados, a simplificação se torna trivial.Exemplo 2.3: simplificar a função F, cuja tabela verdade encontra-se no item 2.5.2. O primeiro passo é construir uma tabela para F, usando a nova disposição dosmintermos. C F AB BC A 00 01 11 10 0 0 0 1 1 A 1 0 1 0 1 A BC B BC Figura 2.13 - Grupos de mintermos-1 adjacentes e termos produto para uma função de 3 variáveis.
  36. 36. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-20 Após, deve-se identificar todos os grupos de mintermos-1 adjacentes entre si. Cadagrupo de mintermos-1 originará um produto, conforme indicado na figura 213. A equação emsoma de produtos simplificada será o OU entre os produtos encontrados: F = A B + A BC + BC (2.22)2.8.1 Mapas de Karnaugh e Subcubos A tabela modificada usada para a identificação dos mintermos-1 adjacentes noexemplo anterior é denominada mapa de Karnaugh (no caso, para 3 variáveis). Na figura2.14 são mostrados os mapas de Karnaugh para funções de 2, 3 e 4 variáveis. nome da função B B A 0 1 0 m0 m1 A 1 m2 m3 nome da C função BC A 00 01 11 10 0 m0 m1 m3 m2 A 1 m4 m5 m7 m6 B nome da D função CD AB 00 01 11 10 00 m0 m1 m3 m2 01 m4 m5 m7 m6 B A 11 m12 m13 m15 m14 10 m8 m9 m11 m10 C Figura 2.14 - Mapas de Karnaugh para funções de 2, 3 e 4 variáveis.

×