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
No related branches found
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
SIGNAL local_bf_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 scope_local_bf_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-1 DOWNTO 0);
SIGNAL scope_bf_out_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_bf-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);
BEGIN
---------------------------------------------------------------
......@@ -237,7 +237,7 @@ BEGIN
---------------------------------------------------------------
u_beamlet_stats : ENTITY st_lib.st_sst
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_stat_data_w => c_longword_w,
g_stat_data_sz => c_longword_sz/c_word_sz
......@@ -320,7 +320,7 @@ BEGIN
g_sim => g_sim,
g_selection => g_scope_selected_beamlet,
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
)
PORT MAP (
......@@ -335,7 +335,7 @@ BEGIN
g_sim => g_sim,
g_selection => g_scope_selected_beamlet,
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
)
......@@ -351,7 +351,7 @@ BEGIN
g_sim => g_sim,
g_selection => g_scope_selected_beamlet,
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
)
......
......@@ -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);
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 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 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_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_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);
......@@ -79,9 +79,9 @@ BEGIN
---------------------------------------------------------------
-- 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
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;
......@@ -169,7 +169,7 @@ BEGIN
gen_interleave : FOR I IN 0 TO c_sdp_S_pn-1 GENERATE
u_dp_interleave : ENTITY dp_lib.dp_interleave_n_to_one
GENERIC MAP(
g_nof_inputs => c_sdp_N_pol
g_nof_inputs => c_sdp_N_pol_bf
)
PORT MAP(
rst => dp_rst,
......
......@@ -48,8 +48,8 @@ ENTITY sdp_bf_weights IS
dp_clk : 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);
out_sosi_arr : OUT 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_bf * c_sdp_P_pfb-1 DOWNTO 0);
mm_rst : IN STD_LOGIC;
mm_clk : IN STD_LOGIC;
......@@ -72,9 +72,9 @@ BEGIN
-- Counter
---------------------------------------------------------------
-- 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
-- [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.
p_cnt : PROCESS(dp_clk, dp_rst)
VARIABLE v_Q_fft, v_S_sub_bf : NATURAL;
......@@ -111,7 +111,7 @@ BEGIN
---------------------------------------------------------------
u_mms_dp_gain_serial_arr : ENTITY dp_lib.mms_dp_gain_serial_arr
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_complex_data => TRUE,
g_complex_gain => TRUE,
......
......@@ -73,6 +73,7 @@ PACKAGE sdp_pkg is
CONSTANT c_sdp_N_fft : NATURAL := 1024;
CONSTANT c_sdp_N_pn_lb : NATURAL := 16;
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_taps : NATURAL := 16;
CONSTANT c_sdp_P_sq : NATURAL := 9;
......@@ -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_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_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
......@@ -304,10 +305,10 @@ PACKAGE sdp_pkg is
-- BF MM address widths
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_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_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_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