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

-Updated constants and generics to use input folding.

parent ee7bcfc3
No related branches found
No related tags found
No related merge requests found
...@@ -67,7 +67,7 @@ END apertif_unb1_correlator; ...@@ -67,7 +67,7 @@ END apertif_unb1_correlator;
ARCHITECTURE str OF apertif_unb1_correlator IS ARCHITECTURE str OF apertif_unb1_correlator IS
-- Firmware version x.y -- Firmware version x.y
CONSTANT c_fw_version : t_unb1_board_fw_version := (1, 1); CONSTANT c_fw_version : t_unb1_board_fw_version := (0, 1);
-- In simulation we don't need the 1GbE core for MM control, deselect it in c_use_phy based on g_sim -- In simulation we don't need the 1GbE core for MM control, deselect it in c_use_phy based on g_sim
CONSTANT c_use_phy : t_c_unb1_board_use_phy := (sel_a_b(g_sim, 0, 1), 0, 0, 0, 0, 0, 0, 1); CONSTANT c_use_phy : t_c_unb1_board_use_phy := (sel_a_b(g_sim, 0, 1), 0, 0, 0, 0, 0, 0, 1);
...@@ -117,6 +117,8 @@ ARCHITECTURE str OF apertif_unb1_correlator IS ...@@ -117,6 +117,8 @@ ARCHITECTURE str OF apertif_unb1_correlator IS
-- Correlator -- Correlator
CONSTANT c_nof_inputs : NATURAL := 24; CONSTANT c_nof_inputs : NATURAL := 24;
CONSTANT c_nof_input_folds : NATURAL := 1;
CONSTANT c_nof_input_streams : NATURAL := c_nof_inputs / pow2(c_nof_input_folds);
CONSTANT c_nof_pre_mult_folds : NATURAL := 1; CONSTANT c_nof_pre_mult_folds : NATURAL := 1;
CONSTANT c_complex_data_w : NATURAL := 8; CONSTANT c_complex_data_w : NATURAL := 8;
CONSTANT c_conjugate : BOOLEAN := TRUE; CONSTANT c_conjugate : BOOLEAN := TRUE;
...@@ -125,12 +127,9 @@ ARCHITECTURE str OF apertif_unb1_correlator IS ...@@ -125,12 +127,9 @@ ARCHITECTURE str OF apertif_unb1_correlator IS
CONSTANT c_nof_visibilities : NATURAL := (c_nof_inputs*(c_nof_inputs+1))/2; CONSTANT c_nof_visibilities : NATURAL := (c_nof_inputs*(c_nof_inputs+1))/2;
-- Gap size on the correlator input depends on the number of folds
CONSTANT c_block_period : NATURAL := pow2(c_nof_pre_mult_folds);
-- Block generator -- Block generator
CONSTANT c_bg_block_size : NATURAL := c_nof_channels; CONSTANT c_bg_block_size : NATURAL := c_nof_channels*pow2(c_nof_input_folds);
CONSTANT c_bg_gapsize : NATURAL := c_bg_block_size*(c_block_period-1); CONSTANT c_bg_gapsize : NATURAL := 0;
-- Indicate the integration period with the sync. In the correlator, the -- Indicate the integration period with the sync. In the correlator, the
-- integration period is forced to a minimum of c_nof_visibilities to -- integration period is forced to a minimum of c_nof_visibilities to
...@@ -148,12 +147,7 @@ ARCHITECTURE str OF apertif_unb1_correlator IS ...@@ -148,12 +147,7 @@ ARCHITECTURE str OF apertif_unb1_correlator IS
TO_UVEC( c_bg_block_size-1, c_diag_bg_mem_high_adrs_w), TO_UVEC( c_bg_block_size-1, c_diag_bg_mem_high_adrs_w),
TO_UVEC( 0, c_diag_bg_bsn_init_w)); TO_UVEC( 0, c_diag_bg_bsn_init_w));
SIGNAL block_gen_src_out_arr : t_dp_sosi_arr(c_nof_inputs-1 DOWNTO 0); SIGNAL correlator_snk_in_arr : t_dp_sosi_arr(c_nof_input_streams-1 DOWNTO 0);
SIGNAL dp_fifo_sc_src_out_arr : t_dp_sosi_arr(c_nof_inputs-1 DOWNTO 0);
SIGNAL dp_fifo_sc_src_in_arr : t_dp_siso_arr(c_nof_inputs-1 DOWNTO 0);
SIGNAL correlator_snk_in_arr : t_dp_sosi_arr(c_nof_inputs-1 DOWNTO 0);
SIGNAL correlator_src_out_arr : t_dp_sosi_arr(1-1 DOWNTO 0); SIGNAL correlator_src_out_arr : t_dp_sosi_arr(1-1 DOWNTO 0);
SIGNAL ram_diag_data_buf_mosi : t_mem_mosi; SIGNAL ram_diag_data_buf_mosi : t_mem_mosi;
...@@ -165,17 +159,17 @@ BEGIN ...@@ -165,17 +159,17 @@ BEGIN
----------------------------------------------------------------------------- -----------------------------------------------------------------------------
-- Block generators -- Block generators
-- . Each stream in block_gen_src_out_arr contains complex subband samples -- . Each stream in correlator_snk_in_arr contains complex subband samples
-- from one 'antenna'. -- from one 'antenna'.
-- . These complex subband samples are generated and converted to a HEX RAM -- . These complex subband samples are generated and converted to a HEX RAM
-- initialization file using Python, see tb/python/gen_subband_hex_files.py -- initialization file using Python, see tb/python/gen_subband_hex_files.py
----------------------------------------------------------------------------- -----------------------------------------------------------------------------
u_mms_diag_block_gen : ENTITY diag_lib.mms_diag_block_gen u_mms_diag_block_gen : ENTITY diag_lib.mms_diag_block_gen
GENERIC MAP ( GENERIC MAP (
g_nof_output_streams => c_nof_inputs, g_nof_output_streams => c_nof_input_streams,
g_buf_dat_w => 2*c_complex_data_w, g_buf_dat_w => 2*c_complex_data_w,
g_buf_addr_w => ceil_log2(TO_UINT(c_bg_ctrl.samples_per_packet)), g_buf_addr_w => ceil_log2(TO_UINT(c_bg_ctrl.samples_per_packet)),
g_file_name_prefix => "../../../libraries/dsp/correlator/src/hex/complex_subbands_" & NATURAL'IMAGE(c_complex_data_w), g_file_name_prefix => "../../../libraries/dsp/correlator/src/hex/complex_subbands_" & NATURAL'IMAGE(c_complex_data_w) & "b_" & "fold_" & NATURAL'IMAGE(c_nof_input_folds),
g_diag_block_gen_rst => c_bg_ctrl g_diag_block_gen_rst => c_bg_ctrl
) )
PORT MAP ( PORT MAP (
...@@ -185,61 +179,16 @@ BEGIN ...@@ -185,61 +179,16 @@ BEGIN
dp_rst => dp_rst, dp_rst => dp_rst,
dp_clk => dp_clk, dp_clk => dp_clk,
out_sosi_arr => block_gen_src_out_arr out_sosi_arr => correlator_snk_in_arr
); );
-----------------------------------------------------------------------------
-- Introduce gaps in the input stream
-- . mms_diag_block_gen does not support gaps within blocks.
-- . We'll use FIFO buffers and dp_gap to read out the FIFOs to introduce
-- gaps.
-----------------------------------------------------------------------------
gen_dp_fifo_sc : FOR i IN 0 TO c_nof_inputs-1 GENERATE
u_dp_fifo_sc : ENTITY dp_lib.dp_fifo_sc
GENERIC MAP (
g_data_w => 2*c_complex_data_w,
g_use_ctrl => FALSE,
g_use_complex => TRUE,
g_fifo_size => c_nof_channels,
g_fifo_af_margin => 0
)
PORT MAP (
rst => dp_rst,
clk => dp_clk,
wr_ful => OPEN,
usedw => OPEN,
rd_emp => OPEN,
snk_out => OPEN,
snk_in => block_gen_src_out_arr(i),
src_in => dp_fifo_sc_src_in_arr(i),
src_out => dp_fifo_sc_src_out_arr(i)
);
END GENERATE;
gen_dp_src_out_timer : FOR i IN 0 TO c_nof_inputs-1 GENERATE
u_dp_src_out_timer : ENTITY dp_lib.dp_src_out_timer
GENERIC MAP (
g_block_period => c_block_period
)
PORT MAP (
rst => dp_rst,
clk => dp_clk,
snk_in => dp_fifo_sc_src_out_arr(i),
snk_out => dp_fifo_sc_src_in_arr(i)
);
END GENERATE;
correlator_snk_in_arr <= dp_fifo_sc_src_out_arr;
----------------------------------------------------------------------------- -----------------------------------------------------------------------------
-- Correlator -- Correlator
----------------------------------------------------------------------------- -----------------------------------------------------------------------------
u_correlator : ENTITY correlator_lib.correlator u_correlator : ENTITY correlator_lib.correlator
GENERIC MAP ( GENERIC MAP (
g_nof_inputs => c_nof_inputs, g_nof_input_streams => c_nof_input_streams,
g_nof_input_folds => c_nof_input_folds,
g_nof_pre_mult_folds => c_nof_pre_mult_folds, g_nof_pre_mult_folds => c_nof_pre_mult_folds,
g_data_w => c_complex_data_w, g_data_w => c_complex_data_w,
g_conjugate => c_conjugate, g_conjugate => c_conjugate,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment