Skip to content
Snippets Groups Projects
Commit 79729dac authored by Eric Kooistra's avatar Eric Kooistra
Browse files

Use g_fil_ppf. record parameter for filter/fil_ppf_w component peripheral.

parent 7b8f297e
No related branches found
No related tags found
2 merge requests!100Removed text for XSub that is now written in Confluence Subband correlator...,!76Resolve L2SDP-248
...@@ -172,9 +172,12 @@ peripherals: ...@@ -172,9 +172,12 @@ peripherals:
- peripheral_name: filter/fil_ppf_w - peripheral_name: filter/fil_ppf_w
parameter_overrides: parameter_overrides:
- { name: g_nof_taps, value: c_N_taps } - { name: g_fil_ppf.wb_factor, value: 1 } # process at sample rate
- { name: g_nof_bands, value: c_N_fft } - { name: g_fil_ppf.nof_chan, value: 0 } # process at sample rate
- { name: g_coef_dat_w, value: c_W_fir_coef } - { name: g_fil_ppf.nof_bands, value: c_N_fft }
- { name: g_fil_ppf.nof_taps, value: c_N_taps }
- { name: g_fil_ppf.nof_streams, value: 1 }
- { name: g_fil_ppf.coef_dat_w, value: c_W_fir_coef }
mm_port_names: mm_port_names:
- RAM_FIL_COEFS - RAM_FIL_COEFS
......
...@@ -145,10 +145,12 @@ peripherals: ...@@ -145,10 +145,12 @@ peripherals:
- peripheral_name: filter/fil_ppf_w - peripheral_name: filter/fil_ppf_w
parameter_overrides: parameter_overrides:
- { name: g_wb_factor, value: 1 } - { name: g_fil_ppf.wb_factor, value: 1 } # process at sample rate
- { name: g_nof_taps, value: 16 } # = N_taps - { name: g_fil_ppf.nof_chan, value: 0 } # process at sample rate
- { name: g_nof_bands, value: 1024 } # = N_fft - { name: g_fil_ppf.nof_bands, value: 1024 } # = N_fft
- { name: g_coef_dat_w, value: 16 } # = W_fir_coef - { name: g_fil_ppf.nof_taps, value: 16 } # = N_taps
- { name: g_fil_ppf.nof_streams, value: 1 }
- { name: g_fil_ppf.coef_dat_w, value: 16 } # = W_fir_coef
mm_port_names: mm_port_names:
- RAM_FIL_COEFS - RAM_FIL_COEFS
......
...@@ -8,37 +8,46 @@ hdl_library_description: "Poly-phase filter (PPF) for a Wideband Poly-phase filt ...@@ -8,37 +8,46 @@ hdl_library_description: "Poly-phase filter (PPF) for a Wideband Poly-phase filt
peripherals: peripherals:
- peripheral_name: fil_ppf_w # pi_fil_ppf_w.py - peripheral_name: fil_ppf_w # pi_fil_ppf_w.py
peripheral_description: | peripheral_description: |
"PPF FIR filter for wideband data streams, all data streams use the same FIR coefficients. "PPF FIR filter for wideband data streams, all g_fil_ppf.nof_streams use the same FIR
The PPF has g_nof_bands phases, where g_nof_bands is equal to the size of the FFT in the coefficients. The PPF has g_fil_ppf.nof_bands poly phases, where g_fil_ppf.nof_bands is
PFB. The PPF has g_nof_taps FIR taps per phase. Hence the total number of FIR coefficients equal to the size (number of points) of the FFT in the PFB. The PPF has
is g_nof_taps * g_nof_bands. g_fil_ppf.nof_taps FIR taps per poly phase. Hence the total number of FIR coefficients
The PPF can process a data stream that is clocked at a wideband factor g_wb_factor higher is g_fil_ppf.nof_taps * g_fil_ppf.nof_bands.
data rate, by running g_wb_factor parts in parallel. The PPF can process a data stream that is clocked at a wideband factor g_fil_ppf.wb_factor
higher data rate, by running g_fil_ppf.wb_factor parts in parallel. The
g_fil_ppf.wb_factor >= 1 and a power of 2.
The PPF can process 2**g_fil_ppf.nof_chan channels that are multiplexed in time in
a data stream when g_fil_ppf.nof_chan > 0. Therefore typically when g_fil_ppf.nof_chan > 0
then g_fil_ppf.wb_factor = 1, and when g_fil_ppf.wb_factor > 1 then g_fil_ppf.nof_chan = 0,
because time multiplexing is only useful when the processing clock rate is faster then the
data stream rate.
The FIR coefficients are real values." The FIR coefficients are real values."
parameters: parameters:
# Parameters of fil_ppf_wide.vhd # Parameters of fil_ppf_wide.vhd
- { name: g_wb_factor, value: 1 } - { name: g_fil_ppf.wb_factor, value: 1 }
- { name: g_nof_taps, value: 8 } - { name: g_fil_ppf.nof_chan, value: 0 }
- { name: g_nof_bands, value: 256 } - { name: g_fil_ppf.nof_bands, value: 256 }
- { name: g_coef_dat_w, value: 16 } - { name: g_fil_ppf.nof_taps, value: 8 }
- { name: g_fil_ppf.nof_streams, value: 1 }
- { name: g_fil_ppf.coef_dat_w, value: 16 }
mm_ports: mm_ports:
# MM port for fil_ppf_wide.vhd / fil_ppf_single.vhd # MM port for fil_ppf_wide.vhd / fil_ppf_single.vhd
- mm_port_name: RAM_FIL_COEFS - mm_port_name: RAM_FIL_COEFS
mm_port_description: | mm_port_description: |
"The FIR filter coefficients are stored in blocks of g_nof_bands/g_wb_factor real "The FIR filter coefficients are stored in blocks of g_fil_ppf.nof_bands/g_fil_ppf.wb_factor
coefficients: real coefficients:
(int16)coefs[g_wb_factor][g_nof_taps][g_nof_bands/g_wb_factor] (int16)coefs[g_fil_ppf.wb_factor][g_fil_ppf.nof_taps][g_fil_ppf.nof_bands/g_fil_ppf.wb_factor]
For g_wb_factor = 1 this reduces to g_nof_taps blocks of g_nof_bands/g_wb_factor For g_fil_ppf.wb_factor = 1 this reduces to g_fil_ppf.nof_taps blocks of
coefficients: g_fil_ppf.nof_bands/g_fil_ppf.wb_factor coefficients:
(int16)coefs[g_nof_taps][g_nof_bands]" (int16)coefs[g_fil_ppf.nof_taps][g_fil_ppf.nof_bands]"
mm_port_type: RAM mm_port_type: RAM
number_of_mm_ports: g_wb_factor * g_nof_taps number_of_mm_ports: g_fil_ppf.wb_factor * g_fil_ppf.nof_taps
fields: fields:
- - field_name: coef - - field_name: coef
field_description: "Real FIR filter coefficient" field_description: "Real FIR filter coefficient"
mm_width: g_coef_dat_w mm_width: g_fil_ppf.coef_dat_w
address_offset: 0x0 address_offset: 0x0
number_of_fields: g_nof_bands / g_wb_factor number_of_fields: g_fil_ppf.nof_bands / g_fil_ppf.wb_factor
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment