Pesquisa · Mapa mental

Forma normal canônica

Na álgebra Booleana, qualquer função Booleana pode ser colocada na forma normal canônica disjuntiva ou na forma canônica de mintermos e a sua dupla forma normal canônica conjuntiva ou forma canônica de maxtermos. Outras formas canônicas incluem a soma completa dos implicantes primos ou Forma canônica de Blake, e a forma normal algébrica.

Fonte: Wikipédia (pt)Atualizado em 23/07/2026
01

Resumo

Uma aplicação da álgebra Booleana é no desenho de circuitos digitais. O objetivo pode ser o de minimizar o número de portas, para minimizar o tempo de assentamento, etc. Há dezesseis possíveis funções de duas variáveis, mas, na lógica digital de hardware, os mais simples circuitos de portas implementam apenas quatro delas: conjunção (E), disjunção (OU inclusivo), e os respectivos complementos (NAND e NOR). A maioria dos circuitos lógicos aceitam mais de 2 variáveis de entrada; por exemplo, o computador de bordo espacial Apollo Guidance Computer, que foi pioneiro na aplicação de circuitos integrados na década de 60, foi construído com apenas um tipo de porta, a de 3 entradas NOR, cuja saída é verdadeira somente quando todas as 3 entradas são falsas.

02

Mintermos

Para uma função booleana de n {\displaystyle n} variáveis x 1 , … , x n {\textstyle {\displaystyle {x_{1},\dots ,x_{n}}}} , um produto de termos em que cada uma das n {\displaystyle n} variáveis aparece uma vez (em sua forma complementar ou não-complementar) é chamado de mintermo. Assim, um mintermo é uma expressão lógica de n variáveis que emprega apenas o operador de complemento e o de conjunção. Por exemplo, a b c {\displaystyle abc} , a b ′ c {\displaystyle ab'c} e a b c ′ {\displaystyle abc'} são 3 exemplos dos 8 mintermos para uma função Booleana de três variáveis a {\displaystyle a} , b {\displaystyle b} e c {\displaystyle c} . A leitura costumeira deste último é: a E b E NÃO-c. Há 2n mintermos de n variáveis, uma vez que uma variável num mintermo pode estar na sua forma direta ou em sua forma complementar—duas escolhas por variável.

Indexação de mintermos

