Me doy cuenta de que este código verilog no es ideal, y más adelante podría pedir una revisión general en algún lugar, pero en este momento no estoy buscando una revisión general, excepto en la medida en que afecta el problema que tengo Está roto fundamentalmente, por supuesto, entonces quiero saber!). Me doy cuenta de que el momento no es el correcto, y los números codificados, etc. son malos, es solo un primer intento de aprendizaje y mi problema es comprender la advertencia en este momento.
Estoy tratando de hacer una salida VGA en un papilio pro. Funciona de alguna manera si acabo de generar la sincronización vertical y horizontal, pero cuando intento dar salida a las señales rgb obtengo esta advertencia: -
ADVERTENCIA: ConstraintSystem: 119 - Restricción < NET "vga_r" LOC="P78" | > [main.ucf (6)]: esta restricción no se puede distribuir desde el Diseñar objetos que coincidan con 'NET "vga_r"' porque esos objetos de diseño No contenga ni maneje ninguna instancia del tipo correcto.
ADVERTENCIA: ConstraintSystem - Un objeto de diseño de destino para la ubicación restricción '< NET "vga_r" LOC="P78" | > [main.ucf (6)] 'no pudo se encontrarán, por lo que se eliminará la restricción de ubicación.
module main(input clk_32, output vga_hs, output vga_vs, output vga_r, output vga_g, output vga_b);
wire clk_50;
// Use a clock generator IP module to make a 50MHZ clock for the VGA
clkgen clock_gen(clk_32, clk_50);
// Current scan line number
reg[0:9] row_count;
// Current pixel position in scan line
reg[0:10] pixel_count;
always @(posedge clk_50)
begin
if (pixel_count == 1599)
begin
pixel_count <= 0;
if (row_count == 524)
begin
row_count <= 0;
end
else
begin
row_count <= row_count + 1'b1;
end
end
else
begin
pixel_count <= pixel_count + 1;
end
end
// Set "on" only during the visible part of the screen
wire on;
assign on = (pixel_count > 112 && pixel_count < 752) && (row_count > 12 && row_count < 492);
// Assert the hsync and vsync pins during the proper parts of the video frame
assign vga_hs = ~(pixel_count < 96);
assign vga_vs = ~(row_count < 2);
// Just turn on the R,G,B outputs during the main area of the screen for now.
assign vga_g = on;
assign vga_b = on;
assign vga_r = on;
endmodule
y mi archivo UCF contiene esto, lo cual creo que es correcto ...
NET "clk_32" LOC="P94" | IOSTANDARD=LVTTL | PERIOD=31.25ns;
NET "vga_vs" LOC="P99" | IOSTANDARD=LVTTL;
NET "vga_hs" LOC="P97" | IOSTANDARD=LVTTL;
NET "vga_b" LOC="P92" | IOSTANDARD=LVTTL;
NET "vga_g" LOC="P80" | IOSTANDARD=LVTTL;
NET "vga_r" LOC="P78" | IOSTANDARD=LVTTL;
clkgen es un generador de reloj generado por las herramientas y parece funcionar correctamente.
No entiendo lo que me dice la advertencia, parece que impide que la síntesis funcione. Todo se ve bien para mí, pero claramente me estoy perdiendo algo, ¿alguien puede ver lo que estoy haciendo mal? (¡Y sé amable, soy nuevo en verilog!)