Primero, debo decir que todavía soy un principiante y que estoy aprendiendo VHDL, por lo que cualquier consejo es de mucha ayuda.
Lo que estoy tratando de hacer es controlar una imagen en un monitor VGA con un FPGA (Cyclone II), usando un archivo .mif con los bits correspondientes a esa imagen y cargándolos en un ROM , entonces puedo leer los valores y mostrarlos.
Mi problema surge cuando tengo que configurar los puertos para el componente que estoy usando en mi código ...
architecture aa of VGA is
--some signal declarations here
component RomImage is
port( address : in std_logic_vector(13 downto 0);
inclock : in std_logic;
outclock : in std_logic;
qrom : out std_logic_vector(23 downto 0)
);
end component;
begin
RomIm : lpm_rom
generic map(lpm_file=>"GameOver.mif",lpm_numwords=>9500, lpm_width=>24, lpm_widthad=>14)
port map(address=>address,inclock=>inclock,outclock=>outclock,q=>qrom);
-- other process and logic
-- Output logic (only red, same for blue and green)
redout(9 downto 7) <= qrom(23 downto 21) when x>=225 and x<=415 and y>=250 and y<=300 else
rojo(5 downto 3);
Realmente no sé qué reloj tengo que usar para inclock and outclock , uno de ellos es leer la dirección y el otro para la salida q [].
En el diseño entro con un reloj de 50 MHz y luego, para el reloj VGA, divido la frecuencia para obtener 25 MHz, que es la que necesito para hacer que la pantalla funcione.
Me imagino que el barrido de la pantalla tiene que estar sincronizado con la frecuencia con la que tienes que leer los valores de la ROM.
Lo siento, si es demasiado código o es confuso, intentaré expandir si es necesario