From e3ab01f20c8a08ac81023b330b66ec6b88d17f4c Mon Sep 17 00:00:00 2001 From: Eric Kooistra <kooistra@astron.nl> Date: Fri, 12 Mar 2021 11:12:03 +0100 Subject: [PATCH] Use FPGA parameters. --- .../lofar2_unb2b_beamformer.fpga.yaml | 73 ++++++++++++------- 1 file changed, 48 insertions(+), 25 deletions(-) diff --git a/applications/lofar2/designs/lofar2_unb2b_beamformer/lofar2_unb2b_beamformer.fpga.yaml b/applications/lofar2/designs/lofar2_unb2b_beamformer/lofar2_unb2b_beamformer.fpga.yaml index e57cc831f2..565856c1ae 100644 --- a/applications/lofar2/designs/lofar2_unb2b_beamformer/lofar2_unb2b_beamformer.fpga.yaml +++ b/applications/lofar2/designs/lofar2_unb2b_beamformer/lofar2_unb2b_beamformer.fpga.yaml @@ -1,10 +1,34 @@ -schema_name : args +schema_name: args schema_version: 1.0 -schema_type : fpga +schema_type: fpga hdl_library_name: lofar2_unb2b_beamformer -fpga_name : lofar2_unb2b_beamformer +fpga_name: lofar2_unb2b_beamformer fpga_description: "FPGA design lofar2_unb2b_beamformer" +parameters: + - { name: c_N_pol, value: 2 } + - { name: c_N_beamsets, value: 2 } + - { name: c_N_sub, value: 512 } + - { name: c_N_fft, value: 1024 } + - { name: c_S_pn, value: 12 } + - { name: c_Q_fft, value: 2 } + - { name: c_N_taps, value: 16 } + - { name: c_W_adc_jesd, value: 16 } # NOTE: define c_W_adc_jesd before c_W_adc, to avoid that c_W_adc_jesd gets substituted by 14_jesd + - { name: c_W_adc, value: 14 } + - { name: c_V_sample_delay, value: 4096 } + - { name: c_V_si_db_large, value: 131072 } # NOTE: define c_V_si_db_large before c_V_si_db, to avoid that c_V_si_db_large gets substituted by 1024_large + - { name: c_V_si_db, value: 1024 } + - { name: c_W_fir_coef, value: 16 } + - { name: c_W_subband, value: 18 } + - { name: c_P_pfb, value: c_S_pn / c_Q_fft } # = 6 + - { name: c_S_sub_bf, value: 488 } + - { name: c_f_adc_MHz, value: 200 } + - { name: c_W_sub_weight, value: 16 } + - { name: c_W_bf_weight, value: 16 } + - { name: c_W_beamlet, value: 8 } + - { name: c_W_beamlet_scale, value: 16 } + - { name: c_nof_clk_per_pps, value: c_f_adc_MHz * 10**6 } # = 200000000 + - { name: c_nof_block_per_sync, value: 195313 } # TBD temporarily use 390625 = 2 * 195312, to have integer number of blocks in 2 s sync interval, TODO: remove when REG_BSN_SOURCE_V2 is used peripherals: ############################################################################# @@ -71,24 +95,24 @@ peripherals: - peripheral_name: dp/dp_shiftram parameter_overrides: - - { name: g_nof_streams, value: 12 } # = S_pn - - { name: g_nof_words, value: 4096 } - - { name: g_data_w, value: 16 } + - { name: g_nof_streams, value: c_S_pn } + - { name: g_nof_words, value: c_V_sample_delay } + - { name: g_data_w, value: c_W_adc_jesd } slave_port_names: - REG_DP_SHIFTRAM - peripheral_name: dp/dp_bsn_source parameter_overrides: - - { name: g_nof_block_per_sync, value: 195313 } # 390625 = 2 * 195312, to have integer number of blocks in 2 s sync interval + - { name: g_nof_block_per_sync, value: c_nof_block_per_sync } slave_port_names: - REG_BSN_SOURCE # TODO: Use REG_BSN_SOURCE_V2 instead of REG_BSN_SOURCE #peripheral_name: dp/dp_bsn_source_v2 #parameter_overrides: - # - { name: g_nof_clk_per_sync, value: 200000000 } # = f_adc - # - { name: g_block_size, value: 1024 } # = N_fft - # - { name: g_bsn_time_offset_w, value: 10 } # note: g_bsn_time_offset_w = ceil_log2(g_block_size) + # - { name: g_nof_clk_per_sync, value: c_nof_clk_per_pps } + # - { name: g_block_size, value: c_N_fft } + # - { name: g_bsn_time_offset_w, value: ceil_log2(c_N_fft) } #slave_port_names: # - REG_BSN_SOURCE_V2 @@ -103,34 +127,34 @@ peripherals: - peripheral_name: diag/diag_wg_wideband parameter_overrides: - - { name: g_nof_streams, value: 12 } # = S_pn + - { name: g_nof_streams, value: c_S_pn } slave_port_names: - REG_DIAG_WG - RAM_DIAG_WG - peripheral_name: aduh/aduh_mon_dc_power parameter_overrides: - - { name: g_nof_streams, value: 12 } # = S_pn + - { name: g_nof_streams, value: c_S_pn } slave_port_names: - REG_ADUH_MON # Commented RAM_ADUH_MON, because use RAM_DIAG_DATA_BUF_BSN instead #- peripheral_name: aduh/aduh_mon_data_buffer # parameter_overrides: - # - { name: g_nof_streams, value: 12 } # = S_pn - # - { name: g_symbol_w, value: 16 } + # - { name: g_nof_streams, value: c_S_pn } + # - { name: g_symbol_w, value: c_W_adc_jesd } # - { name: g_nof_symbols_per_data, value: 1 } # - { name: g_buffer_nof_symbols, value: 512 } - # - { name: g_buffer_use_sync, value: true } + # - { name: g_buffer_use_sync, value: True } # slave_port_names: # - RAM_ADUH_MON - peripheral_name: diag/diag_data_buffer peripheral_group: bsn parameter_overrides: - - { name: g_nof_streams, value: 12 } # = S_pn - - { name: g_data_w, value: 16 } - - { name: g_nof_data, value: 1024 } + - { name: g_nof_streams, value: c_S_pn } + - { name: g_data_w, value: c_W_adc_jesd } + - { name: g_nof_data, value: c_V_si_db } slave_port_names: - REG_DIAG_DATA_BUF_BSN - RAM_DIAG_DATA_BUF_BSN @@ -145,10 +169,9 @@ peripherals: - peripheral_name: filter/fil_ppf_w parameter_overrides: - - { name: g_wb_factor, value: 1 } - - { name: g_nof_taps, value: 16 } # = N_taps - - { name: g_nof_bands, value: 1024 } # = N_fft - - { name: g_coef_dat_w, value: 16 } # = W_fir_coef + - { name: g_nof_taps, value: c_N_taps } + - { name: g_nof_bands, value: c_N_fft } + - { name: g_coef_dat_w, value: c_W_fir_coef } slave_port_names: - RAM_FIL_COEFS @@ -175,8 +198,8 @@ peripherals: - peripheral_name: reorder/reorder_col_wide parameter_overrides: - - { name: g_wb_factor, value: 12 } # N_beamsets * P_pfb - - { name: g_nof_ch_in, value: 1024 } # = N_sub * Q_fft - - { name: g_nof_ch_sel, value: 976 } # = S_sub_bf * Q_fft + - { name: g_wb_factor, value: c_N_beamsets * c_P_pfb } + - { name: g_nof_ch_in, value: c_N_sub * c_Q_fft } + - { name: g_nof_ch_sel, value: c_S_sub_bf * c_Q_fft } slave_port_names: - RAM_SS_SS_WIDE -- GitLab