El Simulador VGA está listo y funcionando. Puede ir a simular sus propios diseños o simplemente usar el archivo de ejemplo para verlo funcionar. También escribí una publicación de blog para ayudar a cualquiera a comenzar a usarlo para sus propios diseños de VHDL.
Estoy haciendo un simulador VGA o monitor virtual porque Xilinx tarda mucho en sintetizar VHDL (en mi pc, y en general para proyectos grandes). Con este simulador VGA, puedo simplemente ejecutar mi banco de pruebas que registra un archivo mientras se ejecuta en un simulador normal como Isim y luego usar ese archivo de registro en mi simulador VGA para generar los marcos.
El simulador VGA decodifica hsync, vsync y rgb (5 señales principales) para generar los marcos.
¿Hay alguna manera de obtener la resolución o la frecuencia de reloj de píxeles de solo las 5 señales principales? En este momento solo tengo algunos campos de texto que debes ingresar manualmente (ver formulario). Necesito la frecuencia del reloj de píxeles para realizar un seguimiento de en qué píxel está trabajando el sistema.
Supongo que cada monitor usa 640x480 a 60 Hz como configuración predeterminada para VGA porque no tengo que jugar con nada para que funcione. Entiendo que hay algunos pines EDID y algunas interfaces seriales más nuevas que están especificadas, pero ¿realmente se usan para determinar una resolución diferente o fps/Hz? En los Basys 2 , solo están conectados a tierra.
Mi simulador está funcionando muy bien en este momento, pero no tiene en cuenta el back porch
espacio en blanco en la parte superior izquierda y algo cortado en la parte inferior derecha. Esto se debe a que solo busco un flanco ascendente en hsync y vsync y empiezo a capturar. Esto no es un gran problema y es fácil de arreglar, pero no estoy seguro del valor correcto para poner para back porch
trabajar con una variedad de archivos de registro de personas.
Mi diseño VHDL (basado en este diseño ) tiene back porch
48 ciclos de reloj y, por ejemplo , este documento dice que debería ser 45, y este dice 48. ¿Cuál es la tolerancia correcta back porch
o la forma correcta de sincronizar para evitar estas discrepancias?
Por supuesto, un monitor está diseñado para tener todo esto en cuenta, pero ¿cuáles son las formas adecuadas de lidiar con la tolerancia no solo en el reloj de píxeles, sino también en cuántos ciclos toma cada proceso (porche delantero, porche trasero, resolución, fps)?
Un ejemplo de una discrepancia: mi diseño simplemente divide el reloj de 50 Mhz en el Basys 2 por dos para obtener un reloj de píxel de 25 Mhz para controlar el VGA cuando está especificado a 25.175 hz en todas partes pero, por supuesto, tiene que poner su píxel reloj en el formulario, por lo que no es un problema en este momento para mi diseño.
Aquí hay solo un buen diagrama de tiempo de hsync y vsync (solo una buena referencia):
EDID se utiliza, entre otras cosas, para consultar al monitor los tiempos que le gustaría. No se utiliza para transmitir ninguna información de vídeo.
Supongo que ha pasado tanto tiempo que nadie lo recuerda, pero los monitores VGA en el pasado tenían ajustes para la ubicación de la imagen en el CRT. Puede moverlo hacia la izquierda o hacia la derecha, hacia arriba o hacia abajo, o escalarlo horizontal o verticalmente. Los monitores más avanzados tenían ajustes adicionales. Esto le permite compensar cualquier sincronización que se haya utilizado, cualquier campo magnético local que pueda estar distorsionando la imagen, etc.
Por supuesto, lo que estos ajustes están haciendo detrás de escena es ajustar los parámetros de tiempo. Eran necesarios porque la señal VGA no dice explícitamente cuánto tiempo de borrado hay. Como habrá notado, existen algunas convenciones generales, y el monitor puede (a través de EDID) anunciar soporte para tiempos particulares, pero no hay ningún requisito de que esos tiempos sean los que se enviarán al monitor.
Lo que puede hacer, y lo que hacen los monitores LCD que todavía tienen interfaces VGA cuando presiona el botón de "ajuste automático", es adivinar cuál podría ser el tiempo de borrado simplemente observando las señales R, G y B. Estos deben ser negros durante el tiempo de borrado, y probablemente no sean negros de otra manera. Por supuesto, alguien podría estar mirando una pantalla negra y este enfoque no funcionará.
Del mismo modo, no creo que haya nada en la señal VGA que te diga cuál es la resolución. Puede adivinarlo buscando los bordes entre los píxeles y cronometrándolos, y esto es nuevamente lo que hacen los monitores LCD. Pero recuerde, VGA es una señal analógica, diseñada para mostrarse en un dispositivo analógico. No tiene el concepto de "píxeles".
solojeff
multinivel
back porch
valores y he agregado un par de entradas de rango para que las personas puedan alinear su señal.Super gato
Super gato
solojeff