IEEE.org     |     IEEE Xplore Digital Library     |     IEEE Standards     |     IEEE Spectrum     |     More Sites

Commit 81322240 authored by Martin Hudlicka's avatar Martin Hudlicka Committed by Joshua Gay
Browse files

Editorial changes, new files

parent ecd9319b
This open source repository contains material that may be included-in or referenced by the IEEE document “1765™ Recommended Practice for Estimating the Uncertainty in Error Vector Magnitude of Measured Digitally Modulated Signals for Wireless Communications.” For further details see
This open source repository contains material that may be included in, or referenced by, the IEEE document “1765™ Recommended Practice for Estimating the Uncertainty in Error Vector Magnitude of Measured Digitally Modulated Signals for Wireless Communications.” For further details see
https://standards.ieee.org/develop/project/1765.html
The repository contains both normative and informative files, as summarized at the end of this document. The normative files relate to specific methods outline in IEEE P1765 and may not be altered if used in conjunction with the best practices outlined in P1765.” The folders in the repository are organized as follows:
The repository contains both normative and informative files, as summarized at the end of this document. The normative files relate to specific methods outlined in IEEE P1765 and may not be altered if used in conjunction with the best practices outlined in P1765.” The folders in the repository are organized as follows
**01 ReadMe**
**01 Overview**
This folder contains basic information about the folders structure.
**02 P1765 Reference Waveforms**
This folder contains the IEEE P1765 Reference Waveforms for the use with the P1765 Baseline EVM Algorithm. Both single-carrier and OFDM P1765 Reference Waveforms are included, along with a description of impairments.
This folder contains the IEEE P1765 Reference Waveforms for the use with the P1765 Baseline EVM Algorithm. Both P1765 Reference Waveforms for the single-carrier and OFDM modulation schemes are included.
Also included are graphs of the filter responses used for pulse-shaping and match filtering of the waveforms and the resulting constellation diagrams. Currently P1765 Reference Waveforms for single-carrier modulation scheme are included. In the future, OFDM reference waveform files will be added.
The P1765 Reference Waveforms have been developed to simulate both low- and high-EVM scenarios and various deterministic effects in order to assess the User-receiver in the characterization of these various impairments. EVM values are calculated with the standardized Baseline EVM Algorithm in an attempt to limit the assessment of the measurement to hardware effects only. The goal is to assess distortion introduced into the measurement by the receiver hardware.
The P1765 Reference Waveforms have been developed to simulate both low- and high-EVM scenarios and various deterministic effects in order to assess the User-Receiver in the characterization of these various impairments. EVM values are calculated with the standardized Baseline EVM Algorithm in an attempt to limit the assessment of the measurement to hardware effects only. The goal is to assess distortion introduced into the measurement by the receiver hardware.
**03 P1765 Baseline EVM Algorithm**
This folder contains an overview and source files for the P1765 Baseline EVM Algorithm which are intended to support the P1765 Recommended Practice. Both single-carrier and OFDM Baseline EVM Algorithms are included.
**03 P1765 Baseline EVM Algorithms**
This folder contains an overview and source files for the P1765 Baseline EVM Algorithm, which are intended to support the P1765 Recommended Practice. Both single-carrier and OFDM Baseline EVM Algorithms are included.
The codes are written in Matlab (later also GNU Octave), which represent a high-level language which is widely used and can be easily converted into other languages.
The codes are written in Matlab (later also GNU Octave), which represents a high-level language that is widely used and can be easily converted into other languages.
The goal of the P1765 Baseline EVM Algorithm approach is to compute the EVM between two symbol sequences, where at least one of these sequences is derived from measurement. The result is an evaluation of the acquisition performance of the receiver’s hardware, as opposed to an evaluation of its ability to best decode the data carried by the signal. Thus, the P1765 Baseline EVM Algorithm compares the two symbol sequences at the intended constellation points and specified symbol-sampling times and does not attempt to correct for other impairments that may be present in the measured signal, such as frequency offset or I/Q imbalance. This allows an assessment of the “raw” hardware performance of a receiver before other impairments are corrected for by signal-processing techniques.
The goal of the P1765 Baseline EVM Algorithm approach is to compute the EVM between two symbol sequences, where at least one of these sequences is derived from measurement. The result is an evaluation of the acquisition performance of the receiver’s hardware, as opposed to an evaluation of its ability to best decode the data carried by the signal. Thus, the P1765 Baseline EVM Algorithm compares the two symbol sequences at the intended constellation points and specified symbol-sampling times and does not attempt to correct for other impairments that may be present in the measured signal, such as frequency offset or I/Q imbalance. This allows an assessment of the “raw” hardware performance of a receiver before other impairments are corrected for by signal processing techniques.
**04 Additions to the Baseline EVM Algorithm**
This folder contains additions to the P1765 Baseline EVM Algorithm. Currently it contains the Baseline OFDM EVM Algorithm with Equalization and will be further updated in the future.
This folder contains additions to the P1765 Baseline EVM Algorithm. Currently, it contains the EVM Algorithm with Equalization, the Baseline EVM Algorithm with Alternate Time-Domain Alignment, and additional calculation function of NPR and NMSE after processing with the Baseline OFDM Algorithm.
**05 How_to_Contribute**
This folder contains information on how to contribute to the P1765 standard or the source codes / waveform files contained in this repository. Contributions will be evaluated and approved by Working Group members prior to being posted.
**06 License_Files**
This folder contains the license file which must be included with the source files should they be used for other purposes.
This folder contains the license file that must be included with the source files should they be used for other purposes.
**07 Old_Versions**
This folder contains older versions of the source codes when they are replaced by their updated versions.
......@@ -39,13 +39,14 @@ The following table summarizes the files/directories that are considered as norm
|Main directory | Subdirectory (file) | Normative | Informative |
|-|-|:-:|:-:|
|01 Overview | | |X |
|01 Overview |\Overview.md | |X |
|02 P1765 Reference Waveforms |\OFDM\Baseband | X | |
| |\OFDM\EVM Calculation Results| | X |
| |\Single_Carrier\Baseband| X | |
| |\Single_Carrier\EVM Calculation Results | | X |
| |\Single_Carrier\Match filtered | X | |
| |\Single_Carrier\RF | X | |
| |\Single_Carrier\Single-Carrier Reference Waveforms.pdf| | X |
|03 P1765 Baseline EVM Algorithms |\OFDM\Example EVM Results MATLAB2012b | | X |
| |\OFDM\Example EVM Results MATLAB2020a | | X |
| |\OFDM\Example EVM Results Octave6.3.0 | | X |
......@@ -59,15 +60,15 @@ The following table summarizes the files/directories that are considered as norm
| |\Single_Carrier (all *.m files) | X | |
| |\Single_Carrier\help_file_single_carrier.pdf | | X |
| |\Single_Carrier\p1765_code_structure_singleCarrier_v2021.06.28.pdf | | X |
|04 Additions to the Baseline EVM Algorithm | \OFDM NPR EVM NMSE | X | |
| |\OFDM with equalization | X | |
|04 Additions to the Baseline EVM Algorithm | \OFDM NPR EVM NMSE (all *.m files) | X | |
| |\OFDM with equalization (all *.m files)| X | |
| |\Time Domain Alignment for Single Carrier (all *.m files) | X | |
| |\Time Domain Alignment for Single Carrier\EVM Calculation Results | | X |
| |\Time Domain Alignment for Single Carrier\Example EVM Results MATLAB2012b | | X |
| |\Time Domain Alignment for Single Carrier\Example EVM Results MATLAB2020a | | X |
| |\Time Domain Alignment for Single Carrier\Example EVM Results Octave6.3.0 | | X |
| 05 How_to_Contribute | | | X |
| 06 License_Files | | | X |
| 05 How_to_Contribute |\CONTRIBUTING.md | | X |
| 06 License_Files |\LICENSE.md | | X |
| 07 Old_Versions | | | X |
All material in this repository is subject to change. The material in this repository is presented "as is" and with all faults. Use of the material is at the sole risk of the user. IEEE specifically disclaims all warranties and representations with respect to all material.
......
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Full bandpass filtering code (user distributable)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Copyright 2021 IEEE P1765 Authors
%
% * Redistribution and use in source and binary forms, with or without modification,
% are permitted provided that the following conditions are met:
%
% * Redistributions of source code must retain the above copyright notice,
% this list of conditions and the following disclaimer.
%
% * Redistributions in binary form must reproduce the above copyright notice,
% this list of conditions and the following disclaimer in the documentation
% and/or other materials provided with the distribution.
%
% * Neither the name of the copyright holder nor the names of its contributors
% may be used to endorse or promote products derived from this software without
% specific prior written permission.
%
% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
% AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
% THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
% ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
% LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
% DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
% SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
% CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
% OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
% USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%
% SPDX-License-Identifier: BSD-3-Clause
%
% See the LICENSE file distributed with this work for copyright and licensing
% information, the AUTHORS file for a list of copyright holders, and the
% CONTRIBUTORS file for the list of contributors.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% This function implements the preprocessing step of bandpass filtering and
% works with the code PreProcessing_Main_BandpassFilter for demonstration.
% It is not a part of the IEEE P1765 Baseline EVM Algorithm.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Authors:
% Christopher P. Silva - Original code Version 04.30.2021
% Paritosh Manurkar - Modularization of the code into a main program and subroutines Version 12.28.2021
function distSig_rf = PreProcessing_F_BandpassFilter(distSigSpec_RF,params)
sigSize_rf = length(distSigSpec_RF);
bw_mod = (1 + params.rolloff)*params.fsym; % Modulation bandwidth (GHz)
% Constructing/applying full bandpass filter for measured RF waveform (with guard bands)
dc_index = round(sigSize_rf/2) + 1;
ncarr_index = dc_index - (params.fcarr/params.df1); % Index of negative carrier frequency (= integer by assumption)
pcarr_index = dc_index + (params.fcarr/params.df1); % Index of positive carrier frequency (= integer by assumption)
bp_tones = 2*round(bw_mod/params.df1) + 1; % Odd integer number of tones covering bandpass bandwidth
% with guard bands [size about round(bw_mod/2) each] included
zib = zeros(1,sigSize_rf - 2*ncarr_index - bp_tones + 1); % Inner zero part of bandpass filter
zob = zeros(1,ncarr_index - ((bp_tones + 1)/2)); % Outer zero part of bandpass filter
Hbp = [zob ones(1,bp_tones) zib ones(1,bp_tones) zob]; % Full bandpass filter of BW bw_mod
% + guard bands around +/- fcarr
distSigSpecBP_RF = distSigSpec_RF.*Hbp; % Bandpass filtered RF classical spectrum
distSigFreqBP_RF = fftshift(distSigSpecBP_RF); % Bandpass filtered RF MATLAB DFT spectrum
distSig_rf = ifft(distSigFreqBP_RF); % Bandpass filtered RF time-domain waveform
end
\ No newline at end of file
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Resampling code (user distributable)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Copyright 2021 IEEE P1765 Authors
%
% * Redistribution and use in source and binary forms, with or without modification,
% are permitted provided that the following conditions are met:
%
% * Redistributions of source code must retain the above copyright notice,
% this list of conditions and the following disclaimer.
%
% * Redistributions in binary form must reproduce the above copyright notice,
% this list of conditions and the following disclaimer in the documentation
% and/or other materials provided with the distribution.
%
% * Neither the name of the copyright holder nor the names of its contributors
% may be used to endorse or promote products derived from this software without
% specific prior written permission.
%
% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
% AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
% THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
% ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
% LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
% DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
% SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
% CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
% OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
% USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%
% SPDX-License-Identifier: BSD-3-Clause
%
% See the LICENSE file distributed with this work for copyright and licensing
% information, the AUTHORS file for a list of copyright holders, and the
% CONTRIBUTORS file for the list of contributors.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% This function implements the preprocessing step of resampling and works
% with the code PreProcessing_Main_Resample for demonstration.
% It is not a part of the IEEE P1765 Baseline EVM Algorithm.
% Refer to Section: Resample the Measured Signal in the IEEE P1765 document.
%
% The resampling is based on the MATLAB's in-built 1-D interpolation
% function called interpft. The input argument is transformed into Fourier
% domain using fft and then converted back with more points.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Authors:
% Christopher P. Silva - Original code Version 04.30.2021
% Paritosh Manurkar - Modularization of the code into a main program and subroutines Version 12.28.2021
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function distSig_resampled = PreProcessing_F_Resample(distSig,numSamp)
sigSize = length(distSig);
if sigSize ~= numSamp
distSig_resampled = interpft(distSig,numSamp);
else
distSig_resampled = distSig;
end
end
\ No newline at end of file
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Full bandpass filtering code (user distributable)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Copyright 2021 IEEE P1765 Authors
%
% * Redistribution and use in source and binary forms, with or without modification,
% are permitted provided that the following conditions are met:
%
% * Redistributions of source code must retain the above copyright notice,
% this list of conditions and the following disclaimer.
%
% * Redistributions in binary form must reproduce the above copyright notice,
% this list of conditions and the following disclaimer in the documentation
% and/or other materials provided with the distribution.
%
% * Neither the name of the copyright holder nor the names of its contributors
% may be used to endorse or promote products derived from this software without
% specific prior written permission.
%
% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
% AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
% THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
% ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
% LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
% DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
% SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
% CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
% OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
% USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%
% SPDX-License-Identifier: BSD-3-Clause
%
% See the LICENSE file distributed with this work for copyright and licensing
% information, the AUTHORS file for a list of copyright holders, and the
% CONTRIBUTORS file for the list of contributors.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% This code is implementing the preprocessing step of bandpass filtering and
% is not a part of the IEEE P1765 Baseline EVM Algorithm.
% Here, we present a method to bandpass filter a measured RF signal in
% either time or frequency domain.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Authors:
% Christopher P. Silva - Original code Version 04.30.2021
% Paritosh Manurkar - Modularization of the code into a main program and subroutines Version 12.28.2021
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear; close all; clc;
%% Read Basic Communication Parameters
% Set the fcarr value to the carrier frequency used for the measurement file
% If the measurement is performed at 44 GHz, fcarr needs to be set as 44 GHz.
params = F_Basic_Communication_Parameters();
%% Ask for file input
[fname,path] = uigetfile('*.txt','Select the MEASUREMENT file');
file = fullfile(path,fname);
%% Time-domain case:
distSig_RF = dlmread(file, '\t').'; % Read in ASCII RF Reference Signal Waveform file
distSigFreq_RF = fft(distSig_RF);
distSigSpec_RF = fftshift(distSigFreq_RF); % Classical RF spectrum for bandpass filtering
%% Frequency-domain case:
% A = dlmread(file, '\t');
% freq = transpose(A(:,1));
% wfm = transpose(A(:,2) + A(:,3)*1i);
% dbout(sprintf('Frequency-domain input spectrum has %g points', length(freq)));
% oversampled_timeaxis = 0:params.dtns_exact:params.tenv-params.dtns_exact;
% distSig_RF = zeros(1,length(oversampled_timeaxis));
% for ii=1:length(freq)
% distSig_RF(1,:)=distSig_RF(1,:)+abs(wfm(ii))*cos(2*pi*freq(ii)*oversampled_timeaxis+angle(wfm(ii)));
% end
% distSigFreq_RF = fft(distSig_RF);
% distSigSpec_RF = fftshift(distSigFreq_RF); % Classical RF spectrum for bandpass filtering
%% Extract the file extension for default filenaming convention
[~,~,ext] = fileparts(fname);
%% Perform full bandpass fltering
distSig_rf = PreProcessing_F_BandpassFilter(distSigSpec_RF,params);
%% Save bandpass filtered time-domain waveform
% Replace the filename extenstion with elaborate filename to signify downsampling plus extension
stri = fullfile(path,strcat(fname(1:end-length(ext)),'_fullBPF.txt'));
dlmwrite(stri,distSig_rf.','newline','pc','precision','%8f');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Resampling code (user distributable)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Copyright 2021 IEEE P1765 Authors
%
% * Redistribution and use in source and binary forms, with or without modification,
% are permitted provided that the following conditions are met:
%
% * Redistributions of source code must retain the above copyright notice,
% this list of conditions and the following disclaimer.
%
% * Redistributions in binary form must reproduce the above copyright notice,
% this list of conditions and the following disclaimer in the documentation
% and/or other materials provided with the distribution.
%
% * Neither the name of the copyright holder nor the names of its contributors
% may be used to endorse or promote products derived from this software without
% specific prior written permission.
%
% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
% AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
% THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
% ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
% LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
% DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
% SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
% CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
% OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
% USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%
% SPDX-License-Identifier: BSD-3-Clause
%
% See the LICENSE file distributed with this work for copyright and licensing
% information, the AUTHORS file for a list of copyright holders, and the
% CONTRIBUTORS file for the list of contributors.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% This code is implementing the preprocessing step of resampling and is
% not a part of the IEEE P1765 Baseline EVM Algorithm.
% Refer to Section: Resample the Measured Signal in the IEEE P1765 document.
% Here, we present a method to perform resampling on a measured baseband or
% RF time-domain waveform.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Authors:
% Christopher P. Silva - Original code Version 04.30.2021
% Paritosh Manurkar - Modularization of the code into a main program and subroutines Version 12.28.2021
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear; close all; clc;
%% Read Basic Communication Parameters
params = F_Basic_Communication_Parameters();
%% Ask for file input
% Read in input ASCII Waveform file. It can be either RF or baseband.
% txt file not supplied
[fname,path] = uigetfile([pwd,'\measured_signal.txt'],'Select the RF/baseband signal text file');
file = fullfile(path,fname);
distSig = transpose(dlmread(file));
% Extract the file extension for default filenaming convention
[~,~,ext] = fileparts(fname);
% Perform resampling
distSig_resampled = PreProcessing_F_Resample(distSig,params.numSamp);
% Save resampled time-domain waveform
% Replace the filename extenstion with elaborate filename to signify resampling plus extension
stri = fullfile(path,strcat(fname(1:end-length(ext)),'_resampled.txt'));
dlmwrite(stri,distSig_resampled.','newline','pc','precision','%8f');
The P1765 Baseline EVM Algorithm and the P1765 OFDM Baseline EVM Algorithm, on the other hand, are intended to reveal receiver-hardware impairments. Thus, these algorithms only perform the minimum signal processing necessary to determine the receiver’s EVM so as not to obscure any of the hardware impairments in the receiver.
The P1765 Baseline EVM Algorithm and the P1765 OFDM Baseline EVM Algorithm are intended to reveal receiver-hardware impairments. Thus, these algorithms only perform the minimum signal processing necessary to determine the receiver’s EVM so as not to obscure any of the hardware impairments in the receiver.
However, in many situations it may be useful to separately examine the impact that various software corrections have on the receiver’s performance. Algorithms designed to apply additional corrections not found in the P1765 Baseline EVM Algorithm or the P1765 OFDM Baseline Algorithm should adhere to the naming convention: Baseline EVM Algorithm with XYZ or OFDM Baseline Algorithm with XYZ, where XYZ is a descriptive phrase such as “Frequency Offset Correction” or “I/Q Imbalance Correction.
However, in many situations it may be useful to separately examine the impact that various software corrections have on the receiver’s performance. Algorithms designed to apply additional corrections not found in the P1765 Baseline EVM Algorithm or the P1765 OFDM Baseline Algorithm should adhere to the naming convention: Baseline EVM Algorithm with XYZ or OFDM Baseline Algorithm with XYZ, where XYZ is a descriptive phrase such as “Frequency Offset Correction” or “I/Q Imbalance Correction.
For the Baseline EVM Algorithm with Alternate Time Alignment, see Section 9.1.1 of the P1765 Draft document.
For the Baseline EVM Algorithm with Alternate Time-Domain Alignment, see Section 9.1 of the P1765 Draft document.
For the OFDM Baseline EVM Algorithm with Equalization, see Section 9.1.2 of the P1765 Draft document.
\ No newline at end of file
For the OFDM Baseline EVM Algorithm with Equalization, see Section 9.2 of the P1765 Draft document.
\ No newline at end of file
function F_Save_Results_TimeDomainAlignment(EVMrms_pct, tau0, G_OPT)
function F_Save_Results_TimeDomainAlignment(EVMrms_pct, tau0, rxTotalAngle, G_OPT)
%
% Copyright 2021 IEEE P1765 Authors
%
......@@ -41,16 +41,13 @@ function F_Save_Results_TimeDomainAlignment(EVMrms_pct, tau0, G_OPT)
% This function saves the outputs from the time-domain alignment case
% EVMrms_pct: Baseline rms EVM in percent
% tau0: Optimal time delay before same sampling/calculation
% rxTotalAngle: Total DC Phase (deg) applied to received waveform before symbol sampling/calculation
% G_OPT: Optimal complex gain / normalization factor for symbol samples
% (saved as absolute and phase parts)
%
% It also saves the extra outputs in the same file for users
% rxSigAve: Received signal average value
% optTolerance: Absolute tolerance determined for iterative delay calculation convergence (ns)
% iterindx: Number of iterations for optimal delay loop convergence (= 10000 if convergence fails)
% G_0: Optimal complex gain to be applied before symbol sampling/EVM calculation saved as
% G_0amp: abs(G_0)
% G_0phase: angle(G_0) in degrees
% EVMpeak_pct: Peak EVM (in %)
global structGlobal
......@@ -63,8 +60,8 @@ function F_Save_Results_TimeDomainAlignment(EVMrms_pct, tau0, G_OPT)
fprintf(fid,'\n\n');
fprintf(fid,'%s\n','RESULTS FROM TIME-DOMAIN ALIGNMENT METHOD');
Quantity = [{'EVM_rms%', 'Optimal Delay (ns)','G_OPT Amp', 'G_OPT Phase (deg)'}];
Value = [EVMrms_pct; tau0; G_OPTamp; G_OPTphase];
Quantity = [{'EVM_rms%', 'Optimal Delay (ns)', 'Total DC Phase (deg)', 'G_OPT Amp', 'G_OPT Phase (deg)'}];
Value = [EVMrms_pct; tau0; rxTotalAngle; G_OPTamp; G_OPTphase];
fprintf(fid,'%s\n','------------------------------------------------');
fprintf(fid, '%s \t %s\r\n', 'Quantity', 'Value');
fprintf(fid,'%s\n','------------------------------------------------');
......@@ -79,13 +76,14 @@ function F_Save_Results_TimeDomainAlignment(EVMrms_pct, tau0, G_OPT)
fprintf(fid,'%s\n','> EVM_rms% = RMS EVM as a percentage');
fprintf(fid,'%s\n','> Optimal Delay (ns) = Optimal time delay to be applied in the phase of XOut before symbol sampling/EVM calculation');
fprintf(fid,'%s\n',' where XOut is fftshifted match filtered baseband version of reference signal in frequency domain');
fprintf(fid,'%s\n','> Total DC Phase (deg) = Total DC phase as sum of coarse and fine xcorr alignment to be applied to received waveform rxSig before symbol sampling/calculation');
fprintf(fid,'%s\n','> G_OPT Amp = Symbol Norm Amp = abs(G_OPT), where G_OPT is optimal complex gain/normalization factor for symbol samples');
fprintf(fid,'%s\n','> G_OPT Phase = Symbol Norm Phase = angle(G_OPT) in degrees');
fprintf(fid,'\n\n');
Extra_Quantity = [{'DC Value','Total DC Phase (deg)', 'Delay Tolerance (ns)','EVM_peak%'}];
Extra_Value = [structGlobal.rxSigAve; structGlobal.rxTotalAngle; structGlobal.delayTolerance; structGlobal.EVMpeak_pct];
Extra_Quantity = [{'DC Value', 'Delay Tolerance (ns)','EVM_peak%'}];
Extra_Value = [structGlobal.rxSigAve; structGlobal.delayTolerance; structGlobal.EVMpeak_pct];
fprintf(fid,'%s\n','------------------------------------------------');
fprintf(fid, '%s \t\t %s\r\n', 'Extra Quantity', 'Value');
fprintf(fid,'%s\n','------------------------------------------------');
......@@ -98,7 +96,6 @@ function F_Save_Results_TimeDomainAlignment(EVMrms_pct, tau0, G_OPT)
fprintf(fid,'%s\n','Extra Quantity Definition:');
fprintf(fid,'%s\n','--------------------------');
fprintf(fid,'%s\n','> DC Value = Received signal average value');
fprintf(fid,'%s\n','> Total DC Phase (deg) = Total DC phase as sum of coarse and fine xcorr alignment to be applied to received waveform rxSig before symbol sampling/calculation');
fprintf(fid,'%s\n','> Delay Tolerance (ns) = Absolute size of fine time grid used in xcorr');
fprintf(fid,'%s\n','> EVM_peak% = Peak EVM as a percentage');
......
......@@ -88,7 +88,7 @@ function F_TimeDomainAlignment(refSigFreq,rxSigFreq,refSig,refConst,params)
[EVMrms_pct,G_OPT] = F_Sample_Normalize_EVM(refSig,rxSig,params);
%% Save Both AlternateTAA and Extra Results in a Single File
%% Save Both Time-Domain Alignment and Extra Results in a Single File
F_Save_Results_TimeDomainAlignment(EVMrms_pct, tau0, G_OPT);
end
\ No newline at end of file
function [tau0, rxSig] = F_calculateOptimal_TimeDomainAlignment(refSigFreq,rxSigFreq,refConst,params)
function [tau0, rxTotalAngle, rxSig] = F_calculateOptimal_TimeDomainAlignment(refSigFreq,rxSigFreq,refConst,params)
%
% Copyright 2021 IEEE P1765 Authors
%
......@@ -51,11 +51,11 @@ function [tau0, rxSig] = F_calculateOptimal_TimeDomainAlignment(refSigFreq,rxSig
%
% Outputs:
% tau0: Optimal time delay to be applied in phase before same sampling/calculation
% rxTotalAngle: Total DC phase as sum of coarse and fine xcorr alignment to be applied to received waveform rxSig before symbol sampling/calculation
% rxSig: Optimal time delayed/waveform normalized version of measured signal
%
% Extra outputs:
% delayTolerance: Absolute size of fine time grid used in xcorr
% rxTotalAngle: Total DC phase as sum of coarse and fine xcorr alignment to be applied to received waveform rxSig before symbol sampling/calculation
global structGlobal
......@@ -111,7 +111,8 @@ function [tau0, rxSig] = F_calculateOptimal_TimeDomainAlignment(refSigFreq,rxSig
rxTotalDelayTime = rxDelayTime1 + rxDelayTime2; % Time delay down to +/– 50 fs
rxAngle2 = angle(ccorrmax2)*180/pi;
structGlobal.rxTotalAngle = rxAngle1 + rxAngle2; % Total DC phase offset (degrees); % structGlobal added by Paritosh on 6/15/2021
rxTotalAngle = rxAngle1 + rxAngle2; % Total DC phase offset (degrees);
% structGlobal added by Paritosh on 6/15/2021, removed 12/28/2021
rxSig_us = (circshift(rxSig_us.',-rxDelay2)).';
rxSig_us = rxSig_us*exp(1i*pi*-rxAngle2/180);
rxSig = rxSig_us(1:resfac:params.numSamp*resfac); % Downsampling back to numSamp = sigSize
......
This directory contain older versions of the P1765 Reference waveforms and P1765 Reference EVM algorithm.
This directory will contain older versions of the P1765 Reference waveforms and P1765 Reference EVM algorithm.
The code is related to the IEEE P1765 Estimating the Uncertainty In Measurements of Modulated Signals. For further details see
The code is related to the IEEE 1765™ Recommended Practice for Estimating the Uncertainty in Error Vector Magnitude of Measured Digitally Modulated Signals for Wireless Communications. For further details see
https://standards.ieee.org/develop/project/1765.html
This open source repository contains material that may be included-in or referenced by an unapproved draft of a proposed IEEE Standard. All material in this repository is subject to change. The material in this repository is presented "as is" and with all faults. Use of the material is at the sole risk of the user. IEEE specifically disclaims all warranties and representations with respect to all material contained in this repository and shall not be liable, under any theory, for any use of the material. Unapproved drafts of proposed IEEE standards must not be utilized for any conformance/compliance purposes. See the files in the 06 License_Files directory for
This open source repository contains material that may be included in, or referenced by, an unapproved draft of a proposed IEEE Standard. All material in this repository is subject to change. The material in this repository is presented "as is" and with all faults. Use of the material is at the sole risk of the user. IEEE specifically disclaims all warranties and representations with respect to all material contained in this repository and shall not be liable, under any theory, for any use of the material. Unapproved drafts of proposed IEEE standards must not be utilized for any conformance/compliance purposes. See the files in the 06 License_Files directory for
copyright and licensing information.
IEEE P1765 Recommended Practice for EVM Measurement and Uncertainty Evaluation https://opensource.ieee.org/1765/1765/ is the official IEEE repository for the codes, binary files, waveforms and other materials associated with the IEEE 1765 standard. When referencing the materials in relation to the standard, this official repository is the appropriate citation. Please check the '01 Overview' directory for information about normative/informative parts of the repository.
IEEE 1765 Recommended Practice for Estimating the Uncertainty in Error Vector Magnitude of Measured Digitally Modulated Signals for Wireless Communications https://opensource.ieee.org/1765/1765/ is the official IEEE repository for the codes, binary files, waveforms and other materials associated with the IEEE 1765 standard. When referencing the materials in relation to the standard, this official repository is the appropriate citation. Please check the '01 Overview' directory for information about normative/informative parts of the repository.
Copyright 2021 IEEE P1765 Authors
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment