Skip to content
Snippets Groups Projects
Commit ab101289 authored by David Brouwer's avatar David Brouwer
Browse files

RTSD-209: See README for reason distinction (lofar2 vs alma). Intended to be...

RTSD-209: See README for reason distinction (lofar2 vs alma). Intended to be top-level entity for synthesis with alma par to investigate resource usage, timing paths and max clockfreq for iwave Agilex 7. Currently the same as lofar2. Added with multiple comment with which par have to be changed.
parent 22332347
No related branches found
No related tags found
1 merge request!370RTSD-229: Verify the wpfb for iwave agilex7 through synthesis in Quartus
Pipeline #67672 passed
hdl_lib_name = iwave_synthesis_wpfb_alma
hdl_library_clause_name = iwave_synthesis_wpfb_alma_lib
hdl_lib_uses_synth = common diag dp fft filter mm pft2 pfb2 rTwoSDF si st wpfb
hdl_lib_uses_sim =
hdl_lib_technology = ip_agi027_xxxx
synth_files =
iwave_synthesis_wpfb_alma.vhd
test_bench_files =
[modelsim_project_file]
modelsim_copy_files =
[quartus_project_file]
quartus_copy_files =
# Note: path $HDL_WORK is equivalent to relative path ../../../../../
$HDL_WORK/libraries/dsp/filter/src/hex data # FIR filter coefficients
synth_top_level_entity =
iwave_synthesis_wpfb_alma
# use qsf also for (virtual) pin assignments, no separate tcl file is needed
quartus_qsf_files =
$HDL_WORK/libraries/dsp/wpfb/quartus_iwave/wpfb_unit_dev.qsf
# use no sdc file because default clock by Quartus is 1 GHz for finding Fmax.
quartus_sdc_files =
-------------------------------------------------------------------------------
--
-- Copyright 2023
-- 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.
--
-------------------------------------------------------------------------------
-- #TODO: Change to ALMA Design parameters: two ?? (TBD)
-- Author:
-- . D.F. Brouwer
-- Design name:
-- . iwave_synthesis_wpfb_alma
-- Purpose:
-- . Wrapper for wpfb (wideband polyphase filterbank with ports for subband
-- statistics and streaming interfaces) synthesis design for iwave Agilex 7
-- (c_tech_agi027_xxxx).
-- . Implements the functionality of the subband filterbank (Fsub) using the
-- ALMA design parameters.
-- Description:
-- . The subband filterbank seperates the incoming timestamped ADC samples into
-- ?? (TBD) frequency bands called subbands.
-- . It implements a critically sampled poly-phase filterbank (PFB). The PFB
-- consists of a poly-phase finite impulse response (PFIR) filter per real
-- input and a complex fast fourier transform (FFT) per 2 real inputs.
-- . The number of points of the FFT is ?? (TBD).
-- Description:
-- . The quantized subbands are output (and used for the SST) because it uses more logic.
-- ____
-- | |
-- | |--raw----> X (not included in synthesis)
-- |WPFB|
-- | |--quant--> wpfb_unit_out_quant_sosi_arr (more logic = critical timepath is longer)
-- |____|
library IEEE, common_lib, dp_lib, rTwoSDF_lib, common_mult_lib, fft_lib, wpfb_lib, filter_lib, si_lib, st_lib, mm_lib;
use IEEE.std_logic_1164.all;
use common_lib.common_pkg.all;
use common_lib.common_mem_pkg.all;
use dp_lib.dp_stream_pkg.all;
use rTwoSDF_lib.rTwoSDFPkg.all;
use filter_lib.fil_pkg.all;
use fft_lib.fft_pkg.all;
use wpfb_lib.wpfb_pkg.all;
entity iwave_synthesis_wpfb_alma is
generic (
g_wpfb : t_wpfb := c_wpfb_lofar2_subbands_l2ts_18b; -- Instance of the wpfb type (t_wpfb) which is the same config as defined in c_sdp_wpfb_subbands #TODO: Change to ALMA Design parameters
g_nof_streams : natural := 12 -- Number of signals per processing node #TODO: Change to ALMA Design parameters
);
port (
dp_clk : in std_logic; -- Same clock, reset for dp as for mm, because of compatibility of Agilex 7.
dp_rst : in std_logic; -- ,, ,,
mm_clk : in std_logic; -- ,, ,,
mm_rst : in std_logic; -- ,, ,,
reg_si_copi : in t_mem_copi := c_mem_copi_rst;
reg_si_cipo : out t_mem_cipo;
ram_fil_coefs_copi : in t_mem_copi := c_mem_copi_rst;
ram_fil_coefs_cipo : out t_mem_cipo;
ram_st_sst_copi : in t_mem_copi := c_mem_copi_rst; -- Subband statistics registers
ram_st_sst_cipo : out t_mem_cipo;
in_sosi_arr : in t_dp_sosi_arr(g_nof_streams - 1 downto 0);
out_quant_sosi_arr : out t_dp_sosi_arr(g_wpfb.nof_wb_streams * g_wpfb.wb_factor - 1 downto 0)
);
end iwave_synthesis_wpfb_alma;
architecture str of iwave_synthesis_wpfb_alma is
-- FIR coeffs file is copied to build data/ dir by design revision hdllib.cfg
-- from: $HDL_WORK/libraries/dsp/filter/src/hex
constant c_coefs_file_prefix : string := "data/Coeffs16384Kaiser-quant_1wb"; --#TODO: Check and if needed change to ALMA Design parameters
constant c_nof_pfb : natural := g_wpfb.nof_wb_streams * g_wpfb.wb_factor; -- Default 6 PFB units, is 6 signal output pairs #TODO: Change to ALMA Design parameters
constant c_in_dat_w : natural := g_wpfb.fil_in_dat_w; -- Default number of input bits of the ADC is 14 #TODO: Change to ALMA Design parameters
constant c_si_pipeline : natural := 1;
signal si_sosi_arr : t_dp_sosi_arr(g_nof_streams - 1 downto 0) := (others => c_dp_sosi_rst);
signal wpfb_unit_in_sosi_arr : t_dp_sosi_arr(c_nof_pfb - 1 downto 0) := (others => c_dp_sosi_rst);
signal wpfb_unit_out_quant_sosi_arr : t_dp_sosi_arr(c_nof_pfb - 1 downto 0) := (others => c_dp_sosi_rst);
begin
---------------------------------------------------------------
-- SPECTRAL INVERSION
---------------------------------------------------------------
u_si_arr : entity si_lib.si_arr
generic map (
g_nof_streams => g_nof_streams,
g_pipeline => c_si_pipeline,
g_dat_w => c_in_dat_w
)
port map(
in_sosi_arr => in_sosi_arr,
out_sosi_arr => si_sosi_arr,
reg_si_mosi => reg_si_copi,
reg_si_miso => reg_si_cipo,
mm_rst => mm_rst,
mm_clk => mm_clk,
dp_clk => dp_clk,
dp_rst => dp_rst
);
---------------------------------------------------------------
-- POLY-PHASE FILTERBANK
---------------------------------------------------------------
-- Connect the 12 ADC streams to the re and im fields of the PFB input. #TODO: Change to ALMA Design parameters
p_pfb_streams : process(si_sosi_arr)
begin
for I in 0 to c_nof_pfb - 1 loop
wpfb_unit_in_sosi_arr(I) <= si_sosi_arr(2 * I);
wpfb_unit_in_sosi_arr(I).re <= RESIZE_DP_DSP_DATA(si_sosi_arr(2 * I).data);
wpfb_unit_in_sosi_arr(I).im <= RESIZE_DP_DSP_DATA(si_sosi_arr(2 * I + 1).data);
end loop;
end process;
-- PFB
u_wpfb_unit_dev : entity wpfb_lib.wpfb_unit_dev
generic map (
g_wpfb => g_wpfb,
g_use_prefilter => true,
g_stats_ena => false, -- Enables the statistics unit. For wpfb_unit_dev default true
g_use_bg => false,
g_coefs_file_prefix => c_coefs_file_prefix, -- File prefix for the coefficients files. For wpfb_unit_dev default "data/coefs_wide"
g_restart_on_valid => false -- For wpfb_unit_dev default true
)
port map (
dp_rst => dp_rst,
dp_clk => dp_clk,
mm_rst => mm_rst,
mm_clk => mm_clk,
ram_fil_coefs_mosi => ram_fil_coefs_copi,
ram_fil_coefs_miso => ram_fil_coefs_cipo,
ram_st_sst_mosi => ram_st_sst_copi, -- Subband statistics registers
ram_st_sst_miso => ram_st_sst_cipo,
in_sosi_arr => wpfb_unit_in_sosi_arr,
out_quant_sosi_arr => wpfb_unit_out_quant_sosi_arr
);
out_quant_sosi_arr <= wpfb_unit_out_quant_sosi_arr;
end str;
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