The AD936x Filter Wizard package provides a function to design custom filter for the TX and RX path :
https://github.com/analogdevicesinc/ad936x-filter-wizard/blob/master/internal_design_filter.m
The function requires a data structure to design the filter. The data structure should provide the following fields :
% Rdata = input/output sample data rate (in Hz)
% FIR = FIR interpolation/decimation factor
% PLL_mult = PLL multiplication
% Fpass = passband frequency (in Hz)
% Fstop = stopband frequency (in Hz)
% Apass = max ripple allowed in passband (in dB)
% Astop = min attenuation in stopband (in dB)
% FIRdBmin = min rejection that FIR is required to have (in dB)
% phEQ = phase equalization on (not -1)/off (-1)
% int_FIR = use AD9361 FIR on (1)/off (0)
% wnom = analog cutoff frequency (in Hz)
Most of the fields of the design structure are quite clear to understand except the exact consequence of :
int_FIR
- I can read from the code that the design process is slightly different between (1) or (0). But a more wordy explanation would be welcome (I understand that the FIR filter is normally designed to compensate the analog and HB filters chain ; but in the other case is unclear).
- Furthermore, does this option actually disable the FIR filters on the board as if we used the system command (as described in https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/ad9361#load_a_filter) :
echo 1 > in_voltage_filter_fir_en
And finally, it is not clear for me how should I use the output of this internal_design_filter.m function to configure the board from Matlab. Can someone provide a code snippet about that point ?