Decodificación VGA - Manejo de tolerancias

6

Actualización:

El VGA Simulator está en funcionamiento. Puede simular sus propios diseños o simplemente usar el archivo de ejemplo para ver cómo funciona. También escribí una publicación de blog para ayudar a cualquiera a comenzar a usarla para sus propios diseños de VHDL.

Estoy creando un simulador VGA o un monitor virtual porque Xilinx tarda demasiado en sintetizar VHDL (en mi PC, y en general para proyectos grandes). Con este simulador VGA, solo puedo ejecutar mi banco de pruebas que se registra en 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 cuadros.

¿Hay alguna forma de obtener la resolución o la velocidad de reloj de píxeles con solo las 5 señales principales? En este momento, solo tengo algunos campos de texto en los que debe ponerlos manualmente (ver formulario). Necesito la velocidad de reloj de píxeles para realizar un seguimiento de qué píxel está trabajando el sistema.

Supongoquecadamonitorutiliza 640x480 a 60 Hz como configuración predeterminada para VGA porque no lo hago t tiene que jugar con cualquier cosa para que funcione. Entiendo que hay algunos pines EDID y algunas interfaces seriales nuevas que están especificadas, pero ¿se utilizan para determinar una resolución diferente o fps / Hz? En el Basys 2 , simplemente están conectados a tierra.

Mi simulador está funcionando muy bien en este momento, pero no tiene en cuenta el back porch , así que tengo un espacio en blanco en la parte superior izquierda y algo de corte en la parte inferior derecha. Esto se debe a que solo busco un borde ascendente en hsync y vsync y comienzo a capturar. Este no es un gran negocio y es fácil de solucionar, pero no estoy seguro del valor correcto para el back porch para poder trabajar con una variedad de archivos de registro de personas.

Mi diseño VHDL (basado en este diseño ) tiene back porch de 48 ciclos de reloj y por ejemplo, este documento dice que debe ser 45, y this dice 48. ¿Cuál es la tolerancia correcta para el 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 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 25 Mhz de píxeles para impulsar el VGA cuando es se especificó a 25.175 hz en todas partes, pero, por supuesto, tiene que poner el reloj de píxeles en la forma para que no esté disponible en este momento para mi diseño.

Aquí hay un diagrama agradable de la sincronización de hsync y vsync (solo una buena referencia):

    
pregunta MLM

1 respuesta

5

EDID se utiliza, entre otras cosas, para consultar al monitor los horarios que le gustaría. No se utiliza para transmitir información de video.

Supongo que ha pasado tanto tiempo que nadie lo recuerda, pero los monitores VGA de la época 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. Éstos le permiten compensar cualquier temporización que se esté utilizando, independientemente del campo magnético local que pueda distorsionar la imagen, etc.

Por supuesto, lo que estos ajustes están haciendo detrás de escena es ajustar los parámetros de tiempo. Fueron necesarios porque la señal VGA no dice explícitamente cuánto tiempo de supresión hay. Como ha notado, hay algunas convenciones generales, y el monitor puede (a través de EDID) anunciar el soporte para tiempos específicos, 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 supresión simplemente observando las señales R, G y B. Estos deben ser negros durante el tiempo en blanco, y probablemente no son negros de lo contrario. 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. Puedes adivinarlo buscando los bordes entre píxeles y sincronizándolos, y esto es otra vez 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 ningún concepto de "píxeles".

    
respondido por el Phil Frost

Lea otras preguntas en las etiquetas

Comentarios Recientes

en estándares HD El controlador de gráficos también pierde cualquier comunicación con el controlador de pantalla que se estaba utilizando para decodificar la imagen. Con la decodificación HDMI®3D VGA, el adaptador de pantalla HDMI-ECM se comunica con el controlador de pantalla para determinar la velocidad de fotogramas NTSC de la tarjeta de video que debe decodificar. Debido a la forma en que funciona la decodificación HDMI®3D VGA, el controlador de velocidad de fotogramas de la unidad no tiene la capacidad... Lees verder