diff --git a/projects/dl814_k7/dl814_k7_cal_coarse/data/20230426-电子所转台测试/dmfFreqComp.m b/projects/dl814_k7/dl814_k7_cal_coarse/data/20230426-电子所转台测试/dmfFreqComp.m new file mode 100755 index 00000000..e0df4485 --- /dev/null +++ b/projects/dl814_k7/dl814_k7_cal_coarse/data/20230426-电子所转台测试/dmfFreqComp.m @@ -0,0 +1,326 @@ +%% File Header/文件说明 +% +% Beamforming with phased array derives signal characteristics from phase +% differences between sensors. Therefore the amplitude-phase consistence is +% vital to phased systems. +% +% The script analyzes the amp-phase relations of ILA captured data, the format +% of which is square-shaped pseudorandorm bit sequence. Each channel is +% processed seperately with different frequency shifts and different optimum +% sampling points. The estimation of amplitude and phase are based on +% acculumated correlation peaks. +% +clc; clear; +%% initial parameters/初始参数 +interp = 8; % interpolation factor +channelNum = 4; +dataLen = 8192; +fs = 48e6; +dataFile = [ ... + "iladata_25.0G_1-A-1-1.csv", ... + "iladata_25.0G_1-A-1-2.csv", ... + "iladata_25.0G_1-A-1-3.csv", ... + "iladata_25.0G_1-A-2-1.csv", ... + "iladata_25.0G_1-A-2-2.csv", ... + "iladata_25.0G_1-A-2-3.csv", ... + "iladata_25.0G_1-B-1-1.csv", ... + "iladata_25.0G_1-B-1-2.csv", ... + "iladata_25.0G_1-B-1-3.csv", ... + "iladata_25.0G_1-B-2-1.csv", ... + "iladata_25.0G_1-B-2-2.csv", ... + "iladata_25.0G_1-B-2-3.csv", ... + "iladata_25.3G_1-1.csv", ... + "iladata_25.3G_1-2.csv", ... + "iladata_25.3G_1-3.csv", ... + "iladata_25.5G_1-A-1.csv", ... + "iladata_25.5G_1-A-2.csv", ... + "iladata_25.5G_1-A-3.csv", ... + "iladata_25.5G_1-B-1.csv", ... + "iladata_25.5G_1-B-2.csv", ... + "iladata_25.5G_1-B-3.csv", ... + "iladata_25.9G_1-1.csv", ... + "iladata_26.0G_1-A-1.csv", ... + "iladata_26.0G_1-A-2.csv", ... + "iladata_26.0G_1-A-3.csv", ... + "iladata_26.0G_1-B-1.csv", ... + "iladata_26.0G_1-B-2.csv", ... + "iladata_26.0G_1-B-3.csv", ... + "iladata_26.1G_1-1.csv", ... + "iladata_26.5G_1-A-1.csv", ... + "iladata_26.5G_1-A-2.csv", ... + "iladata_26.5G_1-A-3.csv", ... + "iladata_26.5G_1-B-1.csv", ... + "iladata_26.5G_1-B-2.csv", ... + "iladata_26.5G_1-B-3.csv", ... + "iladata_26.8G_1-1.csv", ... + "iladata_27.0G_1-A-1-1.csv", ... + "iladata_27.0G_1-A-1-2.csv", ... + "iladata_27.0G_1-A-1-3.csv", ... + "iladata_27.0G_1-A-2-1.csv", ... + "iladata_27.0G_1-A-2-2.csv", ... + "iladata_27.0G_1-A-2-3.csv", ... + "iladata_27.0G_1-B-1-1.csv", ... + "iladata_27.0G_1-B-1-2.csv", ... + "iladata_27.0G_1-B-1-3.csv", ... + "iladata_27.0G_1-B-2-1.csv", ... + "iladata_27.0G_1-B-2-2.csv", ... + "iladata_27.0G_1-B-2-3.csv", ... + "iladata_300_0000_25.0G_1-1.csv", ... + "iladata_300_0000_25.5G_1-1.csv", ... + "iladata_300_0000_25.5G_1-2.csv", ... + "iladata_300_0000_25.5G_1-3.csv", ... + "iladata_300_0000_26.0G_1-1.csv", ... + "iladata_300_0000_26.0G_1-2.csv", ... + "iladata_300_0000_26.0G_1-3.csv", ... + "iladata_300_0000_26.5G_1-1.csv", ... + "iladata_300_0000_26.5G_1-2.csv", ... + "iladata_300_0000_26.5G_1-3.csv", ... + "iladata_300_0000_27.0G_1-1.csv", ... + "iladata_300_0000_27.0G_1-2.csv", ... + "iladata_300_0000_27.0G_1-3.csv", ... + "iladata_300_1800_25.0G_1-1.csv", ... + "iladata_300_1800_25.0G_1-2.csv", ... + "iladata_300_1800_25.0G_1-3.csv", ... + "iladata_300_1800_26.0G_1-1.csv", ... + "iladata_300_1800_26.0G_1-2.csv", ... + "iladata_300_1800_26.0G_1-3.csv", ... + "iladata_300_1800_27.0G_1-1.csv", ... + "iladata_300_1800_27.0G_1-2.csv", ... + "iladata_300_1800_27.0G_1-3.csv", ... + "iladata_414_0491_25.0G_1-1.csv", ... + "iladata_414_0491_25.0G_1-2.csv", ... + "iladata_414_0491_25.0G_1-3.csv", ... + "iladata_414_0491_25.0G_2-1.csv", ... + "iladata_414_0491_25.0G_2-2.csv", ... + "iladata_414_0491_25.0G_2-3.csv", ... + "iladata_414_0491_26.0G_1-1.csv", ... + "iladata_414_0491_26.0G_1-2.csv", ... + "iladata_414_0491_26.0G_1-3.csv", ... + "iladata_414_0491_26.0G_2-1.csv", ... + "iladata_414_0491_26.0G_2-2.csv", ... + "iladata_414_0491_26.0G_2-3.csv", ... + "iladata_414_0491_27.0G_1-1.csv", ... + "iladata_414_0491_27.0G_1-2.csv", ... + "iladata_414_0491_27.0G_1-3.csv", ... + "iladata_414_0491_27.0G_2-1.csv", ... + "iladata_414_0491_27.0G_2-2.csv", ... + "iladata_414_0491_27.0G_2-3.csv", ... + "iladata_414_1391_25.0G_1-1.csv", ... + "iladata_414_1391_25.0G_1-2.csv", ... + "iladata_414_1391_25.0G_1-3.csv", ... + "iladata_414_1391_26.0G_1-1.csv", ... + "iladata_414_1391_26.0G_1-2.csv", ... + "iladata_414_1391_26.0G_1-3.csv", ... + "iladata_414_1391_27.0G_1-1.csv", ... + "iladata_414_1391_27.0G_1-2.csv", ... + "iladata_414_1391_27.0G_1-3.csv", ... + "iladata_414_2291_25.0G_1-1.csv", ... + "iladata_414_2291_25.0G_1-2.csv", ... + "iladata_414_2291_25.0G_1-3.csv", ... + "iladata_414_2291_26.0G_1-1.csv", ... + "iladata_414_2291_26.0G_1-2.csv", ... + "iladata_414_2291_26.0G_1-3.csv", ... + "iladata_414_2291_27.0G_1-1.csv", ... + "iladata_414_2291_27.0G_1-2.csv", ... + "iladata_414_2291_27.0G_1-3.csv", ... + "iladata_414_3109_25.0G_1-1.csv", ... + "iladata_414_3109_25.0G_1-2.csv", ... + "iladata_414_3109_25.0G_1-3.csv", ... + "iladata_414_3109_26.0G_1-1.csv", ... + "iladata_414_3109_26.0G_1-2.csv", ... + "iladata_414_3109_26.0G_1-3.csv", ... + "iladata_414_3109_27.0G_1-1.csv", ... + "iladata_414_3109_27.0G_1-2.csv", ... + "iladata_414_3109_27.0G_1-3.csv", ... + "iladata_600_0000_25.0G_1-1.csv", ... + "iladata_600_0000_25.0G_1-2.csv", ... + "iladata_600_0000_25.0G_1-3.csv", ... + "iladata_600_0000_26.0G_1-1.csv", ... + "iladata_600_0000_26.0G_1-2.csv", ... + "iladata_600_0000_26.0G_1-3.csv", ... + "iladata_600_0000_27.0G_1-1.csv", ... + "iladata_600_0000_27.0G_1-2.csv", ... + "iladata_600_0000_27.0G_1-3.csv", ... + "iladata_600_1800_25.0G_1-1.csv", ... + "iladata_600_1800_25.0G_1-2.csv", ... + "iladata_600_1800_25.0G_1-3.csv", ... + "iladata_600_1800_26.0G_1-1.csv", ... + "iladata_600_1800_26.0G_1-2.csv", ... + "iladata_600_1800_26.0G_1-3.csv", ... + "iladata_600_1800_27.0G_1-1.csv", ... + "iladata_600_1800_27.0G_1-2.csv", ... + "iladata_600_1800_27.0G_1-3.csv", ... + "iladata_cal_000_0000_00_00_26.0G_1.csv", ... + "iladata_cal_000_0000_00_00_26.0G_2.csv", ... + "iladata_cal_000_0000_00_00_26.0G_3.csv", ... + "iladata_cal_000_0000_00_00_27.0G_1.csv", ... + "iladata_cal_000_0000_00_00_27.0G_2.csv", ... + "iladata_cal_000_0000_00_00_27.0G_3.csv", ... + "iladata_cal_000_0000_20_20_26.0G_1.csv", ... + "iladata_cal_000_0000_20_20_26.0G_2.csv", ... + "iladata_cal_000_0000_20_20_26.0G_3.csv", ... + "iladata_cal_000_0000_20_20_27.0G_1.csv", ... + "iladata_cal_000_0000_20_20_27.0G_2.csv", ... + "iladata_cal_000_0000_20_20_27.0G_3.csv", ... + "iladata_cal_25.0G.csv", ... + "iladata_cal_25.0G_result.csv", ... + "iladata_cal_26.0G.csv", ... + "iladata_cal_27.0G.csv", ... + "iladata_cal_414_3109_00_00_27.0G_1.csv", ... + "iladata_cal_414_3109_00_00_27.0G_2.csv", ... + "iladata_cal_414_3109_00_00_27.0G_3.csv", ... + "iladata_cal_414_3109_30_30_27.0G_1.csv", ... + "iladata_cal_414_3109_30_30_27.0G_2.csv", ... + "iladata_cal_414_3109_30_30_27.0G_3.csv", ... + "iladata_cal_600_3150_30_30_27.0G_1.csv", ... + "iladata_cal_600_3150_30_30_27.0G_2.csv", ... + "iladata_cal_600_3150_30_30_27.0G_3.csv", ... + "iladata_cal_600_3150_38_51_27.0G_1.csv", ... + "iladata_cal_600_3150_38_51_27.0G_2.csv", ... + "iladata_cal_600_3150_38_51_27.0G_3.csv", ... +]; + +dataFileNum = length(dataFile); + +% standard pn sequence +pnSequence = comm.PNSequence('Polynomial','x^7+x^6+1', ... + 'InitialConditions',[zeros(1,6),1],'SamplesPerFrame',2^7-1); +PRBS7 = pnSequence(); +PRBS7_polar = 1-2*[PRBS7;0]; + +chipLen = length(PRBS7_polar); % pn chip length +symNum = dataLen/chipLen/interp; % total symbol number + +%% data analysis + +% search for frequency shift +freqRange = -20000:50:0; +freqDmfPeak = zeros(dataFileNum,length(freqRange)); +freqTarget = zeros(dataFileNum,channelNum); + +% phase amplitude analysis +desiredPnt = zeros(dataFileNum,symNum-1,channelNum); +desiredPntIndex = zeros(dataFileNum,symNum-1,channelNum); + +ampEstSymRaw = zeros(dataFileNum,symNum-1,channelNum); +ampEstSymMin = zeros(dataFileNum,channelNum); +ampEstSymMax = zeros(dataFileNum,channelNum); +ampEstSymAvg = zeros(dataFileNum,channelNum); + +angEstSymRaw = zeros(dataFileNum,symNum-1,channelNum); +angEstSymMin = zeros(dataFileNum,channelNum); +angEstSymMax = zeros(dataFileNum,channelNum); +angEstSymAvg = zeros(dataFileNum,channelNum); + +ampEstSymRawList = strings(dataFileNum*(symNum-1)+1,channelNum+1); +ampEstSymRawList(1,:) = ["Amp Raw Value", "ch1", "ch2", "ch3", "ch4"]; + +angEstSymRawList = strings(dataFileNum*(symNum-1)+1,channelNum+1); +angEstSymRawList(1,:) = ["Angle Raw Value", "ch1", "ch2", "ch3", "ch4"]; + +desiredPntIndexList = strings(dataFileNum*(symNum-1)+1,channelNum+1); +desiredPntIndexList(1,:) = ["Chip Index", "ch1", "ch2", "ch3", "ch4"]; + +for data_num = 1:dataFileNum + % read data + rawData = readmatrix(dataFile(data_num)); + disp(dataFile(data_num)); + seqRx(:,1) = (rawData(:, 4) + 1i*rawData(:, 5)).'; + seqRx(:,2) = (rawData(:, 6) + 1i*rawData(:, 7)).'; + seqRx(:,3) = (rawData(:, 8) + 1i*rawData(:, 9)).'; + seqRx(:,4) = (rawData(:,10) + 1i*rawData(:,11)).'; + + % search for frequency shift + for ch_num = 1:channelNum + for freq_num = 1:length(freqRange) + % multiply two symbols with carrier + data_cxr = seqRx(1:2*chipLen*interp,ch_num).*exp(1i*2*pi* ... + freqRange(freq_num)/fs*(0:2*chipLen*interp-1)'); + % convolve multiplied data with pn sequence, without zero-padded results + data_dmf = conv(data_cxr, kron(flip(PRBS7_polar),ones(interp,1)),'valid'); + % peak search + freqDmfPeak(data_num,freq_num) = max(data_dmf(1:end-1)); + end + freqTarget(data_num,ch_num) = freqRange(freqDmfPeak(data_num,:) == ... + max(freqDmfPeak(data_num,:))); + end + + % phase amplitude analysis + for ch_num = 1:channelNum + seqRxCxr = seqRx(:,ch_num).*exp(1i*2*pi*freqTarget(1)/fs*(0:dataLen-1)'); + seqRxCxrCorr = conv(seqRxCxr,kron(flip(PRBS7_polar),ones(interp,1)),'valid'); + seqRxCxrCorrSplit = reshape(seqRxCxrCorr(1:end-1),chipLen*interp, ... + symNum-1); + + desiredPntIndex(data_num,:,ch_num) = find(abs(seqRxCxrCorrSplit) == ... + max(abs(seqRxCxrCorrSplit))) - 1024*(0:symNum-2)'; + desiredPnt(data_num,:,ch_num) = seqRxCxrCorrSplit(abs(seqRxCxrCorrSplit) == ... + max(abs(seqRxCxrCorrSplit))); + + ampEstSymRaw(data_num,:,ch_num) = abs(desiredPnt(data_num,:,ch_num))./abs(desiredPnt(data_num,:,1)); + angEstSymRaw(data_num,:,ch_num) = mod((angle(desiredPnt(data_num,:,ch_num))-angle(desiredPnt(data_num,:,1)))/pi*180,360); + + ampEstSymMin(data_num,ch_num) = min(ampEstSymRaw(data_num,:,ch_num)); + ampEstSymMax(data_num,ch_num) = max(ampEstSymRaw(data_num,:,ch_num)); + ampEstSymAvg(data_num,ch_num) = mean(ampEstSymRaw(data_num,:,ch_num)); + + angEstSymMin(data_num,ch_num) = min(angEstSymRaw(data_num,:,ch_num)); + angEstSymMax(data_num,ch_num) = max(angEstSymRaw(data_num,:,ch_num)); + angEstSymAvg(data_num,ch_num) = mean(angEstSymRaw(data_num,:,ch_num)); + end + + desiredPntIndexList((data_num-1)*(symNum-1)+1+(1:symNum-1),1) = dataFile(data_num); + desiredPntIndexList((data_num-1)*(symNum-1)+1+(1:symNum-1),2:end) = string(desiredPntIndex(data_num,:,:)); + + ampEstSymRawList((data_num-1)*(symNum-1)+1+(1:symNum-1),1) = dataFile(data_num); + ampEstSymRawList((data_num-1)*(symNum-1)+1+(1:symNum-1),2:end) = string(ampEstSymRaw(data_num,:,:)); + + angEstSymRawList((data_num-1)*(symNum-1)+1+(1:symNum-1),1) = dataFile(data_num); + angEstSymRawList((data_num-1)*(symNum-1)+1+(1:symNum-1),2:end) = string(angEstSymRaw(data_num,:,:)); +end + +freqTargetRelative = freqTarget - freqTarget(:,1); +maxDesiredPointIndexDiff = max(abs(desiredPntIndex-(desiredPntIndex(:,:,1))),[],"all"); + +ampEstSymMaxList = strings(dataFileNum+1,channelNum+1); +ampEstSymMinList = strings(dataFileNum+1,channelNum+1); +ampEstSymAvgList = strings(dataFileNum+1,channelNum+1); +ampEstSymMaxList(1,:) = ["Amp Max Value", "ch1", "ch2", "ch3", "ch4"]; +ampEstSymMinList(1,:) = ["Amp Min Value", "ch1", "ch2", "ch3", "ch4"]; +ampEstSymAvgList(1,:) = ["Amp Avg Value", "ch1", "ch2", "ch3", "ch4"]; +ampEstSymMaxList(2:end,1) = dataFile; +ampEstSymMinList(2:end,1) = dataFile; +ampEstSymAvgList(2:end,1) = dataFile; +ampEstSymMaxList(2:end,2:end) = string(ampEstSymMin); +ampEstSymMinList(2:end,2:end) = string(ampEstSymMax); +ampEstSymAvgList(2:end,2:end) = string(ampEstSymAvg); + +angEstSymMaxList = strings(dataFileNum+1,channelNum+1); +angEstSymMinList = strings(dataFileNum+1,channelNum+1); +angEstSymAvgList = strings(dataFileNum+1,channelNum+1); +angEstSymMaxList(1,:) = ["Angle Max Value", "ch1", "ch2", "ch3", "ch4"]; +angEstSymMinList(1,:) = ["Angle Min Value", "ch1", "ch2", "ch3", "ch4"]; +angEstSymAvgList(1,:) = ["Angle Avg Value", "ch1", "ch2", "ch3", "ch4"]; +angEstSymMaxList(2:end,1) = dataFile; +angEstSymMinList(2:end,1) = dataFile; +angEstSymAvgList(2:end,1) = dataFile; +angEstSymMaxList(2:end,2:end) = string(angEstSymMin); +angEstSymMinList(2:end,2:end) = string(angEstSymMax); +angEstSymAvgList(2:end,2:end) = string(angEstSymAvg); + +%% figures +% figure(1); +% +% subplot(121); +% plot(ampEstSymAvg); +% legend({"ch1","ch2","ch3","ch4"}); +% title("Amplitude Estimation"); +% ylim([min(ampEstSymAvg,[],'all')-0.2,max(ampEstSymAvg,[],'all')+0.2]); +% grid on; grid minor; +% +% subplot(122); +% plot(angEstSymAvg); +% legend({"ch1","ch2","ch3","ch4"}); +% title("Angle Estimation"); +% ylim([-10,370]); +% grid on; grid minor; diff --git a/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/dmfFreqComp.asv b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/dmfFreqComp.asv new file mode 100644 index 00000000..3ba53714 --- /dev/null +++ b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/dmfFreqComp.asv @@ -0,0 +1,192 @@ +%% File Header/文件说明 +% +% Beamforming with phased array derives signal characteristics from phase +% differences between sensors. Therefore the amplitude-phase consistence is +% vital to phased systems. +% +% The script analyzes the amp-phase relations of ILA captured data, the format +% of which is square-shaped pseudorandorm bit sequence. Each channel is +% processed seperately with different frequency shifts and different optimum +% sampling points. The estimation of amplitude and phase are based on +% acculumated correlation peaks. +% +clc; clear; +%% initial parameters/初始参数 +interp = 8; % interpolation factor +channelNum = 4; +dataLen = 8192; +fs = 48e6; +dataFile = [ ... + % "iladata_rx_data_26G_20230509_1445.csv", ... + % "iladata_rx_data_26G_20230509_1715.csv", ... + "iladata_rx_data_26G_20230510_1030.csv", ... + "iladata_rx_data_26G_20230510_1100.csv", ... + "iladata_rx_data_26G_20230510_1115.csv", ... + "iladata_rx_data_26G_20230510_1415_A-1.csv", ... + "iladata_rx_data_26G_20230510_1415_A-2.csv", ... + "iladata_rx_data_26G_20230510_1415_A-3.csv", ... + "iladata_rx_data_26G_20230510_1455_B-1.csv", ... + "iladata_rx_data_26G_20230510_1455_B-2.csv", ... + "iladata_rx_data_26G_20230510_1455_B-3.csv", ... + "iladata_rx_data_26G_20230510_1500_A-1.csv", ... + "iladata_rx_data_26G_20230510_1500_A-2.csv", ... + "iladata_rx_data_26G_20230510_1500_A-3.csv", ... + "iladata_rx_data_26G_20230510_1530_B-1.csv", ... + "iladata_rx_data_26G_20230510_1530_B-2.csv", ... + "iladata_rx_data_26G_20230510_1530_B-3.csv", ... + "iladata_rx_data_26G_20230510_1600_B-1.csv", ... + "iladata_rx_data_26G_20230510_1600_B-2.csv", ... + "iladata_rx_data_26G_20230510_1630_B-1.csv", ... + "iladata_rx_data_26G_20230510_1630_B-2.csv", ... + "iladata_rx_data_26G_20230510_1630_B-3.csv", ... + "iladata_rx_data_26G_20230510_1725_B-1.csv", ... + "iladata_rx_data_26G_20230510_1725_B-2.csv", ... + "iladata_rx_data_26G_20230510_1725_B-3.csv", ... + "iladata_rx_data_26G_20230510_1730_A-1.csv", ... + "iladata_rx_data_26G_20230510_1730_A-2.csv", ... + "iladata_rx_data_26G_20230510_1730_A-3.csv", ... + "iladata_rx_data_26G_20230510_1740_B-1.csv", ... + "iladata_rx_data_26G_20230510_1740_B-2.csv", ... + "iladata_rx_data_26G_20230510_1740_B-3.csv", ... +]; + +dataFileNum = length(dataFile); + +% standard pn sequence +pnSequence = comm.PNSequence('Polynomial','x^7+x^6+1', ... + 'InitialConditions',[zeros(1,6),1],'SamplesPerFrame',2^7-1); +PRBS7 = pnSequence(); +PRBS7_polar = 1-2*[PRBS7;0]; + +chipLen = length(PRBS7_polar); % pn chip length +symNum = dataLen/chipLen/interp; % total symbol number + +%% data analysis + +% search for frequency shift +freqRange = 22000:10:28000; +freqDmfPeak = zeros(dataFileNum,length(freqRange)); +freqTarget = zeros(dataFileNum,channelNum); + +% phase amplitude analysis +desiredPnt = zeros(dataFileNum,symNum-1,channelNum); +desiredPntIndex = zeros(dataFileNum,symNum-1,channelNum); + +ampEstSymRaw = zeros(dataFileNum,symNum-1,channelNum); +ampEstSymMin = zeros(dataFileNum,channelNum); +ampEstSymMax = zeros(dataFileNum,channelNum); +ampEstSymAvg = zeros(dataFileNum,channelNum); + +angEstSymRaw = zeros(dataFileNum,symNum-1,channelNum); +angEstSymMin = zeros(dataFileNum,channelNum); +angEstSymMax = zeros(dataFileNum,channelNum); +angEstSymAvg = zeros(dataFileNum,channelNum); + +ampEstSymRawList = strings(dataFileNum*(symNum-1)+1,channelNum+1); +ampEstSymRawList(1,:) = ["Amp Raw Value", "ch1", "ch2", "ch3", "ch4"]; + +angEstSymRawList = strings(dataFileNum*(symNum-1)+1,channelNum+1); +angEstSymRawList(1,:) = ["Angle Raw Value", "ch1", "ch2", "ch3", "ch4"]; + +desiredPntIndexList = strings(dataFileNum*(symNum-1)+1,channelNum+1); +desiredPntIndexList(1,:) = ["Chip Index", "ch1", "ch2", "ch3", "ch4"]; + +for data_num = 1:dataFileNum + % read data + rawData = readmatrix(dataFile(data_num)); + disp(dataFile(data_num)); + seqRx(:,1) = (rawData(:, 4) + 1i*rawData(:, 5)).'; + seqRx(:,2) = (rawData(:, 6) + 1i*rawData(:, 7)).'; + seqRx(:,3) = (rawData(:, 8) + 1i*rawData(:, 9)).'; + seqRx(:,4) = (rawData(:,10) + 1i*rawData(:,11)).'; + + % search for frequency shift + for ch_num = 1:channelNum + for freq_num = 1:length(freqRange) + % multiply two symbols with carrier + data_cxr = seqRx(1:2*chipLen*interp,ch_num).*exp(1i*2*pi* ... + freqRange(freq_num)/fs*(0:2*chipLen*interp-1)'); + % convolve multiplied data with pn sequence, without zero-padded results + data_dmf = conv(data_cxr, kron(flip(PRBS7_polar),ones(interp,1)),'valid'); + % peak search + freqDmfPeak(data_num,freq_num) = max(data_dmf(1:end-1)); + end + freqTarget(data_num,ch_num) = freqRange(freqDmfPeak(data_num,:) == max(freqDmfPeak(data_num,:))); + end + + % phase amplitude analysis + for ch_num = 1:channelNum + seqRxCxr = seqRx(:,ch_num).*exp(1i*2*pi*freqTarget(1)/fs*(0:dataLen-1)'); + seqRxCxrCorr = conv(seqRxCxr,kron(flip(PRBS7_polar),ones(interp,1)),'valid'); + seqRxCxrCorrSplit = reshape(seqRxCxrCorr(1:end-1),chipLen*interp, ... + symNum-1); + + desiredPntIndex(data_num,:,ch_num) = find(abs(seqRxCxrCorrSplit) == max(abs(seqRxCxrCorrSplit))) - 1024*(0:symNum-2)'; + desiredPnt(data_num,:,ch_num) = seqRxCxrCorrSplit(abs(seqRxCxrCorrSplit) == max(abs(seqRxCxrCorrSplit))); + + ampEstSymRaw(data_num,:,ch_num) = abs(desiredPnt(data_num,:,ch_num))./abs(desiredPnt(data_num,:,1)); + angEstSymRaw(data_num,:,ch_num) = mod((angle(desiredPnt(data_num,:,ch_num))-angle(desiredPnt(data_num,:,1)))/pi*180,360); + + ampEstSymMin(data_num,ch_num) = min(ampEstSymRaw(data_num,:,ch_num)); + ampEstSymMax(data_num,ch_num) = max(ampEstSymRaw(data_num,:,ch_num)); + ampEstSymAvg(data_num,ch_num) = mean(ampEstSymRaw(data_num,:,ch_num)); + + angEstSymMin(data_num,ch_num) = min(angEstSymRaw(data_num,:,ch_num)); + angEstSymMax(data_num,ch_num) = max(angEstSymRaw(data_num,:,ch_num)); + angEstSymAvg(data_num,ch_num) = mean(angEstSymRaw(data_num,:,ch_num)); + end + + desiredPntIndexList((data_num-1)*(symNum-1)+1+(1:symNum-1),1) = dataFile(data_num); + desiredPntIndexList((data_num-1)*(symNum-1)+1+(1:symNum-1),2:end) = string(desiredPntIndex(data_num,:,:)); + + ampEstSymRawList((data_num-1)*(symNum-1)+1+(1:symNum-1),1) = dataFile(data_num); + ampEstSymRawList((data_num-1)*(symNum-1)+1+(1:symNum-1),2:end) = string(ampEstSymRaw(data_num,:,:)); + + angEstSymRawList((data_num-1)*(symNum-1)+1+(1:symNum-1),1) = dataFile(data_num); + angEstSymRawList((data_num-1)*(symNum-1)+1+(1:symNum-1),2:end) = string(angEstSymRaw(data_num,:,:)); +end + +freqTargetRelative = freqTarget - freqTarget(:,1); + +ampEstSymMaxList = strings(dataFileNum+1,channelNum+1); +ampEstSymMinList = strings(dataFileNum+1,channelNum+1); +ampEstSymAvgList = strings(dataFileNum+1,channelNum+1); +ampEstSymMaxList(1,:) = ["Amp Max Value", "ch1", "ch2", "ch3", "ch4"]; +ampEstSymMinList(1,:) = ["Amp Min Value", "ch1", "ch2", "ch3", "ch4"]; +ampEstSymAvgList(1,:) = ["Amp Avg Value", "ch1", "ch2", "ch3", "ch4"]; +ampEstSymMaxList(2:end,1) = dataFile; +ampEstSymMinList(2:end,1) = dataFile; +ampEstSymAvgList(2:end,1) = dataFile; +ampEstSymMaxList(2:end,2:end) = string(ampEstSymMin); +ampEstSymMinList(2:end,2:end) = string(ampEstSymMax); +ampEstSymAvgList(2:end,2:end) = string(ampEstSymAvg); + +angEstSymMaxList = strings(dataFileNum+1,channelNum+1); +angEstSymMinList = strings(dataFileNum+1,channelNum+1); +angEstSymAvgList = strings(dataFileNum+1,channelNum+1); +angEstSymMaxList(1,:) = ["Angle Max Value", "ch1", "ch2", "ch3", "ch4"]; +angEstSymMinList(1,:) = ["Angle Min Value", "ch1", "ch2", "ch3", "ch4"]; +angEstSymAvgList(1,:) = ["Angle Avg Value", "ch1", "ch2", "ch3", "ch4"]; +angEstSymMaxList(2:end,1) = dataFile; +angEstSymMinList(2:end,1) = dataFile; +angEstSymAvgList(2:end,1) = dataFile; +angEstSymMaxList(2:end,2:end) = string(angEstSymMin); +angEstSymMinList(2:end,2:end) = string(angEstSymMax); +angEstSymAvgList(2:end,2:end) = string(angEstSymAvg); + +%% figures +figure(1); + +subplot(121); +plot(ampEstSymAvg); +legend({"ch1","ch2","ch3","ch4"}); +title("Amplitude Estimation"); +ylim([min(ampEstSymAvg,[],'all')-0.2,max(ampEstSymAvg,[],'all')+0.2]); +grid on; grid minor; + +subplot(122); +plot(angEstSymAvg); +legend({"ch1","ch2","ch3","ch4"}); +title("Angle Estimation"); +ylim([-10,370]); +grid on; grid minor; diff --git a/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/dmfFreqComp.m b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/dmfFreqComp.m new file mode 100755 index 00000000..8ad3dbd6 --- /dev/null +++ b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/dmfFreqComp.m @@ -0,0 +1,196 @@ +%% File Header/文件说明 +% +% Beamforming with phased array derives signal characteristics from phase +% differences between sensors. Therefore the amplitude-phase consistence is +% vital to phased systems. +% +% The script analyzes the amp-phase relations of ILA captured data, the format +% of which is square-shaped pseudorandorm bit sequence. Each channel is +% processed seperately with different frequency shifts and different optimum +% sampling points. The estimation of amplitude and phase are based on +% acculumated correlation peaks. +% +clc; clear; +%% initial parameters/初始参数 +interp = 8; % interpolation factor +channelNum = 4; +dataLen = 8192; +fs = 48e6; +dataFile = [ ... + % "iladata_rx_data_26G_20230509_1445.csv", ... + % "iladata_rx_data_26G_20230509_1715.csv", ... + "iladata_rx_data_26G_20230510_1030.csv", ... + "iladata_rx_data_26G_20230510_1100.csv", ... + "iladata_rx_data_26G_20230510_1115.csv", ... + "iladata_rx_data_26G_20230510_1415_A-1.csv", ... + "iladata_rx_data_26G_20230510_1415_A-2.csv", ... + "iladata_rx_data_26G_20230510_1415_A-3.csv", ... + "iladata_rx_data_26G_20230510_1455_B-1.csv", ... + "iladata_rx_data_26G_20230510_1455_B-2.csv", ... + "iladata_rx_data_26G_20230510_1455_B-3.csv", ... + "iladata_rx_data_26G_20230510_1500_A-1.csv", ... + "iladata_rx_data_26G_20230510_1500_A-2.csv", ... + "iladata_rx_data_26G_20230510_1500_A-3.csv", ... + "iladata_rx_data_26G_20230510_1530_B-1.csv", ... + "iladata_rx_data_26G_20230510_1530_B-2.csv", ... + "iladata_rx_data_26G_20230510_1530_B-3.csv", ... + "iladata_rx_data_26G_20230510_1600_B-1.csv", ... + "iladata_rx_data_26G_20230510_1600_B-2.csv", ... + "iladata_rx_data_26G_20230510_1630_B-1.csv", ... + "iladata_rx_data_26G_20230510_1630_B-2.csv", ... + "iladata_rx_data_26G_20230510_1630_B-3.csv", ... + "iladata_rx_data_26G_20230510_1725_B-1.csv", ... + "iladata_rx_data_26G_20230510_1725_B-2.csv", ... + "iladata_rx_data_26G_20230510_1725_B-3.csv", ... + "iladata_rx_data_26G_20230510_1730_A-1.csv", ... + "iladata_rx_data_26G_20230510_1730_A-2.csv", ... + "iladata_rx_data_26G_20230510_1730_A-3.csv", ... + "iladata_rx_data_26G_20230510_1740_B-1.csv", ... + "iladata_rx_data_26G_20230510_1740_B-2.csv", ... + "iladata_rx_data_26G_20230510_1740_B-3.csv", ... +]; + +dataFileNum = length(dataFile); + +% standard pn sequence +pnSequence = comm.PNSequence('Polynomial','x^7+x^6+1', ... + 'InitialConditions',[zeros(1,6),1],'SamplesPerFrame',2^7-1); +PRBS7 = pnSequence(); +PRBS7_polar = 1-2*[PRBS7;0]; + +chipLen = length(PRBS7_polar); % pn chip length +symNum = dataLen/chipLen/interp; % total symbol number + +%% data analysis + +% search for frequency shift +freqRange = 22000:10:28000; +freqDmfPeak = zeros(dataFileNum,length(freqRange)); +freqTarget = zeros(dataFileNum,channelNum); + +% phase amplitude analysis +desiredPnt = zeros(dataFileNum,symNum-1,channelNum); +desiredPntIndex = zeros(dataFileNum,symNum-1,channelNum); + +ampEstSymRaw = zeros(dataFileNum,symNum-1,channelNum); +ampEstSymMin = zeros(dataFileNum,channelNum); +ampEstSymMax = zeros(dataFileNum,channelNum); +ampEstSymAvg = zeros(dataFileNum,channelNum); + +angEstSymRaw = zeros(dataFileNum,symNum-1,channelNum); +angEstSymMin = zeros(dataFileNum,channelNum); +angEstSymMax = zeros(dataFileNum,channelNum); +angEstSymAvg = zeros(dataFileNum,channelNum); + +ampEstSymRawList = strings(dataFileNum*(symNum-1)+1,channelNum+1); +ampEstSymRawList(1,:) = ["Amp Raw Value", "ch1", "ch2", "ch3", "ch4"]; + +angEstSymRawList = strings(dataFileNum*(symNum-1)+1,channelNum+1); +angEstSymRawList(1,:) = ["Angle Raw Value", "ch1", "ch2", "ch3", "ch4"]; + +desiredPntIndexList = strings(dataFileNum*(symNum-1)+1,channelNum+1); +desiredPntIndexList(1,:) = ["Chip Index", "ch1", "ch2", "ch3", "ch4"]; + +for data_num = 1:dataFileNum + % read data + rawData = readmatrix(dataFile(data_num)); + disp(dataFile(data_num)); + seqRx(:,1) = (rawData(:, 4) + 1i*rawData(:, 5)).'; + seqRx(:,2) = (rawData(:, 6) + 1i*rawData(:, 7)).'; + seqRx(:,3) = (rawData(:, 8) + 1i*rawData(:, 9)).'; + seqRx(:,4) = (rawData(:,10) + 1i*rawData(:,11)).'; + + % search for frequency shift + for ch_num = 1:channelNum + for freq_num = 1:length(freqRange) + % multiply two symbols with carrier + data_cxr = seqRx(1:2*chipLen*interp,ch_num).*exp(1i*2*pi* ... + freqRange(freq_num)/fs*(0:2*chipLen*interp-1)'); + % convolve multiplied data with pn sequence, without zero-padded results + data_dmf = conv(data_cxr, kron(flip(PRBS7_polar),ones(interp,1)),'valid'); + % peak search + freqDmfPeak(data_num,freq_num) = max(data_dmf(1:end-1)); + end + freqTarget(data_num,ch_num) = freqRange(freqDmfPeak(data_num,:) == ... + max(freqDmfPeak(data_num,:))); + end + + % phase amplitude analysis + for ch_num = 1:channelNum + seqRxCxr = seqRx(:,ch_num).*exp(1i*2*pi*freqTarget(1)/fs*(0:dataLen-1)'); + seqRxCxrCorr = conv(seqRxCxr,kron(flip(PRBS7_polar),ones(interp,1)),'valid'); + seqRxCxrCorrSplit = reshape(seqRxCxrCorr(1:end-1),chipLen*interp, ... + symNum-1); + + desiredPntIndex(data_num,:,ch_num) = find(abs(seqRxCxrCorrSplit) == ... + max(abs(seqRxCxrCorrSplit))) - 1024*(0:symNum-2)'; + desiredPnt(data_num,:,ch_num) = seqRxCxrCorrSplit(abs(seqRxCxrCorrSplit) == ... + max(abs(seqRxCxrCorrSplit))); + + ampEstSymRaw(data_num,:,ch_num) = abs(desiredPnt(data_num,:,ch_num))./abs(desiredPnt(data_num,:,1)); + angEstSymRaw(data_num,:,ch_num) = mod((angle(desiredPnt(data_num,:,ch_num))-angle(desiredPnt(data_num,:,1)))/pi*180,360); + + ampEstSymMin(data_num,ch_num) = min(ampEstSymRaw(data_num,:,ch_num)); + ampEstSymMax(data_num,ch_num) = max(ampEstSymRaw(data_num,:,ch_num)); + ampEstSymAvg(data_num,ch_num) = mean(ampEstSymRaw(data_num,:,ch_num)); + + angEstSymMin(data_num,ch_num) = min(angEstSymRaw(data_num,:,ch_num)); + angEstSymMax(data_num,ch_num) = max(angEstSymRaw(data_num,:,ch_num)); + angEstSymAvg(data_num,ch_num) = mean(angEstSymRaw(data_num,:,ch_num)); + end + + desiredPntIndexList((data_num-1)*(symNum-1)+1+(1:symNum-1),1) = dataFile(data_num); + desiredPntIndexList((data_num-1)*(symNum-1)+1+(1:symNum-1),2:end) = string(desiredPntIndex(data_num,:,:)); + + ampEstSymRawList((data_num-1)*(symNum-1)+1+(1:symNum-1),1) = dataFile(data_num); + ampEstSymRawList((data_num-1)*(symNum-1)+1+(1:symNum-1),2:end) = string(ampEstSymRaw(data_num,:,:)); + + angEstSymRawList((data_num-1)*(symNum-1)+1+(1:symNum-1),1) = dataFile(data_num); + angEstSymRawList((data_num-1)*(symNum-1)+1+(1:symNum-1),2:end) = string(angEstSymRaw(data_num,:,:)); +end + +freqTargetRelative = freqTarget - freqTarget(:,1); +maxDesiredPointIndexDiff = max(abs(desiredPntIndex-(desiredPntIndex(:,:,1))),[],"all"); + +ampEstSymMaxList = strings(dataFileNum+1,channelNum+1); +ampEstSymMinList = strings(dataFileNum+1,channelNum+1); +ampEstSymAvgList = strings(dataFileNum+1,channelNum+1); +ampEstSymMaxList(1,:) = ["Amp Max Value", "ch1", "ch2", "ch3", "ch4"]; +ampEstSymMinList(1,:) = ["Amp Min Value", "ch1", "ch2", "ch3", "ch4"]; +ampEstSymAvgList(1,:) = ["Amp Avg Value", "ch1", "ch2", "ch3", "ch4"]; +ampEstSymMaxList(2:end,1) = dataFile; +ampEstSymMinList(2:end,1) = dataFile; +ampEstSymAvgList(2:end,1) = dataFile; +ampEstSymMaxList(2:end,2:end) = string(ampEstSymMin); +ampEstSymMinList(2:end,2:end) = string(ampEstSymMax); +ampEstSymAvgList(2:end,2:end) = string(ampEstSymAvg); + +angEstSymMaxList = strings(dataFileNum+1,channelNum+1); +angEstSymMinList = strings(dataFileNum+1,channelNum+1); +angEstSymAvgList = strings(dataFileNum+1,channelNum+1); +angEstSymMaxList(1,:) = ["Angle Max Value", "ch1", "ch2", "ch3", "ch4"]; +angEstSymMinList(1,:) = ["Angle Min Value", "ch1", "ch2", "ch3", "ch4"]; +angEstSymAvgList(1,:) = ["Angle Avg Value", "ch1", "ch2", "ch3", "ch4"]; +angEstSymMaxList(2:end,1) = dataFile; +angEstSymMinList(2:end,1) = dataFile; +angEstSymAvgList(2:end,1) = dataFile; +angEstSymMaxList(2:end,2:end) = string(angEstSymMin); +angEstSymMinList(2:end,2:end) = string(angEstSymMax); +angEstSymAvgList(2:end,2:end) = string(angEstSymAvg); + +%% figures +figure(1); + +subplot(121); +plot(ampEstSymAvg); +legend({"ch1","ch2","ch3","ch4"}); +title("Amplitude Estimation"); +ylim([min(ampEstSymAvg,[],'all')-0.2,max(ampEstSymAvg,[],'all')+0.2]); +grid on; grid minor; + +subplot(122); +plot(angEstSymAvg); +legend({"ch1","ch2","ch3","ch4"}); +title("Angle Estimation"); +ylim([-10,370]); +grid on; grid minor; diff --git a/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230509_1445.csv b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230509_1445.csv new file mode 100755 index 00000000..425e8380 --- /dev/null +++ b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230509_1445.csv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c5e3b87d9bdbe5f5e7a4065e862fdce8235aed8704a59b57821aebdf5491eee +size 419066 diff --git a/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230509_1715.csv b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230509_1715.csv new file mode 100755 index 00000000..a5d69de2 --- /dev/null +++ b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230509_1715.csv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c9991f0e8e706e3b01edd2fab962702362aab5db43d3ee4135bf3ecfc498293 +size 418898 diff --git a/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1030.csv b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1030.csv new file mode 100755 index 00000000..ee985a4c --- /dev/null +++ b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1030.csv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af350681a5b99fc16697d79b95cf9b5aa1c0bcba0224742424d989a16775c5ee +size 419975 diff --git a/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1100.csv b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1100.csv new file mode 100755 index 00000000..20261966 --- /dev/null +++ b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1100.csv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:466c2043c54790ffa08b27666beb2892beca825bef7a15a6eb66bf6ada89440b +size 419547 diff --git a/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1115.csv b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1115.csv new file mode 100755 index 00000000..47b5635f --- /dev/null +++ b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1115.csv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a59f59185a42a7ba33b17e478ff1abeae2e44715d4c83250d13ada9c1fc6ba96 +size 419661 diff --git a/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1415_A-1.csv b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1415_A-1.csv new file mode 100755 index 00000000..8f6cc8e9 --- /dev/null +++ b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1415_A-1.csv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17ee4e96ca52aca8ef6de96a65d6f387eac65c6729fd06da24dd168ca136a824 +size 484787 diff --git a/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1415_A-2.csv b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1415_A-2.csv new file mode 100755 index 00000000..51adb42b --- /dev/null +++ b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1415_A-2.csv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a2552bc412e891a6a61023b62ac2f5d06c3c396c200059d10dcc86c42ee7c0b +size 484433 diff --git a/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1415_A-3.csv b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1415_A-3.csv new file mode 100755 index 00000000..dfa34847 --- /dev/null +++ b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1415_A-3.csv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe6627b083a17d42d3b8baf126b249eb4beea8d27833c51a093c99dc51b4be6a +size 485276 diff --git a/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1455_B-1.csv b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1455_B-1.csv new file mode 100755 index 00000000..b717a7cd --- /dev/null +++ b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1455_B-1.csv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b0608a5c70d7b601ed603c3c1e4956dcfb61363506326d881985b2ff5d71504 +size 484526 diff --git a/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1455_B-2.csv b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1455_B-2.csv new file mode 100755 index 00000000..02e7e08b --- /dev/null +++ b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1455_B-2.csv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39e5edaeeecd1435a28c7c53ffc7b4dc21ab5d15c6c2a8c3daff8b904fe18018 +size 484536 diff --git a/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1455_B-3.csv b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1455_B-3.csv new file mode 100755 index 00000000..b7e664d8 --- /dev/null +++ b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1455_B-3.csv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8aca0f3a4b701511d2e3c7ea95c74ede064ef47929a8c1bec22055d118bd0149 +size 484431 diff --git a/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1500_A-1.csv b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1500_A-1.csv new file mode 100755 index 00000000..19082471 --- /dev/null +++ b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1500_A-1.csv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:99072df1b10b1d54d246d58e8f37029fe53d90ad15be51811768f1e2cc44667b +size 484364 diff --git a/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1500_A-2.csv b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1500_A-2.csv new file mode 100755 index 00000000..9bf90b0e --- /dev/null +++ b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1500_A-2.csv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:641c507179f5ea4bdb3c8d6cb86dc0123f64e3fde0a47b4ddf3daa245fa62309 +size 485168 diff --git a/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1500_A-3.csv b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1500_A-3.csv new file mode 100755 index 00000000..fc2612c5 --- /dev/null +++ b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1500_A-3.csv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:953cab3446586e1d7f872e0cb5c54da49f9519157dd7f5a1ed9b703836055165 +size 484462 diff --git a/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1530_B-1.csv b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1530_B-1.csv new file mode 100755 index 00000000..6ee26e59 --- /dev/null +++ b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1530_B-1.csv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:016e73aa5e691a7b0e99ad58447738c01c858871ebe46fbb148fcc77b1e0cedd +size 484872 diff --git a/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1530_B-2.csv b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1530_B-2.csv new file mode 100755 index 00000000..cff7eb2a --- /dev/null +++ b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1530_B-2.csv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f885a483ffbfc59a6da656133851f41b07e5db96b5bba0d2a369817748310578 +size 484908 diff --git a/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1530_B-3.csv b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1530_B-3.csv new file mode 100755 index 00000000..84a107a0 --- /dev/null +++ b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1530_B-3.csv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aaec38beef9ab7be7c7407e6d6ba032b2fb2fc5f8b893c948c5a2684b8665813 +size 484113 diff --git a/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1600_B-1.csv b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1600_B-1.csv new file mode 100755 index 00000000..c3a7e664 --- /dev/null +++ b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1600_B-1.csv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98b59114916e8dfc63b43910100312bd51c13f38ef1f4d8c676eccdbfb336de4 +size 484924 diff --git a/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1600_B-2.csv b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1600_B-2.csv new file mode 100755 index 00000000..3440f1cf --- /dev/null +++ b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1600_B-2.csv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe523216216fac3026be14431c7c90b9f8548fc29ee055f759aac3584250f799 +size 485237 diff --git a/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1630_B-1.csv b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1630_B-1.csv new file mode 100755 index 00000000..b8c5dcb8 --- /dev/null +++ b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1630_B-1.csv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d3885d9ba0d2d590b046ac5e05f74decfbec300f681412054b7ef8bb5dfb2ce +size 484442 diff --git a/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1630_B-2.csv b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1630_B-2.csv new file mode 100755 index 00000000..2a5b8fbf --- /dev/null +++ b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1630_B-2.csv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0056e84004f66d73ad59ee9d637e1e145181c297d159b1bea2c0b6829042fb72 +size 485012 diff --git a/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1630_B-3.csv b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1630_B-3.csv new file mode 100755 index 00000000..f0c38d2e --- /dev/null +++ b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1630_B-3.csv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25bd83f9fb20c77578f98454bf7a9c60d4bbfab56128a93ee97afd7decf4058d +size 484552 diff --git a/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1725_B-1.csv b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1725_B-1.csv new file mode 100755 index 00000000..fbe1bc18 --- /dev/null +++ b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1725_B-1.csv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e35619de73163327886f1425d76c9953e5b6d442edcb04a948be6b0fc6075eb7 +size 485434 diff --git a/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1725_B-2.csv b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1725_B-2.csv new file mode 100755 index 00000000..417eae88 --- /dev/null +++ b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1725_B-2.csv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07842f6b506cb466b762963510e3558fe59affd64c4456c48e995fa9298c9bb3 +size 484719 diff --git a/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1725_B-3.csv b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1725_B-3.csv new file mode 100755 index 00000000..0411de60 --- /dev/null +++ b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1725_B-3.csv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:738a08d6f6dd880f770d02c4b8c137988b59a2e98137ddddc18f8f924db67c79 +size 484907 diff --git a/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1730_A-1.csv b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1730_A-1.csv new file mode 100755 index 00000000..2ab1f579 --- /dev/null +++ b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1730_A-1.csv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9dbfdfb7becade394ce8a044d5c57b3a83e8a474f5c4110be7ca601b4171e74b +size 484807 diff --git a/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1730_A-2.csv b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1730_A-2.csv new file mode 100755 index 00000000..84aae7f5 --- /dev/null +++ b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1730_A-2.csv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3dac0aa7c8ccf00b8acddd6180940920cf1643593860fe70f0a0ecb21408206d +size 484253 diff --git a/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1730_A-3.csv b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1730_A-3.csv new file mode 100755 index 00000000..a79ef3a2 --- /dev/null +++ b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1730_A-3.csv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b681ce78707b9a8201e47725dd3703c7675c6051535ca07dfa945703d557e016 +size 484347 diff --git a/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1740_B-1.csv b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1740_B-1.csv new file mode 100755 index 00000000..26f15b87 --- /dev/null +++ b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1740_B-1.csv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b96c63b3c8bcdfffc42e1860a1233c78c76a045e5ceec312a2ed75df1349217f +size 484197 diff --git a/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1740_B-2.csv b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1740_B-2.csv new file mode 100755 index 00000000..de11723d --- /dev/null +++ b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1740_B-2.csv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b90b9d3e15c65e1cd3307faef2d1f9b0f74a03b9da1992785574d5c53aeb2117 +size 485032 diff --git a/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1740_B-3.csv b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1740_B-3.csv new file mode 100755 index 00000000..bb0373f6 --- /dev/null +++ b/projects/duifei/duifei_online_acq_par/data/20230510-暗室采集校准信号/iladata_rx_data_26G_20230510_1740_B-3.csv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60c5c70f96bc8290eb4cfd9ea06f62fece22038a8dfb6ef2462f8ff4390e02a2 +size 484408 diff --git a/projects/duifei/duifei_online_acq_par/project.tcl b/projects/duifei/duifei_online_acq_par/project.tcl index 85c46552..6adc1b6c 100644 --- a/projects/duifei/duifei_online_acq_par/project.tcl +++ b/projects/duifei/duifei_online_acq_par/project.tcl @@ -3,7 +3,7 @@ # # project.tcl: Tcl script for re-creating project 'project' # -# Generated by Vivado on Wed May 10 18:48:33 CST 2023 +# Generated by Vivado on Thu May 11 09:23:36 CST 2023 # IP Build 2633630 on Wed Sep 4 12:30:14 MDT 2019 # # This file contains the Vivado Tcl commands for re-creating the project to the state*