pluto_hdl_adi/library/axi_adc_decimate/m2k_decim.m

46 lines
1.2 KiB
Matlab

clear all;
close all;
decim_rate = 50000;
h_cic = dsp.CICDecimator(decim_rate,1,6);
gainCIC = (h_cic.DecimationFactor*h_cic.DifferentialDelay)^h_cic.NumSections
[h1, w1] = h_cic.freqz();
fs = 1;
fPass = 0.20;
fStop = 0.50;
ast = 70;
CICCompDecim = dsp.CICCompensationDecimator(h_cic, ...
'DecimationFactor',2,'PassbandFrequency',fPass, ...
'StopbandFrequency',fStop,'SampleRate',fs, ...
'StopbandAttenuation',ast);
[h2, w2] = CICCompDecim.freqz();
CICCompDecim.coeffs()
FC = dsp.FilterCascade(h_cic,CICCompDecim);
[h3, w3] = FC.freqz();
subplot(311); hold on;
plot(w1/pi, 20*log10(abs(h1)/gainCIC));
plot(w2/pi, 20*log10(abs(h2)));
hold off; grid
subplot(312); plot(w3/pi, 20*log10(abs(h3)/gainCIC)); grid
% M = 8; % Decimation factor
% Fp = 40; % Passband-edge frequency
% Fst = 60; % Stopband-edge frequency
% Ap = 0.1; % Passband peak-to-peak ripple
% Ast = 80; % Minimum stopband attenuation
% Fs = 800; % Sampling frequency
% HfdDecim = fdesign.decimator(M,'lowpass',Fp,Fst,Ap,Ast,Fs);
% HNyqDecim = design(HfdDecim,'kaiserwin','SystemObject', true);
%
% [h4, w4] = freqz(HNyqDecim);
% subplot(313); plot(w4/pi, 20*log10(abs(h4))); grid
nt = numerictype(1,12,11);
fdhdltool(h_cic, nt);
fdhdltool(CICCompDecim, nt)