No estoy realmente seguro de lo que está mal con mi código de abajo para un vga. Todo lo que quiero que haga el programa es mostrar un color sólido en el monitor. Quiero usar los interruptores de mi tarjeta para cambiar el color que se muestra. Ejecuté la simulación y todas las señales hsync y vsync parecen ser las esperadas. Cuando enciendo los interruptores, aparece un breve pulso de color en la pantalla y luego se apaga. ¿Alguien sabe qué está mal con este código?
module vga(output reg [3:0] red, green, blue,
input [15:0] sw,
output hsync, vsync,
input clk);
wire vga_clk; //25.203 Mhz
vga_clk_gen gen(.clk_in1(clk), .clk_out1(vga_clk));
reg [9:0] hpx = 0, vpx = 0;
reg [9:0] next_hpx, next_vpx;
reg [3:0] next_red, next_green, next_blue;
assign hsync = !(hpx >= 660 && hpx <= 756);
assign vsync = !(vpx >= 494 && vpx <= 495);
always @(posedge vga_clk) begin
hpx <= next_hpx;
vpx <= next_vpx;
red <= next_red;
green <= next_green;
blue <= next_blue;
end
always @* begin
next_red = sw[3:0];
next_blue = sw[7:4];
next_green = sw[11:8];
next_vpx = vpx;
if(hpx == 800) begin
next_hpx = 0;
if(vpx == 525)
next_vpx = 0;
else
next_vpx = vpx + 1;
end else begin
next_hpx = hpx + 1;
end
end
endmodule