TailCorr/script_m/TailCorr_IP_Test.m

41 lines
1.1 KiB
Mathematica
Raw Normal View History

2024-11-09 17:13:18 +08:00
%2024-11-09-verify IIR IP core
clc;clear;close all
in = importdata("/home/thfu/work/TailCorr/sim/in.dat");
diff_in = importdata("/home/thfu/work/TailCorr/sim/diff_in.dat");
wave_verdi = importdata("/home/thfu/work/TailCorr/sim/OrgOut.dat");
% imp = [2^15-1; zeros(499,1)];
A = [0.025 0.015 0.0002];
tau = -[1/250 1/650 1/1600];
fs = 2e9;
for i = 1:3
b(i) = exp(1e9/fs/(1-A(i))*tau(i));
a(i) = A(i)/1/(1-A(i))*exp(1e9/fs/(1-A(i))/2*tau(i));
end
for i = 1:3
h_ideal(:,i) = filter(a(i),[1 -b(i)],diff_in);
end
wave_float = in+ sum(h_ideal,2);
[wave_float_A,wave_verdi_A] = alignsignals(wave_float,wave_verdi);
N = min(length(wave_float_A),length(wave_verdi_A));
figure()
diff_plot(wave_float_A, wave_verdi_A,'float','verdi',[0 N]);
%%
% signalAnalyzer(h_ideal_A*2^20,out_A,'SampleRate',1);
% signalAnalyzer(h_ideal_A,floor(out_A/2^20),'SampleRate',1);
signalAnalyzer(wave_float_A,wave_verdi_A,'SampleRate',1);
% signalAnalyzer((h_ideal_A(1:N)-out_A(1:N))/2^35,'SampleRate',1);
%%
fprintf("a is %.10f\n",a)
fprintf("b is %.10f\n",b)
%%
fprintf("a of 32 bit %d\n",round(a*2^31));
fprintf("b of 32 bit %d\n",round(b*2^31));