Usando una matriz de resistencias para dar prioridad en un bus

2

Recuerdo que el ZX Spectrum usó una variedad de resistencias para permitir que la salida de un chip anule la salida de otro chip (en un bus) cuando ambos tuvieron el oe flojo.

 +--------+    +--------+
 | 74HCxxx|    | 74HCxxx|
 +--------+    +--------+
  ||||||||      ||||||||
  ||||||||      RRRRRRRR
  ||||||||      ||||||||  8
 -------------------------/----...

Entiendo que esto es ineficiente en cuanto al poder ya que la corriente fluirá desde la lógica 1s (en un chip) a la lógica 0s (en otro chip) a través de las resistencias.

¿Qué valor de las resistencias deben usarse para los chips 74HCxxx, de modo que haya una diferencia de voltaje suficiente entre 0s y 1s para registrar aún como 0 o 1 cuando ambos chips emiten valores de bits en conflicto?

    
pregunta fadedbee

1 respuesta

3

Sólo necesitamos la ley de ohm. Digamos que definimos Io como la corriente de salida (fuente o sumidero) que usted permite.

Io tiene que ser inferior a 20 mA para 74HC, o estarás por encima de los límites absolutos. También tiene que ser mucho mayor que la corriente de fuga de entrada (que es 1µA máx para 74HC), o tendrá niveles de voltaje fuera de las especificaciones.

Cuanto mayor sea la configuración, mayor será el consumo, pero más rápido el chip con las resistencias conectadas podrá cambiar sus estados de salida. Establecerlo en unos pocos mA parece razonable.

Las resistencias deben ser simplemente Vsupply / Io .

Impacto en el tiempo de la señal

Esto también es fácil de estimar. Necesita saber la capacitancia que existe en la línea de bus. Es la capacitancia de entrada de los dispositivos de lectura, que es 3.5pF típica para un pin de 74HC, más la capacitancia de salida del dispositivo izquierdo en HiZ, que es 6pF típica para 74HC. Hace aproximadamente 10pF si solo hay un dispositivo de lectura. Ahora, solo tiene que verificar la constante de tiempo de RC, usando el valor de resistencia que eligió. Por ejemplo, con una resistencia de 4k7, esto lleva a una constante de tiempo de 47 ns. Esto da una aproximación aproximada del retardo adicional causado por la resistencia. Si esto es aceptable o no depende del resto de su circuito. Si trabaja en una frecuencia diez veces por debajo de esto (aproximadamente 2 MHz para este ejemplo), probablemente esté bien.

Nota: todas las cifras de 74HC utilizadas aquí se pueden encontrar en este documento de NXP .

Si no fuera 74HC, pero TTL LS : tendría que hacer cálculos más precisos, porque la corriente de fuga de entrada no es tan pequeña. Además, las corrientes de fuga de fuente y de fuente ( Iih / Iil ) fueron diferentes, así como las capacidades de fuente y fuente de salida ( Ioh / Iol ).

Entonces, tendrías que revisar todos los detalles de cada caso posible, a saber: cuando el chip de la izquierda está en 0 y el chip de la derecha (con las resistencias) está en 1, el opuesto (izquierda en 1 y derecha en 0) , a la izquierda en HiZ y a la derecha en 0, a la izquierda en HiZ y a la derecha en 1.

Para los dos casos que no son HiZ, debe considerar, usando los niveles de salida del peor caso del chip izquierdo y derecho, si el nivel de la línea de bus todavía está dentro de las especificaciones (lo que explica la fuga de entrada, finalmente se multiplica por el número de chips que leen el bus).

Para los casos de HiZ, verifique si la caída de voltaje en la resistencia debida a la fuga de entrada (eventualmente multiplicada) no hace que el nivel de la línea de bus esté fuera de especificación.

Esperemos que estos días hayan terminado.

    
respondido por el dim

Lea otras preguntas en las etiquetas