Primero, tengo que decir que todavía soy un principiante y estoy aprendiendo VHDL, por lo que cualquier consejo es de gran 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 una ROM , para luego poder leer los valores y mostrarles.
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 el inclock y el outclock , uno de ellos es para 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 funcionar la pantalla.
Me imagino que el barrido de la pantalla debe sincronizarse con la frecuencia en la que debe leer los valores de la ROM.
Lo siento si es demasiado código o confuso, intentaré expandirlo si es necesario
No he recibido respuesta durante un día, así que déjame intentarlo. Esa ROM es muy inusual. Soy ingeniero ASIC desde hace más de 25 años y nunca he visto una ROM (o memoria) con un puerto y dos relojes.
Intente encontrar el modelo para esa ROM o busque las especificaciones si es un elemento de biblioteca FPGA. De lo contrario, mi mejor suposición sería usar el mismo reloj para ambos puertos. Usted dice que está trabajando en VGA, que requiere 25 MHz, por lo que probablemente sea su reloj de píxeles. Luego debe emitir tres señales analógicas en cada ciclo de reloj. (Y hsync, vsync + reloj de píxeles). Su ROM de 24 bits de ancho probablemente sea RGB como 888, por lo que debe registrar esa ROM a 25 MHz.
Alternativamente, podría intentar usar un reloj opuesto para la dirección y los datos.
Tapas Sourabh
santiago a.
bill moore