Cómo evitar escribir y leer desde un arreglo 2D al mismo tiempo vhdl

0

Hola, para algo en lo que trabajo, debo usar una matriz 2D, pero me parece peligroso escribir y leer desde una determinada ubicación de memoria en la matriz al mismo tiempo. ¿Cómo puedo controlar esta situación? Cuando tanto la lectura como la escritura son necesarias al mismo tiempo, quiero priorizar la escritura y, en lugar de leer desde esa ubicación determinada, el valor antiguo debe mantenerse en la señal a la que leo desde matriz y escribo. Mi narración podría ser complicada. Lo siento por eso.

    
pregunta OnurTR

2 respuestas

0

Leer y escribir desde la misma posición de memoria simultáneamente no es realmente un problema. Si utiliza una memoria RAM de doble puerto, esto es exactamente lo que está haciendo.

architecture rtl of dpram is
type mem_type is array ((2** addr_width) - 1 downto 0) of
std_logic_vector(data_width - 1 downto 0);
signal mem : mem_type;

begin
process (clk)
-- Write memory.
begin
    if (rising_edge(clk) then
        if (write_en = '1') then
            mem(conv_integer(waddr)) <= din;
            -- Using write address bus.
        end if;
    end if;
end process;

process (clk) -- Read memory.
begin
    if (rising_edge(clk)) then
        dout <= mem(conv_integer(raddr));
        -- Using read address bus.
    end if;
end process;
end rtl;

Tienes que cuidarte mucho en caso de que, por ejemplo. estás almacenando vectores de datos de 16 bits en un bloque Ram de 8 bits. Significa que un conjunto de datos se divide en dos ventas. En este caso, debe verificar la consistencia de los datos.

    
respondido por el Humpawumpa
0

Está ansioso por no decirnos en qué está trabajando. Tampoco nos dices si esto es ASIC o FPGA ni qué tan grande es la memoria.

Los proveedores de FPGA tienen memorias de doble puerto listas para usar donde puede configurar el modo de operación. Todos ellos ofrecen tres modos:
 1. Escriba antes de leer (¿Esto es lo que está pidiendo?)
 2. leer antes de escribir
 3. lectura antigua, escritura nueva

Para pequeños recuerdos, puede escribir el suyo propio, pero este sitio web no proporciona ' por favor escribe mi código para mi servicio '. Primero debes intentarlo y cuando te quedes atascado, muéstranos el código y dónde falla, luego podemos ayudarte.

Como último comentario: no estoy seguro de que necesite ese comportamiento, principalmente lo que se requiere es el nuevo comportamiento de lectura y escritura. Como alternativa, encontrará que los conflictos de lectura-escritura no ocurren (FIFO) o se requiere doble búfer. (por ejemplo, BCH y FFT)

    
respondido por el Oldfart

Lea otras preguntas en las etiquetas