Hola, estoy haciendo un proyecto VHDL en el que estoy haciendo algo de procesamiento de imágenes. Los datos de color de los píxeles se guardan en Rom y las operaciones se realizan en Ram. Sin embargo, cuando intento restablecer el ram de la rom. No se restablece según lo previsto. Lo que quiero decir es que en lugar de lo que debería haber sido la imagen predeterminada en el monitor, hay un cuadrado que consiste en un solo color. Cuando reinicio la memoria RAM, lo que debería suceder es que debería ver la imagen predeterminada en el monitor, pero no puedo. Intenté depurar el código pero no pude ver la falla. Podría haber algunos otros problemas en el código que figura a continuación. ¿¿Como puedó resolver esté problema?? También me sale esta advertencia
[Synth 8-6014] Unused sequential element address_rom_reg was removed.
Aquí está lo que tengo ::
Reading_Writing_Resetting_Ram: process(clk,rst) is
begin
if rst = '1' then
done <= '0';
elsif rising_edge(clk) then
if done = '0' then
if address_rom <
conv_std_logic_vector((PICTURE_WIDTH_HEIGHT*PICTURE_WIDTH_HEIGHT),16) then
write_enable <= '1';
data_in_ram <= data_rom;
address_ram <= address_rom;
address_rom <= address_rom + 1;
if address_rom =
conv_std_logic_vector((PICTURE_WIDTH_HEIGHT*PICTURE_WIDTH_HEIGHT),16) then
address_rom <= (others => '0');
write_enable <= '0';
done <= '1';
end if;
end if;
else --if done = '1'
if (pos_x < PICTURE_WIDTH_HEIGHT)
and (pos_y <PICTURE_WIDTH_HEIGHT)
and (pos_x >= 0) and (pos_y >= 0) then -- if within picture
address_ram <= (conv_std_logic_vector((pos_x +
pos_y*PICTURE_WIDTH_HEIGHT),16));
if (pos_x > control_cursor_pos_x - 1)
and (pos_x < control_cursor_pos_x + length)
and (pos_y > control_cursor_pos_y - 1)
and (pos_y < control_cursor_pos_y + length) then --if within cursor
data_in_ram <= output_of_operation;
if enable = '1' then
write_enable <= '1';
else
write_enable <= '0';
end if;
end if;
end if;
end if;
end if;
end process;
y
U3: Block_Rom port map(addra => address_rom,
clka => clk,
douta => data_rom);
U4: Block_Ram port map(addra => address_ram,
clka => clk,
dina => data_in_ram,
douta => data_out_ram,
wea => write_enable);
component Block_Rom
port(addra : in std_logic_vector(15 downto 0);
clka : in std_logic;
douta : out std_logic_vector(11 downto 0));
end component;
component Block_Ram
port(addra :in std_logic_vector(15 downto 0);
clka : in std_logic;
dina : in std_logic_vector(11 downto 0);
douta: out std_logic_vector(11 downto 0);
wea: in std_logic);
end component;