Skip to content
Snippets Groups Projects
Commit ee77654a authored by Daniel van der Schuur's avatar Daniel van der Schuur
Browse files

-Added dp_block_gen and dp_fifo_fill before the WPFB to re-shape the gapped 176

 sample blocks into continuous (no gaps) blocks of 128.
parent a65ac644
No related branches found
No related tags found
No related merge requests found
......@@ -338,6 +338,10 @@ ARCHITECTURE str OF apertif_unb1_correlator IS
SIGNAL mesh_rx_src_in_2arr : t_unb1_board_mesh_siso_2arr;
SIGNAL mesh_rx_src_out_2arr : t_unb1_board_mesh_sosi_2arr;
-- dp_block_gen
SIGNAL dp_block_gen_snk_in_arr : t_dp_sosi_arr(c_nof_input_streams-1 DOWNTO 0);
SIGNAL dp_block_gen_src_out_arr : t_dp_sosi_arr(c_nof_input_streams-1 DOWNTO 0);
BEGIN
gen_no_offload_bg: IF g_offload_bg=FALSE GENERATE
......@@ -738,10 +742,14 @@ BEGIN
p_add_st_ctrl : PROCESS(reinterleave_out_arr, wpfb_snk_in_ctrl)
BEGIN
FOR i IN 0 TO c_nof_input_streams-1 LOOP
wpfb_snk_in_arr(i) <= wpfb_snk_in_ctrl; -- SOSI ctrl
wpfb_snk_in_arr(i).data <= reinterleave_out_arr(i).data;
wpfb_snk_in_arr(i).im <= reinterleave_out_arr(i).im;
wpfb_snk_in_arr(i).re <= reinterleave_out_arr(i).re;
-- wpfb_snk_in_arr(i) <= wpfb_snk_in_ctrl; -- SOSI ctrl
-- wpfb_snk_in_arr(i).data <= reinterleave_out_arr(i).data;
-- wpfb_snk_in_arr(i).im <= reinterleave_out_arr(i).im;
-- wpfb_snk_in_arr(i).re <= reinterleave_out_arr(i).re;
dp_block_gen_snk_in_arr(i) <= wpfb_snk_in_ctrl; -- SOSI ctrl
dp_block_gen_snk_in_arr(i).data <= reinterleave_out_arr(i).data;
dp_block_gen_snk_in_arr(i).im <= reinterleave_out_arr(i).im;
dp_block_gen_snk_in_arr(i).re <= reinterleave_out_arr(i).re;
END LOOP;
END PROCESS;
......@@ -867,6 +875,49 @@ BEGIN
-- WPFB
-----------------------------------------------------------------------------
gen_wpfb_unit : IF g_no_dsp=FALSE GENERATE
-- Workaround: WPFB unit wants 128-word blocks; we're getting 176 word blocks (current fn_beamformer output without transpose).
-- => Re-tag the blocks with 128-word SOP and EOP.
gen_dp_block_gen : FOR i IN 0 TO c_nof_input_streams-1 GENERATE
u_dp_block_gen: ENTITY dp_lib.dp_block_gen
GENERIC MAP (
g_use_src_in => FALSE,
g_nof_data => 128,
g_nof_blk_per_sync => 1 -- don't care
)
PORT MAP (
rst => dp_rst,
clk => dp_clk,
snk_in => dp_block_gen_snk_in_arr(i),
src_out => dp_block_gen_src_out_arr(i)
);
END GENERATE;
-- Workaround: WPFB unit seems to want uninterrupted blocks.
gen_dp_fifo_fill: FOR i IN 0 TO c_nof_input_streams-1 GENERATE
u_dp_fifo_fill : ENTITY dp_lib.dp_fifo_fill
GENERIC MAP (
g_data_w => 2*c_wpfb_in_dat_w,
g_use_complex => TRUE,
g_use_bsn => FALSE, --FIXME
g_use_channel => FALSE,
g_use_error => FALSE,
g_use_sync => FALSE,
g_fifo_fill => 128,
g_fifo_size => 2*128 + 20 -- Two blocks plus extra margin
)
PORT MAP (
rst => dp_rst,
clk => dp_clk,
snk_in => dp_block_gen_src_out_arr(i),
src_in => c_dp_siso_rdy,
src_out => wpfb_snk_in_arr(i)
);
END GENERATE;
u_wpfb_unit : ENTITY wpfb_lib.wpfb_unit
GENERIC MAP(
g_wpfb => c_wpfb,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment