Estoy tratando de compilar el siguiente código vhdl en quartus
process(CLK)
variable i: integer range 0 to 11 := 0;
variable d: unsigned (1 downto 0) := "01";
variable x: integer range 0 to 100 := 50;
variable y: integer range 0 to 74 := 30;
variable r: boolean := false;
begin
if rising_edge(CLK) and not r then
case prule((2*i+1) downto 2*i) is
when "01" =>
d := d + "01";
when "10" =>
d := d - "01";
when "11" =>
if d="01" then
pixel(8*x, 8*y) <= true;
pixel(8*x, 8*y-1) <= true;
pixel(8*x, 8*y-2) <= true;
pixel(8*x, 8*y-3) <= true;
pixel(8*x, 8*y-4) <= true;
pixel(8*x, 8*y-5) <= true;
pixel(8*x, 8*y-6) <= true;
pixel(8*x, 8*y-7) <= true;
pixel(8*x, 8*y-8) <= true;
y := y - 1;
elsif d="10" then
pixel(8*x, 8*y) <= true;
pixel(8*x, 8*y+1) <= true;
pixel(8*x, 8*y+2) <= true;
pixel(8*x, 8*y+3) <= true;
pixel(8*x, 8*y+4) <= true;
pixel(8*x, 8*y+5) <= true;
pixel(8*x, 8*y+6) <= true;
pixel(8*x, 8*y+7) <= true;
pixel(8*x, 8*y+8) <= true;
y := y + 1;
elsif d="11" then
pixel(8*x, 8*y) <= true;
pixel(8*x-1, 8*y) <= true;
pixel(8*x-2, 8*y) <= true;
pixel(8*x-3, 8*y) <= true;
pixel(8*x-4, 8*y) <= true;
pixel(8*x-5, 8*y) <= true;
pixel(8*x-6, 8*y) <= true;
pixel(8*x-7, 8*y) <= true;
pixel(8*x-8, 8*y) <= true;
x := x - 1;
else
pixel(8*x, 8*y) <= true;
pixel(8*x+1, 8*y) <= true;
pixel(8*x+2, 8*y) <= true;
pixel(8*x+3, 8*y) <= true;
pixel(8*x+4, 8*y) <= true;
pixel(8*x+5, 8*y) <= true;
pixel(8*x+6, 8*y) <= true;
pixel(8*x+7, 8*y) <= true;
pixel(8*x+8, 8*y) <= true;
x := x + 8;
end if;
when others =>
r := true;
end case;
i := i + 1;
end if;
end process;
Aquí pixel
es el mapa de píxeles para VGA. Se compila si compilo sin actualizar las variables x
y y
, pero no en el código anterior.
Quartus se atasca durante unos 10 minutos y luego muestra el error de que mi PC no tiene suficiente espacio y memoria RAM. Tengo 22GB libres y 8GB RAM. Lo probé en una PC diferente, pero de nuevo, se atascó.
Estoy usando Quartus-II 16.0 lite edition.
¿Alguien sabe una salida?