Mintermos muitas vezes são contados por uma codificação binária padrão, onde as variáveis são escritas geralmente em ordem alfabética. Esta convenção atribui o valor 1 para a forma direta ( x i {\displaystyle x_{i}} ) e 0 para as formas complementares ( x i ′ {\displaystyle x'_{i}} ); o mintermo é ∑ i = 1 n 2 i value ⁡ ( x i ) {\displaystyle {\displaystyle \sum \limits _{i=1}^{n}2^{i}\operatorname {value} (x_{i})}} . Por exemplo, o mintermo a b c ′ {\displaystyle abc'} é associado a 1102 = 610 e denotado m 6 {\displaystyle m_{6}} .

Equivalência funcional

Um dado mintermo n dá um valor verdadeiro (por exemplo, 1) por apenas uma combinação das variáveis de entrada. Por exemplo, mintermo 5, a b' c, é verdadeiro somente quando a e c são ambos verdadeiros e b é falso—a entrada do arranjo, onde a = 1, b = 0 e c = 1, resulta em 1. Dada a tabela verdade de uma função lógica, é possível escrever a função como uma "soma de produtos". Esta é uma forma especial da forma normal disjuntiva. Por exemplo, se dada a tabela-verdade para a soma aritmética de bits u, que faz parte de um circuito somador, como função de x e y a partir da própria adição e do "carry in", ci: Observando que as linhas que têm uma saída em 1 são as 2º, 3º, 5º e 8º, podemos escrever u como uma soma de mintermos m 1 , m 2 , m 4 , {\displaystyle m_{1},m_{2},m_{4},} e m 7 {\displaystyle m_{7}} . Se quisermos verificar isso: u ( c i , x , y ) = m 1 + m 2 + m 4 + m 7 = ( c i ′ , x ′ , y ) + ( c i ′ , x , y ′ ) + ( c i , x ′ , y ′ ) + ( c i , x , y ) {\displaystyle u(ci,x,y)=m_{1}+m_{2}+m_{4}+m_{7}=(ci',x',y)+(ci',x,y')+(ci,x',y')+(ci,x,y)} avaliado por todas as 8 combinações de três variáveis, que vai coincidir com a tabela.

03

Maxtermos

Para uma função booleana de n {\displaystyle n} variáveis x 1 , … , x n {\textstyle {\displaystyle {x_{1},\dots ,x_{n}}}} {\displaystyle } , uma soma de termos em que cada uma das n {\displaystyle n} variáveis aparece uma vez (em sua forma complementar ou não-complementar) é chamado um maxtermo. Assim, um maxtermo é uma expressão lógica de n variáveis que emprega apenas os operadores de complemento e o de disjunção. Maxtermos são um dual à ideia do mintermo (por exemplo, exibindo uma simetria complementar em todos os aspectos). Em vez de usar os operadores AND e complementos, usamos OR e complementos e procedemos da mesma forma. Por exemplo, a seguir estão dois dos oito maxtermos de três variáveis: Há 2n maxtermos de n variáveis, uma vez que uma variável na expressão de maxtermos pode ser em sua forma direta ou em sua forma complementar—duas escolhas por variável.

Indexação maxtermos

A cada maxtermo é atribuído um índice com base no oposto ao convencional utilizado para mintermos. A conversão para maxtermos atribui o valor 0 para a forma direta ( x i ) {\displaystyle {\displaystyle (x_{i})}} e 1 para formas complementares ( x i ′ ) {\displaystyle {\displaystyle (x'_{i})}} . Por exemplo, podemos atribuir o índice de 6 o maxtermo a ′ + b ′ + c {\displaystyle {\displaystyle a'+b'+c}} (110) e denotamo-lo como M6. Da mesma forma M0 de três variáveis é a + b + c {\displaystyle {\displaystyle a+b+c}} (000) e M7 é a ′ + b ′ + c ′ {\displaystyle {\displaystyle a'+b'+c'}} (111).

Equivalência funcional

É evidente que o maxtermo n dá um valor falso (i.é., 0) para apenas uma combinação das variáveis de entrada. Por exemplo, o maxtermo 5, a' + b + c', é falsa somente quando a e c são ambos verdadeiros e b é falso—a entrada do arranjo, onde a = 1, b = 0 e c = 1, resulta em 0. Se é dada uma tabela verdade de uma função lógica, é possível escrever a função como um "produto de somas". Esta é uma forma especial da forma normal conjuntiva. Por exemplo, se a tabela dada for a de um bit de "carry-out" co que faz parte de um circuito somador, como função de x e y da adição e do "carry in", ci: Observando-se que as linhas que têm uma saída de 0 são 1º, 2º, 3º e 5º, podemos escrever o co como um produto de maxtermos M 0 , M 1 , M 2 {\displaystyle {\displaystyle M_{0},M_{1},M_{2}}} e M 4 {\displaystyle {\displaystyle M_{4}}} . Se quisermos verificar isso: co(ci, x, y) = M 0 M 1 M 2 M 4 {\displaystyle {\displaystyle M_{0}M_{1}M_{2}M_{4}}} = (ci + x + y) (ci + x + y') (ci + x' + y) (ci' + x + y) avaliado por todas as 8 combinações de três variáveis, que vai coincidir com a tabela.

04

Dualização

O complemento de um mintermo é o respectivo maxtermo. Isso pode ser facilmente verificado usando a lei de De Morgan. Por exemplo: M 5 = a ′ + b + c ′ = ( a b ′ c ) ′ = m 5 ′ {\displaystyle M_{5}=a'+b+c'=(ab'c)'=m_{5}'}

05

Formas não-canônicas de PdS e SdP

É frequente o caso em que a forma canônica do mintermo pode ser simplificado para uma equivalente em SdP. Esta forma simplificada consiste de uma soma de termos de produtos. No entanto, na forma simplificada, é possível que existam um menor número de termos de produto e/ou produtos de termos que contém menos variáveis. Por exemplo, a seguinte função de 3 variáveis: tem a representação do mintermo canônico: f = a ′ b c + a b c {\displaystyle {\displaystyle f=a'bc+abc}} , mas este tem um equivalente em forma simplificada: f = b c {\displaystyle {\displaystyle f=bc}} . Neste exemplo trivial, é óbvio que b c = a ′ b c + a b c {\displaystyle {\displaystyle bc=a'bc+abc}} , mas a forma simplificada apresenta tanto uma quantidade menor de termos, quanto de variáveis no total. A representação mais simplificada em SdP de uma função é chamada de forma mínima de SdP. De forma semelhante, uma forma canônica de maxtermos pode ter uma forma em PdS mais simplificada.

06

Exemplo de aplicação

Os exemplos de tabelas-verdade para mintermos e maxtermos acima são suficientes para estabelecer a forma canônica para um único bit de posição na adição de números binários, mas não são suficientes para o projeto de uma lógica digital, a menos que seu inventário de portas incluir as AND e OR. Onde o desempenho é um problema (como na Apollo Guidance Computer), as peças são mais propensas a serem compostas por NAND e NOR devido à ação inerente de complementação na lógica de transistores. Os valores são definidos como estados de tensão, um perto do "terra" e outro perto da tensão de alimentação DC Vcc, i.e. +5 VDC. Se a maior tensão é definida como 1 para valor "true", uma porta NOR é o mais simples e útil elemento da lógica possível. Especificamente, uma porta NOR de 3 entradas pode consistir de 3 transistores bipolares de junção com os seus emissores todos em "terra" e seus cobradores amarrados juntos e ligados a Vcc através de uma impedância de carga. Cada base é ligada a um sinal de entrada, e o ponto de coletor comum apresenta o sinal de saída. Qualquer entrada que tem um 1 (alta tensão) para a sua base comprime os transistores do emissor para o seu coletor, fazendo com que um fluxo de corrente passe através da impedância de carga, o que traz a tensão do coletor (saída) muito perto do "terra". O resultado disto independe das outras entradas. Somente quando todos os 3 sinais de entrada forem 0 (baixa tensão) o emissor-coletor de impedâncias de todos os 3 transistores permanecem elevados. Em seguida uma corrente muito pequena flui, e o divisor de tensão trabalhando com a impedância de carga impõe ao coletor um ponto de alta tensão (1), muito perto de Vcc.

Consequências canônicas e não-canônicas de portas NOR

Fato #1: um conjunto de 8 portas NOR, se as suas entradas são todas as combinações das formas diretas e complementares de 3 variáveis de entrada do ci, x, e y, sempre produzem mintermos, nunca maxtermos—isto é, das 8 portas necessárias para processar todas as combinações de 3 variáveis de entrada, apenas uma tem o valor de saída 1. Isso porque uma porta NOR, apesar do seu nome, poderia ser melhor visualizado (usando a lei de De Morgan) como um E dos complementos de seus sinais de entrada. Fato #2: o motivo do Fato #1 não ser um problema é a dualidade de mintermos e maxtermos, i.e. cada maxtermo é o complemento do respectivo mintermo, e vice-versa.

Projetos de trade-offs considerados em complemento às formas canônicas

Pode-se supor que o trabalho de projetar um somador está concluída, mas ainda não abordamos o fato de que as 3 variáveis de entrada têm que aparecer em sua forma direta ou complementar. Não há nenhuma dificuldade sobre adicionar x e y até o momento, porque eles são estáticos durante a adição e, portanto, são normalmente utilizados em circuitos que têm casualmente saídas tanto em forma direta, quanto na complementar. (O mais simples circuito "Latch" feito de portas NOR é um par de portas cruzadas com um objetivo de fazer um flip-flop: a saída de cada um é ligada por fio como uma das entradas dos outros). Também não há necessidade de se criar a forma complementar da soma u. No entanto, o "carry out" de uma posição de bit deve ser passado como o carry para o bit da posição seguinte em ambas as formas (direta e complementar). A maneira mais simples para fazer isto é passar co através de uma porta NOR de 1 entrada e com nome de saída co', mas isto adicionaria uma porta de atraso no pior lugar possível, diminuindo a ondulação de todos os outros carry's da direita para a esquerda. Uma porta NOR adicional de 4 entradas formando a forma canônica de co' (o oposto mintermos como co) resolve este problema.

Planejamento top-down vs. bottom-up

Temos visto até agora como as ferramentas de mintermo/maxtermo podem ser usadas para criar um somador de estágio na forma canônica com a adição de um pouco de álgebra Booleana, custando apenas 2 porta atrasos para cada uma das saídas. Essa é a maneira "top-down"(de cima para baixo) de se construir um circuito digital para esta função, mas é o melhor caminho? A discussão centrou-se em identificar o "mais rápido" como "melhor", e a forma canônica aumentada atende a esse critério de maneira impecável, mas, às vezes, outros fatores predominam. O designer pode ter um objetivo principal de minimizar o número de portas, e/ou minimizar as divisões de sinais para as outras portas, já que grandes divisões reduzem a resiliência da degradação da fonte de alimentação, entre outros fatores ambientais. Em tal caso, o designer deve desenvolver a forma canônica de planejamento como base, e, em seguida, tentar um desenvolvimento "bottom-up"(de baixo para cima), e, finalmente, comparar os resultados.

Vídeos recomendados

Fontes consultadas

Continue pesquisando