Tabla de contenido:
- Paso 1: Descripción general del bus I2C
- Paso 2: Diseño RTL en VHDL
- Paso 3: simulación y prueba
- Paso 4: notas importantes
- Paso 5: archivos adjuntos
Video: Diseño de I2C Master en VHDL: 5 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
En este instructable, se discute el diseño de un maestro I2C simple en VHDL.
NOTA: haga clic en cada imagen para ver la imagen completa
Paso 1: Descripción general del bus I2C
• Significa Circuito Integrado Inter.
• Sincrónico, semidúplex.
• Interfaz de dos cables: SDA y SCL.
• SDA: línea de datos en serie controlada por maestro y esclavo
• SCL - Reloj serial generado por Master
• Protocolo multimaestro, multiesclavo.
• Dos modos: 100 kbits / seg y 400 kbits / seg: lento y rápido.
Paso 2: Diseño RTL en VHDL
Especificaciones de diseño de nuestro I2C Master
- Trama de datos de 8 bits.
- Control unidireccional SCL solamente.
- Dirección de esclavo de 7 bits.
- Admite los modos lento y rápido.
- Maestro único, esclavo múltiple.
- Cumple con las especificaciones I2C originales de Philips.
Se utiliza código RTL puro. Por lo tanto, la IP es fácilmente portátil en todos los FPGA. El diseño compacto basado en FSM que utiliza un reloj generado internamente garantiza un área y un rendimiento óptimos.
Paso 3: simulación y prueba
Entorno de prueba
- Simulación y pruebas funcionales utilizando IP esclava I2C de terceros.
- Sintetizado con el conjunto de herramientas Xilinx Vivado.
- Implementado y probado en la placa FPGA Artix-7.
- Diseño de temporización verificada para 100 MHz.
- Formas de onda probadas en DSO / CRO.
- Comunicación probada con éxito con Arduino UNO como esclavo I2C.
Paso 4: notas importantes
- Mientras prueba Master usando I2C Slave IP, configure el código esclavo según sus requisitos. Es posible que desee cambiar la frecuencia de reloj predeterminada y la dirección esclava. La frecuencia del reloj también debe configurarse en el código maestro.
- Durante las pruebas a bordo, no olvide las resistencias pull-up ya que la línea SDA es una salida de drenaje común. Consulte en Google la resistencia pull-up recomendada para diferentes velocidades de i2c. Usé 2.2K para 100 kHz.
- Si no utiliza el banco de pruebas y simula el maestro de forma independiente, simule cuidadosamente la señal SDA, ya que es una señal bidireccional (inout). Tiene dos controladores, el lado maestro y el lado esclavo. Debe saber cuándo "forzar" y cuándo "desforzar".
- SCL es una línea unidireccional. No es necesario hacer dominadas.
- Por favor, revise la Documentación de IP detenidamente.
Paso 5: archivos adjuntos
- Todos los códigos RTL de I2C Master.
- Banco de pruebas, códigos esclavos I2C también, para pruebas.
- Documentación de propiedad intelectual.
Para cualquier consulta, no dude en ponerse en contacto conmigo:
Mitu Raj
sígueme:
Para consultas, contactar: [email protected]
Recomendado:
Diseño de un controlador de caché asociativo de cuatro vías simple en VHDL: 4 pasos
Diseño de un controlador de caché asociativo de conjunto de cuatro vías simple en VHDL: en mi instructable anterior, vimos cómo diseñar un controlador de caché mapeado directo simple. Esta vez, avanzamos un paso. Diseñaremos un controlador de caché asociativo de cuatro vías simple. Ventaja ? Menos tasa de fallos, pero a costa de perfo
Diseño de un controlador de interrupciones programable en VHDL: 4 pasos
Diseño de un controlador de interrupciones programable en VHDL: Estoy abrumado por el tipo de respuestas que recibo en este blog. Gracias a todos por visitar mi blog y motivarme a compartir mis conocimientos con ustedes. Esta vez, voy a presentar el diseño de otro módulo interesante que vemos en todos los SOC: Interrupt C
Diseño de un controlador de caché simple en VHDL: 4 pasos
Diseño de un controlador de caché simple en VHDL: estoy escribiendo este instructivo, porque me resultó un poco difícil obtener algo de código VHDL de referencia para aprender y comenzar a diseñar un controlador de caché. Así que diseñé un controlador de caché desde cero y lo probé con éxito en FPGA. Tengo p
Diseño de un controlador VGA simple en VHDL y Verilog: 5 pasos
Diseño de un controlador VGA simple en VHDL y Verilog: En este instructable, vamos a diseñar un controlador VGA simple en RTL. El controlador VGA es el circuito digital diseñado para controlar pantallas VGA. Lee de Frame Buffer (memoria VGA) que representa el marco que se mostrará y genera la necesidad
Diseño de SPI Master en VHDL: 6 pasos
Diseño de SPI Master en VHDL: En este instructable, vamos a diseñar un SPI Bus Master desde cero en VHDL