Su sensor de temperatura no usa solo 1 cable para comunicarse, usa 2. El cable del reloj es igual de importante que el cable de datos para comunicarse correctamente.
El bus I2C es bastante complejo, especialmente si se implementan todas sus campanas y silbidos. Afortunadamente, la mayoría de los chips no implementan todas las capacidades, y es por eso que la documentación a nivel de la hoja de datos a menudo es inconsistente. Para obtener información completa y definitiva, puede obtener la especificación completa de NXP.
No me queda claro cómo se pueden evitar las colisiones.
Si el sensor de temperatura es el único otro dispositivo en el bus, su FPGA siempre será el maestro en el protocolo de comunicación. Eso significa que usted controla la señal del reloj y siempre sabrá si el esclavo tiene permiso para conducir el bus en un momento dado.
Por lo general, escribiría una máquina de estado en su FPGA que administra los datos dentro y fuera del dispositivo esclavo, y sabe cuándo enviarlos y cuándo recibirlos.
Tenga en cuenta que algunos dispositivos esclavos también ejercerán el control de la señal del reloj en ciertos momentos específicos de la transacción, como lo describe la norma. Harán esto para "estirar" los períodos bajos del reloj y se darán tiempo para completar una medición o cálculo antes de que el maestro comience a registrar los datos reales. Si su diseño maestro no tiene en cuenta esto, podría causar una "colisión".
¿Qué sucede cuando el mismo cable de entrada es accionado tanto por la fuente como por el maestro?
Dado que los dispositivos I2C solo pueden funcionar en baja, generalmente no dañará ninguno de los chips si hay un conflicto. Cuando desea enviar un '1' lógico, no maneja la línea a un nivel alto, lo pone en un estado alto-Z y deja que una resistencia externa lo levante. Si el esclavo maneja un '0' al mismo tiempo, no habrá ningún daño en ninguno de los dispositivos.
¿Cuál es la mejor manera de modelar los ciclos de reconocimiento de envío en un pin en Verilog?
Su Verilog no "modelará" un ciclo de reconocimiento de envío. Describirá la lógica que genera las señales correctas desde el dispositivo maestro.
Si desea simular el protocolo antes de comprometerse con el hardware, debe escribir un segundo módulo que tenga otra máquina de estados que responda a las señales del maestro y produzca las señales correctas para el dispositivo esclavo.