diff --git a/applications/lofar2/designs/lofar2_unb2b_beamformer/src/vhdl/lofar2_unb2b_beamformer.vhd b/applications/lofar2/designs/lofar2_unb2b_beamformer/src/vhdl/lofar2_unb2b_beamformer.vhd index f894280241e8152fb4286f01898c31d001f18756..3a7c092e0d2ffbdc6ff2731f6c482fc96d4f0662 100644 --- a/applications/lofar2/designs/lofar2_unb2b_beamformer/src/vhdl/lofar2_unb2b_beamformer.vhd +++ b/applications/lofar2/designs/lofar2_unb2b_beamformer/src/vhdl/lofar2_unb2b_beamformer.vhd @@ -642,7 +642,7 @@ BEGIN GENERIC MAP( g_technology => g_technology, g_nof_streams => c_sdp_S_pn, - g_buf_nof_data => c_sdp_ait_buf_nof_data_bsn, + g_buf_nof_data => c_sdp_V_si_db, g_sim => g_sim ) PORT MAP( diff --git a/applications/lofar2/designs/lofar2_unb2b_beamformer/src/vhdl/mmm_lofar2_unb2b_beamformer.vhd b/applications/lofar2/designs/lofar2_unb2b_beamformer/src/vhdl/mmm_lofar2_unb2b_beamformer.vhd index fa98abaa196a9e1c95ead0ebd137381adc04e6de..c116e37ee89765d76e53d2a79edbeae0ae33f75c 100644 --- a/applications/lofar2/designs/lofar2_unb2b_beamformer/src/vhdl/mmm_lofar2_unb2b_beamformer.vhd +++ b/applications/lofar2/designs/lofar2_unb2b_beamformer/src/vhdl/mmm_lofar2_unb2b_beamformer.vhd @@ -487,7 +487,7 @@ BEGIN reg_bsn_source_clk_export => OPEN, reg_bsn_source_reset_export => OPEN, - reg_bsn_source_address_export => reg_bsn_source_mosi.address(c_sdp_reg_bsn_source_addr_w-1 DOWNTO 0), + reg_bsn_source_address_export => reg_bsn_source_mosi.address(2-1 DOWNTO 0), reg_bsn_source_read_export => reg_bsn_source_mosi.rd, reg_bsn_source_readdata_export => reg_bsn_source_miso.rddata(c_word_w-1 DOWNTO 0), reg_bsn_source_write_export => reg_bsn_source_mosi.wr, @@ -544,7 +544,7 @@ BEGIN ram_diag_data_buf_bsn_clk_export => OPEN, ram_diag_data_buf_bsn_reset_export => OPEN, - ram_diag_data_buf_bsn_address_export => ram_diag_data_buf_bsn_mosi.address(c_sdp_ram_diag_data_buf_bsn_addr_w-1 DOWNTO 0), + ram_diag_data_buf_bsn_address_export => ram_diag_data_buf_bsn_mosi.address(14-1 DOWNTO 0), ram_diag_data_buf_bsn_write_export => ram_diag_data_buf_bsn_mosi.wr, ram_diag_data_buf_bsn_writedata_export => ram_diag_data_buf_bsn_mosi.wrdata(c_word_w-1 DOWNTO 0), ram_diag_data_buf_bsn_read_export => ram_diag_data_buf_bsn_mosi.rd, @@ -560,7 +560,7 @@ BEGIN ram_diag_data_buf_jesd_clk_export => OPEN, ram_diag_data_buf_jesd_reset_export => OPEN, - ram_diag_data_buf_jesd_address_export => ram_diag_data_buf_jesd_mosi.address(c_sdp_ram_diag_data_buf_jesd_addr_w-1 DOWNTO 0), + ram_diag_data_buf_jesd_address_export => ram_diag_data_buf_jesd_mosi.address(11-1 DOWNTO 0), ram_diag_data_buf_jesd_write_export => ram_diag_data_buf_jesd_mosi.wr, ram_diag_data_buf_jesd_writedata_export => ram_diag_data_buf_jesd_mosi.wrdata(c_word_w-1 DOWNTO 0), ram_diag_data_buf_jesd_read_export => ram_diag_data_buf_jesd_mosi.rd, @@ -568,7 +568,7 @@ BEGIN reg_diag_data_buf_jesd_reset_export => OPEN, reg_diag_data_buf_jesd_clk_export => OPEN, - reg_diag_data_buf_jesd_address_export => reg_diag_data_buf_jesd_mosi.address(c_sdp_reg_diag_data_buf_jesd_addr_w-1 DOWNTO 0), + reg_diag_data_buf_jesd_address_export => reg_diag_data_buf_jesd_mosi.address(2-1 DOWNTO 0), reg_diag_data_buf_jesd_write_export => reg_diag_data_buf_jesd_mosi.wr, reg_diag_data_buf_jesd_writedata_export => reg_diag_data_buf_jesd_mosi.wrdata(c_word_w-1 DOWNTO 0), reg_diag_data_buf_jesd_read_export => reg_diag_data_buf_jesd_mosi.rd, diff --git a/applications/lofar2/designs/lofar2_unb2b_filterbank/src/vhdl/lofar2_unb2b_filterbank.vhd b/applications/lofar2/designs/lofar2_unb2b_filterbank/src/vhdl/lofar2_unb2b_filterbank.vhd index 1ad3eb3ae671b261e13c3980fbf478f6203b54eb..d32ffe7f4d7b958f81ee608f67304a33c44b7d8e 100644 --- a/applications/lofar2/designs/lofar2_unb2b_filterbank/src/vhdl/lofar2_unb2b_filterbank.vhd +++ b/applications/lofar2/designs/lofar2_unb2b_filterbank/src/vhdl/lofar2_unb2b_filterbank.vhd @@ -551,7 +551,7 @@ BEGIN GENERIC MAP( g_technology => g_technology, g_nof_streams => c_sdp_S_pn, - g_buf_nof_data => c_sdp_ait_buf_nof_data_bsn, + g_buf_nof_data => c_sdp_V_si_db, g_sim => g_sim ) PORT MAP( diff --git a/applications/lofar2/designs/lofar2_unb2b_filterbank/src/vhdl/mmm_lofar2_unb2b_filterbank.vhd b/applications/lofar2/designs/lofar2_unb2b_filterbank/src/vhdl/mmm_lofar2_unb2b_filterbank.vhd index 5c98a6406407f62ac0b85082e0cf55399565f7da..a0280460a0f7dd5971d4d375b75c8582134d8df8 100644 --- a/applications/lofar2/designs/lofar2_unb2b_filterbank/src/vhdl/mmm_lofar2_unb2b_filterbank.vhd +++ b/applications/lofar2/designs/lofar2_unb2b_filterbank/src/vhdl/mmm_lofar2_unb2b_filterbank.vhd @@ -458,7 +458,7 @@ BEGIN reg_bsn_source_clk_export => OPEN, reg_bsn_source_reset_export => OPEN, - reg_bsn_source_address_export => reg_bsn_source_mosi.address(c_sdp_reg_bsn_source_addr_w-1 DOWNTO 0), + reg_bsn_source_address_export => reg_bsn_source_mosi.address(2-1 DOWNTO 0), reg_bsn_source_read_export => reg_bsn_source_mosi.rd, reg_bsn_source_readdata_export => reg_bsn_source_miso.rddata(c_word_w-1 DOWNTO 0), reg_bsn_source_write_export => reg_bsn_source_mosi.wr, @@ -515,7 +515,7 @@ BEGIN ram_diag_data_buf_bsn_clk_export => OPEN, ram_diag_data_buf_bsn_reset_export => OPEN, - ram_diag_data_buf_bsn_address_export => ram_diag_data_buf_bsn_mosi.address(c_sdp_ram_diag_data_buf_bsn_addr_w-1 DOWNTO 0), + ram_diag_data_buf_bsn_address_export => ram_diag_data_buf_bsn_mosi.address(14-1 DOWNTO 0), ram_diag_data_buf_bsn_write_export => ram_diag_data_buf_bsn_mosi.wr, ram_diag_data_buf_bsn_writedata_export => ram_diag_data_buf_bsn_mosi.wrdata(c_word_w-1 DOWNTO 0), ram_diag_data_buf_bsn_read_export => ram_diag_data_buf_bsn_mosi.rd, @@ -531,7 +531,7 @@ BEGIN ram_diag_data_buf_jesd_clk_export => OPEN, ram_diag_data_buf_jesd_reset_export => OPEN, - ram_diag_data_buf_jesd_address_export => ram_diag_data_buf_jesd_mosi.address(c_sdp_ram_diag_data_buf_jesd_addr_w-1 DOWNTO 0), + ram_diag_data_buf_jesd_address_export => ram_diag_data_buf_jesd_mosi.address(11-1 DOWNTO 0), ram_diag_data_buf_jesd_write_export => ram_diag_data_buf_jesd_mosi.wr, ram_diag_data_buf_jesd_writedata_export => ram_diag_data_buf_jesd_mosi.wrdata(c_word_w-1 DOWNTO 0), ram_diag_data_buf_jesd_read_export => ram_diag_data_buf_jesd_mosi.rd, @@ -539,7 +539,7 @@ BEGIN reg_diag_data_buf_jesd_reset_export => OPEN, reg_diag_data_buf_jesd_clk_export => OPEN, - reg_diag_data_buf_jesd_address_export => reg_diag_data_buf_jesd_mosi.address(c_sdp_reg_diag_data_buf_jesd_addr_w-1 DOWNTO 0), + reg_diag_data_buf_jesd_address_export => reg_diag_data_buf_jesd_mosi.address(2-1 DOWNTO 0), reg_diag_data_buf_jesd_write_export => reg_diag_data_buf_jesd_mosi.wr, reg_diag_data_buf_jesd_writedata_export => reg_diag_data_buf_jesd_mosi.wrdata(c_word_w-1 DOWNTO 0), reg_diag_data_buf_jesd_read_export => reg_diag_data_buf_jesd_mosi.rd, diff --git a/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_adc_input_and_timing.vhd b/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_adc_input_and_timing.vhd index 9fca689fbdcad78b9afb56b7865a4a5863935373..424218a2bcd45e080d308fdf2e288ff3b7b67044 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_adc_input_and_timing.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_adc_input_and_timing.vhd @@ -93,10 +93,10 @@ ENTITY node_sdp_adc_input_and_timing IS jesd_ctrl_miso : OUT t_mem_miso; -- JESD io signals - jesd204b_serial_data : IN STD_LOGIC_VECTOR(c_sdp_jesd204b_nof_streams-1 downto 0); + jesd204b_serial_data : IN STD_LOGIC_VECTOR(c_sdp_S_pn-1 downto 0); jesd204b_refclk : IN STD_LOGIC; jesd204b_sysref : IN STD_LOGIC; - jesd204b_sync_n : OUT STD_LOGIC_VECTOR(c_sdp_jesd204b_nof_streams-1 DOWNTO 0); + jesd204b_sync_n : OUT STD_LOGIC_VECTOR(c_sdp_S_pn-1 DOWNTO 0); -- Streaming data output out_sosi_arr : OUT t_dp_sosi_arr(c_sdp_S_pn-1 DOWNTO 0) @@ -129,9 +129,9 @@ ARCHITECTURE str OF node_sdp_adc_input_and_timing IS SIGNAL rx_sysref : STD_LOGIC; -- Sosis and sosi arrays - SIGNAL rx_sosi_arr : t_dp_sosi_arr(c_sdp_jesd204b_nof_streams-1 DOWNTO 0); - SIGNAL dp_shiftram_snk_in_arr : t_dp_sosi_arr(c_sdp_jesd204b_nof_streams-1 DOWNTO 0); - SIGNAL ant_sosi_arr : t_dp_sosi_arr(c_sdp_jesd204b_nof_streams-1 DOWNTO 0); + SIGNAL rx_sosi_arr : t_dp_sosi_arr(c_sdp_S_pn-1 DOWNTO 0); + SIGNAL dp_shiftram_snk_in_arr : t_dp_sosi_arr(c_sdp_S_pn-1 DOWNTO 0); + SIGNAL ant_sosi_arr : t_dp_sosi_arr(c_sdp_S_pn-1 DOWNTO 0); SIGNAL bs_sosi : t_dp_sosi; SIGNAL wg_sosi_arr : t_dp_sosi_arr(c_sdp_S_pn-1 DOWNTO 0); SIGNAL mux_sosi_arr : t_dp_sosi_arr(c_sdp_S_pn-1 DOWNTO 0); @@ -154,7 +154,7 @@ BEGIN -- complete blocks, so from sop to eop. mm_rst_internal <= mm_rst OR mm_jesd_ctrl_reg(31); - gen_jesd_disable : FOR I IN 0 TO c_sdp_jesd204b_nof_streams-1 GENERATE + gen_jesd_disable : FOR I IN 0 TO c_sdp_S_pn-1 GENERATE jesd204b_disable_arr(i) <= mm_jesd_ctrl_reg(i); END GENERATE; @@ -165,8 +165,8 @@ BEGIN u_jesd204b: ENTITY tech_jesd204b_lib.tech_jesd204b GENERIC MAP( g_sim => g_sim, - g_nof_streams => c_sdp_jesd204b_nof_streams, - g_nof_sync_n => c_sdp_jesd204b_nof_sync_n, + g_nof_streams => c_sdp_S_pn, + g_nof_sync_n => c_sdp_S_pn/c_sdp_S_rcu, -- = 12/3 = 4 g_jesd_freq => c_sdp_jesd204b_freq ) PORT MAP( @@ -190,7 +190,7 @@ BEGIN -- Serial serial_tx_arr => open, - serial_rx_arr => JESD204B_SERIAL_DATA(c_sdp_jesd204b_nof_streams-1 downto 0) + serial_rx_arr => JESD204B_SERIAL_DATA(c_sdp_S_pn-1 downto 0) ); @@ -201,7 +201,7 @@ BEGIN -- . the input valid is always '1', even when there is no data ----------------------------------------------------------------------------- - gen_force_valid : FOR I IN 0 TO c_sdp_jesd204b_nof_streams-1 GENERATE + gen_force_valid : FOR I IN 0 TO c_sdp_S_pn-1 GENERATE p_sosi : PROCESS(rx_sosi_arr) BEGIN dp_shiftram_snk_in_arr(I) <= rx_sosi_arr(I); @@ -212,7 +212,7 @@ BEGIN u_dp_shiftram : ENTITY dp_lib.dp_shiftram GENERIC MAP ( - g_nof_streams => c_sdp_jesd204b_nof_streams, + g_nof_streams => c_sdp_S_pn, g_nof_words => c_sdp_V_sample_delay, g_data_w => c_sdp_W_adc_jesd, g_use_sync_in => TRUE diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd index b2d3b0e515c68071947fca86d0181cf76ec11184..416841b96ef63269b2bc968cfc4deeda43da2b63 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd @@ -26,6 +26,7 @@ -- Description: -- Remark: -- . See Document: L3 SDP Decision: SDP Parameter definitions. +-- https://support.astron.nl/confluence/display/L2M/L3+SDP+Decision%3A+SDP+Parameter+definitions ------------------------------------------------------------------------------- LIBRARY ieee, common_lib, rTwoSDF_lib, fft_lib, filter_lib, wpfb_lib; USE IEEE.std_logic_1164.ALL; @@ -68,41 +69,40 @@ PACKAGE sdp_pkg is ------------------------------------------------- -- SDP specific parameters as defined in: -- L3 SDP Decision: SDP Parameter definitions - ------------------------------------------------- - CONSTANT c_sdp_N_pol : NATURAL := 2; CONSTANT c_sdp_N_beamsets : 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; - CONSTANT c_sdp_W_gn_id : NATURAL := 5; CONSTANT c_sdp_N_pn_lb : NATURAL := 16; + CONSTANT c_sdp_N_pol : NATURAL := 2; + CONSTANT c_sdp_N_sub : NATURAL := 512; + CONSTANT c_sdp_N_taps : NATURAL := 16; + CONSTANT c_sdp_Q_fft : NATURAL := 2; + CONSTANT c_sdp_S_pn : NATURAL := 12; CONSTANT c_sdp_S_rcu : NATURAL := 3; + CONSTANT c_sdp_S_sub_bf : NATURAL := 488; CONSTANT c_sdp_V_sample_delay : NATURAL := 4096; - CONSTANT c_sdp_W_adc_jesd : NATURAL := 16; CONSTANT c_sdp_V_si_db : NATURAL := 1024; CONSTANT c_sdp_V_si_db_large : NATURAL := 131072; + CONSTANT c_sdp_W_adc : NATURAL := 14; + CONSTANT c_sdp_W_adc_jesd : NATURAL := 16; + CONSTANT c_sdp_W_beamlet : NATURAL := 8; + CONSTANT c_sdp_W_beamlet_scale : NATURAL := 16; + CONSTANT c_sdp_W_beamlet_sum : NATURAL := 18; + CONSTANT c_sdp_W_bf_magnitude : NATURAL := 1; + CONSTANT c_sdp_W_bf_weight : NATURAL := 16; + CONSTANT c_sdp_W_fir_coef : NATURAL := 16; + CONSTANT c_sdp_W_gn_id : NATURAL := 5; + CONSTANT c_sdp_W_sub_magnitude : NATURAL := 2; + CONSTANT c_sdp_W_sub_weight : NATURAL := 16; + CONSTANT c_sdp_W_subband : NATURAL := 18; + CONSTANT c_sdp_f_adc_MHz : NATURAL := 200; - CONSTANT c_sdp_ait_buf_nof_data_bsn : NATURAL := c_sdp_V_si_db; -- Old constant used in filterbank and beamformer + -- Derived constants + CONSTANT c_sdp_P_pfb : NATURAL := c_sdp_S_pn / c_sdp_Q_fft; + 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_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_sub_fraction : NATURAL := c_sdp_W_sub_weight - c_sdp_W_sub_magnitude -1; -- CONSTANT c_sdp_marker_sst : NATURAL := 83; -- = 0x53 = 'S' @@ -132,12 +132,7 @@ PACKAGE sdp_pkg is c_fil_ppf_pipeline); -- JESD204 - CONSTANT c_sdp_jesd204b_freq : STRING := "200MHz"; - CONSTANT c_sdp_jesd204b_bus_w : NATURAL := 12; - CONSTANT c_sdp_jesd204b_nof_bus : NATURAL := 1; - CONSTANT c_sdp_jesd204b_nof_streams : NATURAL := c_sdp_jesd204b_bus_w*c_sdp_jesd204b_nof_bus; - CONSTANT c_sdp_jesd204b_nof_sync_n : NATURAL := c_sdp_jesd204b_bus_w/c_sdp_S_rcu; -- Three ADCs per RCU share a sync - + CONSTANT c_sdp_jesd204b_freq : STRING := "200MHz"; CONSTANT c_sdp_jesd204b_mm_jesd_ctrl_reg : t_c_mem := (latency => 1, adr_w => 1, dat_w => c_word_w, @@ -152,9 +147,7 @@ PACKAGE sdp_pkg is 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(c_sdp_S_pn*c_sdp_V_si_db); - 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_V_si_db_large); + CONSTANT c_sdp_ram_diag_data_buf_bsn_addr_w : NATURAL := ceil_log2(c_sdp_S_pn*c_sdp_V_si_db_large); -- Dimension DB address range for largest DB, so that both the large and the default small DB fit. 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);