Hola, estoy intentando escribir un código en VHDL y me aparece un error de sintaxis cerca de "end" / "if". No soy muy bueno para anidar las declaraciones y no he descubierto cómo cerrar esas declaraciones si en qué orden debido a la falta de fuentes de Internet. Estoy bastante seguro de que los errores que recibo se deben a las declaraciones, especialmente debido a aquellas que no se han cerrado correctamente. ¿Cómo puedo superar este problema y continuar mi proyecto? Aquí hay un segmento de código del que estoy recibiendo error. Escribí // ERROR AQUÍ // para indicar dónde ocurre un error.
SHOW : process (clk, rst) is
begin -- process SHOW
if rst = '1' then
processed_pic <= def_pic;
cursor_pos_x <= 0;
cursor_pos_y <= 0;
elsif clk'event and clk = '1' then
if (visible = '1') and ( pos_x < 250) and (pos_y <250) and (pos_x > -1)
and (pos_y > -1) then
if((pos_y = cursor_pos_y) and ((pos_x > cursor_pos_x -1) or (pos_x <
cursor_pos_x + height ))) or ((pos_y = cursor_pos_y + height -1) and
((pos_x > cursor_pos_x -1) or (pos_x < cursor_pos_x + height))) then
vgaData <= "00000000000";
data_r <= vgaData(3*COLOR_BIT-1 downto 2*COLOR_BIT);
data_g <= vgaData(2*COLOR_BIT-1 downto COLOR_BIT);
data_b <= vgaData(COLOR_BIT-1 downto 0)
//ERROR HERE// if ((pos_x = cursor_pos_x) and ((pos_y > cursor_pos_y - 1) or (pos_y <
cursor_pos_y + height))) or ((pos_x = cursor_pos_x + height -1) and
((pos_y > cursor_pos_y - 1) or (pos_y < cursor_pos_y + height))) then
vgaData <= "00000000000";
data_r <= vgaData(3*COLOR_BIT-1 downto 2*COLOR_BIT);
data_g <= vgaData(2*COLOR_BIT-1 downto COLOR_BIT);
data_b <= vgaData(COLOR_BIT-1 downto 0)
//ERROR HERE //end if;
else
vgaData <= processed_pic(pos_x,pos_y);
data_r <= vgaData(3*COLOR_BIT-1 downto 2*COLOR_BIT);
data_g <= vgaData(2*COLOR_BIT-1 downto COLOR_BIT);
data_b <= vgaData(COLOR_BIT-1 downto 0)
//ERROR HERE //if ((pos_x > 249) and (pos_y > -1)) or ((pos_y > 249) and ((pos_x > -1)
or (pos_x < 250))) then
vgaData <= "000000001111"; -- mavi
data_r <= vgaData(3*COLOR_BIT-1 downto 2*COLOR_BIT);
data_g <= vgaData(2*COLOR_BIT-1 downto COLOR_BIT);
data_b <= vgaData(COLOR_BIT-1 downto 0);
end if;
end if;
end if;
end process SHOW;