diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd index 95aad8a84a09e0d7b6870788e619255466c49762..58e7cb7fbe89cc0518809f5466f7070de4f43b7a 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd @@ -1,133 +1,134 @@ -------------------------------------------------------------------------------- --- --- Copyright 2020 --- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/> --- P.O.Box 2, 7990 AA Dwingeloo, The Netherlands --- --- Licensed under the Apache License, Version 2.0 (the "License"); --- you may not use this file except in compliance with the License. --- You may obtain a copy of the License at --- --- http://www.apache.org/licenses/LICENSE-2.0 --- --- Unless required by applicable law or agreed to in writing, software --- distributed under the License is distributed on an "AS IS" BASIS, --- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. --- See the License for the specific language governing permissions and --- limitations under the License. --- -------------------------------------------------------------------------------- - -------------------------------------------------------------------------------- --- --- Author: R. van der Walle --- Purpose: --- . This package contains sdp specific constants. --- Description: --- Remark: --- . See Document: L3 SDP Decision: SDP Parameter definitions. -------------------------------------------------------------------------------- -LIBRARY ieee, common_lib, rTwoSDF_lib, fft_lib, filter_lib, wpfb_lib; -USE IEEE.std_logic_1164.ALL; -USE common_lib.common_pkg.ALL; -USE rTwoSDF_lib.rTwoSDFPkg.ALL; -USE fft_lib.fft_pkg.ALL; -USE filter_lib.fil_pkg.ALL; -USE wpfb_lib.wpfb_pkg.ALL; - -PACKAGE sdp_pkg is - ------------------------------------------------- - -- SDP info record as defined in: - -- LOFAR2-9258-SDP info per antenna band - ------------------------------------------------- - TYPE t_sdp_info IS RECORD - station_id : STD_LOGIC_VECTOR(15 DOWNTO 0); - antenna_band_index : STD_LOGIC; - observation_id : STD_LOGIC_VECTOR(31 DOWNTO 0); - nyquist_zone_index : STD_LOGIC_VECTOR(1 DOWNTO 0); - f_adc : STD_LOGIC; - fsub_type : STD_LOGIC; - beam_repositioning_flag : STD_LOGIC; - subband_calibrated_flag : STD_LOGIC; - O_si : STD_LOGIC_VECTOR(7 DOWNTO 0); - N_si : STD_LOGIC_VECTOR(7 DOWNTO 0); - O_rn : STD_LOGIC_VECTOR(7 DOWNTO 0); - N_rn : STD_LOGIC_VECTOR(7 DOWNTO 0); - block_period : STD_LOGIC_VECTOR(15 DOWNTO 0); - beamlet_scale : STD_LOGIC_VECTOR(15 DOWNTO 0); - END RECORD; - - ------------------------------------------------- - -- SDP specific parameters as defined in: - -- L3 SDP Decision: SDP Parameter definitions - ------------------------------------------------- - CONSTANT c_sdp_N_pol : NATURAL := 2; - CONSTANT c_sdp_N_sub : NATURAL := 512; - CONSTANT c_sdp_N_fft : NATURAL := 1024; - CONSTANT c_sdp_S_pn : NATURAL := 12; - CONSTANT c_sdp_Q_fft : NATURAL := 2; - CONSTANT c_sdp_N_taps : NATURAL := 16; - CONSTANT c_sdp_W_adc : NATURAL := 14; - CONSTANT c_sdp_W_fir_coef : NATURAL := 16; - CONSTANT c_sdp_W_subband : NATURAL := 18; - CONSTANT c_sdp_P_pfb : NATURAL := c_sdp_S_pn/c_sdp_Q_fft; - CONSTANT c_sdp_S_sub_bf : NATURAL := 488; - CONSTANT c_sdp_f_adc_MHz : NATURAL := 200; - CONSTANT c_sdp_T_adc : TIME := (10**6/c_sdp_f_adc_MHz) * 1 ps; - CONSTANT c_sdp_T_sub : TIME := c_sdp_N_fft * c_sdp_T_adc; - CONSTANT c_sdp_W_sub_weight : NATURAL := 16; - CONSTANT c_sdp_W_sub_magnitude : NATURAL := 2; - CONSTANT c_sdp_W_sub_fraction : NATURAL := c_sdp_W_sub_weight - c_sdp_W_sub_magnitude -1; - CONSTANT c_sdp_W_bf_weight : NATURAL := 16; - CONSTANT c_sdp_W_bf_magnitude : NATURAL := 1; - CONSTANT c_sdp_W_bf_fraction : NATURAL := c_sdp_W_bf_weight - c_sdp_W_bf_magnitude -1; - CONSTANT c_sdp_W_bf_product : NATURAL := c_sdp_W_subband + c_sdp_W_bf_weight -1; - CONSTANT c_sdp_W_beamlet_sum : NATURAL := 18; - CONSTANT c_sdp_W_beamlet : NATURAL := 8; - - -- AIT constants - CONSTANT c_sdp_ait_buf_nof_data_jesd : NATURAL := 1024; -- 1024 14 bit samples fit in one M20k BRAM - CONSTANT c_sdp_ait_buf_nof_data_bsn : NATURAL := 1024; -- 1024 14 bit samples fit in one M20k BRAM - - -- In SDP c_nof_channels = 2**nof_chan = 1 and wb_factor = 1, - -- therefore these parameters are not explicitly used in calculation of derived constants - CONSTANT c_sdp_wpfb_subbands : t_wpfb := - (1, c_sdp_N_fft, 0, c_sdp_P_pfb, - c_sdp_N_taps, 1, c_sdp_W_adc, 16, c_sdp_W_fir_coef, - true, false, true, 16, c_sdp_W_subband, 1, 18, 2, - true, 54, 2, 195313, c_fft_pipeline, c_fft_pipeline, - c_fil_ppf_pipeline); - - -- JESD204 - CONSTANT c_sdp_jesd204b_bus_w : NATURAL := 12; - CONSTANT c_sdp_jesd204b_nof_bus : NATURAL := 1; - - - -- AIT MM address widths - CONSTANT c_sdp_jesd204b_addr_w : NATURAL := 8 + ceil_log2(c_sdp_S_pn); - CONSTANT c_sdp_reg_bsn_monitor_input_addr_w : NATURAL := 8; - CONSTANT c_sdp_reg_wg_addr_w : NATURAL := 2 + ceil_log2(c_sdp_S_pn); - CONSTANT c_sdp_ram_wg_addr_w : NATURAL := 10 + ceil_log2(c_sdp_S_pn); - CONSTANT c_sdp_reg_dp_shiftram_addr_w : NATURAL := 1 + ceil_log2(c_sdp_S_pn); - CONSTANT c_sdp_reg_bsn_source_addr_w : NATURAL := 2; - CONSTANT c_sdp_reg_bsn_scheduler_addr_w : NATURAL := 1; - CONSTANT c_sdp_ram_diag_data_buf_jesd_addr_w : NATURAL := ceil_log2(2*c_sdp_ait_buf_nof_data_jesd); - CONSTANT c_sdp_reg_diag_data_buf_jesd_addr_w : NATURAL := 1 + ceil_log2(2); - CONSTANT c_sdp_ram_diag_data_buf_bsn_addr_w : NATURAL := ceil_log2(c_sdp_S_pn*c_sdp_ait_buf_nof_data_bsn); - CONSTANT c_sdp_reg_diag_data_buf_bsn_addr_w : NATURAL := 1 + ceil_log2(c_sdp_S_pn); - CONSTANT c_sdp_reg_aduh_monitor_addr_w : NATURAL := 2 + ceil_log2(c_sdp_S_pn); - - -- FSUB MM address widths - CONSTANT c_sdp_ram_fil_coefs_addr_w : NATURAL := ceil_log2(c_sdp_N_fft * c_sdp_N_taps); - CONSTANT c_sdp_ram_st_sst_addr_w : NATURAL := ceil_log2(c_sdp_P_pfb*c_sdp_N_sub*c_sdp_Q_fft*c_sdp_wpfb_subbands.stat_data_sz); - CONSTANT c_sdp_reg_si_addr_w : NATURAL := 1; --enable/disable - CONSTANT c_sdp_ram_equalizer_gains_addr_w : NATURAL := ceil_log2(c_sdp_P_pfb*c_sdp_N_sub*c_sdp_Q_fft); - CONSTANT c_sdp_reg_dp_selector_addr_w : NATURAL := 1; --Select input 0 or 1. - -END PACKAGE sdp_pkg; - -PACKAGE BODY sdp_pkg IS - - -END sdp_pkg; - +------------------------------------------------------------------------------- +-- +-- Copyright 2020 +-- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/> +-- P.O.Box 2, 7990 AA Dwingeloo, The Netherlands +-- +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. +-- +------------------------------------------------------------------------------- + +------------------------------------------------------------------------------- +-- +-- Author: R. van der Walle +-- Purpose: +-- . This package contains sdp specific constants. +-- Description: +-- Remark: +-- . See Document: L3 SDP Decision: SDP Parameter definitions. +------------------------------------------------------------------------------- +LIBRARY ieee, common_lib, rTwoSDF_lib, fft_lib, filter_lib, wpfb_lib; +USE IEEE.std_logic_1164.ALL; +USE common_lib.common_pkg.ALL; +USE rTwoSDF_lib.rTwoSDFPkg.ALL; +USE fft_lib.fft_pkg.ALL; +USE filter_lib.fil_pkg.ALL; +USE wpfb_lib.wpfb_pkg.ALL; + +PACKAGE sdp_pkg is + ------------------------------------------------- + -- SDP info record as defined in: + -- LOFAR2-9258-SDP info per antenna band + ------------------------------------------------- + TYPE t_sdp_info IS RECORD + station_id : STD_LOGIC_VECTOR(15 DOWNTO 0); + antenna_band_index : STD_LOGIC; + observation_id : STD_LOGIC_VECTOR(31 DOWNTO 0); + nyquist_zone_index : STD_LOGIC_VECTOR(1 DOWNTO 0); + f_adc : STD_LOGIC; + fsub_type : STD_LOGIC; + beam_repositioning_flag : STD_LOGIC; + subband_calibrated_flag : STD_LOGIC; + O_si : STD_LOGIC_VECTOR(7 DOWNTO 0); + N_si : STD_LOGIC_VECTOR(7 DOWNTO 0); + O_rn : STD_LOGIC_VECTOR(7 DOWNTO 0); + N_rn : STD_LOGIC_VECTOR(7 DOWNTO 0); + block_period : STD_LOGIC_VECTOR(15 DOWNTO 0); + beamlet_scale : STD_LOGIC_VECTOR(15 DOWNTO 0); + END RECORD; + + ------------------------------------------------- + -- SDP specific parameters as defined in: + -- L3 SDP Decision: SDP Parameter definitions + ------------------------------------------------- + CONSTANT c_sdp_N_pol : NATURAL := 2; + CONSTANT c_sdp_N_sub : NATURAL := 512; + CONSTANT c_sdp_N_fft : NATURAL := 1024; + CONSTANT c_sdp_S_pn : NATURAL := 12; + CONSTANT c_sdp_Q_fft : NATURAL := 2; + CONSTANT c_sdp_N_taps : NATURAL := 16; + CONSTANT c_sdp_W_adc : NATURAL := 14; + CONSTANT c_sdp_W_fir_coef : NATURAL := 16; + CONSTANT c_sdp_W_subband : NATURAL := 18; + CONSTANT c_sdp_P_pfb : NATURAL := c_sdp_S_pn/c_sdp_Q_fft; + CONSTANT c_sdp_S_sub_bf : NATURAL := 488; + CONSTANT c_sdp_f_adc_MHz : NATURAL := 200; + CONSTANT c_sdp_T_adc : TIME := (10**6/c_sdp_f_adc_MHz) * 1 ps; + CONSTANT c_sdp_T_sub : TIME := c_sdp_N_fft * c_sdp_T_adc; + CONSTANT c_sdp_W_sub_weight : NATURAL := 16; + CONSTANT c_sdp_W_sub_magnitude : NATURAL := 2; + CONSTANT c_sdp_W_sub_fraction : NATURAL := c_sdp_W_sub_weight - c_sdp_W_sub_magnitude -1; + CONSTANT c_sdp_W_bf_weight : NATURAL := 16; + CONSTANT c_sdp_W_bf_magnitude : NATURAL := 1; + CONSTANT c_sdp_W_bf_fraction : NATURAL := c_sdp_W_bf_weight - c_sdp_W_bf_magnitude -1; + CONSTANT c_sdp_W_bf_product : NATURAL := c_sdp_W_subband + c_sdp_W_bf_weight -1; + CONSTANT c_sdp_W_beamlet_sum : NATURAL := 18; + CONSTANT c_sdp_W_beamlet : NATURAL := 8; + CONSTANT c_sdp_W_beamlet_scale : NATURAL := 16; + + -- AIT constants + CONSTANT c_sdp_ait_buf_nof_data_jesd : NATURAL := 1024; -- 1024 14 bit samples fit in one M20k BRAM + CONSTANT c_sdp_ait_buf_nof_data_bsn : NATURAL := 1024; -- 1024 14 bit samples fit in one M20k BRAM + + -- In SDP c_nof_channels = 2**nof_chan = 1 and wb_factor = 1, + -- therefore these parameters are not explicitly used in calculation of derived constants + CONSTANT c_sdp_wpfb_subbands : t_wpfb := + (1, c_sdp_N_fft, 0, c_sdp_P_pfb, + c_sdp_N_taps, 1, c_sdp_W_adc, 16, c_sdp_W_fir_coef, + true, false, true, 16, c_sdp_W_subband, 1, 18, 2, + true, 54, 2, 195313, c_fft_pipeline, c_fft_pipeline, + c_fil_ppf_pipeline); + + -- JESD204 + CONSTANT c_sdp_jesd204b_bus_w : NATURAL := 12; + CONSTANT c_sdp_jesd204b_nof_bus : NATURAL := 1; + + + -- AIT MM address widths + CONSTANT c_sdp_jesd204b_addr_w : NATURAL := 8 + ceil_log2(c_sdp_S_pn); + CONSTANT c_sdp_reg_bsn_monitor_input_addr_w : NATURAL := 8; + CONSTANT c_sdp_reg_wg_addr_w : NATURAL := 2 + ceil_log2(c_sdp_S_pn); + CONSTANT c_sdp_ram_wg_addr_w : NATURAL := 10 + ceil_log2(c_sdp_S_pn); + CONSTANT c_sdp_reg_dp_shiftram_addr_w : NATURAL := 1 + ceil_log2(c_sdp_S_pn); + CONSTANT c_sdp_reg_bsn_source_addr_w : NATURAL := 2; + CONSTANT c_sdp_reg_bsn_scheduler_addr_w : NATURAL := 1; + CONSTANT c_sdp_ram_diag_data_buf_jesd_addr_w : NATURAL := ceil_log2(2*c_sdp_ait_buf_nof_data_jesd); + CONSTANT c_sdp_reg_diag_data_buf_jesd_addr_w : NATURAL := 1 + ceil_log2(2); + CONSTANT c_sdp_ram_diag_data_buf_bsn_addr_w : NATURAL := ceil_log2(c_sdp_S_pn*c_sdp_ait_buf_nof_data_bsn); + CONSTANT c_sdp_reg_diag_data_buf_bsn_addr_w : NATURAL := 1 + ceil_log2(c_sdp_S_pn); + CONSTANT c_sdp_reg_aduh_monitor_addr_w : NATURAL := 2 + ceil_log2(c_sdp_S_pn); + + -- FSUB MM address widths + CONSTANT c_sdp_ram_fil_coefs_addr_w : NATURAL := ceil_log2(c_sdp_N_fft * c_sdp_N_taps); + CONSTANT c_sdp_ram_st_sst_addr_w : NATURAL := ceil_log2(c_sdp_P_pfb*c_sdp_N_sub*c_sdp_Q_fft*c_sdp_wpfb_subbands.stat_data_sz); + CONSTANT c_sdp_reg_si_addr_w : NATURAL := 1; --enable/disable + CONSTANT c_sdp_ram_equalizer_gains_addr_w : NATURAL := ceil_log2(c_sdp_P_pfb*c_sdp_N_sub*c_sdp_Q_fft); + CONSTANT c_sdp_reg_dp_selector_addr_w : NATURAL := 1; --Select input 0 or 1. + +END PACKAGE sdp_pkg; + +PACKAGE BODY sdp_pkg IS + + +END sdp_pkg; +