Valor del bus si algunos pines están flotando

1

Estoy trabajando en el complemento para el software de simulación (solo IC digital).
Por ejemplo hay bus de 8 bits.
El usuario quiere leer su valor. En el lado del plugin reviso el estado de cada pin. Puede ser 1, 0 o indefinido. En este momento, si al menos un bit está flotando, devuelvo cero como valor de bus. ¿Es correcto en absoluto? ¿Puede ser mejor que el valor de retorno reemplace los bits flotantes con aleatorio [1-0] y advierta al usuario en el registro al respecto?

    
pregunta pugnator

2 respuestas

2

Lo siento, pero estás fuera de suerte. No hay una manera obvia de saber si una entrada digital está flotando. Los receptores del bus no pueden saber si se está produciendo un nivel de voltaje de entrada dado porque un controlador quería, o si es porque no hay un controlador de entrada. Todo lo que sabe es que la entrada es más alta (lógica 1) o más baja (lógica 0) que la tensión de umbral del receptor.

Ciertamente es posible construir un circuito de este tipo:

simular este circuito : esquema creado usando CircuitLab

En este caso, Vth es la tensión de umbral lógico nominal y R4 es una resistencia bastante grande. R1 / R2 / R3 establece los límites de error superior e inferior para el voltaje de entrada.

En la operación, un alto o bajo válido en la entrada lo colocará 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 baja, lo que indica que la salida es buena. Si la entrada se deja flotando, R4 arrastra la entrada a un valor intermedio, y un comparador se pone alto mientras que el otro se pone bajo, y la salida XOR se mueve hacia arriba, lo que indica una entrada flotante.

No hace falta decir que dudo mucho que sus entradas digitales se vean así.

    
respondido por el WhatRoughBeast
2

En la mayoría de los programas de simulación, la pantalla de datos del bus depende de la representación numérica que se esté utilizando. La regla general es que si alguno de los bits que afectan a un dígito de visualización particular no está definido, entonces 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 del bus completo se muestra como 'XXXXXX'.

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas