EDITAR:
Estoy trabajando con una tabla de búsqueda que se genera en tiempo de compilación .
Es este código de tiempo de compilación:
-
porque
sinus_table
es una constante -
o porque cualquier cálculo anterior a
begin
es el tiempo de compilación.
¿O tal vez ambos?
ARCHITECTURE Behavioral OF set_output IS
----------------------------------------------------------------------
-- Begin - Generate the lookup table
------------------------------------------------------------------------
-- Elements per Signal
CONSTANT table_length : integer := 2**sinus_width;
IMPURE FUNCTION createSamples RETURN output_sinus IS
VARIABLE result : output_sinus(0 TO table_length - 1);
VARIABLE table_step : real := 2.0 * math_pi / real(table_length);
VARIABLE sinus_result : real;
BEGIN
FOR i IN 0 TO table_length - 1 LOOP
sinus_result := sin((real(i)) * table_step) / 2.0;
result(i) := std_logic_vector(to_signed(integer(sinus_result * real(table_length - 1)), sinus_width));
END LOOP;
RETURN result;
END FUNCTION createSamples;
CONSTANT sinus_table : output_sinus := createSamples;
------------------------------------------------------------------------
-- End - Generate the lookup table
------------------------------------------------------------------------
------------------------------------------------------------------------
-- Begin - Manage the address and return the sine wave
------------------------------------------------------------------------
BEGIN
PD: ¿Conoces alguna literatura que pueda citar al respecto?
(La mayoría de la literatura que encontré explica la síntesis / elaboración) ...