Estoy almacenando una tabla de seno constante de 16k de vectores firmados de 14 bits en un paquete.
Utilizo este paquete en mi módulo para leer la matriz en un proceso temporizado
Pero recibo esta advertencia durante la síntesis y mi síntesis está llevando mucho tiempo -
La RAM se implementará en LUTs ya sea porque ha descrito una lectura asíncrona o debido a características de RAM en bloque actualmente no compatibles. Si ha descrito una lectura asíncrona, hacerla síncrona le permitiría aprovechar los recursos de RAM en bloque disponibles, para un uso optimizado del dispositivo y tiempos mejorados. Por favor refiérase a su documentación para las pautas de codificación."
código en el paquete -
TIPO signed_array IS ARRAY (ENTERO RANGO <>) DE signed (DATAWIDTH-1 DOWNT O 0);
CONSTANTE TAMAÑO_TABLA_SENO : entero := LONGITUD_CUARTO+1; -- 16384+1
----seno pi/2 = 1 <=> "0111111....1" MSB es 0 debido a la representación firmada
CONSTANTE TABLA_SENO : signed_array(0 A TAMAÑO_TABLA_SINO-1):= (
to_signed(entero((2.0**(DATAWIDTH-1)-1.0)*0.0), DATAWIDTH) ,
to_signed(entero((2.0**(DATAWIDTH-1)-1.0)*9.5873799096e-05), DATAWIDTH) ,
to_signed(entero((2.0**(DATAWIDTH-1)-1.0)*0.000191747597311), DATAWIDTH) ,
to_signed(entero((2.0**(DATAWIDTH-1)-1.0)*0.000287621393763), DATAWIDTH) ,
to_signed(entero((2.0**(DATAWIDTH-1)-1.0)*0.000383495187571), DATAWIDTH) ,
to_signed(entero((2.0**(DATAWIDTH-1)-1.0)*0.000479368977855), DATAWIDTH) ,
to_signed(entero((2.0**(DATAWIDTH-1)-1.0)*0.000575242763732), DATAWIDTH) ,
to_signed(entero((2.0**(DATAWIDTH-1)-1.0)*0.000671116544322), DATAWIDTH) ,
to_signed(entero((2.0**(DATAWIDTH-1)-1.0)*0.000766990318743), DATAWIDTH) ,
to_signed(entero((2.0**(DATAWIDTH-1)-1.0)*0.000862864086114), DATAWIDTH) ,
to_signed(entero((2.0**(DATAWIDTH-1)-1.0)*0.000958737845553), DATAWIDTH) ,
to_signed(entero((2.0**(DATAWIDTH-1)-1.0)*0.00105461159618), DATAWIDTH) ,
process(clk)
if rising_edge(clk) then
ctd <= ctr + 1;
end if;
end process;
cos <= TABLA_SENO(to_integer(unsigned(ctr)));
¿Alguna sugerencia sobre cómo escribir un código vhdl para inferir una RAM de bloque en lugar de LUTs?
La TABLA DE SENO está en un paquete, y el proceso está en el módulo principal