UNIVERSIDADE DO ESTADO DE SANTA CATARINA CENTRO DE CIÊNCIAS TECNOLÓGICAS – CCT Departamento de Ciências da Computação Professor Edino Mariano Lopes Fernandes Nota importante: Existem materiais incluídos neste texto de outros autores e fontes bibliográficas devidamente identificadas. O texto deve ser utilizado como referência. Para informações mais completas, deve-se recorrer aos livros ou sites Web citados na bibliografia. 2.1 Álgebra Booleana ou Álgebra de Boole O nome Álgebra Booleana é em homenagem ao matemático inglês George Boole que em 1854, publicou um livro clássico. Uma investigação das leis do pensamento sobre as quais são baseadas as teorias matemáticas da lógica e das probabilidades. O propósito estabelecido por Boole era o de realizar uma análise matemática da lógica. A Álgebra de Boole surgiu inicialmente por ter relações com os problemas que apareceram no projeto de circuitos de chaveamento com relês em 1838, Claude E. Shannon que era assistente de pesquisa no departamento de engenharia elétrica no MIT, em uma versão de sua tese para o grau de mestre de ciências que foi publicada sob o título A Symbolic Analysis of Relay and Switching Circuits. Este artigo apresentava um método para representação de qualquer circuito consistindo de combinações de chaves e réles por um conjunto de expressões combinações matemáticas, e foi desenvolvido um cálculo para manipular estas expressões. O cálculo usado baseava-se comprovadamente na álgebra booleana. No início da Era Eletrônica, os problemas e soluções tecnológicas empregavam somente sistemas analógicos, também conhecidos por sistemas lineares. Esses sistemas copiavam os sistemas que eram conhecidos na Natureza. Com o avanço da tecnologia, esses mesmos problemas passaram a ser solucionados também com a eletrônica digital. Professor Edino Mariano Lopes Fernandes 22 2.2 Postulados da Álgebra de Boole A Álgebra de Boole é um sistema constituído por um conjunto S, duas operações fechadas ( + , ou, e ., e) definidas sobre S, e por um conjunto de postulados. A operação simbolizada por + é chamada operação OU (ou OR). A operação simbolizada por . é chamada operação E (ou AND). Os símbolos + e . não tem o mesmo significado dos símbolos aritméticos usados para as operações aritméticas de adição e multiplicação. Uma operação é dita fechada sobre um conjunto se, quando aplicadas a dois ou mais elementos pertencentes ao conjunto, origina um outro elemento também pertencente ao conjunto. Por exemplo: Se a Є S e b Є S, Є = pertence então (a + b) Є S (a . b) Є S P.1 Associatividade de + e . (a + b) + c = a + (b + c) (a . b) . c = a . (b . c) P.2 Comutatividade de + e . (a = b) = b + a a . b=b.a P.3 (Existência) de um único elemento unitário em relação à operação + 0+a=a+0=a elemento unitário P.4 (Existência) de um único elemento unitário em relação à operação . 1.a = a.1 = a elemento unitário P.5 Distributividade de + sobre . a + (b . c) = (a + b) . (a + c) P.6 Distributividade de . sobre + a . (b + c) = (a . b) + (a . c) Professor Edino Mariano Lopes Fernandes 23 P.7 Existência de um complemento = qualquer que seja ( a) ( ā) tal que, a.ā=0 a + ā= 1 Aplicação: Qual o complemento de O ? Por P.3, O + Ō = 1 Ō = 1 e O . Ō = O, donde O . 1 = O Ō=1 2.3 Teoremas Fundamentais T.1 Lei da Dualidade Dada uma certa igualdade, se forem permutados entre si os símbolos + e ., os dígitos 0 e 1, nos seus dois membros, pode-se obter uma outra igualdade, dual da primeira. (a + b) + c = a + (b + c) (a . b) . c = a . (b . c) T.2 a + 1 = 1 T.3 a . 0 = 0 T.4 a + a = a T.5 a . a = a T. 6 Lei da Absorção: a + (a . b) = a T.7 Lei da Absorção: a . (a + b) = a T.8 T. 9 ā é único T.10 Teorema de De Morgan Professor Edino Mariano Lopes Fernandes 24 2.4 Funções Booleanas Chama-se função booleana a uma dada expressão envolvendo elementos e operações da álgebra de Boole. Exemplos: f1 (a,b,c) = a . b + ā . b . c + b . c f2 (A, B, C, D) = Ā . B + Ā .B . C . D + Ā Obs.: A notação E, simbolizada pelo . pode ser omitida, podendo-se representar a operação a . b simplesmente por ab. TABELA VERDADE (TV) São tabelas que representam todas as possíveis combinações das variáveis de entrada de uma função, e os seus respectivos valores de saída. A determinação da tabela verdade de uma função envolve os seguintes procedimentos: 1) Preenchimento das colunas referentes às variáveis da função, registrndo-se todas as combinações de 0’s e 1’s que as variáveis podem assumir. Se a função possuir N variáveis, então o número de combinações é igual a 2N. Esse número é igual ao número de linhas da tabela verdade. 2) Preenchimento de colunas envolvendo expressões intermediárias. Aqui o número de colunas depende d complexidade da função. 3) Preenchimento da coluna de saída, que é uma manipulação lógica das colunas que envolvem expressões intermediárias e da função em si. Exemplo: Representar numa TV a função: f (a,b,c,d) = a . (a + b . d . c) a 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 b 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 c 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 d 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 d 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 c 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 b d c 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 a + b. d . c 0 0 0 0 1 0 0 0 1 1 1 1 1 1 1 1 f (a,b,c,d) 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 Expressões intermediárias Quando uma função é igual a 1, diz-se que ela existe, ou que é verdadeira, ou que assume o nível lógico alto. Quando uma função é igual a 0, diz-se que ela não existe, ou é falsa, ou que assume o nível lógico baixo. Professor Edino Mariano Lopes Fernandes 25 Passagem da Tabela Verdade para a expressão algébrica. Seja a Tabela Verdade: a 0 0 1 1 b 0 1 0 1 f 1 0 1 1 Pode-se obter f como uma somatória de termos onde aparecem todas as variáveis observandose as regras a seguir: 1. O número de termos é igual ao número de 1’s (huns)da função. No caso o número de termo é 3. 2. Cada termo possui todas as variáveis interligadas pele operação . (E), considerando-se a variável barrada se, para uma dada linha onde f é igual a 1(hum), a mesma for 0 (zero). Portanto: 2.5 Portas Lógicas ou Gates Todos as complexas operações de um computador digital acabam sendo combinações de simples operações aritméticas e lógicas básicas: somar bits, complementar bits (para fazer subtrações), comparar bits, mover bits. Estas operações são fisicamente realizadas por circuitos eletrônicos, chamados circuitos lógicos (ou gates - "portas" lógicas). Computadores digitais (binários) são construídos com circuitos eletrônicos digitais - as portas lógicas (circuitos lógicos). A álgebra de Boole, base do desenvolvimento dos computadores, trabalha com apenas duas grandezas: falso ou verdadeiro. As duas grandezas são representadas por 0 (falso) e 1 (verdadeiro). Professor Edino Mariano Lopes Fernandes 26 Os circuitos a que far-se-á referência nesta parte da disciplina pertencem à família de circuitos TTL ( Transistor-Transistor- Logic). São alimentados com 5 Volts e os níveis lógicos estão definidos na figura abaixo. Assim, qualquer tensão na entrada de uma porta lógica entre 0 e 0,8 V é interpretada como nível lógico 0. Qualquer tensão entre 2,0 e 5,0 Volts (podendo ir até 5,5 V) na entrada é interpretada como nível lógico 1. Na saída do circuito lógico, qualquer tensão entre 0 e 0,4 V será interpretada como nível lógico 0, e qualquer tensão entre 2,4 V e 5,0 V será interpretada como sendo nível lógico 1. A faixa de tensão entre 0,8 e 2,0 V é definida como sendo uma zona de indefinição, não devendo ser usada na entrada dos circuitos. OPERADORES LÓGICOS Os conectivos ou OPERADORES LÓGICOS ou FUNÇÕES LÓGICAS são: E (ou AND) - uma sentença é verdadeira SE - e somente se - todos os termos forem verdadeiros. OU (ou OR) - uma sentença resulta verdadeira se QUALQUER UM dos termos for verdadeiro. NÃO (ou NOT) - este operador INVERTE um termo. Os operadores lógicos são representados por: _____ NOT --> (uma barra horizontal sobre o termo a ser invertido ou negado). E ------> . (um ponto, como se fosse uma multiplicação) OU ----> + (o sinal de soma) As expressões booleanas podem ser implementadas fisicamente usando-se portas eletrônicas ou relês. Cada porta eletrônica é um circuito que tem uma ou mais entradas e somente uma saída, que é uma função lógica da entrada. Tanto as entradas das portas quanto as saídas assumem níveis de tensão referidos como níveis lógicos 0 ou 1. Professor Edino Mariano Lopes Fernandes 27 Os circuitos aos quais faremos menção a seguir fazem parte da família TTL (TransistorTransistor-Logic). As Portas Lógicas ou Gates são dispositivos ou circuitos lógicos que operam um ou mais sinais lógicos de entrada para produzir uma (e somente uma) saída, a qual é dependente da função implementada no circuito. Um computador é constituído de uma infinidade de circuitos lógicos, que executam as seguintes funções básicas: a) realizam operações matemáticas b) controlam o fluxo dos sinais c) armazenam dados Existem dois tipos de circuitos lógicos: COMBINACIONAL - a saída é função dos valores de entrada correntes; esses circuitos não tem capacidade de armazenamento [casos a) e b) acima]. SEQUENCIAL - a saída é função dos valores de entrada correntes e dos valores de entrada no instante anterior; é usada para a construção de circuitos de memória (chamados "flip-flops" - caso c acima); esses circuitos não serão estudados nesta disciplina. As Portas Lógicas A seguir, apresentamos as principais Portas Lógicas, suas funções básicas, simbologia DIN e ABNT e suas representações em tabelas-verdade. AND - FUNÇÃO E 1/4 do Circuito Integrado 7408 Professor Edino Mariano Lopes Fernandes 28 Simbologia ABNT OR - FUNÇÃO OU ¼ do Circuito Integrado 7432 Simbologia ABNT Professor Edino Mariano Lopes Fernandes 29 FUNÇÃO NOT ¼ do C. I. 7404 Simbologia ABNT Outros circuitos fundamentais PORTA NAND (NÃO E) A porta NAND equivale a uma porta AND seguida por uma porta NOT, isto é, ela produz uma saída que é o inverso da saída produzida pela porta AND. ¼ do CI 7400 Professor Edino Mariano Lopes Fernandes 30 Simbologia ABNT PORTA NOR (NÃO OU) A porta NOR equivale a uma porta OR seguida por uma porta NOT, isto é, ela produz uma saída que é o inverso da saída produzida pela porta OR. ¼ do CI 7402 Simbologia ABNT Professor Edino Mariano Lopes Fernandes 31 PORTA XOR (OU EXCLUSIVO) A porta XOR compara os bits; ela produz saída 0 quando todos os bits de entrada são iguais e saída 1 quando pelo menos um dos bits de entrada é diferente dos demais. ¼ do CI 7486 Simbologia ABNT Equivalência de blocos lógicos. Por diversas razões construtivas, fica mais barato construir os circuitos de um computador usando apenas um único tipo de circuito, quando for possível. Aceitando essa afirmação, vamos representar os nossos circuitos já conhecidos usando apenas funções NAND ou os NOR. a) CIRCUITO INVERSOR Professor Edino Mariano Lopes Fernandes 32 b) CIRCUITO AND c) CIRCUITO OR Professor Edino Mariano Lopes Fernandes 33 d) Circuito Ou Exclusivo 2.6 Implementação de funções booleanas Todo circuito lógico executa uma expressão booleana, e, por mais complexo que seja, é formado pela interligação das portas lógicas básicas. De fato, uma função qualquer pode ser implementada usando-se portas AND, OR e Inversores. Exemplos: 1) Implementar a função booleana f(a,b) = ab + b, com portas lógicas. Temos: Professor Edino Mariano Lopes Fernandes 34 2) f (a,b,c,d) = a b c + (a + c d) . b 2.7 Formas Canônicas A partir da tabela verdade, é possível chegar à expressão que representa o comportamento de um circuito, e em seguida construir o circuito, usando as portas lógicas já estudadas. O processo de elaboração da expressão usa as chamadas formas canônicas, que consistem em regras para representar as condições de entrada que: a) produzirão saída 1 (e portanto as demais condições produzirão saída 0) ou alternativamente, b) produzirão saída 0 (e portanto as demais condições produzirão saída 1). São, portanto, duas as formas canônicas: a) Forma normal disjuntiva: quando ela está formada pela soma de MINITERMOS. Um minitermo é um produto de todas as variáveis da função (barradas ou não) representa as condições que produzem saída 1; b) Forma normal conjuntiva: quando está representada por produtos de MAXITERMOS. Um maxitermo é representado pela soma de todas as variáveis (barradas ou não) da função - representa as condições que produzirão saída 0. Exemplos: Minitermos: f (a,b,c,d) = a b c d Maxitermos: f (a,b,c,d) = a + b + c + d Essas formas são alternativas, isto é, a expressão poderá ser encontrada aplicando-se alternativamente UMA ou OUTRA das formas. Professor Edino Mariano Lopes Fernandes 35 Soma dos Minitermos É produzida construindo: um termo (uma sub-expressão) para cada linha da tabela verdade (que representa uma combinação de valores de entrada) em que a saída é 1, cada um desses termos é formado pelo PRODUTO (FUNÇÃO AND) das variáveis de entrada, sendo que: quando a variável for 1, mantenha; quando a variável for 0, complemente-a (função NOT). a função booleana será obtida unindo-se os termos PRODUTO (ou minitermos) por uma porta OR (ou seja, "forçando-se" a saída 1 caso qualquer minitermo resulte no valor 1). Dessa forma, ligando os termos-produto (também chamados minitermos) pela porta OR, caso QUALQUER UM dos minitermos seja 1 (portanto, caso qualquer uma das condições de valores de entrada que produz saída 1se verifique), a saída pela porta OR será também 1. Ou seja, basta que se verifique qualquer uma das alternativas de valores de entrada expressos em um dos minitermos, e a saída será também 1, forçada pelo OR. Caso nenhuma dessas alternativas se verifique, produz-se a saída 0. Exemplo: PRODUTO DOS MAXITERMOS É produzida construindo: um termo (uma sub-expressão) para cada linha da tabela verdade (que representa uma combinação de valores de entrada) em que a saída é 0, cada um desses termos é formado pela SOMA (FUNÇÃO OR) das variáveis de entrada, sendo que: quando a variável for 0, mantenha; quando a variável for 1, complemente-a (função NOT). a função booleana será obtida unindo-se os termos SOMA (ou maxitermos) por uma porta AND (ou seja, "forçando-se" a saída 0 caso qualquer minitermo resulte no valor 0). Dessa forma, ligando os termos-soma (também chamados maxitermos) pela porta AND, caso QUALQUER UM dos minitermos seja 0 (portanto, caso qualquer uma das condições de valores de entrada que produz saída 0 se verifique), a saída pela porta AND será também 0. Ou seja, basta que se verifique qualquer uma das alternativas de valores de entrada 0 expressos em um dos maxitermos, e a saída será também 0, forçada pelo AND. Caso nenhuma dessas alternativas se verifique, produz-se a saída 1. Professor Edino Mariano Lopes Fernandes 36 Exemplo: O mesmo comportamento (a mesma tabela verdade) pode ser igualmente representada por qualquer das formas canônicas. Exemplo: Se ambas as formas canônicas produzem expressões equivalentes, devemos escolher a representação que resultar em menor número de termos, produzindo uma expressão mais simples. Por esse método, pode-se encontrar a expressão que represente qualquer tabela verdade. Após se encontrar uma expressão que represente o comportamento esperado, é possível que não seja uma expressão simples que possa ser construída com poucas portas lógicas. Antes de projetar o circuito, é útil SIMPLIFICAR a expressão, de forma a possibilitar construir um circuito mais simples e portanto mais barato. Portanto, o fluxo de nosso procedimento será: DESCRIÇÃO VERBAL ---> TABELA VERDADE ---> FORMA CANÔNICA ---> --->FUNÇÃO SIMPLIFICADA ---> CIRCUITO Professor Edino Mariano Lopes Fernandes 37 2.8 Minimização de Funções O tamanho e a complexidade do circuito que realiza uma dada função depende de sua complexidade algébrica. Assim, sempre que for possível deverá ser adotada uma simplificação na expressão algébrica, usando postulados e teoremas, o que conduzirá a uma simplificação dos circuitos. Técnicas especiais de minimização foram desenvolvidas e a mais comum é a que emprega os Mapas de Karnaugh. Esta técnica é usada para reduzir as funções a formas mais simples. É uma técnica viável para funções de 2,3,4,5 e 6 variáveis. Para funções de mais de 6 variáveis, técnicas mais avançadas, tais como os algorítmos de Quine-McClusky, devem ser utilizadas. Mapas de Karnaugh Os mapas de Karnaugh são ferramentas gráficas para simplificação de expressões booleanas, através desta técnica e apesar de algumas limitações a ela inerentes, pode-se obter simplificações de forma segura, rápida e bem mais prática que a aplicação dos teoremas da álgebra de Boole. Um mapa K corresponde a uma grade quadriculada, onde cada quadrículo ou célula corresponde a uma linha da tabela verdade. Desta forma, existem mapas K oriundos de soma de mintermos ou produto de maxitermos. Aqui optaremos por tratar com soma de mintermos. A forma do mapa K depende apenas do número de varáveis envolvidas, para uma função com N variáveis o mapa terá 2N células. Cada célula correspondendo a um mintermo (ou maxitermo). A construção do mapa deve garantir que as células adjacentes, ou seja, aquelas que apresentarem faces comuns (lados comuns), devem representar termos que diferem em apenas uma variável. Mapa de Karnaugh para função de 2 variáveis. O mapa de Karnaugh é um diagrama constituído de uma certa quantidade de quadrados ou celas. O número de celas é igual a 2N onde, N é o número de variáveis da função. Assim, um mapa para uma função de 4 variáveis possui 24 = 16 celas. O mapa de Karnaugh para função de 2 variáveis possui, portanto, 4 celas, e tem a configuração abaixo para uma função f (a,b): Professor Edino Mariano Lopes Fernandes 38 Ex: de mapa para 4 variáveis: AB 00 CD 01 11 10 00 01 11 10 d i s p l a y CÉLULA Mapa K representado por mintermos da forma padrão soma de mintermos: f(A,B,C,D) = m0 + m1 + m2 + m3 + ... + m15 = m(0,1,2,3,4,...,15) AB 00 01 11 10 CD 00 A B C D m0 A B C D m4 A B C D m12 AB C D m8 01 A B CD m1 A B C D m5 ABCD m13 AB CD m9 11 A BCD m3 ABCD m7 ABCD m15 ABCD m11 10 A B CD m2 ABCD m6 A BCD m14 ABC D m10 A 0 0 0 0 0 0 0 0 1 1 B 0 0 0 0 1 1 1 1 0 0 C 0 0 1 1 0 0 1 1 0 0 D 0 1 0 1 0 1 0 1 0 1 Professor Edino Mariano Lopes Fernandes 39 Simplificação através de Mapas de Karnaugh Passos para simplificação usando mapas Karnaugh e expressões na forma de soma de mintermos: 1) Representação da função no mapa: para tanto marcam-se 1’s (uns) nas células que representem algum termo da expressão da função; 2) Agrupamento de células: 2.1) O número de células de um grupo deve corresponder a uma potência de base 2; Ex: 1,2,4,8,16,... 2.2) Quando 2N células são adjacentes (possuindo lados comuns) elas podem ser agrupadas e deste grupo é possível obter um termo com N variáveis eliminadas; Ex: dada a função f(A,B,C,D), um grupo de 4 células vai gerar um termo simplificado com apenas 2 variáveis. 2.3) Os grupos de células devem ter a forma quadrada, não são permitidos grupos em L, T ou algo que não seja quadrado ou retangular; 2.4) Uma célula pode fazer parte de mais de um grupo, mas um grupo não pode ter todas as suas células associadas a outros grupos, caso contrário será superposto pelos outros; 2.5) Para uma função com N variáveis, deve-se dar preferência a grupos com 2N-1, 2N2 ,...21 células, ou uma célula, necessariamente nessa ordem. Se há 3 varáveis, de início tente agrupar grupos com 23-1 = 4 células, após esgotar as possibilidades de agrupar grupos deste tamanho, procure agrupar células em número de 23-2 = 2 e assim sucessivamente após esgotar as possibilidades de agrupar grupos deste tamanho procure isolar as células “descasadas”. 3) Extração das expressões dos grupos de células: tais expressões são formadas pela interseção das variáveis (com ou sem barra) comuns aos nomes das células do grupo: EX: f(A,B,C) = m(0,1,3,7,5) A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1 f(A,B,C) 1 1 0 1 0 1 0 1 Professor Edino Mariano Lopes Fernandes 40 Após a marcação de células: AB C 0 00 01 11 10 1 1 1 1 1 1 Após definir agrupamentos: AB C 0 1 00 01 11 10 1 1 1 1 1 Foram formados dois grupos : G1: Uma dupla com as células: m0 = A B C e m1 = A B C A expressão desse grupo será: m0 m1 = A B G2: Um grupo com 4 células: m1 = A B C m3 A= B C A m7 B =C A B Cm5 = m1 m3 m7 m5 = C 4) Obtenção da expressão minimizada (simplificada) na forma de soma de mintermos: Corresponderá a soma lógica das expressões obtidas no passo 2: F(A,B,C) = G1 + G2 = A B + C Professor Edino Mariano Lopes Fernandes 41 MAPAS de KARNAUGH PARA SOMA DE MINTERMOS: Mapa para duas variáveis A 0 1 A B A B B 0 A B B A B B 1 A A Mapa para três variáveis B AB C 0 1 B 00 B 01 11 10 A B C A B C A B C A B C A B C A B C A B C A B C A C C A Professor Edino Mariano Lopes Fernandes 42 Mapa para quatro variáveis B B B AB 00 CD 00 D 01 A B C D A B C D 11 10 AB C D A B C D C 01 A B CD A B C D ABCD AB CD A BCD ABCD ABCD ABCD D 11 C D 10 A B CD ABCD A A BCD ABC D A Professor Edino Mariano Lopes Fernandes 43 Mapa para cinco variáveis A A B B C C B C C C ABC 000 DE E 001 011 010 110 111 101 100 00 D 01 E 11 D E 10 Professor Edino Mariano Lopes Fernandes 44 Mapa para 6 variáveis A A B C B C C C C ABC 000 DEF F 001 011 010 110 111 101 100 000 E 001 D F 011 010 E F 110 111 D F E 101 100 F Professor Edino Mariano Lopes Fernandes 45 Em qualquer mapa Karnaugh as células adjacentes sempre apresentam uma única variação de estado em uma única variável do termo. diferença AB 00 01 11 10 CD 00 01 A B C D A B C D A B C D AB C D A B CD A B C D ABCD AB CD A BCD ABCD ABCD ABCD A B CD ABCD A BCD ABC D 11 10 Exercícios: Da tabela abaixo pede-se: a) Utilize as condições em X (valor X significa que para o arranjo de entrada considerado admite-se tanto valor zero quanto valor um) para encontrar a expressão simplificada ao máximo, esta deve ser obtida diretamente por mapa de Karnaugh. A 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 B 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 C 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 D 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 S 1 0 1 0 X 1 1 X 1 0 X 0 X X X 1 Professor Edino Mariano Lopes Fernandes 46 b) Projete (construa o circuito após simplificação pelo mapa Karnaugh) o circuito lógico abaixo, que é capaz de exibir decimais equivalentes ao número binário ABC (A é o dígito mais significativo). A Circuito B display Lógico C c) Encontre as expressões simplificadas a partir das configurações de mapas abaixo: AB AB AB CD 1 1 CD 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Professor Edino Mariano Lopes Fernandes CD 1 1 1 1 1 1 1 1 1 1 47 2.9 Circuitos Aritméticos___________________________________________________ Aritmética Binária Circuitos que somam e subtraem números podem ser construídos através de portas lógicas. São circuitos rápidos por serem eletrônicos. Adição Binária Os circuitos do computador só processam números binários. Assim, os quatro casos básicos da adição binária são: 0+0=0 0+1=1 1+0=1 1 + 1 = 0 e vai 1(chamado de "carry") para a próxima casa portanto 1 + 1 será igual a 10 (que é o número 2 em binário). Afigura abaixo mostra a soma de dois números binários (1011 + 0011): Meio-Somador É um circuito que realiza os quatro casos básicos da adição binária. Considerando dois bits a serem somados (A0 e B0) e as saídas S0 do resultado e V1 do vai-um, temos: Professor Edino Mariano Lopes Fernandes 48 Somador Completo ou Totalizador É um circuito que consegue somar três bits, sendo que o último é o vai-um para a próxima casa. A figura abaixo mostra esse circuito, tendo duas palavras (A e B) de dois bits. O circuito para somar a primeira casa (A0 + B0) é o meio somador mostrado no ítem acima. O somador completo totalizará os bits A1 + B1 + V1: Um outro circuito para o somador completo é mostrado na figura abaixo: Professor Edino Mariano Lopes Fernandes 49 Agora podemos somar as duas palavras de 2 bits, utilizando o meio-somador e o somador completo da seguinte forma: Para palavras maiores do que 2 bits, basta ir acrescentando somadores completos ao esquema acima. Subtração Binária Os quatro casos básicos da subtração binária são: 0-0=0 0 - 1 = 1 e subtrai 1 do seguinte 1-0=1 1-1=0 Como na subtração decimal, quando o número que está sendo subtraido for menor do que o que subtrai teremos que fazer o empréstimo do dígito seguinte. Considere o exemplo: Professor Edino Mariano Lopes Fernandes 50 Operações com complemento binário Complemento de 1 (inversor) É obtido simplesmente invertendo os bits da palavra, isto é, trocar os 0s pelos 1s e viceversa. Exemplo: Obter o complemento 1 de 11010. O complemento 1 de 11010 é 00101 Complemento de 2 É obtido fazendo o complemento de 1 + 1. Exemplo, obter o complemento de 2 de 11010. 11010 => complemento de 1 = 00101 O complemento de 2 = complemento de 1 de 11010 + 1 = 00101 + 1 Professor Edino Mariano Lopes Fernandes 51 O complemento de 2 = 00110 Subtração usando complemento de 2 Os computadores não conseguem realizar as subtrações do mesmo modo que o ser humano, eles apenas somam. O computador realiza as subtrações através do complemento de 1 e complemento de 2. Utilizando o complemento de 2: Caso 1: A > B A: 1011 (decimal 11) 1011 B: 0110 (decimal 6) -> compl.de 2 -> 1010 Caso 2: A < B A: 0110 (decimal 6) 0110 B: 1011 (decimal 11) -> compl. de 2 -> 0101 Subtração usando complemento de 1 A subtração utilizando o complemento de 1 é mostrada abaixo: Caso 1: A > B Professor Edino Mariano Lopes Fernandes 52 A: 1011 (decimal 11) 1011 B: 0110 (decimal 6) -> compl.de 1 -> 1001 Caso 2: A < B A: 0110 (decimal 6) 0110 B: 1011 (decimal 11) -> compl. de 1 -> 0100 Resumo: Para realizar a subtração utilizando o complemento de 2: - mantém o primeiro número - calcula o complemento de 2 do segundo número - soma os dois números - Se houver bit de "overflow": isto indica que o resultado da subtração é positivo e o resultado é a própria soma desprezando o bit de overflow. - Se não houver o bit de "overflow": isto indica que o resultado da subtração é negativo e deve ser realizado o complemento de 2 da soma para obter o resultado final. Para realizar a subtração utilizando o complemento de 1: - mantém o primeiro número - calcula o complemento de 1 do segundo número - soma os dois números - Se houver bit de "overflow": isto indica que o resultado da subtração é positivo e o Professor Edino Mariano Lopes Fernandes 53 resultado é a soma desse valor com a unidade. - Se não houver o bit de "overflow": isto indica que o resultado da subtração é negativo e deve ser realizado o complemento de 1 da soma para obter o resultado final. Subtrator Completo Utilizando o somador completo podemos construir um subtrator completo que realiza a subtração de dois números através do complemento de 1. A tabela verdade do somador completo é: A 0 0 1 1 B 0 1 0 1 SOMA 0 1 1 0 VAI 1 0 0 0 1 Através do complemento de 1, o resultado da subtração de dois números A e B será: S=A-B Se A > B, o resultado da subtração será a soma (desprezando o "overflow") + 1 Se A < B, o resultado da subtração será o complemento de 1 de S. Professor Edino Mariano Lopes Fernandes 54 Assim, se da palavra 1010 (10) subtrairmos 0110 (6) devemos obter 0100 (4). No esquema acima, inserimos em A a palavra 1010 e em B a palavra 0110. A palavra em B passa por um inversor fornecendo 1001 (figura abaixo). Agora na entrada dos somadores teremos a soma das palavras 1010, 1001 e 0000 (das entradas V). Utilizando a tabela verdade do somador completo teremos na sua saída o resultado 0011 e V4=1. Esse resultado (0011) é somado com o V4 em uma porta NOU-Exclusivo, fornecendo como resultado 0011. O mesmo V4 realimenta o sistema entrando no primeiro somador em V0. Agora, temos a soma das palavras 1010, 1001 e 0001. Começamos somando o primeiro somador 0+1+1, que dará como resultado 0 e V1 = 1. Esse V1 entra no segundo somador e o processo se repete até o último. Assim teremos na saída 0100 e V4=1. Professor Edino Mariano Lopes Fernandes 55 Esse resultado é novamente combinado nas portas NOU-Exclusivo com V4, fornecendo como resultado 0100 e V4=1. V4 realimenta o sistema novamente, mas como V0 já é igual a 1, o sistema entra em equilíbrio não alterando mais sua respostas. OBS.: Chegamos na resposta S desejada 0100 e V4=1, indicando que esse resultado é positivo. EXERCÍCIO: 1) Subtraia da palavras 0110 a palavra 1010. Verifique que o resultado será 0100 e V4=0, indicando uma palavra negativa. Professor Edino Mariano Lopes Fernandes 56