error de sintaxis cerca de si está en VHDL

0

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;
    
pregunta OnurTR

1 respuesta

1

A cada una de las líneas que preceden a un error le falta un punto y coma al final, por ejemplo

data_b <= vgaData(COLOR_BIT-1 downto 0)
                                      ^^^
    
respondido por el duskwuff

Lea otras preguntas en las etiquetas