Estoy buscando una explicación paso a paso de cómo obtener el circuito de una función booleana dada utilizando bi-recomposición .
Tengo una función dada como:
f(a,b,c,d)=abc~d+ab~cd+a~bcd+~abcd
Las formas normales que conozco son:
A.) Plan de Karnaugh:
k-map:
resultado:
- DNF: f=~abcd + a~bcd + ab~cd + abc~d
- KNF: (~a+~b+~c+~d) * (a+b) * (a+c) * (b+c) * (a+d) * (b+d) * (c+d)
B.) Segundo método: minimización de Quine y McCluskey:
El resultado también lo es: f=(~abcd)+(a~bcd)+(a b ~c d)+(a b c ~d)
( herramienta ) con entrada 1: a,b,c,d y 2: [7,11,13,14]
13 puertas lógicas
C.) Simplificando la función en Wolfram Alpha
El resultado es: f=(abc)XOR(abd)XOR(acd)XOR(bcd)
11 puertas lógicas
(herramienta utilizada para la visualización: logic.ly )
D.) Con la bi-descomposición encontré este resultado:
7 puertas lógicas (el rendimiento tiene que ser probado por los puntos de referencia)
Pero, ¿cómo llegar hasta allí? Una explicación paso a paso / pseudocódigo es lo que estoy buscando.
3 votos
Para que lo sepas, las puertas XOR son mucho menos eficientes en su implementación que la mayoría de las otras puertas, y las puertas AND/OR son menos eficientes que las puertas NAND/NOR. La simple comparación del número de compuertas no es la mejor métrica a utilizar.
0 votos
¡@Justin gracias por la pista! Voy a editar el "mejor resultado" pero la pregunta al final sigue siendo la misma.
1 votos
Sugerencia: haga una búsqueda de imágenes o k-map xor . Notarás un patrón de tablero de ajedrez. Las compuertas XOR son menos eficientes que otras compuertas, pero más eficientes que la suma de las partes para cumplir la misma funcionalidad. Por lo tanto, utilice las puertas XOR cuando sea necesario.
1 votos
No puedo ayudar con la bi-descomposición, pero tu netlist hace una aritmética a+b+c+d==3a+b+c+d==3 por lo que se puede hacer con dos sumadores con carry. La ecuación resultante es ((axorb)+(cxord))(ab+cd)((axorb)+(cxord))(ab+cd) similar a la de la figura 3. Se puede leer la ecuación como una de las sumas debe tener carry, y una de las sumas debe ser impar
0 votos
¿cuál es la pregunta exactamente? ¿se trata de cómo hacer esto en código en lugar de los trucos visuales que facilitan los kmap?
0 votos
@JonRB La pregunta es sobre los pasos que hay que realizar para pasar de una función dada (ejemplo) a la forma simplificada utilizando la biodecomposición. Para obtener el circuito a partir de la fórmula me apaño. (así que no hay "trucos" visuales) el pseudocódigo estaría bien en una respuesta detallada.
1 votos
¿Preguntaste esto porque no pudiste pagar el artículo [completo] donde encontraste esos resultados? books.google.com/books?id=M_ZEBAAAQBAJ&pg=PA822 Además, no se trata de una simple bipartición.
1 votos
Por cierto, el artículo tiene una preimpresión gratuita. informatik.tu-freiberg.de/prof2/publikationen/ Así que -1 por la combinación de pereza y no revelar la fuente.
1 votos
Como sospecho que te has quedado perplejo al hablar de derivadas (de funciones booleanas) en ese artículo, y como tampoco pareces reconocer el abismo que existe entre la optimización de dos niveles y las técnicas multinivel, te recomiendo encarecidamente estas conferencias gratuitas .
1 votos
Los cofactores y respectivamente las derivadas están en las clases 2 y 3; la optimización multinivel comienza en la clase 18. No creo que cubra la bi-descomposición (que no se utiliza en la industria, que yo sepa), pero aprenderás las técnicas más estándar para la optimización multinivel, que te dará menos puertas que los mapas k.
0 votos
Los otros temas que necesitarías comprender bien para entender ese documento, lamentablemente, están fuera del ámbito de los cursos básicos de posgrado. No creo que encuentres SNF en ningún libro de texto o curso todavía.
0 votos
@RespawnedFluff Gracias, estudiaré este material. Y y no conseguí los pasos para la solución. Por eso pedí una respuesta detallada.