Estoy haciendo un proyecto fpga en vhdl para mis estudios.
Estoy mostrando un perro en la pantalla que intento mover. Eso funciona bien para derecha, izquierda y arriba, pero al tratar de hacer que el perro caiga, se mueve de una manera extraña: es como el perro "se desplaza", es difícil de describir pero no es el perro el que mueve su tipo de ventana que se mueve en una lista de los siguientes perros.
Si muevo la parte else Spot <= '0'
del código, otras direcciones (derecha y abajo) se vuelven inválidas (el mismo error).
aquí está el enlace del video: enlace
Aquí está el código completo: enlace
Aquí está la parte del código de error (creo):
begin
if clk25'event and clk25='1' then
if Compteur_pixels >= origineX and compteur_pixels < origineX + tailleX
and compteur_lignes >= origineY and compteur_lignes < origineY + tailleY then
Spot <= dog (ligne,Pixel); --dog and is an array of 0 and 1
Pixel := Pixel+1;
if pixel >= tailleX then
pixel := 0;
ligne := ligne + 1;
if ligne >= tailleY then
ligne := 0;
else Spot <= '0';
if direction = "00011100" then -- right key pressed (A)
if originex < 700 then
originex := origineX + 1; --increment X origin of dog
end if;
elsif direction = "00011010" then -- left (w)
if originex > 83 then
originex := origineX - 1;
end if;
elsif direction = "00111010" then -- up
if originey > 46 then
originey := originey - 1;
end if;
elsif direction = "01000010" then -- down
if originey < 450 then
originey := originey + 1;
end if;
end if;
end if;
end if;
end if;
end if ;
end process ;