Baixe o app para aproveitar ainda mais
Prévia do material em texto
MINISTÉRIO DA EDUCAÇÃO UNIVERSIDADE FEDERAL DO PIAUÍ CENTRO DE EDUCAÇÃO ABERTA E A DISTÂNCIA CURSO DE LICENCIATURA EM COMPUTAÇÃO LÓGICA PARA COMPUTAÇÃO 2ª LISTA DE EXERCÍCIOS – ( Lista Avaliativa ) “ Uma outra teoria bastante utilizada na Eletrônica e em outras ciências diz respeito a Álgebra de Boole. Este tema tem interesse para os estudantes de Computação dada a sua utilização nos circuitos digitais que são os elementos que compõem todos os computadores eletrônicos. “ O texto complementar abaixo, mostra a importância da Álgebra de Boole para a computação (perceba que uma disjunção é tratada aqui como uma operação/operador de soma (OR / + ) e uma conjunção como uma operação/operador de multiplicação (AND / . ). Porta Lógica Origem: Wikipédia, a enciclopédia livre Portas lógicas ou circuitos lógicos, são dispositivos que operam um ou mais sinais lógicos de entrada para produzir uma e somente uma saída, dependente da função implementada no circuito. São geralmente usadas em circuitos eletrônicos, por causa das situações que os sinais deste tipo de circuito podem apresentar: presença de sinal, ou "1"; e ausência de sinal, ou "0". As situações "Verdade" e "Falso" são estudadas na Lógica Matemática ou Lógica de Boole; origem do nome destas portas. O comportamento das portas lógicas é conhecido pela tabela verdade que apresenta os estados lógicos das entradas e das saídas. Assim, podemos desenhar os circuitos que executam as expressões booleanas, conforme visto nos dois exemplos abaixo. O aprofundamento em elementos de Eletrônica Digital não é escopo desse curso, portanto além do destaque dado à porta NAND (próximo texto complementar) ficaremos limitados ao desenho do circuito uma vez conhecida sua expressão booleana. S = A.B.C + ( A+B).C S = ( ( A’ + B )’ + ( C’.D )’ ). D’ Portas Lógica NAND Origem: Wikipédia, a enciclopédia livre. Em 1854, o matemático britânico George Boole (1815 - 1864), através da obra intitulada An Investigation of the Laws of Thought, apresentou um sistema matemático de análise lógica conhecido como álgebra de Boole. No início da era da eletrônica, todos os problemas eram resolvidos por sistemas analógicos, isto é, sistemas lineares. Apenas em 1938, o engenheiro americano Claude Elwood Shannon utilizou as teorias da álgebra de Boole para a solução de problemas de circuitos de telefonia com relés, tendo publicado um trabalho denominado Symbolic Analysis of Relay and Switching, praticamente introduzindo na área tecnológica o campo da eletrônica digital. Esse ramo da eletrônica emprega em seus sistemas um pequeno grupo de circuitos básicos padronizados conhecidos como Portas Lógicas. Uma destas Portas Lógicas, é a NAND ou Conectivo de Sheffer é um conectivo utilizado em lógica. Esse conectivo tem equivalencia com à negação da operação de conjunção, expressa usualmente como "não (algo)... e (algo) ... ". Também conhecida como negação alternativa, tem como resultado verdadeiro se pelo menos um dos operandos for falso. No âmbito da álgebra booleana e na eletrônica digital é conhecida como NAND ("não e"). É um dos operadores que por si só pode ser usado para expressar todas as funções booleanas que podem ser escritas na lógica proposicional. Juntamente com o NOR, é um dos dois operadores unários funcionalmente completos da lógica proposicional. O conectivo NAND foi inventado por Henry M. Sheffer, que provou (Sheffer 1913) que todos os operadores comuns da lógica proposicional (não (not), e (and), ou (or), implicação, e os demais), podem ser expressos em termos do NAND. Charles Sanders Peirce (1880) descobriu esse fato mais de 30 anos antes, mas nunca publicou sua descoberta. O NAND é uma operação lógica binária, através da qual normalmente, os valores de duas proposições produzem um valor falso se e somente se ambos seus operandos forem verdadeiros. Ou seja, o NAND produz um valor verdadeiro se, e somente se pelo menos um de seus operandos é falso. A tabela de verdade de p NAND q (escrito também como ) é como segue: NAND p q V V F V F V F V V F F V As portas NAND são portas lógicas básicas que são reconhecidas na TTL e circuitos integrados CMOS. Esse diagrama esquemático mostra como as portas NAND estão arranjadas na parte interna de um circuito integrado CMOS 4011. Os sistemas digitais que empregam circuitos lógicos utilizam a propriedade de que todas as operações booleanas podem ser escritas através da porta NAND. Em algumas expressões lógicas mais complexas, normalmente escritas em função de outras funções lógicas tais como E (AND), OU (OR), e NÃO (NOT), se escritas em função de NAND têm um menor custo, porque a implementação desses circuitos usando essa porta gera um resultado mais compacto que as implementações normais. Este é um exemplo de um sistema formal baseado inteiramente no conectivo de Sheffer, contudo tem expressividade funcional da lógica proposicional. (...) ---------- xxx ------------ A tabela de verdade de p NAND q (escrito também como ) é como segue ao lado: Uma maneira usual de se expressar p NAND q é , onde o símbolo “ ” significa E a linha sobre a expressão significa NÃO, ou seja, se trata da negação lógica dessa expressão. O NAND não é usado em sentenças do dia a dia porque gera uma confusão relacionada com uma dupla negação. Está aqui um exemplo do uso da sentença: Operador NAND: Nós morreremos certamente se tivermos água “nand” comida. Termos comuns: Nós morreremos certamente se não tivermos comida e água. Um uso prático das portas lógicas: Eletrônica Digital Elementos de Eletrônica Digital. Ed. Érica. Ivan Idoeta “ Um dos capítulos importantes da Eletrônica Digital (resultante da Álgebra de Boole) é o que trata dos circuitos combinacionais. É através do estudo destes que poderemos compreender o funcionamento de circuitos, tais como: somadores, subtradores, circuitos que executam prioridades, codificadores, decodificadores e outros muito utilizados na construção de computadores e em vários outros sistemas digitais. O circuito combinacional é aquele em que a saída depende única e exclusivamente das combinações entre as variáveis de entrada. Podemos utilizar um circuito lógico combinacional para solucionar problemas em que necessitamos de uma resposta, quando acontecerem determinadas situações, representadas pelas variáveis de entrada. Para construirmos estes circuitos, necessitamos de suas expressões características, que são obtidas das tabelas da verdade que representam as situações já mencionadas, conforme imagem abaixo: Assim, mostraremos a seguir como obter um circuito para resolver um problema a partir de uma situação prática. Os projetos apresentados a seguir , embora simulem situações reais, são didáticos e servem para descrever o método de realização, podendo ser realizados na prática como modelos para a solução de pequenos problemas ou, ainda, para a construção de circuitos periféricos dentro de sistemas digitais. Notamos que o circuito lógico pode possuir diversas variáveis de entrada e uma ou mais saídas conforme o caso do projeto. A seguir, estudaremos, a título de exemplo, casos de 2 e 3 variáveis. Exemplo1: Ao lado temos um cruzamento das ruas A e B onde queremos instalar um sistema automático para os semáforos, com as seguintes características: 1)) Quando houver carros transitando somente na Rua B, o semáforo 2 deverá permanecer verde para que estas viaturas possam trafegar livremente. 2)) Quando houver carros transitando somente na Rua A, o semáforo1 dever permanecer verde pelo mesmo motivo. 3)) Quandohouver carros transitando nas Ruas A e B, devemos abrir o semáforo para a Rua A, pois é preferencial. 4)) Haverá apenas as cores Vermelho e Verde nos semáforos. Passo1: Estabelecendo as convenções ENTRADAS SAÍDAS Sensor de presença na rua A, registrando carro em A => A = 1 (Logo não havendo carros em A => A = 0 ) Sensor de presença na rua B, registrando carro em B => B = 1 (Logo não havendo carros em B => B = 0 ) OBS: A ideia de estabelecer A = 1 para ligado fica mais natural que A = V. Mas os valores “V” e “F” como até então usados também poderiam ser aqui utilizados. Verde do Semáforo1 aceso => V1 = 1 Verde do Semáforo2 aceso => V2 = 1 Vermelho do Semáforo1 aceso => VM1 = 1 Vermelho do Semáforo2 aceso => VM2 = 1 Quando V1 = 1 temos: VM1 = 0 E VM2 = 1 E V2 = 0 Quando V2 = 1 temos: VM2 = 0 E VM1 = 1 E V1 = 0 Passo2: Montando a Tabela Verdade das Entradas e Saídas A B V1 VM1 V2 VM2 Situação1 0 0 0 1 1 0 Situação2 0 1 0 1 1 0 Situação3 1 0 1 0 0 1 Situação4 1 1 1 0 0 1 Na Situação1 não temos carro em ambas as ruas. Neste caso vamos adotar que V2 (verde da rua B), por exemplo, permaneça aceso; isto é, V2=1. Consequentemente: VM2 = 0, VM1=1, V1=0. Na Situação2 temos carro apenas em B, logo V2 = 1. Consequentemente: VM2 = 0, VM1=1, V1=0. Na Situação3 temos carro apenas em A, logo V1 = 1. Consequentemente: VM1 = 0, VM2=1, V2=0. Na Situação4 temos carro em ambas as ruas, mas como A é rua preferencial, teremos a mesma situação3, logo V1 = 1. Consequentemente: VM1 = 0, VM2=1, V2=0. Passo3: Usando diagramas de Veitch-Karnaugh Até aqui, vínhamos simplificando expressões mediante a utilização dos postulados, propriedades e identidades da Álgebra de Boole. Uma outra forma de realizar isso são os diagramas de Veitch Karnaugh. Basicamente, para duas entradas o diagrama de Veitch-Karnaugh (VK) é: Perceba no diagrama que a célula pintada de: azul representa A’.B’ ; laranja representa A.B’ ; verde representa A’.B e preto representa A.B . Transcrevendo então os valores de cada saída da Tabela Verdade do Passo2 para o diagrama de VK, temos: B’ B A’ A A B V1 VM1 V2 VM2 Situação1 0 0 0 1 1 0 Situação2 0 1 0 1 1 0 Situação3 1 0 1 0 0 1 Situação4 1 1 1 0 0 1 S = V1 = A S = VM1 = A’ S = V2 = A’ S = VM2 = A Apenas a título de informação complementar para facilitar o pleno entendimento do algoritmo acima (mas sem relação com o Exemplo1) colocamos dois outros diagramas de VK e o que seria a saída dele: S = A.B’ Passo4: Analisando as saídas simplificadas e gerando o circuito Analisando, percebemos que V1 = VM2 = A e VM1 = V2 = A’. Logo concluímos que não precisaríamos colocar dois sensores de presença, um na rua A e outro na rua B, bastaria um único sensor de presença na rua A. Assim, o mesmo fio que levaria a indicação de presença de carro na Rua A seria ligado aos leds do Verde1 e Vermelho2; ou seja, tem carro em A, vai “1” (energia) para ativer esses leds e vai “0” (sem energia) para manter os leds do Verde2 e Vermelho1 apagados. V1 B’ B A’ 0 0 A 1 1 VM1 B’ B A’ 1 1 A 0 0 V2 B’ B A’ 1 1 A 0 0 VM2 B’ B A’ 0 0 A 1 1 B’ B A’ 0 0 A 1 0 B’ B S = A + B’ A’ 1 0 A 1 1 Uma vez colocados os valores no diagrama, agora vamos simplificar utilizando o seguinte algoritmo: Tentamos agrupar as regiões onde a saída é 1, no menor número possível de agrupamentos. Cada agrupamento deve ter uma quantidade de “1s” que é potência de 2. Ou seja, no caso do diagrama de VK de 2 entradas, as possibilidades de agrupamentos são: 20 = 1. Pior situação. Sem simplificação. 21 = 2. Grupos de dois componentes 22 = 4. Melhor situação, pois teremos um único grupo com os quatro componentes da tabela. Tautologia. Depois vemos o que cada grupo tem em comum (em relação aos valores das entradas). E colocamos a saída simplificada daquele diagrama como essa parte em comum. Finalmente, para obtermos a expressão simplificada bastaria somarmos os termos obtidos nos agrupamentos. Exemplo2: Produza o circuito (C.I.) e a expressão (simplificada via VK) que vai existir ligada a um tanque de combustível de um carro que NÃO FUNCIONARÁ se alguma situação indesejável abaixo ocorrer: 1)) For verificado que a temperatura do combustível é crítica; 2)) No painel do carro existe dois Leds. Se o 1º ascender indica que o carro passou a consumir a reserva do combustível (10l). Caso reste algo menos que 2l de combustível, ascende o 2º led e neste caso para proteger o motor, este para de funcionar. Passo1: Estabelecendo as convenções ENTRADAS SAÍDAS Sensor de temperatura no tanque. A = 0 registra temperatura crítica. Logo A = 1 é temperatura aceitável. Sensor1 de nível do combustível. B = 0 registra nível na reserva. Logo B = 1 nível acima da reserva. Sensor2 de nível do combustível. C = 0 registra nível quase zerado. Logo C = 1 nível acima dos 2l finais de combustível. Lembrando que a saída é o que depende da entrada. Motor liga, temos M = 1. Consequentemente, motor não liga M = 0. Led1 aceso, temos L1 = 1 e L1 = 0 apagado. Led2 aceso, temos L2 = 1 e L2 = 0 apagado. OBS: A ideia de estabelecer 1 para ligado (algo positivo) e 0 para desligado (algo negativo) fica mais natural, mas o inverso poderia ser feito. Passo2: Montando a Tabela Verdade das Entradas e Saídas Na Situação1 temos temperatura crítica (A=0) com combustível na reserva, logo B=0, mas do que isso, combustível quase acabando (menos de 2l), logo C=0. Bastaria A = 0 para o motor não ligar ( M = 0 ). Como B = 0, temos L1 = 1 e como C = 0 temos L2 = 1. Na Situação2 temos temperatura crítica (A=0), logo M = 0. Combustível na reserva (B=0 e portanto L1 = 1), mas não na iminência de acabar (C=1 e portanto L2=0). Na Situação3 temos temperatura crítica (A=0), logo M = 0. Combustível acima da reserva (B=1 e portanto L1 = 0). Entretanto essa combinação de resultados da entrada pressupõe uma situação de erro no sensor, porque se o sensor B é 1 (acima da reserva) o combustível não pode estar quase zerando (C=0) . Neste caso, temos que tomar uma decisão de como o circuito vai se comportar, como o motor já está desligado (M=0), vamos supor ser um erro do sensor C e deixar para determinar o valor de L2 só no diagrama de VK (conforme o que seja mais conveniente). Na Situação4 temos temperatura crítica (A=0), logo M = 0. E combustível acima da reserva, logo B = 1, C = 1, L1=0 e L2=0. A B C M L1 L2 Situação1 0 0 0 0 1 1 Situação2 0 0 1 0 1 0 Situação3 0 1 0 0 0 ? Situação4 0 1 1 0 0 0 Situação5 1 0 0 0 1 1 Situação6 1 0 1 1 1 0 Situação7 1 1 0 ? / 0 0 ? Situação8 1 1 1 1 0 0 Na Situação5 temos temperatura NORMAL (A=1), mas volume de combustível na reserva (B=0, logo L1=1) e quase acabando (C=0, logo L2=1), portanto o motor deve ser desligado, M = 0. Na Situação6 temos temperatura normal (A=1), mas volume de combustível na reserva (B=0, logo L1=1) e acima dos 2l finais (C=1, logo L2=0), portanto o motor deve continuar ligado, M =1. Na Situação7 temos temperatura normal (A=1) e volume de combustível acima da reserva (B=1, logo L1=0). Entretanto, novamente essa combinação de resultados da entrada pressupõe uma situação de erro dos sensores de entrada, poisse o volume de combustível está acima da reserva (B=1) não é possível que o volume de combustível esteja quase acabando (C=0). Novamente teremos que tomar uma atitude para esse caso. Poderemos deixar para definir o valor de M só no diagrama de VK (para tentar formar o mínimo de grupos de 1s). Mas por questão de segurança, vamos desligar o Motor ( M = 0 ). Poderemos deixar L2 = 1 (ligado) como forma de alertar o motorista que existe algo errado ou simplesmente deixar para definir o valor de L2 no diagrama, conforme o que for mais conveniente. Na Situação8 temos temperatura normal (A=1) e volume de combustível acima da reserva logo B = 1, C = 1, L1=0 e L2 = 0. Passo3: Usando diagramas de Veitch-Karnaugh Considerando os valores de saída da Tabela verdade, podemos identificar no diagrama à direita a posição onde cada valor será inserido. Perceba que a posição 000 (A’.B’.C’) equivale à Situação1: Analisando, a Situação7 no diagrama de VK percebemos que é melhor o valor ser 0, pois assim ficaria um único grupo ( S = A.C ) e não dois grupos se fosse 1 ( S = A.C + A.B ). S = M = A.C Lembrando que o algoritmo de simplificação procura formar o mínimo de agrupamentos (com o máximo de componentes em cada grupo ). Lembre que as quantidades dos componentes de cada grupo é sempre uma potência de 2. Os quatro “1s” agrupados tem em comum apenas o B’. Então: S = L1 = B’ As duas situações ( 3 e 7 ) onde o valor do L2 tanto faz (tendo em vista que só ocorreria tal situação em caso de erro no sensor) nos leva a questionar qual o melhor valor a ser escolhido conforme interesse do algoritmo do método de VK. Tais situações geram as chamadas Situações Irrelevantes. Neste caso, um grupo se fosse 0 tais valores o único grupo formado teria dois componentes e a saída seria S = L2 = B’.C’. Entretanto, se colocarmos os valores das situações 3 e 7 como sendo 1s, teríamos quatro 1s que teriam em comum o fato de todos serem C’. Portanto é preferível um grupo de quatro componentes a um grupo de dois componentes, pois a simplificação do circuito é maior. Então: S = L2 = C’ B’ B A’ 000 001 011 010 A 100 101 111 110 C’ C C’ B’ B A’ A C’ C C’ M B’ B A’ A 1 1 ? C’ C C’ A B C M L1 L2 Situação1 0 0 0 0 1 1 Situação2 0 0 1 0 1 0 Situação3 0 1 0 0 0 ? Situação4 0 1 1 0 0 0 Situação5 1 0 0 0 1 1 Situação6 1 0 1 1 1 0 Situação7 1 1 0 ? / 0 0 ? Situação8 1 1 1 1 0 0 L1 B’ B A’ 1 1 A 1 1 C’ C C’ L2 B’ B A’ 1 ? A 1 ? C’ C C’ Apenas a título de informação complementar para facilitar o pleno entendimento do algoritmo acima (mas sem relação com o Exemplo2) colocamos dois outros diagramas de VK e o que seria a saída dele: S = A Passo4: Analisando as saídas simplificadas e gerando o circuito Analisando, percebemos que considerando as características adotadas, realmente precisaremos de três entradas (A, B, C) que seriam ligadas ao: Motor, Led1 e Led2 conforme circuito abaixo. Assim, perceba que o motor só terá energia (1) quando a temperatura é aceitável, A=1, e (AND) o nível de combustível está acima do mínimo aceitável (2l); isto é, C=1. Por outro lado, o Led1 só liga (tem energia, L1 = 1) quando o Sensor B acusa que o carro entrou na reserva ( B = 0 ). Neste caso o inversor da porta (NOT) transforma o “0” em “1” que irá ligar o led. Finalmente o Led2 só liga quando o Sensor C acusa nível quase zerado de combustível ( C = 0 ). Neste caso o inversor da porta (NOT) transforma o “0” em “1” que irá ligar o led. Como já dissemos, só iremos usar os dois exemplos de diagramas vistos (os de 2 e os de 3 entradas). ---------- xxx ------------ 2ª LISTA DE EXERCÍCIOS – ( Lista Avaliativa ) 1. Dadas as expressões da Lógica Proposicional a seguir, encontre as expressões correspondentes na Álgebra de Boole e depois as simplifique: ( 1,5 pts ) a) ¬ ( p ^ q ) V ( ¬ p ) b) ¬ ( p ↔ q ) c) p V q → ( p → ¬ q ) d) ( ¬ q Λ ( p → q ) ) Λ p e) ( p → q ) Λ ( q → r ) → ( p → r ) 2) Dadas as expressões abaixo na Álgebra de Boole, encontre as respectivas representações em diagramas de Venn. ( 1,5 pts ) a) p’ + q’ + r b) p.q’ + q.p’ c) p’.q’ d) 0 e) 1 f) (p.q)’ + r’ B’ B A’ 1 1 A 1 S = A.B’.C’ + A’.B C’ C C’ B’ B A’ A 1 1 1 1 C’ C C’ 3. Desenhe o circuito que executa cada expressão booleana abaixo: ( 1,5 pts ) a) S = A’.B’.C’ + A’.B.C’ + A.B.C’ + A.B.C b) S = ( ( A + B + A.C’ ) . ( B + C)’ + B.C ) ‘ + B’ 4. Encontre a expressão booleana que gerou cada circuito abaixo: ( 1,5 pts ) a) b) OBS: A porta NOT pode ser colocada após cada entrada, como nos exemplos anteriores ou pode ser colocada logo antes da porta, usando um “o”. Exemplo: S = A’ + B 5. Usando o Princípio de Indução Finita, mostre que as seguintes proposições são verdadeiras para todo número inteiro positivo n: ( 1,5 pts ) a) 4 + 10 + 16 + . . . + (6n – 2) = n(3n + 1) b) 2 + 6 + 10 + . . . + (4n – 2) = 2n2 6. Para cada situação abaixo elabore um circuito lógico (simplificado via Diagramas de Veitch- Karnaugh). Deixe presente todos os passos, desde o Estabelecimento das convenções das Entradas e Saídas até a conclusão (produção do circuito). ( 2,5 pts ) a) Elabore um circuito lógico para encher ou esvaziar um tanque industrial por meio de duas eletroválvulas (bombas), sendo uma para a entrada do líquido e outra para o escoamento de saída. O funcionamento das eletroválvulas dependerá de um sensor que acusa tanque cheio e de um botão interruptor para encher o tanque totalmente ou, ainda, esvaziá- lo totalmente. Apenas para efeito gráfico, considere o esboço desse tanque ao lado. b) Elabore um circuito lógico para o entroncamento das ruas A, B e C obtendo as expressões e os circuitos dos sinais verdes e vermelhos dos semáforos A, B, C. Sabendo que: 1)) Os semáforos só tem o led verde e o vermelho ; 2)) A rua A é preferencial em relação as demais ; 3)) A rua B é preferencial em relação a Rua C ;
Compartilhar