Calculates the figure of merit of the PAM-4 transmitters knows as Transmitter and Dispersion Eye Closure Quaternary (TDECQ) as defined in IEEE Standard 802.3 2018. Depending on the input parameters it can also return other properties of the input signal, as well as convergence information.
Syntax |
Description |
---|---|
out=tdecq(signal, reference, parameter); |
Calculates the figure of merit of the PAM-4 transmitters knows as TDECQ as defined in IEEE Standard 802.3 2018. Depending on the input parameters it can also return other properties of the input signal, as well as convergence information. The specification of the input arguments are as follows: signal: the signal captured by the data acquisition device (e.g., storage oscilloscope) of the measured set-up prescribed in IEEE Standard 802.3 2018. The signal needs to be a 1D matrix. reference: the undistorted test Short Stress Pattern Random – Quaternary (SSPRQ) sequence (for PAM-4) driving the transmitter, scaled and biased to match the input signal. The reference needs to be a 1D matrix. parameters: a struct containing the required and optional fields in the table below. |
Parameter |
Default |
Default value |
Type |
Unit |
Description |
---|---|---|---|---|---|
samples_per_UI |
required |
scalar |
|
The number of samples per unit interval (UI), also known as the number of samples per symbol. |
|
symbol_rate |
required |
scalar |
Hz |
The symbol rate of the signal. |
|
filter_bandwidth |
required |
scalar |
Hz |
The 3dB bandwidth of the Bessel-Thompson filter applied after optical to electrical conversion in the setup prescribed in the Standard. It is also referred to as the channel bandwidth. |
|
num_bins |
optional |
64 |
scalar |
|
The number of bins in the histograms specified in the standard. |
Pavg |
optional |
-1 |
scalar |
Watts |
The average power of the input signal. |
outer_OMA |
optional |
-1 |
scalar |
Watts |
The outer modulation amplitude, outer of the input signal, as specified in the standard. |
tap_spacing |
optional |
samples_per_UI |
scalar |
Watts |
The tap spacing of the feed forward equalizer (FFE) prescribed in the standard, in units of samples. |
sigma_s |
optional |
0 |
scalar |
Watts |
Standard deviation of the noise added by the optical to electrical conversion process and oscilloscope combination. |
ser_search_limit_iter |
optional |
40 |
scalar |
|
The limit on the number of iterations of the damped binary search that finds the amount of noise that needs to be added to exactly yield the bit error rate (BER) prescribed in the standard. |
ser_search_rel_tol |
optional |
0.01 |
scalar |
|
The relative tolerance at which the aforementioned damped binary search will terminate. |
ser_search_limit_update_ratio |
optional |
0 (no limit) |
scalar |
|
The maximum step that may be taken in the aforementioned damped binary search. |
ser_opt_limit_iter |
optional |
1000 |
scalar |
|
The limit on the number iterations that the FFE tap-weight optimizer may take in optimizing the symbol error (SER) for a given amount of added statistical noise. |
ser_opt_xtol |
optional |
1e-6 |
scalar |
|
The tolerance on the weights for the tap-weight optimizer. |
ser_opt_ftol |
optional |
1e-6 |
scalar |
|
The tolerance on the SER for the tap-weight optimizer. |
mmse_only |
optional |
0 |
scalar |
|
A non-zero value will cause the function to perform only a linear optimization of the tap weights by fitting the equalized signal to the reference signal. |
report |
optional |
0 |
scalar |
The report level. report = 0: only the value of TDECQ will be returned by the function. 0 < report < 1:a struct with the following fields will be returned by the function: TDECQ, outer_OMA, Pavg, eq_taps report > 1: a struct with the fields described below will be returned by the function |
Report results struct format:
TDECQ | the calculated value of TDECQ in dB |
outer_OMA | the measured value of OMAouter on the input signal as defined in the standard in Watts |
Pavg | the average power of the input signal as defined in the standard in Watts |
eq_taps | the optimized values of the FFE tap weights in a matrix |
SER | the optimized symbol rate |
sigmaG | the standard deviation of the amount of noise that can be added to yield the BER prescribed in the standard |
search_iterations | the number of iterations executed in searching to for the standard deviation of the amount of noise that can be added to yield the BER prescribed in the standard |
SER_window_offset | the offset of the windows applied to the eye diagram, in units of samples, in forming the histograms used to calculate the SER. please refer to the standard for more detailed information |
Example
This example calculates the TDECQ result for the PAM4 signal in the TDECQ example:
switchtodesign;
# define reference signal
lenSSPRQ=65535;
numSSPRQ=1;
nbins=400;
signalRate = 26.5625e9;
besselFilterBW = 13.28125e9;
symSSPRQ = zeros(lenSSPRQ,1);
strSSPRQb0 = getnamed("TDECQ_1", "strSSPRQb0");
strSSPRQb1 = getnamed("TDECQ_1", "strSSPRQb1");
for(i=1:lenSSPRQ){
symSSPRQ(i) = str2num(substring(strSSPRQb0,i,1)) + 2*str2num(substring(strSSPRQb1,i,1));
}
# define TDECQ calculation parameters
sampleRate = getnamed("::Root Element", "sample rate");
bitRate = getnamed("::Root Element", "bitrate");
samplesPerBit = round(sampleRate/bitRate);
params = struct;
params.samples_per_UI = round(sampleRate/bitRate);
params.symbol_rate = signalRate;
params.filter_bandwidth = besselFilterBW;
params.num_bins = nbins;
params.sigma_s = 0.0;
params.ser_search_limit_iter = getnamed("TDECQ_1", "SER search max iter");
params.ser_search_relative_tolerance = 0.01;
params.ser_search_limit_update_ratio = 0;
params.ser_opt_limit_iter= getnamed("TDECQ_1", "SER optim max iter");
params.ser_opt_xtol = 1e-6;
params.ser_opt_ftol = 1e-6;
params.mmse_only = 0;
params.report =1;
# run and get signal
run;
runanalysis;
signal = getresult("TDECQ_1", "Signal 1");
signal = signal.power;
# calculate TDECQ
TDECQ_result = tdecq(signal,symSSPRQ,params);
See Also