Line 46... |
Line 46... |
--
|
--
|
-- c0f0 c0f1 c0f2 ... c0f15 c1f0 c1f1 c1f2 ... c1f15 (c0f0 means channel 0, frequency bin 0)
|
-- c0f0 c0f1 c0f2 ... c0f15 c1f0 c1f1 c1f2 ... c1f15 (c0f0 means channel 0, frequency bin 0)
|
--
|
--
|
--
|
--
|
|
|
library ieee, common_pkg_lib, common_components_lib, common_requantize_lib, rTwoSDF_lib;
|
library ieee, common_pkg_lib, common_components_lib, astron_requantize_lib, astron_r2sdf_fft_lib;
|
use IEEE.std_logic_1164.all;
|
use IEEE.std_logic_1164.all;
|
use common_pkg_lib.common_pkg.all;
|
use common_pkg_lib.common_pkg.all;
|
use rTwoSDF_lib.rTwoSDFPkg.all;
|
use astron_r2sdf_fft_lib.rTwoSDFPkg.all;
|
use work.fft_pkg.all;
|
use work.fft_pkg.all;
|
|
|
entity fft_r2_pipe is
|
entity fft_r2_pipe is
|
generic (
|
generic (
|
g_fft : t_fft := c_fft; -- generics for the FFT
|
g_fft : t_fft := c_fft; -- generics for the FFT
|
g_pipeline : t_fft_pipeline := c_fft_pipeline; -- generics for pipelining in each stage, defined in rTwoSDF_lib.rTwoSDFPkg
|
g_pipeline : t_fft_pipeline := c_fft_pipeline; -- generics for pipelining in each stage, defined in astron_r2sdf_fft_lib.rTwoSDFPkg
|
g_dont_flip_channels : boolean := false -- generic to prevent re-ordering of the channels
|
g_dont_flip_channels : boolean := false -- generic to prevent re-ordering of the channels
|
);
|
);
|
port (
|
port (
|
clk : in std_logic;
|
clk : in std_logic;
|
rst : in std_logic := '0';
|
rst : in std_logic := '0';
|
Line 105... |
Line 105... |
|
|
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
-- pipelined FFT stages
|
-- pipelined FFT stages
|
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
gen_fft: for stage in c_nof_stages downto 1 generate
|
gen_fft: for stage in c_nof_stages downto 1 generate
|
u_stage : entity rTwoSDF_lib.rTwoSDFStage
|
u_stage : entity astron_r2sdf_fft_lib.rTwoSDFStage
|
generic map (
|
generic map (
|
g_nof_chan => g_fft.nof_chan,
|
g_nof_chan => g_fft.nof_chan,
|
g_stage => stage,
|
g_stage => stage,
|
g_stage_offset => c_stage_offset,
|
g_stage_offset => c_stage_offset,
|
g_twiddle_offset => g_fft.twiddle_offset,
|
g_twiddle_offset => g_fft.twiddle_offset,
|
Line 164... |
Line 164... |
end generate;
|
end generate;
|
|
|
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
-- pipelined FFT output requantization
|
-- pipelined FFT output requantization
|
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
u_requantize_re : entity common_requantize_lib.common_requantize
|
u_requantize_re : entity astron_requantize_lib.common_requantize
|
generic map (
|
generic map (
|
g_representation => "SIGNED",
|
g_representation => "SIGNED",
|
g_lsb_w => c_out_scale_w,
|
g_lsb_w => c_out_scale_w,
|
g_lsb_round => TRUE,
|
g_lsb_round => TRUE,
|
g_lsb_round_clip => FALSE,
|
g_lsb_round_clip => FALSE,
|
Line 184... |
Line 184... |
in_dat => raw_out_re,
|
in_dat => raw_out_re,
|
out_dat => out_re,
|
out_dat => out_re,
|
out_ovr => open
|
out_ovr => open
|
);
|
);
|
|
|
u_requantize_im : entity common_requantize_lib.common_requantize
|
u_requantize_im : entity astron_requantize_lib.common_requantize
|
generic map (
|
generic map (
|
g_representation => "SIGNED",
|
g_representation => "SIGNED",
|
g_lsb_w => c_out_scale_w,
|
g_lsb_w => c_out_scale_w,
|
g_lsb_round => TRUE,
|
g_lsb_round => TRUE,
|
g_lsb_round_clip => FALSE,
|
g_lsb_round_clip => FALSE,
|