Estoy trabajando en un complemento para el software de simulación (solo IC digital).
Por ejemplo, hay un bus de 8 bits.
El usuario quiere leer su valor. En el lado del complemento, compruebo el estado de cada pin. Puede ser 1, 0 o indefinido. Por el momento, si al menos un bit está flotando, devuelvo cero como valor de bus. ¿Es correcto en absoluto? ¿Puede ser un mejor valor de retorno reemplazar los bits flotantes con aleatorios [1-0] y advertir al usuario en el registro al respecto?
Lo siento, pero no tienes suerte. No existe una forma obvia de saber si una entrada digital está flotando. Los receptores de bus no pueden saber si un nivel de voltaje de entrada determinado se produce porque un controlador lo desea o si es porque no hay un controlador de entrada. Todo lo que sabe es que la entrada es más alta (1 lógico) o más baja (0 lógico) que el voltaje de umbral del receptor.
Ciertamente es posible construir un circuito de este tipo:
simular este circuito : esquema creado con CircuitLab
En este caso, Vth es el voltaje de umbral lógico nominal y R4 es una resistencia más grande. R1/R2/R3 establece los límites de error superior e inferior para el voltaje de entrada.
En funcionamiento, un alto o bajo válido en la entrada la llevará por encima o por debajo de los puntos de ajuste del comparador, y ambos comparadores leerán alto o bajo. Esto establece la salida XOR en un nivel bajo, lo que indica que la salida es buena. Si la entrada se deja flotante, R4 lleva la entrada a un valor intermedio, y un comparador sube mientras que el otro baja, y la salida XOR se eleva, lo que indica una entrada flotante.
No hace falta decir que dudo mucho que sus entradas digitales se vean así.
En la mayoría de los programas de simulación, la visualización de los datos del bus depende de la representación numérica que se utilice. La regla general es que si alguno de los bits que afectan a un dígito de visualización en particular no está definido, ese dígito se muestra como una 'X'.
Cuando la pantalla está en binario, octal o hexadecimal, el número resultante puede tener dígitos válidos con 'X' entre ellos, porque cada bit solo puede afectar a un dígito. Pero si la pantalla está en decimal, cada dígito de la pantalla puede verse afectado por cualquiera de los bits, por lo que si alguno de los bits no está definido, el valor completo del bus se muestra como 'XXXXXX'.
Se observó un efecto casi fantasmal en las computadoras de la década de 1980 con direcciones multiplexadas/buses de datos: la lectura de direcciones donde no había ningún dispositivo tendía a dar lo que parecía una tabla ASCII en un depurador. Lo que probablemente sucedió realmente fue que leyó la carga capacitiva restante de las escrituras de dirección... factible si hubiera dispositivos MOS en el extremo de lectura.
En la práctica, depende del dispositivo de lectura y de lo que pueda interferir con el cableado: casi todos los dispositivos TTL-ish tratarán una entrada flotante como un 1 sólido si no hay una resistencia pulldown y una falta de interferencia severa. Las entradas CMOS sin un pulldown o pullup le darán cualquier carga capacitiva que tenga almacenada el cableado, si hay una gran falta de interferencia; muchas veces, las entradas CMOS flotantes le darán un reloj de 50/60Hz.
sherrellbc