Hola a todos,
Os escribo porque me ha surgido una duda, tengo una FPGA de Actel y tengo que implementar una FFT. Como entrada a la FFT introduzco los datos provenientes de un acelerómetro y la salida de la FFT tengo que compararla con una serie de datos decimales, no enteros. Mi problema es que al ser la salida de la FFT un numero determinado de bits pues no sé bien compararlo, o sí es posible compararlo. Os adjunto el pdf con la explicación de la FFT que he cogido de la propia página web de Actel. He cogido como b=16 bits, N=1024 puntos y unconditional block floating-point scaling, pero estos parámetros se podrían configurar de manera distinta sin problema.
Lo que he intentado hasta ahora ha sido:
library std;
use std.textio.all;
library ieee;
use ieee.std_logic_textio.all;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.conv_integer;
use ieee.std_logic_arith.conv_std_logic_vector;
use ieee.numeric_std.all;
port(...) etc
declaraciones:
signal fft_re:std_logic_vector(15 downto 0);
signal fft_re1:real;
fft_re1<=real(to_integer(unsigned(fft_re)));
...
Compilar, me compila pero a la hora de sintetizar da error en esa sentencia ya que dice que no es implementable.
¿Alguna solución posible? Es que necesito compararla con un dato real, decimal, ya que sí no, perdería un montón de precisión.
Si me pudierais ayudar, estaría muy agradecida.
Muchas gracias,
Saludos
Os escribo porque me ha surgido una duda, tengo una FPGA de Actel y tengo que implementar una FFT. Como entrada a la FFT introduzco los datos provenientes de un acelerómetro y la salida de la FFT tengo que compararla con una serie de datos decimales, no enteros. Mi problema es que al ser la salida de la FFT un numero determinado de bits pues no sé bien compararlo, o sí es posible compararlo. Os adjunto el pdf con la explicación de la FFT que he cogido de la propia página web de Actel. He cogido como b=16 bits, N=1024 puntos y unconditional block floating-point scaling, pero estos parámetros se podrían configurar de manera distinta sin problema.
Lo que he intentado hasta ahora ha sido:
library std;
use std.textio.all;
library ieee;
use ieee.std_logic_textio.all;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.conv_integer;
use ieee.std_logic_arith.conv_std_logic_vector;
use ieee.numeric_std.all;
port(...) etc
declaraciones:
signal fft_re:std_logic_vector(15 downto 0);
signal fft_re1:real;
fft_re1<=real(to_integer(unsigned(fft_re)));
...
Compilar, me compila pero a la hora de sintetizar da error en esa sentencia ya que dice que no es implementable.
¿Alguna solución posible? Es que necesito compararla con un dato real, decimal, ya que sí no, perdería un montón de precisión.
Si me pudierais ayudar, estaría muy agradecida.
Muchas gracias,
Saludos