Verilog: Transferencia de datos usando puertos de entrada

1

Tengo una EEPROM siguiendo el protocolo I2C. Mi operación de escritura estaba bien. Mientras realizaba una operación de lectura, SDA era mi pin de entrada, durante la transferencia de datos desde el esclavo, sostuve el pin en alta impedancia (Z). Recibí el cero lógico correctamente pero no los lógicos. estado de impedancia.

Mi pregunta es para la transferencia de datos del esclavo al maestro, ¿el maestro debe mantener los pines de entrada en estado de alta impedancia? Si es así, entonces ¿por qué? Cuando los datos son 0 lógicos, se muestran ciclos, pero cuando los datos son 1, aún se observa una alta impedancia.

¿Hay algún otro valor que deba asignarse a este pin de entrada para que la lógica 1 y la lógica 0 se transmitan correctamente?

    
pregunta san6086

2 respuestas

1

Ya que estás 'observando' alta impedancia, lo tomo como una simulación y no como un circuito real.

En estos casos, coloque un pullup en sda y scl en su banco de pruebas (que presumiblemente conecta su módulo i2c con el modelo eeprom).

    
respondido por el apalopohapa
0

VHDL proporciona una solución utilizando la lógica de 9 estados ( STD_LOGIC type):

Para los pines I2C y otros pines de drenaje abierto (pull-up débil), debe conducir H y 0 (no Z ). Si cualquier señal se controla simultáneamente con H y 0 , 0 ganará (como desee) y no obtendrá X como lo haría entre 0 y 1 en conflicto. Y luego use la función TO_X01 al leer la señal, para resolver H a 1 .

Vería si Verilog tiene algún tipo de lógica que admita estados débiles.

    
respondido por el Ben Voigt

Lea otras preguntas en las etiquetas