laboratorio pixelmicro

Laboratorio de microcontroladores

Cinco figuras animadas que muestran el interior del ESP32-S3: cómo el DMA mueve píxeles sin molestar a la CPU, qué pasa con un acierto o fallo de caché, cómo PIE multiplica de a dieciséis, el cableado entre la cámara y el micro, y las señales de la interfaz de video.

Diagrama de bloques del ESP32-S3

Los píxeles de la cámara entran por la interfaz LCD_CAM y el GDMA (acceso directo a memoria) los deposita en la SRAM sin que ningún núcleo intervenga. Los cuadraditos brillantes son paquetes de datos viajando por esa ruta.

micro 1Bloques del ESP32-S3. La zona punteada es el dominio del DMA: los datos fluyen sin ocupar a la CPU. La caché con MMU da una ventana a la flash y la PSRAM externas por un bus SPI.

Caché: acierto o fallo

Cuando el núcleo pide un dato que ya está en la caché, lo obtiene en 1-2 ciclos (acierto). Si no está, tiene que ir a buscarlo a la PSRAM externa: la espera puede superar los 80 ciclos.

micro 2Mirá el contador de ciclos: con un acierto (hit), el dato está listo casi de inmediato. Con un fallo (miss), la espera se multiplica. Por eso las bibliotecas optimizadas cuidan el orden de acceso a los datos.

PIE: 16 MAC en paralelo

La extensión PIE agrega registros de 128 bits. En 128 bits entran 16 valores de 8 bits, así que una sola instrucción puede hacer 16 multiplicaciones y acumulaciones (MAC) a la vez. Eso se llama SIMD: una instrucción, muchos datos.

micro 3El registro Q0 tiene los pesos, Q1 las entradas: una sola instrucción multiplica las 16 parejas y suma al acumulador. El recuadro ampliado (32 bit) muestra cada celda de 8 bits con su índice. Techo teórico: 240 M ciclos × 16 = 3840 MMAC/s por núcleo.

Conexión entre la OV2640 y el ESP32-S3

La cámara OV2640 se conecta al ESP32-S3 con un bus paralelo de 8 bits (D0–D7), tres señales de sincronismo (PCLK, VSYNC, HREF) y un bus SCCB (similar a I2C) para configuración.

micro 4Las líneas sólidas en color de acento son el bus paralelo de 8 bits (D0–D7); las líneas punteadas neutras corresponden a sincronismo (PCLK marca el ritmo de cada píxel, HREF indica línea activa, VSYNC el inicio de cuadro); las líneas punteadas en acento son el bus serie SCCB para configurar la cámara.

Cronograma de la interfaz de cámara

Estas son las señales como se ven en un analizador lógico: VSYNC marca el inicio de cada cuadro, HREF indica cuándo hay una línea activa, PCLK marca el ritmo de cada píxel y D0–D7 llevan el dato.

micro 5Fijate cómo PCLK solo pulsa cuando HREF está alto (línea activa). Durante VSYNC todo se detiene: es el blanqueo vertical entre cuadros. El LCD_CAM del ESP32-S3 lee los datos en cada flanco ascendente de PCLK.