La pantalla de color sólido en VGA no funciona

1

Estoy tratando de hacer que VGA funcione en mi tablero Altera DE0 usando Verilog, pero no he tenido mucha suerte. Tiene los mismos pines que una interfaz VGA normal, excepto que el rojo, el verde y el azul tienen 4 bits cada uno. Aquí está la lógica que he estado tratando de usar para obtener un color sólido para mostrar:

module solid_color (clk, vga_h_sync, vga_v_sync, R, G, B);

input clk;
output vga_h_sync;
output vga_v_sync;
output [3:0] R;
output [3:0] G;
output [3:0] B;

reg [9:0] CounterX;
reg [8:0] CounterY;
wire CounterXmaxed = (CounterX==767);

always @(posedge clk)
if(CounterXmaxed)
  CounterX <= 0;
else
  CounterX <= CounterX + 1;

always @(posedge clk)
if(CounterXmaxed)
    CounterY <= CounterY + 1;

reg vga_HS, vga_VS;
always @(posedge clk)
begin
  vga_HS <= (CounterX[9:4]==0);   // active for 16 clocks
  vga_VS <= (CounterY==0);   // active for 768 clocks
end

assign vga_h_sync = ~vga_HS;
assign vga_v_sync = ~vga_VS;

assign R = 15;
assign G = 15;
assign B = 15;

endmodule

Cuando intento ejecutarlo, recibo un mensaje en el monitor que dice que este modo de visualización no es compatible.

Esto está adaptado de enlace . Sin embargo, esta versión pretende estar diseñada para pantallas de 640x480 mientras que mi monitor es 1280x1024. ¿Es este el problema? Si es así, ¿cómo adaptaría esto para ajustarlo al tamaño del monitor aumentado? (el reloj que estoy usando es de 50 MHz)

EDITAR: Agregué en un módulo divisor de reloj de la siguiente manera para cambiar la señal de reloj inicial a 25 MHz:

module divide_clock_by_two(in_clk, out_clk);

input in_clk;
output out_clk;
reg out_clk;

always @(posedge in_clk)
out_clk <= ~out_clk;

endmodule

Sin embargo, el monitor ahora solo muestra una pantalla en negro, no aparece ningún mensaje sobre un modo incorrecto.

    
pregunta aftrumpet

1 respuesta

3

La mayoría de los monitores VGA "calibrarán la compensación de CC" si conduce las señales RGB fuera del área visible.

Aunque puede que no sea su solo o incluso el problema más grave, este parece ser un problema en su implementación (unidades constantes), así que intente agregar lógica para que sus señales de color se vuelvan negras cuando fuera del rectángulo de visualización previsto.

    
respondido por el Chris Stratton

Lea otras preguntas en las etiquetas