Tengo algunos problemas para comprender los comportamientos de tiempo que observo en Logisim. He aislado algunos casos que ilustran el problema.
Diga que tengo un registro (1 bit, para mantenerlo simple), que se alimenta con un 1 lógico en su entrada D. En el reloj, el registro se establece en 1, como se esperaba:
Paraqueestofuncione,laentradaDyadebeestarrecibiendoel1lógicocuandollegalaseñaldelreloj.Si,alutilizaruntransistordetipoN,solodejamosquelalíneadedatosestéaltacuandoelrelojestáalto,entonceselregistroyanoseconfigurarácorrectamente,debidoalretrasointroducidoporeltransistor:
De hecho, si agregamos dos compuertas NO a la línea del reloj que es suficiente para retrasar la señal del reloj (en relación con la línea de datos) y nos aseguramos de que la entrada D reciba el 1 lógico de nuevo, permitiendo que el registro sea correcto conjunto:
Porsupuesto,esoesunerrorhorribleynosepuedeconfiarenél,yaquelostiemposdepuertapuedenvariardebidoalastoleranciasdeloscomponentesyotrasrazones.Aunasí,hastaahoratodobien,todosestoscomportamientosteníansentidoparamí.Loquenoentiendosonlossiguientesdoscasos.
Pensé:sipongountransistordetipoNenlalíneadelreloj,solopermitiréquelaseñaldelrelojpasedespuésdequelaseñaldedatoshayapasadosurespectivotransistor,quedeberíasincronizartodo.Peronofunciona:
Tampoco funciona con un componente de "Buffer controlado":
Aúnmássorprendente,siusountransistordetipoP,entonceselregistroestáestablecido,aunquelaentradadelrelojdelregistroestéflotando,enlugardeconfigurarseenalto:
¿Podría explicarme estos dos últimos comportamientos?