Hay una tabla funcional de Mux4Way:
Ya conozco la manera correcta de implementar este chip utilizando otros 3 chips multiplexores cuando mux funciona de la siguiente manera:
/**
* Multiplexor:
* out = a if sel == 0
* b otherwise
*/
Digamos que ya hemos construido chips Muxtiplexor, para construir mux de 4 vías trabajando tendríamos algo así en HDL:
// First selection bit
Mux(a=D0, b=D1, sel=sel[0], out=mux0);
Mux(a=D2, b=D3, sel=sel[0], out=mux1);
// Second selection bit
Mux(a=mux0, b=mux1, sel=sel[1], out=out);
¡Y está funcionando! ¡Pero no tengo idea de por qué! Entonces, de tal manera particular, se comporta como se esperaba pero todos mis intentos de construir la tabla de la verdad no tuvieron éxito.
Sería genial tener alguna idea de cómo demostrar por qué esta forma en particular es correcta e incluso por qué funciona.