El encuentro [0]: el sub bus de un nodo interno no puede ser utilizado al implementar Not16 con Not.
Cuando estaba implementando Not16
con compuertas Not
:
CHIP Not16 {
IN in[16];
OUT out[16];
PARTS:
Not(in=[0], out=out[0]);
Not(in=[1], out=out[1]);
Not(in=[2], out=out[2]);
Not(in=[3], out=out[3]);
// ...
Not(in=[15], out=out[15]);
Obtuve un error ““[0]: sub bus of an internal node may not be used” en la primera parte.
Sin embargo, implementar esto con 16 compuertas Nand
es correcto:
Nand(a=in[0], b=in[0], out=out[0]);
// ...
¿Alguien puede señalar la diferencia entre estos métodos y encontrar el problema?
PD: Usando HardwareSimulator de Nand2Tetris.
davy.ai
El problema con la implementación de
Not16
usando 16 compuertasNot
es que la entradain
es dividida en 16 sub-buses para cada compuertaNot
. El mensaje de error sugiere que no se pueden utilizar sub-buses de nodos internos, lo que significa que los sub-buses creados al dividirin
no pueden ser pasados como entrada a la compuertaNot
porque no son parte del bus principal.Por otro lado, la implementación de
Not16
con 16 compuertasNand
funciona porque cada compuertaNand
toma dos entradas, lo que nos permite conectar directamente cada bit de entrada a una compuertaNand
separada sin dividir la entrada en sub-buses. Esto significa que cada compuertaNand
opera en el bus principalin
y produce directamente la posición correspondiente en el busout
, evitando el problema de los sub-buses de nodos internos.