El truco general para la solución de la bi-descomposición es con la identificación de los XOR.
Un XOR de 4 variables de \$X \oplus Y \oplus X \oplus W\$ genera el siguiente mapa de Karnaugh (mapa k). Observe el patrón de tablero de ajedrez.
Excepto la última fila y columna, se alinea con su mapa k. Por lo tanto, podemos usar el XOR de 4 variables como base y enmascarar los no deseados. Con su tabla, usted quiere enmascarar los cuando \$\bar{A}\bar{D}\$ o \$\bar{B}\bar{C}\$ . La inversa (cuando se permiten unos) es entonces la ecuación \$\overline{\bar{A}\bar{D}+\bar{B}\bar{C}}\$ que se simplifica a \$(A+D)(B+C)\$ , prueba abajo.
$$ \overline{\bar{A}\bar{D}+\bar{B}\bar{C}} \\ \equiv (\overline{\bar{A}\bar{D}})(\overline{\bar{B}\bar{C}}) \\ \equiv (\overline{(\bar{A})}+\overline{(\bar{D})})(\overline{(\bar{B})}+\overline{(\bar{C})}) \\ \equiv (A+D)(B+C) $$ Añade el XOR y obtén \$(A \oplus B \oplus C \oplus D)(A+D)(B+C)\$ . Se trata de 4 puertas: una XOR de 4 entradas, dos OR de 2 entradas y una AND de 3 entradas. Si todo se convierte en puertas de 2 entradas, entonces se convierte en 7 puertas; tres XOR, dos OR y dos AND. Esto coincide con la bi-descomposición de la Fig. 2.
$$ (A \oplus B \oplus C \oplus D)(A+D)(B+C) \\ \equiv ((A \oplus B) \oplus (C \oplus D))(A+D)(B+C)\\ \equiv (((A \oplus B) \oplus (C \oplus D))(A+D)) (B+C) \, \, \# \, as \, 2-input \, gates $$
La bi-descomposición Fig.3 utiliza un enfoque que agarra el XOR más pequeño; \$A \oplus B\$ y \$C \oplus D\$ y, a continuación, la puerta de salida del resto. \$(A \oplus B)CD\$ y \$AB(C \oplus D)\$ . Por último, se han juntado \$(A \oplus B)CD + AB(C \oplus D)\$ . A continuación, convertir en puertas de 2 entradas \$((A \oplus B)C)D + A(B(C \oplus D))\$ . Esto coincide ahora con la Fig.3.
$$ grp0 = (A \oplus B)CD \, \, \# \, first \, smallest \, XOR \, group \\ grp1 = AB(C \oplus D) \, \, \# \, second \, smallest \, XOR \, group \\ grp0 + grp1 = (A \oplus B)CD + AB(C \oplus D) \\ \equiv ((A \oplus B)C)D + A(B(C \oplus D)) \, \, \# \, as \, 2-input \, gates $$
He tenido que buscar la definición de "bidecomposición", y mi explicación es demasiado grande para que quepa en un comentario. "Bi-descomposición" solía llamarse "agrupación"; que recuerdo vagamente que mi profesor lo llamaba hace muchos años. El proceso consiste en tomar una función y componerla como subfunciones. Este enfoque es pirablemente útil cuando los únicos 1s vecinos en un mapa K son diagonales. XOR/XNOR expresan entonces las subfunciones.
La mejor descripción online que he encontrado es:
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==3\$ por lo que se puede hacer con dos sumadores con carry. La ecuación resultante es \$((a \:xor \: b) + (c\: xor \:d))(a\:b + c\:d)\$ 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.