Skip to content
Snippets Groups Projects
Commit fbe978f5 authored by Reinier van der Walle's avatar Reinier van der Walle
Browse files

Connected raw subband output from wpfb

parent c48b8d3b
No related branches found
No related tags found
1 merge request!313Resolve DIST2-11
Pipeline #45655 failed
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
-- . -- .
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
LIBRARY IEEE, common_lib, dp_lib, diag_lib, rTwoSDF_lib, common_mult_lib, wpfb_lib, filter_lib, si_lib, st_lib, mm_lib; LIBRARY IEEE, common_lib, dp_lib, diag_lib, rTwoSDF_lib, common_mult_lib, fft_lib, wpfb_lib, filter_lib, si_lib, st_lib, mm_lib;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_1164.ALL;
USE common_lib.common_pkg.ALL; USE common_lib.common_pkg.ALL;
USE common_lib.common_mem_pkg.ALL; USE common_lib.common_mem_pkg.ALL;
...@@ -44,6 +44,7 @@ USE common_lib.common_network_layers_pkg.ALL; ...@@ -44,6 +44,7 @@ USE common_lib.common_network_layers_pkg.ALL;
USE dp_lib.dp_stream_pkg.ALL; USE dp_lib.dp_stream_pkg.ALL;
USE rTwoSDF_lib.rTwoSDFPkg.ALL; USE rTwoSDF_lib.rTwoSDFPkg.ALL;
USE filter_lib.fil_pkg.ALL; USE filter_lib.fil_pkg.ALL;
USE fft_lib.fft_pkg.ALL;
USE wpfb_lib.wpfb_pkg.ALL; USE wpfb_lib.wpfb_pkg.ALL;
USE diag_lib.diag_pkg.ALL; USE diag_lib.diag_pkg.ALL;
USE work.sdp_pkg.ALL; USE work.sdp_pkg.ALL;
...@@ -63,10 +64,11 @@ ENTITY node_sdp_oversampled_filterbank IS ...@@ -63,10 +64,11 @@ ENTITY node_sdp_oversampled_filterbank IS
dp_bsn_source_restart : IN STD_LOGIC; dp_bsn_source_restart : IN STD_LOGIC;
dp_bsn_source_new_interval : IN STD_LOGIC; dp_bsn_source_new_interval : IN STD_LOGIC;
in_sosi_arr : IN t_dp_sosi_arr(c_sdp_S_pn-1 DOWNTO 0); in_sosi_arr : IN t_dp_sosi_arr(c_sdp_S_pn-1 DOWNTO 0);
fsub_sosi_arr : OUT t_dp_sosi_arr(c_sdp_R_os * c_sdp_P_pfb-1 DOWNTO 0); fsub_quant_sosi_arr: OUT t_dp_sosi_arr(c_sdp_R_os * c_sdp_P_pfb-1 DOWNTO 0);
sst_udp_sosi : OUT t_dp_sosi; fsub_raw_sosi_arr : OUT t_dp_sosi_arr(c_sdp_R_os * c_sdp_P_pfb-1 DOWNTO 0);
sst_udp_siso : IN t_dp_siso := c_dp_siso_rst; sst_udp_sosi : OUT t_dp_sosi;
sst_udp_siso : IN t_dp_siso := c_dp_siso_rst;
mm_rst : IN STD_LOGIC; mm_rst : IN STD_LOGIC;
mm_clk : IN STD_LOGIC; mm_clk : IN STD_LOGIC;
...@@ -107,12 +109,9 @@ ARCHITECTURE str OF node_sdp_oversampled_filterbank IS ...@@ -107,12 +109,9 @@ ARCHITECTURE str OF node_sdp_oversampled_filterbank IS
NATURAL'IMAGE(c_sdp_W_sub_weight) & "b" & NATURAL'IMAGE(c_sdp_W_sub_weight) & "b" &
NATURAL'IMAGE(c_sdp_W_sub_weight_fraction) & "f_unit"; NATURAL'IMAGE(c_sdp_W_sub_weight_fraction) & "f_unit";
-- Use quantized subbands, so c_subband_raw_dat_w = 18b. CONSTANT c_fft : t_fft := func_wpfb_map_wpfb_parameters_to_fft(g_wpfb);
-- . Maybe later use raw subbands like in node_sdp_filterbank, but for now CONSTANT c_subband_raw_dat_w : NATURAL := func_fft_raw_dat_w(c_fft);
-- appling subband weights and bf weights at c_sdp_W_subband = 18b subbands CONSTANT c_subband_raw_fraction_w : NATURAL := func_fft_raw_fraction_w(c_fft);
-- is acceptable.
CONSTANT c_subband_raw_dat_w : NATURAL := c_sdp_W_subband;
CONSTANT c_subband_raw_fraction_w : NATURAL := 0;
CONSTANT c_nof_masters : POSITIVE := 2; CONSTANT c_nof_masters : POSITIVE := 2;
...@@ -170,17 +169,18 @@ ARCHITECTURE str OF node_sdp_oversampled_filterbank IS ...@@ -170,17 +169,18 @@ ARCHITECTURE str OF node_sdp_oversampled_filterbank IS
-- Real input FFT -- Real input FFT
SIGNAL wpfb_unit_in_sosi_arr : t_dp_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); SIGNAL wpfb_unit_in_sosi_arr : t_dp_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst);
SIGNAL wpfb_unit_fil_sosi_arr : t_dp_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); SIGNAL wpfb_unit_fil_sosi_arr : t_dp_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst);
SIGNAL wpfb_unit_out_sosi_arr : t_dp_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); SIGNAL wpfb_unit_out_quant_sosi_arr : t_dp_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst);
SIGNAL wpfb_unit_out_sosi_arr_piped : t_dp_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); SIGNAL wpfb_unit_out_raw_sosi_arr : t_dp_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst);
-- Mixer to shift f_sub/2 -- Mixer to shift f_sub/2
SIGNAL mixer_complex_mult_src_out_arr : t_dp_sosi_arr(c_sdp_S_pn-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); SIGNAL mixer_complex_mult_src_out_arr : t_dp_sosi_arr(c_sdp_S_pn-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst);
SIGNAL mixer_complex_requantize_src_out_arr : t_dp_sosi_arr(c_sdp_S_pn-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); SIGNAL mixer_complex_requantize_src_out_arr : t_dp_sosi_arr(c_sdp_S_pn-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst);
-- Complex input FFT (from LO mixer) -- Complex input FFT (from LO mixer)
SIGNAL wpfb_unit_complex_in_sosi_arr : t_dp_sosi_arr(c_sdp_S_pn-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); SIGNAL wpfb_unit_complex_in_sosi_arr : t_dp_sosi_arr(c_sdp_S_pn-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst);
SIGNAL wpfb_unit_complex_fil_sosi_arr : t_dp_sosi_arr(c_sdp_S_pn-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); SIGNAL wpfb_unit_complex_fil_sosi_arr : t_dp_sosi_arr(c_sdp_S_pn-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst);
SIGNAL wpfb_unit_complex_out_sosi_arr : t_dp_sosi_arr(c_sdp_S_pn-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); SIGNAL wpfb_unit_complex_out_quant_sosi_arr : t_dp_sosi_arr(c_sdp_S_pn-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst);
SIGNAL wpfb_unit_complex_out_raw_sosi_arr : t_dp_sosi_arr(c_sdp_S_pn-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst);
-- Remove negative frequencies -- Remove negative frequencies
SIGNAL wpfb_complex_out_resized_sosi_arr : t_dp_sosi_arr(c_sdp_S_pn-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); SIGNAL wpfb_complex_out_resized_sosi_arr : t_dp_sosi_arr(c_sdp_S_pn-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst);
...@@ -191,12 +191,13 @@ ARCHITECTURE str OF node_sdp_oversampled_filterbank IS ...@@ -191,12 +191,13 @@ ARCHITECTURE str OF node_sdp_oversampled_filterbank IS
SIGNAL wpfb_complex_out_resized_sosi_2arr : t_dp_sosi_2arr_2(c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => (OTHERS => c_dp_sosi_rst)); SIGNAL wpfb_complex_out_resized_sosi_2arr : t_dp_sosi_2arr_2(c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => (OTHERS => c_dp_sosi_rst));
SIGNAL wpfb_complex_out_resized_siso_2arr : t_dp_siso_2arr_2(c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => (OTHERS => c_dp_siso_rst)); SIGNAL wpfb_complex_out_resized_siso_2arr : t_dp_siso_2arr_2(c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => (OTHERS => c_dp_siso_rst));
SIGNAL subband_equalizer_in_sosi_arr : t_dp_sosi_arr(c_sdp_R_os * c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); SIGNAL subband_equalizer_in_sosi_arr : t_dp_sosi_arr(c_sdp_R_os * c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst);
SIGNAL subband_equalizer_out_sosi_arr : t_dp_sosi_arr(c_sdp_R_os * c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); SIGNAL subband_equalizer_quant_sosi_arr : t_dp_sosi_arr(c_sdp_R_os * c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst);
SIGNAL dp_selector_out_sosi_arr : t_dp_sosi_arr(c_sdp_R_os * c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); SIGNAL subband_equalizer_raw_sosi_arr : t_dp_sosi_arr(c_sdp_R_os * c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst);
SIGNAL dp_selector_out_sosi_arr : t_dp_sosi_arr(c_sdp_R_os * c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst);
SIGNAL scope_equalizer_in_sosi_arr : t_dp_sosi_integer_arr(c_sdp_R_os * c_sdp_S_pn-1 DOWNTO 0); SIGNAL scope_equalizer_in_sosi_arr : t_dp_sosi_integer_arr(c_sdp_R_os * c_sdp_S_pn-1 DOWNTO 0);
SIGNAL scope_equalizer_out_sosi_arr : t_dp_sosi_integer_arr(c_sdp_R_os * c_sdp_S_pn-1 DOWNTO 0); SIGNAL scope_equalizer_out_sosi_arr : t_dp_sosi_integer_arr(c_sdp_R_os * c_sdp_S_pn-1 DOWNTO 0);
SIGNAL selector_en : STD_LOGIC; SIGNAL selector_en : STD_LOGIC;
SIGNAL weighted_subbands_flag : STD_LOGIC; SIGNAL weighted_subbands_flag : STD_LOGIC;
...@@ -277,8 +278,8 @@ BEGIN ...@@ -277,8 +278,8 @@ BEGIN
in_sosi_arr => wpfb_unit_in_sosi_arr, in_sosi_arr => wpfb_unit_in_sosi_arr,
fil_sosi_arr => wpfb_unit_fil_sosi_arr, fil_sosi_arr => wpfb_unit_fil_sosi_arr,
out_quant_sosi_arr => wpfb_unit_out_sosi_arr, out_quant_sosi_arr => wpfb_unit_out_quant_sosi_arr,
out_raw_sosi_arr => OPEN, out_raw_sosi_arr => wpfb_unit_out_raw_sosi_arr,
dp_bsn_source_restart => dp_bsn_source_restart_pipe dp_bsn_source_restart => dp_bsn_source_restart_pipe
); );
...@@ -448,8 +449,8 @@ BEGIN ...@@ -448,8 +449,8 @@ BEGIN
in_sosi_arr => wpfb_unit_complex_in_sosi_arr, in_sosi_arr => wpfb_unit_complex_in_sosi_arr,
fil_sosi_arr => wpfb_unit_complex_fil_sosi_arr, fil_sosi_arr => wpfb_unit_complex_fil_sosi_arr,
out_quant_sosi_arr => wpfb_unit_complex_out_sosi_arr, out_quant_sosi_arr => wpfb_unit_complex_out_quant_sosi_arr,
out_raw_sosi_arr => OPEN, out_raw_sosi_arr => wpfb_unit_complex_out_raw_sosi_arr,
dp_bsn_source_restart => dp_bsn_source_restart_pipe_complex dp_bsn_source_restart => dp_bsn_source_restart_pipe_complex
); );
...@@ -467,7 +468,7 @@ BEGIN ...@@ -467,7 +468,7 @@ BEGIN
PORT MAP ( PORT MAP (
rst => dp_rst, rst => dp_rst,
clk => dp_clk, clk => dp_clk,
snk_in => wpfb_unit_complex_out_sosi_arr(I), snk_in => wpfb_unit_complex_out_raw_sosi_arr(I),
src_out => wpfb_complex_out_resized_sosi_arr(I) src_out => wpfb_complex_out_resized_sosi_arr(I)
); );
END GENERATE; END GENERATE;
...@@ -476,7 +477,7 @@ BEGIN ...@@ -476,7 +477,7 @@ BEGIN
gen_dp_fifo: FOR I IN 0 TO c_sdp_S_pn-1 GENERATE gen_dp_fifo: FOR I IN 0 TO c_sdp_S_pn-1 GENERATE
u_dp_fifo_sc : ENTITY dp_lib.dp_fifo_sc u_dp_fifo_sc : ENTITY dp_lib.dp_fifo_sc
GENERIC MAP( GENERIC MAP(
g_data_w => c_nof_complex * c_sdp_W_subband, g_data_w => c_nof_complex * c_subband_raw_dat_w,
g_bsn_w => c_dp_stream_bsn_w, g_bsn_w => c_dp_stream_bsn_w,
g_use_bsn => TRUE, g_use_bsn => TRUE,
g_use_sync => TRUE, g_use_sync => TRUE,
...@@ -526,7 +527,7 @@ BEGIN ...@@ -526,7 +527,7 @@ BEGIN
rst => dp_rst, rst => dp_rst,
clk => dp_clk, clk => dp_clk,
-- ST sink -- ST sink
snk_in_arr => wpfb_unit_out_sosi_arr, snk_in_arr => wpfb_unit_out_raw_sosi_arr,
-- ST source -- ST source
src_out_arr => subband_equalizer_in_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0) src_out_arr => subband_equalizer_in_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0)
); );
...@@ -560,8 +561,9 @@ BEGIN ...@@ -560,8 +561,9 @@ BEGIN
dp_clk => dp_clk, dp_clk => dp_clk,
dp_rst => dp_rst, dp_rst => dp_rst,
in_raw_sosi_arr => subband_equalizer_in_sosi_arr, in_raw_sosi_arr => subband_equalizer_in_sosi_arr,
out_raw_sosi_arr => subband_equalizer_out_sosi_arr, out_raw_sosi_arr => subband_equalizer_raw_sosi_arr,
out_quant_sosi_arr => subband_equalizer_quant_sosi_arr,
mm_rst => mm_rst, mm_rst => mm_rst,
mm_clk => mm_clk, mm_clk => mm_clk,
...@@ -573,10 +575,11 @@ BEGIN ...@@ -573,10 +575,11 @@ BEGIN
); );
-- Output fsub streams -- Output fsub streams
fsub_sosi_arr <= subband_equalizer_out_sosi_arr; fsub_quant_sosi_arr <= subband_equalizer_quant_sosi_arr;
fsub_raw_sosi_arr <= subband_equalizer_raw_sosi_arr;
--------------------------------------------------------------- ---------------------------------------------------------------
-- DP SELECTOR -- DP SELECTOR for SST input
--------------------------------------------------------------- ---------------------------------------------------------------
u_dp_selector_arr : ENTITY dp_lib.dp_selector_arr u_dp_selector_arr : ENTITY dp_lib.dp_selector_arr
GENERIC MAP ( GENERIC MAP (
...@@ -592,8 +595,8 @@ BEGIN ...@@ -592,8 +595,8 @@ BEGIN
reg_selector_mosi => reg_selector_mosi, reg_selector_mosi => reg_selector_mosi,
reg_selector_miso => reg_selector_miso, reg_selector_miso => reg_selector_miso,
pipe_sosi_arr => subband_equalizer_in_sosi_arr, pipe_sosi_arr => subband_equalizer_in_sosi_arr, -- Should be quantized?
ref_sosi_arr => subband_equalizer_out_sosi_arr, ref_sosi_arr => subband_equalizer_quant_sosi_arr,
out_sosi_arr => dp_selector_out_sosi_arr, out_sosi_arr => dp_selector_out_sosi_arr,
selector_en => selector_en selector_en => selector_en
...@@ -629,7 +632,7 @@ BEGIN ...@@ -629,7 +632,7 @@ BEGIN
PORT MAP ( PORT MAP (
clk => dp_clk, clk => dp_clk,
rst => dp_rst, rst => dp_rst,
sp_sosi_arr => subband_equalizer_out_sosi_arr, sp_sosi_arr => subband_equalizer_quant_sosi_arr,
scope_sosi_arr => scope_equalizer_out_sosi_arr scope_sosi_arr => scope_equalizer_out_sosi_arr
); );
-- synthesis translate_on -- synthesis translate_on
......
...@@ -539,7 +539,7 @@ ARCHITECTURE str OF sdp_station IS ...@@ -539,7 +539,7 @@ ARCHITECTURE str OF sdp_station IS
SIGNAL ait_sosi_arr : t_dp_sosi_arr(c_sdp_S_pn-1 DOWNTO 0); SIGNAL ait_sosi_arr : t_dp_sosi_arr(c_sdp_S_pn-1 DOWNTO 0);
SIGNAL fsub_raw_sosi_arr : t_dp_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0); SIGNAL fsub_raw_sosi_arr : t_dp_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0);
SIGNAL fsub_oversampled_sosi_arr : t_dp_sosi_arr(c_sdp_R_os * c_sdp_P_pfb-1 DOWNTO 0); SIGNAL fsub_oversampled_raw_sosi_arr : t_dp_sosi_arr(c_sdp_R_os * c_sdp_P_pfb-1 DOWNTO 0);
SIGNAL fsub_raw_sosi_2arr : t_dp_sosi_2arr_pfb(c_sdp_N_beamsets-1 DOWNTO 0); SIGNAL fsub_raw_sosi_2arr : t_dp_sosi_2arr_pfb(c_sdp_N_beamsets-1 DOWNTO 0);
SIGNAL xst_bs_sosi : t_dp_sosi; -- block sync reference for Xsub ring latency monitor SIGNAL xst_bs_sosi : t_dp_sosi; -- block sync reference for Xsub ring latency monitor
...@@ -792,7 +792,7 @@ BEGIN ...@@ -792,7 +792,7 @@ BEGIN
dp_rst => dp_rst, dp_rst => dp_rst,
in_sosi_arr => ait_sosi_arr, in_sosi_arr => ait_sosi_arr,
fsub_sosi_arr => fsub_oversampled_sosi_arr, fsub_raw_sosi_arr => fsub_oversampled_raw_sosi_arr,
dp_bsn_source_restart => dp_bsn_source_restart, dp_bsn_source_restart => dp_bsn_source_restart,
dp_bsn_source_new_interval => dp_bsn_source_new_interval, dp_bsn_source_new_interval => dp_bsn_source_new_interval,
...@@ -832,12 +832,12 @@ BEGIN ...@@ -832,12 +832,12 @@ BEGIN
-- Lower part contains normal subbands, higher part contains shifted subbands. -- Lower part contains normal subbands, higher part contains shifted subbands.
-- . Use normal subbands for subband correlator -- . Use normal subbands for subband correlator
fsub_raw_sosi_arr <= fsub_oversampled_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0); fsub_raw_sosi_arr <= fsub_oversampled_raw_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0);
-- . Use first beamset for normal subbands -- . Use first beamset for normal subbands
-- Use second beamset for oversampled subbands -- Use second beamset for oversampled subbands
fsub_raw_sosi_2arr(0) <= fsub_oversampled_sosi_arr( c_sdp_P_pfb-1 DOWNTO 0); fsub_raw_sosi_2arr(0) <= fsub_oversampled_raw_sosi_arr( c_sdp_P_pfb-1 DOWNTO 0);
fsub_raw_sosi_2arr(1) <= fsub_oversampled_sosi_arr(2 * c_sdp_P_pfb-1 DOWNTO c_sdp_P_pfb); fsub_raw_sosi_2arr(1) <= fsub_oversampled_raw_sosi_arr(2 * c_sdp_P_pfb-1 DOWNTO c_sdp_P_pfb);
END GENERATE; END GENERATE;
END GENERATE; END GENERATE;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment