diff --git a/script_m/TailCorr_IP_Test.m b/script_m/TailCorr_IP_Test.m index 1b46144..ef3748e 100644 --- a/script_m/TailCorr_IP_Test.m +++ b/script_m/TailCorr_IP_Test.m @@ -1,36 +1,49 @@ %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"); +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; +dout0 = importdata("/home/thfu/work/TailCorr/sim/dout0.dat"); +dout1 = importdata("/home/thfu/work/TailCorr/sim/dout1.dat"); +dout2 = importdata("/home/thfu/work/TailCorr/sim/dout2.dat"); +dout3 = importdata("/home/thfu/work/TailCorr/sim/dout3.dat"); -for i = 1:3 +N = length(dout0); +cs_wave = zeros(4*N,1); +cs_wave(1:4:4*N) = dout0; +cs_wave(2:4:4*N) = dout1; +cs_wave(3:4:4*N) = dout2; +cs_wave(4:4:4*N) = dout3; + +A = [0.025 0.015 0.0002 0.2]; +tau = -[1/250 1/650 1/1600 1/20]; +fs = 0.375e9; + +coef_len = length(A); +for i = 1:coef_len 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]); +wave_float_len = length(wave_float); +wave_float_8 = interp1(1:wave_float_len,wave_float,1:1/8:(wave_float_len+1-1/8),'linear')'; + +[cs_wave_A,wave_float_8_A,Delay] = alignsignals(cs_wave,wave_float_8); +N = min(length(wave_float_8_A),length(cs_wave_A)); +figure(2) +diff_plot(wave_float_8_A(18:end), cs_wave_A(82:end),'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); +[wave_float_A,wave_verdi_A,Delay] = alignsignals(wave_float,wave_verdi); +N = min(length(wave_float_A),length(wave_verdi_A)); +figure(1) +diff_plot(wave_float_A, wave_verdi_A,'float','verdi',[0 N]); +%% +signalAnalyzer(wave_float,wave_verdi,'SampleRate',1); %% fprintf("a is %.10f\n",a) fprintf("b is %.10f\n",b) diff --git a/script_m/diff_plot.m b/script_m/diff_plot.m index 19bf93a..4d0002c 100755 --- a/script_m/diff_plot.m +++ b/script_m/diff_plot.m @@ -6,7 +6,8 @@ Script_out = Script_out(1:N); n = 0:1:N-1; diff = iir_out-Script_out; -subplot(211) +tiledlayout(2,1) +ax1 = nexttile; plot(n,iir_out,n,Script_out) xlabel('n') legend(leg1,leg2) @@ -14,14 +15,14 @@ xlim(a) title('time domain') grid on -subplot(212) +ax2 = nexttile; plot(n,diff) xlabel('n') title('diff') grid on hold on xlim(a) - +linkaxes([ax1,ax2],'x'); [diff_max,R_mpos] = max(abs(diff)); plot(n(R_mpos),diff(R_mpos),'r*') text(n(R_mpos), diff(R_mpos), ['(',num2str(n(R_mpos)),',',num2str(diff(R_mpos)),')'],'color','k');