Se creó una palabra de 16 bits: elemento de memoria de 2kB en vhdl, ¿están mal los cierres inferidos aquí?

0

Aquí está mi código que usé para crear un elemento de memoria de palabras de 16kB de 16 bits en vhdl

library std;
use std.standard.all;
library ieee;
use ieee.std_logic_1164.all; 
library ieee;
use ieee.numeric_std.all;

entity memory is
    port(address: in std_logic_vector(15 downto 0);
        data_in: in std_logic_vector(15 downto 0);
        data_out: out std_logic_vector(15 downto 0);
        CLK: in std_logic;
        memread, memwrite, init: in std_logic);
end entity;

architecture memory_behave of memory is
    subtype word is std_logic_vector(15 downto 0);
    type ram is array(0 to 2048) of word;
    signal fullram: ram := ((others => (others =>'0')));
begin
    process(CLK, memwrite, memread, address, data_in, fullram, init)
        variable ram_addr_in: natural range 0 to 2048;
        begin
            if(CLK = '1') then
                ram_addr_in := to_integer(unsigned(address));

                if(init = '1') then                 
                -----------initializing some instructions------------
                fullram(0) <= "0001000001111111"; --ADI ra, rb, 3F
                fullram(1) <= "0101001011111111"; --SW  rb, ra, 3F
                -----------------------------------------------------
                end if;

                if(memwrite = '1' and memread = '0') then
                    fullram(ram_addr_in) <= data_in;
                elsif (memwrite = '0' and memread = '1') then
                    data_out <= fullram(ram_addr_in);
                end if;

            end if;
    end process;
end memory_behave;

Estoy obteniendo muchos pestillos inferidos (2048 x 16 = 32768 veces para ser precisos) que veo está bien porque este es un elemento de memoria. ¿Es esto realmente correcto o necesito quitar los pestillos?

También, al compilar en Quartus Prime versión 16.1.0, obtengo muchas declaraciones que indican Info (10041): Inferred latch for "fullram[2048][0]" at memory.vhdl(23) lo que ralentiza el proceso significativamente. Esto lleva mucho tiempo cuando subo la memoria para decir 64kB. ¿Hay alguna forma para que el quartus NO muestre tal advertencia?

    
pregunta Shreyas

0 respuestas

Lea otras preguntas en las etiquetas