Es bastante fácil calcular todo lo que necesita solo a partir de la información básica provista.
Por ejemplo, el sitio que más utilizo para una referencia es este: enlace y lo tiene todo. se necesita 640x480 @ 60Hz (especifica las resoluciones más comunes, pero es la más sencilla de usar).
Especifica todo en píxeles y líneas, y proporciona una frecuencia de reloj de píxeles, así como frecuencias de actualización. Sin embargo, todo lo que necesitas es el reloj de píxeles y la cantidad de píxeles para cada cosa.
Por ejemplo, da un reloj de píxeles de 25.175 MHz. No es fácil para la mayoría de los microcontroladores generar, ya que es de alta frecuencia y alta resolución; en general, puede tener uno de esos dos: alta frecuencia o alta resolución. Sin embargo, 25MHz suele ser lo suficientemente fácil de generar y está "lo suficientemente cerca" para que la mayoría de los monitores puedan lidiar con él.
Así que tenemos un reloj de píxeles de 25MHz. También tenemos un tamaño de "línea completa" de 800 píxeles. Ese tamaño incluye los porches, la sincronización y el área visible. Por lo tanto, una línea de 800 píxeles, a un reloj de 25MHz, se ejecutaría a (25,000,000 / 800) 31250 Hz, o una línea cada 32µS.
El pulso de sincronización horizontal (96 píxeles) sería (96 / 25,000,000) = 3.84µS de largo.
Sabemos que una línea toma 32µS, y hay 525 líneas en un "cuadro completo", por lo que 0.000032 × 525 = 0.0168s para un cuadro, o 59.524Hz. Eso está bastante cerca de los 60Hz para la especificación.
Por lo tanto, dado un reloj de píxeles y un conjunto de períodos de píxeles, puede calcular cualquier cosa. Por supuesto, también puedes ir hacia atrás. Dada una velocidad de fotogramas y una resolución que puedes calcular:
$$
60Hz × 525 = 31500Hz
$$
$$
31500Hz × 800px = 25.2MHz
$$
Eso demuestra que incluso las especificaciones dadas no son 100% exactas, pero hay un poco de flexibilidad en los tiempos VGA para que pueda doblar su reloj para que se adapte a usted dentro de ciertos límites.
Y mientras estamos en ello, generar VGA puramente con software requiere mucho procesamiento y, a menudo, te deja sin ciclos de CPU para hacer cualquier cosa. Uno de los "trucos" más comunes para hacer una señal VGA en una CPU es usar SPI para generar el flujo de datos de píxeles. Aún mejor si tiene DMA en su microcontrolador para generar una línea completa de datos sin que la CPU tenga que hacer nada. La CPU es la única responsable de generar los pulsos de sincronización y de cargar el sistema DMA con las direcciones correctas; el resto se realiza en segundo plano. Por supuesto, eso te deja con solo una pantalla monocromática de 1 bit. Si tiene una interfaz SQI y suficiente RAM, podría hacer que una pantalla de 4 bits (16 colores) sea lo suficientemente fácil.