Estoy tratando de hacer que VGA funcione en mi placa 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 son de 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, aparece un mensaje en el monitor que dice que este modo de visualización no es compatible.
Esto está adaptado de http://www.fpga4fun.com/PongGame.html . Sin embargo, esta versión afirma estar diseñada para pantallas de 640x480 mientras que mi monitor es de 1280x1024. ¿Es este el problema? Si es así, ¿cómo adaptaría esto para que se ajuste al tamaño aumentado del monitor? (el reloj que estoy usando es de 50 MHz)
EDITAR: agregué 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 negra, ningún mensaje sobre un modo incorrecto.
La mayoría de los monitores VGA "calibrarán la compensación de CC" si conduce las señales RGB fuera del área visible.
Si bien puede que no sea su único problema o incluso el más grave, parece ser un problema en su implementación (controla constantes), así que intente agregar lógica para llevar sus señales de color a negro cuando esté fuera del rectángulo de visualización previsto.
pjc50
Majenko
trompeta
CounterX==767
ayCounterX==1535
aCounterX[9:4]
paraCounterX[9:5]
duplicar los tiempos, pero esto no funcionó.trompeta
Majenko
trompeta
Majenko
trompeta
pjc50