Es probable que el circuito requerido para agregar una pantalla VGA a un PIC exceda el costo y la complejidad de usar un chip diferente que podría proporcionar una pantalla y también hacer lo que fuera que iba a hacer el PIC, o bien usar algo como una Raspberry Pi para proporcionar la pantalla y hacer que se comunique con el PIC a través de un UART o algo similar (creo que la Raspberry PI tiene al menos una UART entre sus pines de E / S).
Si su objetivo es construirse un subsistema VGA para que pueda aprender cómo funcionan estas cosas, una interfaz VGA de 640x480 requiere la capacidad de registrar aproximadamente 32 millones de píxeles / segundo. Eso va a ser un poco más allá de las habilidades de un PIC "no asistido"; es probable que no tenga que agregar mucho hardware a un PIC para permitir que salga el texto si no le importara que la pantalla acapare el procesador durante la mayoría de cada cuadro, pero es probable que el PIC no tenga tiempo para < em> cualquier cosa else; cada línea de escaneo requeriría que ejecutara una secuencia de 160 instrucciones, algo así como:
movf POSTINC0,w,c
movwf PORTC,c
comenzando en solo el ciclo correcto , y ejecutándose sin interrupción [el hardware tomaría a ciegas los datos de los caracteres de PORTC en el momento en que se suponía que debía estar allí, los alimenta a través de una ROM de forma de caracteres, y cargarlo en un registro de desplazamiento].
Si hicieras algo así, es posible que un PIC de 32MHz genere texto de 80x25 usando algo como una ROM rápida (25ns) de 32Kx8 para contener formas de caracteres y serializarlos, un contador de 3 bits para controlar los píxeles de cada personaje, y unas cuantas puertas misceláneas; probablemente se podría usar uno de los módulos PWM del PIC para manejar la sincronización horizontal. Este enfoque proporcionaría una matriz de azulejos de 80x25 que podría tener cualquiera de 256 formas; cada forma sería de 8x16 píxeles, y cualquier combinación de 256 colores [para simplificar, imagínese que los colores probablemente serían RRRGGGBB o algo así]. Si uno tuviera problemas para encontrar una ROM de 32Kx8 lo suficientemente rápida, podría utilizar una RAM de 32Kx8 rápida y proporcionar un mecanismo para ingresar datos en el arranque del sistema.