¿Cuál es la diferencia entre el registro y la RAM distribuida?

1

Estoy tratando de entender cuál es el propósito de la RAM distribuida como concepto. Según tengo entendido, se implementa utilizando LUT tal como lo son los registros. Sin embargo, los registros parecen ser mucho más flexibles:

input bit [4:0] addr1;
input bit [4:0] addr2;
input bit [4:0] addr3;
output int res;
int register[32];
always_ff @(posedge clk) begin
    for (int i = 0; i < 32; i++) begin
        if (i == addr1 || i == addr2 || i == addr3) begin
            register[i]++;
        end
    end
    res = register[addr1] + register[addr2] + register[addr3];
end

Sin embargo, la RAM distribuida solo permite un número limitado de accesos por ciclo. ¿Se compila de forma más óptima?

    
pregunta Maciej Piechotka

1 respuesta

1

Encontré la respuesta en el foro . Se puede conectar una sola celda a un registro LUT +, lo que hace que almacene un solo bit O un bloque de RAM de 16x1b. Por lo tanto, limitar la memoria a 2 puertos permite un aumento de 16x en la densidad de la memoria.

    
respondido por el Maciej Piechotka

Lea otras preguntas en las etiquetas