diff --git a/libraries/dsp/fft/src/vhdl/fft_pkg.vhd b/libraries/dsp/fft/src/vhdl/fft_pkg.vhd index 68276873b84580970dc16f61bb74078fe1d50316..987eeadf40aac6e6623f578ea1bfdb457944bee9 100644 --- a/libraries/dsp/fft/src/vhdl/fft_pkg.vhd +++ b/libraries/dsp/fft/src/vhdl/fft_pkg.vhd @@ -47,7 +47,7 @@ package fft_pkg is constant c_fft : t_fft := (true, false, true, 0, 4, 0, 1024, 8, 14, 0, c_dsp_mult_w, 2, true, 56, 2); -- Check consistancy of the FFT parameters - function fft_r2_parameter_asserts(g_fft : t_fft) return boolean; -- the return value is void + function fft_r2_parameter_asserts(g_fft : t_fft) return boolean; -- the return value is void, because always true or abort due to failure -- Definitions for fft slv array (an array can not have unconstraint elements, so choose sufficiently wide 32 bit slv elements) subtype t_fft_slv_arr is t_slv_32_arr; -- use subtype to ease interfacing to existing types and to have central definition for rtwo components @@ -68,6 +68,16 @@ package body fft_pkg is begin -- nof_points assert g_fft.nof_points=2**ceil_log2(g_fft.nof_points) report "fft_r2: nof_points must be a power of 2" severity failure; + -- wb_factor + assert g_fft.wb_factor=2**ceil_log2(g_fft.wb_factor) report "fft_r2: wb_factor must be a power of 2" severity failure; + -- nof_chan + if g_fft.nof_chan>0 then + assert g_fft.wb_factor=1 report "fft_r2: nof_chan > 0 is only supported for wb_factor = 1" severity failure; + end if; + -- use_fft_shift + if g_fft.use_fft_shift=true then + assert g_fft.wb_factor=1 report "fft_r2 : use_fft_shift for complex input is only supported for wb_factor=1" severity failure; + end if; -- use_reorder if g_fft.use_reorder=false then assert g_fft.use_separate=false report "fft_r2 : without use_reorder there cannot be use_separate for two real inputs" severity failure; @@ -75,7 +85,7 @@ package body fft_pkg is end if; -- use_separate if g_fft.use_separate=true then - assert g_fft.use_fft_shift=false report "fft_r2 : with use_separate there cannot be use_fft_shift for real input" severity failure; + assert g_fft.use_fft_shift=false report "fft_r2 : with use_separate there cannot be use_fft_shift for two real inputs" severity failure; end if; return true; end;