Nina S. T. Hir<strong>at</strong>a (DCC/<strong>IME</strong>-<strong>USP</strong>) — Notas de aula de MAC0329 (2003∼2010) 16necessárias. No entanto, o problema de otimização associado à lógica multi-níveis pode ser muitomais complexo. Não existem técnicas para, dada uma função f qualquer, encontrar a realização ótimamulti-níveis de f, para um número de níveis fixo qualquer (exceto para 2 níveis).Algumas das abordagens existentes para minimização lógica multi-níveis resumem-se à composiçãoseqüencial de circuitos de subfunções (módulos) mais simples. Este assunto não será tr<strong>at</strong>ado emdetalhes neste curso. A seguir serão apresentadas duas abordagens utilizadas para projeto de circuitosmulti-níveis.1.6.1 Decomposição funcional e estrutural de funçõesNão é objetivo deste curso aprofundar-se nestes tópicos. Aqui apresentaremos apenas uma breveintrodução. Detalhes adicionais podem ser encontrados, por exemplo, em• Jacobi, R. (1996). Síntese de Circuitos Lógicos Combinacionais. Décima Escola de Computação,Campinas.• Perkowski, M. A., Grygiel, S., and the Functional Decomposition Group (1995). A Survey ofLiter<strong>at</strong>ure on Function Decomposition - Version IV. Technical report, PSU Electrical EngineeringDepartment.Na decomposição funcional, o objetivo é, dada uma função f de n variáveis, escrevê-la comocomposição de duas ou mais funções com menor número de variáveis.Exemplo: seja f uma função com n variáveis x 1 , x 2 , . . . , x n . Uma possível decomposição de f podeser dada porf(x 1 , x 2 , . . . , x n ) = g(h(x 1 , x 2 , . . . , x k ), x k+1 , . . . , x n )Tanto g como h são funções que dependem de menos variáveis. Consequentemente, pode ser mais fácilencontrar uma realização eficiente e bar<strong>at</strong>a de g e h do que uma realização eficiente e bar<strong>at</strong>a de f.Os circuitos resultantes da decomposição funcional possuem uma estrutura hierárquica, ou seja, demúltiplos níveis, onde cada uma das subfunções pode ser vista como um módulo. Veja a figura 1.18.Esta estrutura de decomposição é apenas um exemplo de uma possível forma de decomposição. Dadax1xkhxk+1g f .xnFigura 1.18: Exemplo de decomposição funcional.uma função qualquer, verificar se ela pode ser expressa em uma certa estrutura de decomposição nãoé tarefa fácil.Na decomposição estrutural, o objetivo é, dada uma função f de n variáveis, encontrar subfunçõescomuns que possam ser compartilhadas. Essa idéia é mostrada <strong>at</strong>ravés de um exemplo. Consideremos
17 Lógica modulara função f dada porf = x 1 x 3 x 4 + x 1 x 5 + x 2 x 3 x 4 + x 2 x 5 + x 3 x 4 x 7 + x 5 x 7 + x 6Rearranjando os produtos e efetuando algumas manipulações,f = x 1 x 3 x 4 + x 2 x 3 x} {{ } 4 + x 1 x 5 + x 2 x 5 + x} {{ } 3 x 4 x 7 + x 5 x 7 +x} {{ } 6(x 1 + x 2 ) x 3 x 4 (x} {{ }1 + x 2 ) x 5 x 7 (x} {{ }3 x 4 + x 5 )} {{ }y 1 y 1 y 2= y 1 x 3 x 4 + y 1 x} {{ } 5 + y 2 x 7 + x} {{ } 6y 1 (x 3 x 4 + x 5 )y 3} {{ }y 2= y 1 y 2 + y 3O compartilhamento de subfunções resulta em uma estrutura de rede de funções, conforme mostradana figura 1.19. Este tipo de decomposição pode ser realizado levando-se em conta a implementaçãox1x2x3x4x5y1y2x6x7y3y4f .de mais de uma função booleana.Figura 1.19: Exemplo de decomposição estrutural.O projeto multi-níveis é um problema computacionalmente difícil. Para abordá-lo, é necessário estabeleceras condições de contorno que caracterizam o tipo de decomposição desejada. Entre estascondições, podemos citar o número máximo de níveis, o número máximo de variáveis de entrada emcada subfunção, a utilização de determinados componentes, etc. A solução do problema, mesmo emcondições de contorno bem limitadas, não é trivial ou então nem existe ainda.