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

added minimum interval to mmp_dp_bsn_scheduler and replaced sync insert

with bsn sync scheduler in node_sdp_correlator
parent 2572daf4
Branches
No related tags found
1 merge request!144Resolve L2SDP-425
...@@ -54,18 +54,18 @@ ENTITY node_sdp_correlator IS ...@@ -54,18 +54,18 @@ ENTITY node_sdp_correlator IS
mm_rst : IN STD_LOGIC; mm_rst : IN STD_LOGIC;
mm_clk : IN STD_LOGIC; mm_clk : IN STD_LOGIC;
reg_dp_sync_insert_v2_mosi : IN t_mem_mosi := c_mem_mosi_rst; reg_dp_bsn_sync_scheduler_mosi : IN t_mem_mosi := c_mem_mosi_rst;
reg_dp_sync_insert_v2_miso : OUT t_mem_miso; reg_dp_bsn_sync_scheduler_miso : OUT t_mem_miso;
reg_crosslets_info_mosi : IN t_mem_mosi := c_mem_mosi_rst; reg_crosslets_info_mosi : IN t_mem_mosi := c_mem_mosi_rst;
reg_crosslets_info_miso : OUT t_mem_miso; reg_crosslets_info_miso : OUT t_mem_miso;
reg_bsn_scheduler_xsub_mosi : IN t_mem_mosi := c_mem_mosi_rst; reg_bsn_scheduler_xsub_mosi : IN t_mem_mosi := c_mem_mosi_rst;
reg_bsn_scheduler_xsub_miso : OUT t_mem_miso; reg_bsn_scheduler_xsub_miso : OUT t_mem_miso;
ram_st_xsq_mosi : IN t_mem_mosi := c_mem_mosi_rst; ram_st_xsq_mosi : IN t_mem_mosi := c_mem_mosi_rst;
ram_st_xsq_miso : OUT t_mem_miso; ram_st_xsq_miso : OUT t_mem_miso;
reg_stat_enable_mosi : IN t_mem_mosi := c_mem_mosi_rst; reg_stat_enable_mosi : IN t_mem_mosi := c_mem_mosi_rst;
reg_stat_enable_miso : OUT t_mem_miso; reg_stat_enable_miso : OUT t_mem_miso;
reg_stat_hdr_dat_mosi : IN t_mem_mosi := c_mem_mosi_rst; reg_stat_hdr_dat_mosi : IN t_mem_mosi := c_mem_mosi_rst;
reg_stat_hdr_dat_miso : OUT t_mem_miso; reg_stat_hdr_dat_miso : OUT t_mem_miso;
sdp_info : IN t_sdp_info; sdp_info : IN t_sdp_info;
gn_id : IN STD_LOGIC_VECTOR(c_sdp_W_gn_id-1 DOWNTO 0); gn_id : IN STD_LOGIC_VECTOR(c_sdp_W_gn_id-1 DOWNTO 0);
...@@ -77,9 +77,6 @@ END node_sdp_correlator; ...@@ -77,9 +77,6 @@ END node_sdp_correlator;
ARCHITECTURE str OF node_sdp_correlator IS ARCHITECTURE str OF node_sdp_correlator IS
CONSTANT c_nof_blk_per_sync_max : NATURAL := c_sdp_xst_nof_blk_per_sync_max;
CONSTANT c_nof_blk_per_sync_min : NATURAL := c_sdp_xst_nof_blk_per_sync_min;
CONSTANT c_nof_masters : POSITIVE := 2; CONSTANT c_nof_masters : POSITIVE := 2;
-- crosslet statistics offload -- crosslet statistics offload
...@@ -91,14 +88,18 @@ ARCHITECTURE str OF node_sdp_correlator IS ...@@ -91,14 +88,18 @@ ARCHITECTURE str OF node_sdp_correlator IS
SIGNAL master_mosi_arr : t_mem_mosi_arr(0 TO c_nof_masters-1) := (OTHERS=>c_mem_mosi_rst); SIGNAL master_mosi_arr : t_mem_mosi_arr(0 TO c_nof_masters-1) := (OTHERS=>c_mem_mosi_rst);
SIGNAL master_miso_arr : t_mem_miso_arr(0 TO c_nof_masters-1) := (OTHERS=>c_mem_miso_rst); SIGNAL master_miso_arr : t_mem_miso_arr(0 TO c_nof_masters-1) := (OTHERS=>c_mem_miso_rst);
SIGNAL quant_sosi_arr : t_dp_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); SIGNAL quant_sosi_arr : t_dp_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst);
SIGNAL xin_sosi_arr : t_dp_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); SIGNAL dp_bsn_sync_scheduler_snk_in : t_dp_sosi := c_dp_sosi_rst;
SIGNAL xsel_sosi : t_dp_sosi := c_dp_sosi_rst; SIGNAL dp_bsn_sync_scheduler_src_out : t_dp_sosi := c_dp_sosi_rst;
SIGNAL crosslets_sosi_arr : t_dp_sosi_arr(g_P_sq-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); SIGNAL xin_sosi_arr : t_dp_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst);
SIGNAL crosslets_mosi_arr : t_mem_mosi_arr(g_P_sq-1 DOWNTO 0) := (OTHERS => c_mem_mosi_rst); SIGNAL xsel_sosi : t_dp_sosi := c_dp_sosi_rst;
SIGNAL crosslets_miso_arr : t_mem_miso_arr(g_P_sq-1 DOWNTO 0) := (OTHERS => c_mem_miso_rst); SIGNAL crosslets_sosi_arr : t_dp_sosi_arr(g_P_sq-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst);
SIGNAL crosslets_mosi_arr : t_mem_mosi_arr(g_P_sq-1 DOWNTO 0) := (OTHERS => c_mem_mosi_rst);
SIGNAL crosslets_miso_arr : t_mem_miso_arr(g_P_sq-1 DOWNTO 0) := (OTHERS => c_mem_miso_rst);
SIGNAL crosslets_info : STD_LOGIC_VECTOR(c_sdp_crosslets_info_reg_w-1 DOWNTO 0); SIGNAL dp_bsn_sync_scheduler_out_start : STD_LOGIC;
SIGNAL crosslets_info : STD_LOGIC_VECTOR(c_sdp_crosslets_info_reg_w-1 DOWNTO 0);
BEGIN BEGIN
--------------------------------------------------------------- ---------------------------------------------------------------
-- Requantize 18b to 16b -- Requantize 18b to 16b
...@@ -126,27 +127,41 @@ BEGIN ...@@ -126,27 +127,41 @@ BEGIN
END GENERATE; END GENERATE;
--------------------------------------------------------------- ---------------------------------------------------------------
-- dp_sync_insert_v2 -- mmp_dp_bsn_sync_scheduler
--------------------------------------------------------------- ---------------------------------------------------------------
u_dp_sync_insert_v2 : ENTITY dp_lib.dp_sync_insert_v2 dp_bsn_sync_scheduler_snk_in <= quant_sosi_arr(0);
p_bsn_sync : PROCESS(dp_bsn_sync_scheduler_src_out)
BEGIN
xin_sosi_arr <= quant_sosi_arr;
FOR I IN 0 TO c_sdp_P_pfb-1 LOOP
xin_sosi_arr(I).sop <= dp_bsn_sync_scheduler_src_out.sop;
xin_sosi_arr(I).eop <= dp_bsn_sync_scheduler_src_out.eop;
xin_sosi_arr(I).valid <= dp_bsn_sync_scheduler_src_out.valid;
xin_sosi_arr(I).sync <= dp_bsn_sync_scheduler_src_out.sync;
END LOOP;
END PROCESS;
u_mmp_dp_bsn_sync_scheduler : ENTITY dp_lib.mmp_dp_bsn_sync_scheduler
GENERIC MAP ( GENERIC MAP (
g_nof_streams => c_sdp_P_pfb, g_block_size => c_sdp_N_fft,
g_nof_blk_per_sync => c_nof_blk_per_sync_max, g_ctrl_interval_size_min => c_sdp_xst_nof_blk_per_sync_min
g_nof_blk_per_sync_min => c_nof_blk_per_sync_min
) )
PORT MAP ( PORT MAP (
dp_rst => dp_rst, dp_rst => dp_rst,
dp_clk => dp_clk, dp_clk => dp_clk,
mm_rst => mm_rst, mm_rst => mm_rst,
mm_clk => mm_clk, mm_clk => mm_clk,
reg_mosi => reg_dp_bsn_sync_scheduler_mosi,
reg_miso => reg_dp_bsn_sync_scheduler_miso,
reg_mosi => reg_dp_sync_insert_v2_mosi, in_sosi => dp_bsn_sync_scheduler_snk_in,
reg_miso => reg_dp_sync_insert_v2_miso, out_sosi => dp_bsn_sync_scheduler_src_out,
out_start => dp_bsn_sync_scheduler_out_start
in_sosi_arr => quant_sosi_arr,
out_sosi_arr => xin_sosi_arr
); );
--------------------------------------------------------------- ---------------------------------------------------------------
-- Crosslet Subband Select -- Crosslet Subband Select
--------------------------------------------------------------- ---------------------------------------------------------------
...@@ -170,6 +185,7 @@ BEGIN ...@@ -170,6 +185,7 @@ BEGIN
reg_bsn_scheduler_xsub_mosi => reg_bsn_scheduler_xsub_mosi, reg_bsn_scheduler_xsub_mosi => reg_bsn_scheduler_xsub_mosi,
reg_bsn_scheduler_xsub_miso => reg_bsn_scheduler_xsub_miso, reg_bsn_scheduler_xsub_miso => reg_bsn_scheduler_xsub_miso,
start_trigger => dp_bsn_sync_scheduler_out_start,
out_crosslets_info => crosslets_info out_crosslets_info => crosslets_info
); );
......
...@@ -62,8 +62,9 @@ USE work.dp_stream_pkg.ALL; ...@@ -62,8 +62,9 @@ USE work.dp_stream_pkg.ALL;
ENTITY mmp_dp_bsn_sync_scheduler IS ENTITY mmp_dp_bsn_sync_scheduler IS
GENERIC ( GENERIC (
g_bsn_w : NATURAL := c_dp_stream_bsn_w; g_bsn_w : NATURAL := c_dp_stream_bsn_w;
g_block_size : NATURAL := 256 -- = number of data valid per BSN block, must be >= 2 g_block_size : NATURAL := 256; -- = number of data valid per BSN block, must be >= 2
g_ctrl_interval_size_min : NATURAL := 19530 -- Minimum interval size to use if MM write interval size is set too small.
); );
PORT ( PORT (
-- Clocks and reset -- Clocks and reset
...@@ -126,7 +127,8 @@ BEGIN ...@@ -126,7 +127,8 @@ BEGIN
-- Register mapping -- Register mapping
-- . Write -- . Write
wr_ctrl_enable <= reg_wr( 0); wr_ctrl_enable <= reg_wr( 0);
ctrl_interval_size <= TO_UINT(reg_wr( 2*c_word_w-1 DOWNTO 1*c_word_w)); ctrl_interval_size <= TO_UINT(reg_wr( 2*c_word_w-1 DOWNTO 1*c_word_w)) WHEN
g_ctrl_interval_size_min < TO_UINT(reg_wr( 2*c_word_w-1 DOWNTO 1*c_word_w)) ELSE g_ctrl_interval_size_min;
wr_start_bsn_64( c_word_w-1 DOWNTO 0) <= reg_wr( 3*c_word_w-1 DOWNTO 2*c_word_w); -- low word wr_start_bsn_64( c_word_w-1 DOWNTO 0) <= reg_wr( 3*c_word_w-1 DOWNTO 2*c_word_w); -- low word
wr_start_bsn_64(2*c_word_w-1 DOWNTO 1*c_word_w) <= reg_wr( 4*c_word_w-1 DOWNTO 3*c_word_w); -- high word wr_start_bsn_64(2*c_word_w-1 DOWNTO 1*c_word_w) <= reg_wr( 4*c_word_w-1 DOWNTO 3*c_word_w); -- high word
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment