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

Merge branch 'L2SDP-469' into 'master'

Use N_pol_bf = 2 for dual polarization BF, instead of using general N_pol = 2.

Closes L2SDP-469

See merge request desp/hdl!135
parents 74742a19 5dabd0ea
Branches
No related tags found
1 merge request!135Use N_pol_bf = 2 for dual polarization BF, instead of using general N_pol = 2.
...@@ -110,9 +110,9 @@ ARCHITECTURE str OF node_sdp_beamformer IS ...@@ -110,9 +110,9 @@ ARCHITECTURE str OF node_sdp_beamformer IS
SIGNAL local_bf_sosi : t_dp_sosi := c_dp_sosi_rst; SIGNAL local_bf_sosi : t_dp_sosi := c_dp_sosi_rst;
SIGNAL bf_sum_sosi : t_dp_sosi := c_dp_sosi_rst; SIGNAL bf_sum_sosi : t_dp_sosi := c_dp_sosi_rst;
SIGNAL bf_out_sosi : t_dp_sosi := c_dp_sosi_rst; SIGNAL bf_out_sosi : t_dp_sosi := c_dp_sosi_rst;
SIGNAL scope_local_bf_sosi_arr : t_dp_sosi_integer_arr(c_sdp_N_pol-1 DOWNTO 0); SIGNAL scope_local_bf_sosi_arr : t_dp_sosi_integer_arr(c_sdp_N_pol_bf-1 DOWNTO 0);
SIGNAL scope_bf_sum_sosi_arr : t_dp_sosi_integer_arr(c_sdp_N_pol-1 DOWNTO 0); SIGNAL scope_bf_sum_sosi_arr : t_dp_sosi_integer_arr(c_sdp_N_pol_bf-1 DOWNTO 0);
SIGNAL scope_bf_out_sosi_arr : t_dp_sosi_integer_arr(c_sdp_N_pol-1 DOWNTO 0); SIGNAL scope_bf_out_sosi_arr : t_dp_sosi_integer_arr(c_sdp_N_pol_bf-1 DOWNTO 0);
SIGNAL beamlet_scale : STD_LOGIC_VECTOR(c_sdp_W_beamlet_scale-1 DOWNTO 0); SIGNAL beamlet_scale : STD_LOGIC_VECTOR(c_sdp_W_beamlet_scale-1 DOWNTO 0);
BEGIN BEGIN
--------------------------------------------------------------- ---------------------------------------------------------------
...@@ -237,7 +237,7 @@ BEGIN ...@@ -237,7 +237,7 @@ BEGIN
--------------------------------------------------------------- ---------------------------------------------------------------
u_beamlet_stats : ENTITY st_lib.st_sst u_beamlet_stats : ENTITY st_lib.st_sst
GENERIC MAP( GENERIC MAP(
g_nof_stat => c_sdp_S_sub_bf*c_sdp_N_pol, g_nof_stat => c_sdp_S_sub_bf*c_sdp_N_pol_bf,
g_in_data_w => c_sdp_W_beamlet_sum, g_in_data_w => c_sdp_W_beamlet_sum,
g_stat_data_w => c_longword_w, g_stat_data_w => c_longword_w,
g_stat_data_sz => c_longword_sz/c_word_sz g_stat_data_sz => c_longword_sz/c_word_sz
...@@ -320,7 +320,7 @@ BEGIN ...@@ -320,7 +320,7 @@ BEGIN
g_sim => g_sim, g_sim => g_sim,
g_selection => g_scope_selected_beamlet, g_selection => g_scope_selected_beamlet,
g_nof_input => 1, g_nof_input => 1,
g_n_deinterleave => c_sdp_N_pol, g_n_deinterleave => c_sdp_N_pol_bf,
g_dat_w => c_sdp_W_beamlet_sum g_dat_w => c_sdp_W_beamlet_sum
) )
PORT MAP ( PORT MAP (
...@@ -335,7 +335,7 @@ BEGIN ...@@ -335,7 +335,7 @@ BEGIN
g_sim => g_sim, g_sim => g_sim,
g_selection => g_scope_selected_beamlet, g_selection => g_scope_selected_beamlet,
g_nof_input => 1, g_nof_input => 1,
g_n_deinterleave => c_sdp_N_pol, g_n_deinterleave => c_sdp_N_pol_bf,
g_dat_w => c_sdp_W_beamlet_sum g_dat_w => c_sdp_W_beamlet_sum
) )
...@@ -351,7 +351,7 @@ BEGIN ...@@ -351,7 +351,7 @@ BEGIN
g_sim => g_sim, g_sim => g_sim,
g_selection => g_scope_selected_beamlet, g_selection => g_scope_selected_beamlet,
g_nof_input => 1, g_nof_input => 1,
g_n_deinterleave => c_sdp_N_pol, g_n_deinterleave => c_sdp_N_pol_bf,
g_dat_w => c_sdp_W_beamlet g_dat_w => c_sdp_W_beamlet
) )
......
...@@ -64,8 +64,8 @@ ARCHITECTURE str OF sdp_beamformer_local IS ...@@ -64,8 +64,8 @@ ARCHITECTURE str OF sdp_beamformer_local IS
CONSTANT c_complex_adder_sum_w : NATURAL := c_sdp_W_bf_product + ceil_log2(c_sdp_S_pn); CONSTANT c_complex_adder_sum_w : NATURAL := c_sdp_W_bf_product + ceil_log2(c_sdp_S_pn);
SIGNAL sub_sosi_arr : t_dp_sosi_arr(c_sdp_N_pol*c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); SIGNAL sub_sosi_arr : t_dp_sosi_arr(c_sdp_N_pol_bf*c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst);
SIGNAL bf_weights_out_sosi_arr : t_dp_sosi_arr(c_sdp_N_pol*c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); SIGNAL bf_weights_out_sosi_arr : t_dp_sosi_arr(c_sdp_N_pol_bf*c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst);
SIGNAL bf_weights_x_sosi_arr : t_dp_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); SIGNAL bf_weights_x_sosi_arr : t_dp_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst);
SIGNAL bf_weights_y_sosi_arr : t_dp_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); SIGNAL bf_weights_y_sosi_arr : t_dp_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst);
SIGNAL deinterleaved_x_sosi_arr : t_dp_sosi_arr(c_sdp_S_pn-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); SIGNAL deinterleaved_x_sosi_arr : t_dp_sosi_arr(c_sdp_S_pn-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst);
...@@ -79,9 +79,9 @@ BEGIN ...@@ -79,9 +79,9 @@ BEGIN
--------------------------------------------------------------- ---------------------------------------------------------------
-- COPY INPUT STERAMS FOR X AND Y POLARIZATION PATHS -- COPY INPUT STERAMS FOR X AND Y POLARIZATION PATHS
--------------------------------------------------------------- ---------------------------------------------------------------
gen_pol : FOR N_pol IN 0 TO c_sdp_N_pol-1 GENERATE gen_pol : FOR N_pol_bf IN 0 TO c_sdp_N_pol_bf-1 GENERATE
gen_pfb : FOR P_pfb IN 0 TO c_sdp_P_pfb-1 GENERATE gen_pfb : FOR P_pfb IN 0 TO c_sdp_P_pfb-1 GENERATE
sub_sosi_arr(N_pol*c_sdp_P_pfb + P_pfb) <= in_sosi_arr(P_pfb); sub_sosi_arr(N_pol_bf * c_sdp_P_pfb + P_pfb) <= in_sosi_arr(P_pfb);
END GENERATE; END GENERATE;
END GENERATE; END GENERATE;
...@@ -169,7 +169,7 @@ BEGIN ...@@ -169,7 +169,7 @@ BEGIN
gen_interleave : FOR I IN 0 TO c_sdp_S_pn-1 GENERATE gen_interleave : FOR I IN 0 TO c_sdp_S_pn-1 GENERATE
u_dp_interleave : ENTITY dp_lib.dp_interleave_n_to_one u_dp_interleave : ENTITY dp_lib.dp_interleave_n_to_one
GENERIC MAP( GENERIC MAP(
g_nof_inputs => c_sdp_N_pol g_nof_inputs => c_sdp_N_pol_bf
) )
PORT MAP( PORT MAP(
rst => dp_rst, rst => dp_rst,
......
...@@ -48,8 +48,8 @@ ENTITY sdp_bf_weights IS ...@@ -48,8 +48,8 @@ ENTITY sdp_bf_weights IS
dp_clk : IN STD_LOGIC; dp_clk : IN STD_LOGIC;
dp_rst : IN STD_LOGIC; dp_rst : IN STD_LOGIC;
in_sosi_arr : IN t_dp_sosi_arr(c_sdp_N_pol * c_sdp_P_pfb-1 DOWNTO 0); in_sosi_arr : IN t_dp_sosi_arr(c_sdp_N_pol_bf * c_sdp_P_pfb-1 DOWNTO 0);
out_sosi_arr : OUT t_dp_sosi_arr(c_sdp_N_pol * c_sdp_P_pfb-1 DOWNTO 0); out_sosi_arr : OUT t_dp_sosi_arr(c_sdp_N_pol_bf * c_sdp_P_pfb-1 DOWNTO 0);
mm_rst : IN STD_LOGIC; mm_rst : IN STD_LOGIC;
mm_clk : IN STD_LOGIC; mm_clk : IN STD_LOGIC;
...@@ -72,9 +72,9 @@ BEGIN ...@@ -72,9 +72,9 @@ BEGIN
-- Counter -- Counter
--------------------------------------------------------------- ---------------------------------------------------------------
-- The BF weigths per PN are stored as -- The BF weigths per PN are stored as
-- (cint16)subband_weights[N_pol][S_pn/Q_fft]_[Q_fft][S_sub_bf], but have -- (cint16)bf_weights[N_pol_bf][S_pn/Q_fft]_[Q_fft][S_sub_bf], but have
-- to be applied according the subband data order -- to be applied according the subband data order
-- [N_pol][S_pn/Q_fft]_[S_sub_bf][Q_fft]. Therefore this counter -- [N_pol_bf][S_pn/Q_fft]_[S_sub_bf][Q_fft]. Therefore this counter
-- has to account for this difference in order. -- has to account for this difference in order.
p_cnt : PROCESS(dp_clk, dp_rst) p_cnt : PROCESS(dp_clk, dp_rst)
VARIABLE v_Q_fft, v_S_sub_bf : NATURAL; VARIABLE v_Q_fft, v_S_sub_bf : NATURAL;
...@@ -111,7 +111,7 @@ BEGIN ...@@ -111,7 +111,7 @@ BEGIN
--------------------------------------------------------------- ---------------------------------------------------------------
u_mms_dp_gain_serial_arr : ENTITY dp_lib.mms_dp_gain_serial_arr u_mms_dp_gain_serial_arr : ENTITY dp_lib.mms_dp_gain_serial_arr
GENERIC MAP ( GENERIC MAP (
g_nof_streams => c_sdp_N_pol * c_sdp_P_pfb, g_nof_streams => c_sdp_N_pol_bf * c_sdp_P_pfb,
g_nof_gains => c_sdp_Q_fft * c_sdp_S_sub_bf, g_nof_gains => c_sdp_Q_fft * c_sdp_S_sub_bf,
g_complex_data => TRUE, g_complex_data => TRUE,
g_complex_gain => TRUE, g_complex_gain => TRUE,
......
...@@ -73,6 +73,7 @@ PACKAGE sdp_pkg is ...@@ -73,6 +73,7 @@ PACKAGE sdp_pkg is
CONSTANT c_sdp_N_fft : NATURAL := 1024; CONSTANT c_sdp_N_fft : NATURAL := 1024;
CONSTANT c_sdp_N_pn_lb : NATURAL := 16; CONSTANT c_sdp_N_pn_lb : NATURAL := 16;
CONSTANT c_sdp_N_pol : NATURAL := 2; CONSTANT c_sdp_N_pol : NATURAL := 2;
CONSTANT c_sdp_N_pol_bf : NATURAL := 2;
CONSTANT c_sdp_N_sub : NATURAL := 512; CONSTANT c_sdp_N_sub : NATURAL := 512;
CONSTANT c_sdp_N_taps : NATURAL := 16; CONSTANT c_sdp_N_taps : NATURAL := 16;
CONSTANT c_sdp_P_sq : NATURAL := 9; CONSTANT c_sdp_P_sq : NATURAL := 9;
...@@ -213,7 +214,7 @@ PACKAGE sdp_pkg is ...@@ -213,7 +214,7 @@ PACKAGE sdp_pkg is
CONSTANT c_sdp_cep_udp_src_port_15_8 : STD_LOGIC_VECTOR(7 DOWNTO 0) := x"D0"; -- 15:8, 7:0 = gn_id (= ID[7:0] = backplane[5:0] & node[1:0]) CONSTANT c_sdp_cep_udp_src_port_15_8 : STD_LOGIC_VECTOR(7 DOWNTO 0) := x"D0"; -- 15:8, 7:0 = gn_id (= ID[7:0] = backplane[5:0] & node[1:0])
CONSTANT c_sdp_cep_nof_blocks_per_packet : NATURAL := 4; CONSTANT c_sdp_cep_nof_blocks_per_packet : NATURAL := 4;
CONSTANT c_sdp_cep_nof_beamlets_per_block : NATURAL := c_sdp_N_pol * c_sdp_S_sub_bf; CONSTANT c_sdp_cep_nof_beamlets_per_block : NATURAL := c_sdp_N_pol_bf * c_sdp_S_sub_bf; -- FIXME in L2SDP-471
CONSTANT c_sdp_cep_nof_hdr_fields : NATURAL := 3+12+4+18+1; -- 592b; 9.25 64b words CONSTANT c_sdp_cep_nof_hdr_fields : NATURAL := 3+12+4+18+1; -- 592b; 9.25 64b words
CONSTANT c_sdp_cep_hdr_field_sel : STD_LOGIC_VECTOR(c_sdp_cep_nof_hdr_fields-1 DOWNTO 0) := "101"&"111111111001"&"0111"&"1100"&"00000010"&"000110"&"0"; -- 0=data path, 1=MM controlled TODO CONSTANT c_sdp_cep_hdr_field_sel : STD_LOGIC_VECTOR(c_sdp_cep_nof_hdr_fields-1 DOWNTO 0) := "101"&"111111111001"&"0111"&"1100"&"00000010"&"000110"&"0"; -- 0=data path, 1=MM controlled TODO
--CONSTANT c_sdp_cep_hdr_field_sel : STD_LOGIC_VECTOR(c_sdp_cep_nof_hdr_fields-1 DOWNTO 0) := "100"&"000000010001"&"0100"&"0100"&"00000000"&"101000"&"0"; -- 0=data path, 1=MM controlled TODO --CONSTANT c_sdp_cep_hdr_field_sel : STD_LOGIC_VECTOR(c_sdp_cep_nof_hdr_fields-1 DOWNTO 0) := "100"&"000000010001"&"0100"&"0100"&"00000000"&"101000"&"0"; -- 0=data path, 1=MM controlled TODO
...@@ -304,10 +305,10 @@ PACKAGE sdp_pkg is ...@@ -304,10 +305,10 @@ PACKAGE sdp_pkg is
-- BF MM address widths -- BF MM address widths
CONSTANT c_sdp_reg_sdp_info_addr_w : NATURAL := 4; CONSTANT c_sdp_reg_sdp_info_addr_w : NATURAL := 4;
CONSTANT c_sdp_ram_ss_ss_wide_addr_w : NATURAL := ceil_log2(c_sdp_N_beamsets) + ceil_log2(c_sdp_P_pfb * c_sdp_S_sub_bf * c_sdp_Q_fft); CONSTANT c_sdp_ram_ss_ss_wide_addr_w : NATURAL := ceil_log2(c_sdp_N_beamsets) + ceil_log2(c_sdp_P_pfb * c_sdp_S_sub_bf * c_sdp_Q_fft);
CONSTANT c_sdp_ram_bf_weights_addr_w : NATURAL := ceil_log2(c_sdp_N_beamsets) + ceil_log2(c_sdp_N_pol * c_sdp_P_pfb * c_sdp_S_sub_bf * c_sdp_Q_fft); CONSTANT c_sdp_ram_bf_weights_addr_w : NATURAL := ceil_log2(c_sdp_N_beamsets) + ceil_log2(c_sdp_N_pol_bf * c_sdp_P_pfb * c_sdp_S_sub_bf * c_sdp_Q_fft);
CONSTANT c_sdp_reg_bf_scale_addr_w : NATURAL := ceil_log2(c_sdp_N_beamsets) + 1; CONSTANT c_sdp_reg_bf_scale_addr_w : NATURAL := ceil_log2(c_sdp_N_beamsets) + 1;
CONSTANT c_sdp_reg_dp_xonoff_addr_w : NATURAL := ceil_log2(c_sdp_N_beamsets) + 1; CONSTANT c_sdp_reg_dp_xonoff_addr_w : NATURAL := ceil_log2(c_sdp_N_beamsets) + 1;
CONSTANT c_sdp_ram_st_bst_addr_w : NATURAL := ceil_log2(c_sdp_N_beamsets) + ceil_log2(c_sdp_S_sub_bf*c_sdp_N_pol*(c_longword_sz/c_word_sz)); CONSTANT c_sdp_ram_st_bst_addr_w : NATURAL := ceil_log2(c_sdp_N_beamsets) + ceil_log2(c_sdp_S_sub_bf*c_sdp_N_pol_bf*(c_longword_sz/c_word_sz));
CONSTANT c_sdp_reg_stat_enable_bst_addr_w : NATURAL := ceil_log2(c_sdp_N_beamsets) + c_sdp_reg_stat_enable_addr_w; CONSTANT c_sdp_reg_stat_enable_bst_addr_w : NATURAL := ceil_log2(c_sdp_N_beamsets) + c_sdp_reg_stat_enable_addr_w;
CONSTANT c_sdp_reg_stat_hdr_dat_bst_addr_w: NATURAL := ceil_log2(c_sdp_N_beamsets) + c_sdp_reg_stat_hdr_dat_addr_w; CONSTANT c_sdp_reg_stat_hdr_dat_bst_addr_w: NATURAL := ceil_log2(c_sdp_N_beamsets) + c_sdp_reg_stat_hdr_dat_addr_w;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment