Prévia do material em texto
T4 - M1/M2/M3 1 🗒 T4 - M1/M2/M3 🗓 22/05/23 Lógica Digital Introdução 🎬 Lógica Digital M1 - Operações básicas da álgebra booleana Portas lógicas e lógica booleana 🎬 Lógica booleana Tabela-verdade Operadores e portas lógicas básicas 🎬 Portas Lógicas e Lógica Booleana 🎬 Operadores de Portas Lógicas básicas OR AND NOT O operador e a porta OR (OU) Vamos praticar! O operador e a porta AND (E) Vamos praticar! O operador e a porta NOT (NÃO) Outras portas lógicas fundamentais A porta NOR (Não OU) A porta NAND (Não E) Vamos praticar! 🎬 Resolução da expressão booleana A porta XOR (Ou exclusivo) Vamos praticar! A porta XNOR (coincidência) M2 - Portas e operações lógicas 🎬 Expressões lógicas Vamos praticar! 🎬 Avaliação de uma expressão lógica T4 - M1/M2/M3 2 Lógica Digital Introdução As máquinas se comunicam de forma binária (bits 0 ou 1). Fisicamente, os circuitos eletrônicos são construídos para que gerem tensões que representem esses bits 0 e 1 de acordo com as ações que a máquina deve executar. Dessa forma, o computador possui vários circuitos lógicos que precisam ser orientados em como atuar, a partir de orientações lógicas baseadas em 0 e 1. Para fazer isso, é preciso utilizar a regra booleana, que corresponde a uma linguagem baseada em símbolos, letras e conectores para que as máquinas gerem os resultados pretendidos a partir de entradas de 0 e 1. Interessante, não? No decorrer do conteúdo, você aprenderá os conceitos básicos das regras booleanas, como elas influenciam no desenvolvimento dos softwares e dos equipamentos eletrônicos. 🎬 Lógica Digital Vamos começar nosso estudo sobre um assunto muito importante: lógica digital. Alguns de vocês podem estar se perguntando por que precisam estudar isso, principalmente se são profissionais de TI. Eu já dei aulas presenciais sobre lógica digital e uma pergunta que sempre surgia era: "Professor, por que estou estudando isso?". A resposta, surpreendentemente, é que a lógica, que vai além da lógica 🎬 Expressões lógicas Equivalência de funções lógicas Conceito Vamos praticar! 🎬 Operações lógicas com palavras de dados M3 - Expressões lógicas e diagramas lógicos Propriedades da álgebra de Boole 🎬 Operações lógicas com palavras de dados Prática 🎬 Aplicação das regras da álgebra booleana Prática Considerações finais Referências Explore + T4 - M1/M2/M3 3 digital, é uma das ferramentas matemáticas mais importantes para um profissional de TI. Se analisarmos a base matemática do funcionamento do computador, desde a máquina de Turim que definiu e mostrou a capacidade da matemática em realizar qualquer cálculo, veremos que ela possui operações básicas que podem ser traduzidas em circuitos lógicos. Agora, você pode estar pensando que isso é mais relevante para engenheiros eletrônicos, pois eles são os responsáveis por desenvolver placas e construir circuitos integrados. Afinal, como um profissional de TI, programador ou alguém que lida com interfaces prontas, por que precisaria estudar lógica digital? Eu já mencionei antes que a matemática é como uma caixa de ferramentas, onde escolhemos a ferramenta correta para resolver um problema ou situação. Saber utilizar a lógica corretamente é tão importante quanto resolver a situação em si. Além disso, o computador trabalha com o paradigma imperativo, onde as instruções são executadas pelos circuitos digitais. Compreender o funcionamento desses circuitos tornará você um programador melhor. A lógica digital também é fundamental para a estrutura de decisão, como o famoso "if-else" das linguagens de programação. A base dessa estrutura é lógica e você precisa ser capaz de escrever corretamente as cláusulas lógicas para resolver seus problemas de programação. Em resumo, a lógica, em sua essência, é matemática e, mais especificamente, a lógica digital é essencial para o profissional de TI. As ciências básicas têm uma importância significativa nesse sentido. Costumamos questionar em nossos tempos de escola por que precisamos aprender matemática, física, química, entre outras. As ciências básicas são fundamentais para o desenvolvimento humano. Sem elas, nada do que vivemos atualmente seria possível: internet, transmissão de dados, fibras óticas, gravação de áudio e vídeo em mídia eletrônica. Um profissional de TI precisa entender como tudo isso funciona. Portanto, compreender a lógica digital é um dos primeiros passos para entender esse mundo. Desejo a todos um excelente curso de lógica digital e até a próxima! M1 - Operações básicas da álgebra booleana Portas lógicas e lógica booleana T4 - M1/M2/M3 4 🎬 Lógica booleana Vamos explorar o estudo da lógica digital ao longo da história para entender como ela foi desenvolvida. No século XIX, um pesquisador inglês chamado George Boole buscava representar o funcionamento da mente humana de forma simbólica. Ele publicou dois livros, "A Análise Matemática da Lógica" e "Investigação das Leis do Pensamento", que se tornaram a base da área da computação. Boole introduziu o conceito de representar símbolos usando dois valores: verdadeiro ou falso, também conhecido como lógica binária. Essa ideia é fundamental na lógica digital. Já no século XX, em 1948, um pesquisador chamado Claude Shannon publicou um artigo que ficou conhecido como a fundação da teoria da informação. Ele é citado como o criador do computador digital e dos circuitos digitais. Antes disso, em sua tese de mestrado em 1937, ele demonstrou que era possível resolver qualquer problema lógico usando relés elétricos aplicados à álgebra booleana. A aplicação da lógica digital está presente em nosso cotidiano. Por exemplo, ao usar um smartphone, ao pressionar um botão, estamos gerando um comando que produz um resultado específico. Essa lógica digital é usada em diversas áreas, como programação, controle de dispositivos, tomada de decisões e comunicação. Ela permite criar condições de controle, como acionar uma porta, ligar um motor elétrico, ativar um eletrodoméstico ou realizar pagamentos. É uma lógica de sim ou não, onde criamos fluxos de ação com base nessas respostas. A aplicação da lógica digital é vasta e possui uma importância significativa. Em programação, por exemplo, utilizamos estruturas condicionais e de repetição, onde testamos variáveis e criamos desvios de fluxo com base em diferentes condições. A simplicidade do tratamento lógico e a abrangência de suas aplicações tornam essa área fundamental. Em resumo, o estudo da lógica digital nos ajuda a compreender como os circuitos eletrônicos funcionam, como controlamos dispositivos, como tomamos decisões e como lidamos com a comunicação. Essa lógica binária de sim ou não está presente em diversos aspectos de nossas vidas e é essencial para o desenvolvimento da tecnologia. As operações realizadas por um computador digital, que podem parecer complexas, podem ser entendidas como combinações simples de operações aritméticas e lógicas básicas. Essas operações incluem soma, complemento, deslocamento e comparação de bits. T4 - M1/M2/M3 5 Essas operações lógicas são implementadas através de circuitos eletrônicos chamados circuitos lógicos, também conhecidos como gates ou portas lógicas. Na lógica digital, existem apenas duas condições, representadas pelos valores 1 e 0, e os circuitos lógicos usam faixas de tensões predefinidas para representar esses valores binários. Com base nisso, é possível construir circuitos lógicos que podem realizar ações para tomar decisões inteligentes, coerentes e lógicas. É importante ser capaz de descrever a operação dos circuitos, pois eles são frequentemente mencionados em textos técnicos. A lógica booleana foi desenvolvida por Boole, que representou as expressões por meio de símbolos e as conectou usando conectivos (símbolos algébricos). A lógica booleana está presente em várias aplicações em nossa vida. Por exemplo, em um circuito, quando a tensão é baixa (bit 0), o dispositivo está desligado, e quando a tensão é alta (bit 1),ele está ligado. Claude Shannon, pesquisador do Instituto de Tecnologia de Massachusetts (MIT), propôs o uso da álgebra booleana para resolver problemas relacionados a projetos T4 - M1/M2/M3 6 de circuitos com comutadores. A partir das técnicas de Shannon, foi possível aplicar a álgebra booleana na análise e no desenvolvimento de circuitos digitais eletrônicos. A álgebra booleana é eficiente como ferramenta para análise e projeto de circuitos digitais. Ao iniciar o estudo da lógica booleana, representamos os operadores lógicos e, a partir deles, observamos as portas lógicas correspondentes. Para entender os valores resultantes de cada operador lógico, é necessário conhecer as Tabelas Verdade, que mostram todas as combinações possíveis dos valores de entrada com seus respectivos valores de saída. Tabela-verdade A tabela-verdade é uma técnica usada para descrever como a saída de um circuito lógico depende dos níveis lógicos das entradas. Ela é uma tabela que mostra todas as combinações possíveis das variáveis de entrada de uma função específica e os valores de saída correspondentes. São tabelas que conterão todas as possíveis combinações das variáveis de entrada de uma determinada função e, como resultado, os valores de saída. Nessa tabela, todas as diferentes combinações das variáveis de entrada são representadas por linhas. O número de linhas na tabela-verdade depende do número de variáveis de entrada e das suas combinações possíveis. Os valores 0 e 1 são considerados como 0 = FALSO e 1 = VERDADEIRO. Como exemplo, observe a imagem a seguir: Agora, veja como fica a tabela-verdade do circuito com duas entradas e uma saída: Representação de um circuito com duas entradas e uma saída T4 - M1/M2/M3 7 Operadores e portas lógicas básicas 🎬 Portas Lógicas e Lógica Booleana Hoje vou explicar sobre as portas lógicas, que são circuitos eletrônicos responsáveis por realizar operações lógicas, especialmente as operações básicas como inversão (NOT), disjunção (OR) e conjunção (AND). Uma porta lógica possui entradas e uma saída, onde as entradas representam valores de tensão, geralmente alto (1) ou baixo (0), e a saída é o resultado da operação. Aqui temos o desenho básico de uma porta lógica, onde temos as entradas A e B e a saída Y. Essa porta pode ser combinada com outras portas, como mostra o exemplo, onde temos três entradas A, B e C, e a saída é o resultado da operação dessas entradas com a porta lógica anterior. No circuito integrado 74 32, temos quatro portas lógicas em um único componente eletrônico. O circuito integrado é o componente que implementa a porta lógica, e geralmente contém várias portas em um mesmo chip. Cada porta lógica tem duas T4 - M1/M2/M3 8 entradas e uma saída. Podemos encadear as portas lógicas, conectando a saída de uma na entrada da seguinte, para implementar operações mais complexas. O circuito 74 08 é outro exemplo de chip com quatro portas lógicas, onde podemos realizar operações lógicas com até três entradas. Da mesma forma, podemos encadear as portas para implementar operações com mais variáveis. Por fim, temos o inversor, que realiza a operação de negação (NOT). Quando entra um valor 0, sai um valor 1, e vice-versa. O símbolo do inversor é um triângulo com um ponto, e o circuito 74 04 implementa seis inversores. Essas portas lógicas são fundamentais para a construção de circuitos digitais e têm diversas aplicações em eletrônica, computação e programação. É importante estudá-las para entender como os sistemas digitais funcionam. 🎬 Operadores de Portas Lógicas básicas Hoje vou explicar o funcionamento das portas lógicas OR (ou) e NOT (não), juntamente com suas tabelas verdade, ou seja, como funciona a operação lógica associada. Vamos começar pela porta lógica OR. Essa porta realiza a operação de "ou". Na representação, usamos o símbolo "+". Por exemplo, se eu digo que X é igual a A ou B, para entender o funcionamento, o resultado será verdadeiro se pelo menos um deles for verdadeiro. Podemos comparar isso com um circuito elétrico, onde temos duas chaves e uma lâmpada. A lâmpada acende se pelo menos uma das chaves estiver ligada. Se uma estiver aberta, funciona; se as duas estiverem fechadas, também funciona. A tabela verdade da porta OR nos diz que o valor zero representa falso e o valor um representa verdadeiro. Se um dos valores for um ou se os dois valores forem um, o resultado será um, ou seja, verdadeiro. A regra resumida é que a porta OR só dá falso se os dois valores forem falsos. No exemplo com três valores, a ideia é a mesma. Estamos operando com três valores, e só dará falso se todos forem falsos. O restante das combinações será verdadeiro. Agora vamos falar da porta lógica NOT, que realiza a operação de negação. Ela é representada por uma barrinha em cima da letra. Essa porta inverte o valor de entrada. Se for verdadeiro, torna-se falso, e se for falso, torna-se verdadeiro. T4 - M1/M2/M3 9 Uma porta lógica é um componente de hardware que terá um ou muitos sinais de entrada e, como consequência, produzirá um sinal de saída de acordo com a lógica estabelecida na construção do circuito em questão. Os operadores booleanos básicos também denominados como funções lógicas básicas são: OR AND NOT O operador e a porta OR (OU) Vamos estudar a primeira operação básica chamada OR (OU), e para entender como ela funciona, vamos usar um exemplo simples: Imagine que você tem um carro e quer que a luz interna do veículo acenda quando a porta é aberta. A pergunta é: a luz deve acender quando a porta estiver aberta? A resposta é sim. E quando a porta é fechada, a luz deve apagar. Então, a luz estará acesa em duas situações diferentes: quando a porta está aberta OU o interruptor da luz é acionado, mesmo se a porta estiver fechada. Para representar isso, vamos usar algumas variáveis: A variável A representa se a porta está aberta ou não. A variável B representa o interruptor da luz. A variável X representa o estado da luz, se está acesa ou apagada. Nesse caso, a expressão booleana para a operação OR é definida como: X = A OR B. O símbolo (+) não significa uma soma, mas a operação OR. Essa expressão é lida como: "X é igual a A OR B". Ao analisar as combinações possíveis, levando em consideração os valores, temos o seguinte: T4 - M1/M2/M3 10 Em síntese, na tabela a seguir, estão representadas as combinações dos valores possíveis com a construção da tabela-verdade para o operador OR com duas entradas: Quando analisamos a tabela-verdade, podemos concluir que a lâmpada estará apagada (valor 0, FALSO) apenas quando tanto o interruptor quanto a porta tiverem o valor de entrada igual a FALSO (0). Para todas as outras combinações, a lâmpada estará acesa (valor 1, VERDADEIRO). Nos circuitos digitais, temos um componente chamado porta OR. Essa porta possui duas ou mais entradas e a sua saída é determinada pela combinação das entradas Resultado das análises das combinações dos valores T4 - M1/M2/M3 11 usando a operação OR. Veja a imagem a seguir para ilustrar como uma porta OR é representada em um circuito: A seguir, veja outro caso e a sua correspondente tabela-verdade com três entradas e uma saída: Vamos praticar! Seja A = 1100, B = 1111 e C = 0001, para calcular L = A + B + C (A or B or C), o cálculo deve ser realizado em duas etapas, utilizando a seguinte Tabela Verdade da porta OR: Símbolo de uma porta OR com duas entradas e uma saída T4 - M1/M2/M3 12 Na primeira etapa, vamos calcular M = A + B (A or B) e, em seguida, o resultado parcial será obtido (M), combinado com C em outra operação lógica OR (M or C), sempre utilizando as combinações de entrada e os resultados definidos nas seguintes tabelas-verdade da porta OR, uma de resultado parcial M = 1111 e outra de resultado: L = 1111: T4 - M1/M2/M3 13 O operador e a porta AND (E) Quando analisamos o cenário, percebemos que o acionamento do motor do elevador está diretamente relacionado às condiçõesda porta e ao acionamento do botão da cabine. A resposta para a pergunta se o motor será acionado imediatamente é sim. O motor do elevador será ligado (valor 1, VERDADEIRO) somente se a porta estiver fechada (valor 1, VERDADEIRO) E (AND) o botão da cabine for acionado (valor 1, VERDADEIRO). Em todas as outras situações, o motor não será acionado (valor 0, FALSO). Nesse contexto, podemos utilizar as seguintes variáveis: A representa o sensor da porta; B representa o botão da cabine; X representa o acionamento do motor. A expressão booleana para a operação AND é X = A • B. Nesse caso, o símbolo (•) não indica multiplicação, mas sim a operação AND, que é lida como X é igual a A AND B T4 - M1/M2/M3 14 Agora, ao analisar as combinações possíveis, levando em consideração os valores, temos o seguinte: Em síntese, na tabela a seguir estão representadas as combinações com dois valores de entrada e uma saída para a da Tabela Verdade com o operador AND: Ao analisar a tabela-verdade, chegaremos à conclusão de que o motor será acionado (valor igual a 1, verdadeiro) se — e somente se — tanto o botão quanto o sensor da porta possuírem o valor igual a verdadeiro (igual a 1) e, para as demais combinações, o motor estará desligado (igual a 0). T4 - M1/M2/M3 15 Nos circuitos digitais, uma porta AND é um circuito que tem duas ou mais entradas e a sua saída é igual à combinação das entradas através da operação AND, conforme ilustrado na imagem a seguir: A seguir, veja outro caso e a sua correspondente tabela-verdade com três entradas e uma saída: Vamos praticar! Prática 1 Seja A = 1 e B = 0, calcule o valor de X, quando X = A • B (A and B). Analisando a seguinte tabela-verdade da porta AND: Símbolo de uma porta AND com duas entradas e uma saída T4 - M1/M2/M3 16 Podemos verificar que o valor de X = 0, pois 1 and 0 = 0. Prática 2 Agora, seja A = 0110 e B = 1101, calcule o valor de X, quando X = A • B (A and B). Analisando a seguinte tabela-verdade da porta AND: T4 - M1/M2/M3 17 Temos o seguinte: Operando bit a bit, encontramos o valor de X = 0100. O operador e a porta NOT (NÃO) O operador NOT (NÃO) ou inversor é a terceira das três operações básicas que estudaremos, sendo este operador totalmente diferente dos outros já estudados, porque pode ser realizado através de uma única variável. T4 - M1/M2/M3 18 Como exemplo, se uma variável A for submetida à operação de inversão, o resultado X pode ser expresso como: Em que a barra sobre o nome da variável representa a operação de inversão e a expressão é lida como: X é igual a NOT A ou X é igual a A negado ou X é igual ao inverso de A ou X é igual ao complemento de A. Como utilizaremos a barra para identificar a negação, outra representação também é utilizada para a inversão por outros autores, que é a seguinte: Outra representação utilizada por alguns autores é usar um apóstrofo (A'), indicando a inversão da variável. Ambas as representações têm o mesmo significado, indicando que o valor de X será o oposto do valor de A. Em síntese, a representação da tabela-verdade para o operador NOT com uma entrada e uma saída é a seguir: T4 - M1/M2/M3 19 Nos circuitos digitais, uma porta NOT é um circuito que tem uma entrada, e a sua saída, a negação, é indicada por um pequeno círculo, como mostrado a seguir: Outras portas lógicas fundamentais A porta NOR (Não OU) Para entendermos melhor as portas lógicas, é importante observar que o inversor, também conhecido como função NOT (NÃO), pode ser aplicado tanto a variáveis individuais quanto a portas lógicas inteiras, invertendo todos os seus valores de saída. Nesse contexto, é possível conectar a saída de uma porta lógica à entrada de um inversor, como mostrado na figura a seguir, resultando na inversão de todos os Símbolo de uma porta NOT com uma entrada e uma saída T4 - M1/M2/M3 20 valores de saída. No entanto, existe uma representação alternativa que permite criar a inversão em uma porta lógica de forma peculiar. Isso é feito adicionando um pequeno círculo na saída da porta, indicando a inversão. Veja a imagem a seguir: Ao observar a imagem a seguir, você notará que o símbolo da porta NOR de duas entradas é muito semelhante ao símbolo da porta OR. A única diferença é a presença de um pequeno círculo na saída, indicando a inversão da operação OR. A expressão que representa a porta NOR é: Note que a barra que indica a negação/inversão será estendida a todas as variáveis de entrada, neste exemplo com duas variáveis: A porta NOR (Não OU). T4 - M1/M2/M3 21 Símbolo de uma Porta NOR. A porta NOR (‘NOT OR’ ‘NÃO-OU’). T4 - M1/M2/M3 22 A tabela-verdade a seguir mostra que a saída da porta NOR é exatamente o inverso da saída da porta OR: Ao analisar as diferentes combinações possíveis das variáveis de entrada A e B, podemos observar que a saída será igual a 1 (VERDADEIRO) somente quando ambas as entradas forem 0 (FALSO). Para todas as outras condições, a saída será igual a 0 (FALSO). Podemos usar um exemplo semelhante ao da porta OR para ilustrar essa função. Vamos considerar as variáveis A, B e X, onde A representa a abertura da porta, B representa o interruptor e X representa o estado da lâmpada (ligada ou desligada). Ao analisar as diferentes combinações, veremos que A será igual a 0 quando a porta estiver fechada e será igual a 1 quando a porta estiver aberta. Quanto à variável B, teremos o valor 0 quando o interruptor estiver ativado e 1 quando estiver desativado. Por fim, a variável X terá o valor 0 quando a lâmpada estiver apagada e 1 quando estiver acesa. A porta NAND (Não E) Na figura abaixo, você pode observar o símbolo da porta NAND de duas entradas. É bem semelhante ao símbolo da porta AND, mas com um pequeno círculo na saída, indicando a inversão da operação. A expressão que representa a porta NAND é a seguinte: T4 - M1/M2/M3 23 Em que a barra sobre o nome da variável representa a operação de inversão e a expressão é lida como: X é igual a NOT A ou X é igual a A negado ou X é igual ao inverso de A ou X é igual ao complemento de A. Isso significa que o valor de X será o oposto do resultado da operação AND entre as entradas A e B. Em outras palavras, se A e B forem verdadeiros (1), a saída será falsa (0). Porém, se pelo menos uma das entradas for falsa, a saída será verdadeira. Veja o símbolo e o circuito a seguir: T4 - M1/M2/M3 24 Símbolo de uma porta NAND. A porta NAND (‘NOT AND’ ‘NÃO-E’). T4 - M1/M2/M3 25 A seguinte A tabela-verdade mostra que a saída da porta NAND é exatamente o inverso da saída da porta AND: Ao analisar as combinações possíveis das variáveis de entrada A e B, podemos concluir que a saída será 0 (FALSO) somente quando todas as entradas forem 1 (VERDADEIRO). Para todas as outras condições, a saída será 1 (VERDADEIRO). Vamos usar um exemplo para ilustrar essa situação: Imagine um semáforo para bicicletas que possui um botão de acionamento e um sensor de movimento para detectar pedestres. Nesse caso, o sinal verde, que indica a liberação da passagem para ciclistas, será ativado (0, FALSO) somente se duas condições forem atendidas: o botão for acionado (1, VERDADEIRO) e o sensor de movimento não detectar a presença de pedestres (1, VERDADEIRO). Para todas as outras combinações, o semáforo mostrará o farol vermelho (1, VERDADEIRO), bloqueando o tráfego de ciclistas. Vamos praticar! Seja A=10010 e B=11110, calcule Uma resposta interessante para este caso é a realização de duas operações lógicas em sequência. Primeiro, realiza-se a operação AND e, em seguida, obtém-se o inverso do resultado, produzindo o valor final para uma operação NAND. T4 - M1/M2/M3 26 Pela tabela-verdade da porta AND, temos: O resultado parcial: L = 10010. Invertendo os bits de L, usando a Tabela Verdade da porta NOT: 🎬 Resolução da expressão booleana Assistir o vídeo no material A porta XOR (Ou exclusivo) A porta XOR, que significa “exclusive or” (ou exclusivo),pode ser vista como uma variação da função OR. A porta XOR gera uma saída igual a 1 (VERDADEIRO) quando pelo menos um dos valores de entrada for diferente dos outros (exclusividade de valor da váriavel). Em T4 - M1/M2/M3 27 outras palavras, a porta XOR resulta em 0 (FALSO) apenas se todos os valores de entrada forem iguais. Podemos ver isso na tabela-verdade a seguir: A expressão que representa a porta XOR é: E seu símbolo fica da seguinte forma: Vamos usar um exemplo para ilustrar a aplicação da porta XOR: imagine um motor elétrico controlado por dois botões localizados em lugares diferentes. O motor só Símbolo de uma Porta XOR. T4 - M1/M2/M3 28 será ligado se um dos botões for pressionado (valor igual a 1, VERDADEIRO). Para os outros casos, em que nenhum botão é pressionado ou quando ambos os botões são pressionados simultaneamente, o motor não será acionado (valor igual a 0, FALSO). Nesse caso, podemos usar a porta XOR para implementar essa lógica. Vamos praticar! Seja A = 1 e B = 0, calcule o valor de �, quando �=�⊕�(� xor �). Analisando a tabela-verdade da porta XOR, temos: Podemos verificar que: O valor de X = 1, pois 0 xor 1 = 1. A porta XNOR (coincidência) A expressão que representa a porta XNOR é: A tabela-verdade da porta XNOR fica da seguinte forma: T4 - M1/M2/M3 29 E o símbolo a seguir: Vamos usar um exemplo que contradiz a condição estabelecida pela função XOR. Imagine uma porta rotatória em um banco, controlada por dois botões localizados em lados opostos da porta. A porta será liberada apenas se um dos botões for pressionado (valor igual a 1, VERDADEIRO). Nos outros casos, a porta permanecerá bloqueada (valor igual a 0, FALSO), ou seja, quando nenhum botão for pressionado ou quando ambos os botões forem pressionados simultaneamente. Nesse exemplo, podemos usar a função XNOR para implementar essa lógica. Questão 1 Símbolo de uma Porta XNOR. T4 - M1/M2/M3 30 Sendo os valores para as variáveis de entrada com 4 bits A = 0110 e B = 1101, qual é o resultado da função Z = A • B? A alternativa A está correta. Como existem duas variáveis de entrada com 4 bits, é necessário efetuar o cálculo da função AND bit a bit entre o par de variáveis, da seguinte forma: Questão 2 Qual seria a função lógica que representaria o seguinte cenário: Em um ambiente monitorado, existem sensores e uma central de alarme. Neste caso, o alarme sonoro Y será disparado (VERDADEIRO), se pelo menos um dos três sensores (A, B e C) estiver ativado (VERDADEIRO). A alternativa D está correta. Para produzir essa solução, vamos construir a Tabela Verdade com 3 variáveis de entrada (A,B,C) e uma de saída Y. O valor de saída deverá ser restrito ao cenário, isto é, o alarme somente não irá disparar se nenhum dos sensores estiver ativo. T4 - M1/M2/M3 31 Neste caso, a representação será uma função OR com três entradas e uma saída, isto é, a saída será VERDADEIRA sempre que existir ao menos uma entrada verdadeira. Y = A + B + C Apenas para subsidiar a solução, considere a função OR para as duas primeiras variáveis A + B. O resultado somente será falso se ambas as entradas forem FALSAS. Agora, combinando este resultado (FALSO) com a função OR e a variável C. Novamente, somente será FALSO quando ambas as entradas forem FALSAS. M2 - Portas e operações lógicas 🎬 Expressões lógicas Hoje vou explicar as expressões lógicas, que são uma forma de representar algebricamente um circuito lógico. Vamos dar uma olhada em um exemplo. Neste circuito lógico, temos uma porta AND e uma porta OR com duas entradas. O resultado da porta AND é operado com o valor de C, e temos a saída do circuito. Vou criar uma expressão lógica que represente esse circuito. Primeiro, observamos que temos uma operação entre A e B, que chamaremos de S1. Então, nossa primeira expressão é: S1 = A AND B. Em seguida, temos S1 operando com C, e a expressão correspondente é: S = S1 OR C. Agora, vamos substituir S1 pela operação que a gera. Temos: S = (A AND B) OR C. T4 - M1/M2/M3 32 Essa é a expressão lógica que representa o circuito original. O uso dos parênteses aqui é para indicar que essa operação deve ser realizada antes da operação com o OR, embora, nesse caso específico, não seja necessário, pois a porta AND sempre é executada antes da porta OR. No entanto, colocamos os parênteses para deixar isso explícito. Portanto, uma expressão algébrica é uma expressão lógica que representa exatamente o circuito original. Esse é o conceito das expressões lógicas. Em muitos casos, para entender como um circuito digital funciona ou analisar diferentes situações relacionadas a ele, é necessário realizar uma análise cuidadosa do circuito. Uma forma útil de representar um circuito é por meio de uma expressão algébrica. As expressões lógicas, também chamadas de funções lógicas, podem ser definidas da mesma maneira que as expressões algébricas. Elas envolvem o uso de sinais de entrada (variáveis lógicas binárias) conectadas por operadores lógicos (símbolos que representam operações lógicas, com a possibilidade de uso de parênteses) e o sinal de igualdade (=), resultando em um único sinal de saída. Dessa forma, podemos dizer que todo circuito lógico executa uma expressão booleana. Por exemplo, na expressão X apresentada, X é uma expressão lógica que só pode ter os valores 0 ou 1. O resultado dessa expressão depende dos valores das variáveis A, B e C, bem como das operações lógicas OR, NOT e AND envolvidas. Vamos praticar! Vamos supor que, a partir de um circuito lógico, devemos construir a sua respectiva expressão lógica. Seja o circuito: T4 - M1/M2/M3 33 Circuito lógico. Como sugestão, utilizaremos a decomposição deste circuito em partes (blocos) a partir da sua saída (S). Decomposição do circuito. Dessa maneira, analisaremos o circuito nas duas seguintes partes: Circuito lógico. Decomposição do circuito. T4 - M1/M2/M3 34 Decomposição do circuito. Agora, para obter a expressão final deste circuito, vamos substituir a expressão S1 em função de A e B. Como temos a seguinte fórmula: Temos, então: 🎬 Avaliação de uma expressão lógica As expressões lógicas são avaliadas levando em consideração a precedência das operações. Primeiro, avaliamos as operações de negação (NOT), depois as operações de conjunção (AND) e por último as operações de disjunção (OR). Vamos analisar um circuito que representa a expressão "NOT B OR C". A expressão lógica equivalente em forma algébrica é: x = (A OR NOT B) AND C. Agora, vamos executar a avaliação das operações na ordem correta. Primeiro, executamos a negação (NOT). A negação inverte o valor, ou seja, onde é zero vira um e onde é um vira zero. Portanto, se B for zero, ele se torna um, e se B for um, ele se torna zero. Essa é a operação do "NOT B". Decomposição do circuito. T4 - M1/M2/M3 35 Em seguida, aplicamos a operação de conjunção (AND). Essa operação só retorna verdadeiro se os dois operandos forem verdadeiros. Portanto, vamos operar o resultado do "NOT B" com C. Se ambos forem verdadeiros, o resultado é verdadeiro. Se algum deles for falso, o resultado é falso. Finalmente, temos a operação de disjunção (OR) entre o resultado da operação de conjunção (AND) e A. Lembrando que a disjunção retorna verdadeiro se pelo menos um dos operandos for verdadeiro. Nesse caso, o resultado da operação "NOT B OR C AND A" será verdadeiro se algum dos quatro casos possíveis for verdadeiro. Se o meu circuito fosse ao contrário, ou seja, se a operação de disjunção (OR) viesse antes da operação de conjunção (AND), para evitar isso, colocaríamos um parêntese para garantir que o "OR" seja executado primeiro. Na avaliação de uma expressão lógica, uma ordem de precedência deverá ser seguida da mesma forma que é considerada em uma expressão aritmética, de acordo com o definido a seguir: 1. Avalie NOT; 2. Avalie END; 3. Avalie OR. Lembre-se de que os conteúdos entre parênteses devem ser executados primeiro. Seguindo o exemploanterior lê-se: A seguir, o diagrama da função fica: T4 - M1/M2/M3 36 Como sugestão, faça a construção desta tabela-verdade seguindo a ordem de precedência da expressão: Ou seja, NOT B, (NOT B) AND C, A OR (NOT B) AND C. Como temos três variáveis de entrada com dois valores possíveis (0 e 1) para cada uma, temos 2³ = 8 combinações, conforme a tabela-verdade da função X a seguir: 🎬 Expressões lógicas Diagrama lógico da função X. T4 - M1/M2/M3 37 Vou explicar de forma didática como podemos interpretar um diagrama de circuito eletrônico e determinar os resultados com base nas entradas fornecidas. A interpretação pode parecer complexa no início, devido às diversas representações das portas lógicas e sua disposição estrutural. No entanto, para facilitar a tradução, podemos decompor o circuito em uma expressão que permita realizar cálculos com base nas entradas para obter a saída desejada. Uma dica útil é começar analisando a saída, seguindo da direita para a esquerda. Vamos considerar um circuito representado por essas portas de entrada, onde a saída de uma porta é direcionada para outra porta, produzindo uma determinada saída. Temos várias entradas, por exemplo, B e C, que são conectadas a essa porta. Agora, precisamos determinar o valor da saída S. Podemos avaliar a seguinte situação: a nossa saída S seria igual ao resultado dessa primeira conexão, ou seja, a porta X-line está conectada a essa porta. Podemos chamar essa porta de X-line e conectar o que ela representa, por exemplo, X-line representa a operação entre B e C. Da mesma forma, podemos fazer isso para a próxima porta, que chamaremos de X-double-line, representando a operação entre C e D. Ao montarmos a expressão, basta substituir cada um desses elementos na nossa expressão inicial. Portanto, temos que a nossa expressão final é S = X-double- line(X-line(B, C), X-double-line(C, D)). Assim, estamos decompondo o circuito em partes menores e entendendo como cada elemento se relaciona e se conecta. Podemos fazer outro exemplo com uma porta NOT e uma porta AND, onde a entrada é compartilhada por ambas as portas, e as saídas convergem para uma outra porta que produz a saída final. Podemos representar isso da mesma forma, decompondo em partes menores. Por exemplo, temos X-line, X-double-line e X-triple-line. Podemos escrever X-line como a NOT da entrada A, X-double-line como a AND das entradas B e X-line, e X-triple- line como a AND das entradas X-double-line e C. Juntando essas três partes, nossa expressão final fica como S = NOT(A) AND (B AND NOT(A)) AND C. Nesse caso, pode parecer complexo de entender, mas estamos decompondo o problema maior em problemas menores, compreendendo as relações e conexões de cada um dos elementos. A partir disso, podemos expandir essa ideia e montar uma tabela verdade para identificar todas as possíveis combinações de sinais de entrada e, consequentemente, os resultados de saída. Isso nos ajuda a entender como o T4 - M1/M2/M3 38 circuito é montado. Podemos também explorar equivalências de circuito, substituição de portas e muito mais. Espero que essas dicas tenham sido úteis para você. Equivalência de funções lógicas Conceito Duas funções lógicas são consideradas equivalentes quando, ao aplicarmos a mesma entrada a ambas, elas produzem os mesmos valores de saída. Em outras palavras, se as tabelas-verdade dessas funções lógicas apresentarem os mesmos resultados, os circuitos correspondentes serão considerados equivalentes. Vamos praticar! 🎬 Prática 1 Seja a função ao construir a tabela-verdade da função X, temos: Como você pode verificar, o resultado da tabela-verdade da função T4 - M1/M2/M3 39 é idêntico à tabela-verdade da função Assim, podemos afirmar que tanto a função X como a função Y são equivalentes. Pratica 2 https://videolib-thumbs-estacio-prod.azureedge.net/cb2539e5-16bb-439a-99d0- ae4fe3defaa1.jpg [Todas as Práticas] 🎬 Operações lógicas com palavras de dados M3 - Expressões lógicas e diagramas lógicos Propriedades da álgebra de Boole As regras básicas da álgebra de Boole são muito úteis quando precisamos analisar se duas expressões booleanas são equivalentes ou simplificar essas expressões. Essas regras também nos ajudam a entender melhor o funcionamento de dispositivos digitais e a reduzir os custos de fabricação de circuitos digitais, diminuindo o número de componentes eletrônicos utilizados. 🎬 Operações lógicas com palavras de dados Vamos calcular o valor de uma expressão booleana com várias variáveis e vários bits. Temos quatro variáveis: A, B, C e D, sendo que A tem o valor de entrada 1001 e D tem o valor de entrada 0010. Vamos calcular o valor de X na expressão lógica x = B + C * D. Para realizar o cálculo, devemos seguir a ordem de precedência das operações. Vamos executar o processo em etapas. Na primeira etapa, vamos calcular o valor https://videolib-thumbs-estacio-prod.azureedge.net/cb2539e5-16bb-439a-99d0-ae4fe3defaa1.jpg T4 - M1/M2/M3 40 do parênteses interno, que envolve a operação AND entre C e D. Vamos armazenar esse valor em uma variável parcial chamada T1. Em seguida, vamos inverter o valor de T1 para obter o resultado da operação NOT. Depois, vamos executar a operação OR entre B e o valor armazenado em T1. Isso nos dará um valor temporário para X. Por fim, atualizamos o valor de X executando a operação AND entre A e o valor de T1. Vamos seguir cada uma dessas etapas para calcular o valor de X. Na primeira etapa, para obter o valor de B, temos B = 00, C = 1 e D = 0. O resultado da operação AND entre B e C será falso, pois ambos os valores de entrada não são verdadeiros. Portanto, teremos T1 = 00. Invertendo T1, teremos T1 = 11. Agora, vamos executar a operação OR entre B e T1, resultando em T1 = 11. Na segunda etapa, para calcular T2, invertemos o valor de D, que é 1, resultando em D = 0. Em seguida, executamos a operação XOR entre B e D, que retorna verdadeiro quando as entradas são diferentes e falso quando são iguais. Nesse caso, teremos T2 = 01, pois apenas um dos bits é diferente entre B e D. Na terceira etapa, para calcular X parcial, realizamos a operação AND entre A e T1. Como A = 1001 e T1 = 11, teremos X parcial = 0110. Por fim, o valor de X será igual ao valor de X parcial, ou seja, X = 0110. Dessa forma, realizamos o cálculo da expressão booleana passo a passo, seguindo a ordem de precedência das operações e substituindo os valores das variáveis em cada etapa. Confira, a seguir, a tabela das regras básicas da álgebra boolena: T4 - M1/M2/M3 41 Agora observe a tabela das propriedades da função Exclusive or (XOR): Como sugestão, verifique as equivalências dessas expressões através da tabela- verdade. Prática Ver no material 🎬 Aplicação das regras da álgebra booleana Ver no material Prática Considerações finais T4 - M1/M2/M3 42 Neste estudo, vimos o desenvolvimento do sistema de análise lógica conhecido, atualmente, como álgebra de Boole. Esse sistema permite expressar a operação de um circuito na forma de uma operação algébrica em que as constantes e variáveis podem assumir apenas dois valores. Identificamos os elementos básicos para o projeto de sistemas digitais, conhecidos como portas e funções lógicas, bem como a combinação das portas lógicas em circuitos digitais que, muitas vezes, podem produzir uma redução do número de portas lógicas utilizadas no circuito. O estudo desta redução ou simplificação de circuitos lógicos requer o conhecimento da álgebra de Boole, na qual encontram-se os fundamentos da eletrônica digital de circuitos, que poderá diminuir o grau de dificuldade na montagem e no custo do sistema digital. Referências MONTEIRO, Mário. Introdução à Organização de Computadores. 5. ed. Rio de Janeiro: LTC, 2007. STALLINGS, William. Arquitetura e organização de computadores. 10. ed. São Paulo: Pearson Education do Brasil, 2017. TANENAUM, Andrew S. Organização Estruturada de Computadores. 5. ed. São Paulo: Pearson Prentice Hall,2007. TOCCI, Ronald J. Sistemas digitais e aplicações. 10. ed. São Paulo: Pearson Prentice Hall, 2007. Explore + Para saber mais sobre os assuntos explorados neste tema, leia: Conceitos da Lógica Digital (anexo B), MONTEIRO, Mário. Conceitos da Lógica Digital. In: Introdução à Organização de Computadores. 5. ed. Rio de Janeiro: LTC, 2007. Lógica Digital (capítulo 11), STALLINGS, William. Lógica Digital. In: Arquitetura e organização de computadores. 10. ed. São Paulo: Pearson Education do Brasil, 2017. Portas lógicas, MARTINS, Elaine. Lógica Booleana? Saiba um pouco mais sobre esta lógica e como ela funciona. Portas Lógicas. In: Tecmundo. Publicado em: 9 T4 - M1/M2/M3 43 fev. 2009.