# overshoot

Overshoot metrics of bilevel waveform transitions

## Syntax

os = overshoot(x)
os = overshoot(x,fs)
os = overshoot(x,t)
[os,oslev,osinst] = overshoot(___)
[___] = overshoot(___,Name,Value)
overshoot(___)

## Description

example

os = overshoot(x) returns overshoots expressed as a percentage of the difference between the low- and high-state levels in the input bilevel waveform. The values in os correspond to the greatest absolute deviations that are greater than the final state levels of each transition.
os = overshoot(x,fs) specifies the sample rate fs in hertz.

example

os = overshoot(x,t) specifies the sample instants t.

example

[os,oslev,osinst] = overshoot(___) returns the levels oslev and sample instants osinst of the overshoots for each transition. You can specify an input combination from any of the previous syntaxes.

example

[___] = overshoot(___,Name,Value) specifies additional options using one or more Name,Value arguments. You can use any of the output combinations from previous syntaxes.

example

overshoot(___) plots the bilevel waveform and marks the location of the overshoot of each transition. The function also plots the lower and upper reference-level instants and associated reference levels and the state levels and associated lower- and upper-state boundaries.

## Examples

collapse all

Determine the maximum percent overshoot relative to the high-state level in a 2.3 V clock waveform.

Load the 2.3 V clock data. Determine the maximum percent overshoot of the transition. Determine also the level and sample instant of the overshoot. In this example, the maximum overshoot in the posttransition region occurs near index 22.

load('transitionex.mat','x') [oo,lv,nst] = overshoot(x)
oo = 6.1798 
lv = 2.4276 
nst = 22 

Plot the waveform. Annotate the overshoot and the corresponding sample instant.

overshoot(x); ax = gca; ax.XTick = sort([ax.XTick nst]);

Determine the maximum percent overshoot relative to the high-state level, the level of the overshoot, and the sample instant in a 2.3 V clock waveform.

Load the 2.3 V clock data with sampling instants. The clock data are sampled at 4 MHz.

load('transitionex.mat','x','t')

Determine the maximum percent overshoot, the level of the overshoot in volts, and the time instant where the maximum overshoot occurs. Plot the result.

[os,oslev,osinst] = overshoot(x,t)
os = 6.1798 
oslev = 2.4276 
osinst = 5.2500e-06 
overshoot(x,t);

Determine the maximum percent overshoot relative to the low-state level, the level of the overshoot, and the sample instant in a 2.3 V clock waveform. Specify the 'Region' as 'Preshoot' to output pretransition metrics.

Load the 2.3 V clock data with sampling instants. The clock data are sampled at 4 MHz.

load('transitionex.mat','x','t')

Determine the maximum percent overshoot, the level of the overshoot in volts, and the sampling instant where the maximum overshoot occurs. Plot the result.

[os,oslev,osinst] = overshoot(x,t,'Region','Preshoot')
os = 4.8050 
oslev = 0.1020 
osinst = 4.7500e-06 
overshoot(x,t,'Region','Preshoot');

## Input Arguments

collapse all

Bilevel waveform, specified as a real-valued vector. The sample instants in x correspond to the vector indices. The first sample instant in x corresponds to t = 0.

Sample rate in hertz, specified as a real positive scalar. The sample rate determines the sample instants corresponding to the elements in x.

Sample instants, specified as a vector. The length of t must equal the length of the input bilevel waveform x.

### Name-Value Arguments

Specify optional comma-separated pairs of Name,Value arguments. Name is the argument name and Value is the corresponding value. Name must appear inside quotes. You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.

Example: 'Region','Preshoot' specifies the pretransition aberration region.

Reference levels as a percentage of the waveform amplitude, specified as a 1-by-2 real-valued vector. The function defines the lower-state level to be 0 percent and the upper-state level to be 100 percent. The first element corresponds to the lower percent reference level, and the second element corresponds to the upper percent reference level.

Aberration region over which to compute the overshoot, specified as 'Preshoot' or 'Postshoot'. If you specify 'Preshoot', the function defines the end of the pretransition aberration region as the last instant when the signal exits the first state. If you specify 'Postshoot', the function defines the start of the posttransition aberration region as the instant when the signal enters the second state. By default, the function computes overshoots for posttransition aberration regions.

Aberration region duration, specified as a real-valued scalar. The function computes the overshoot over the specified duration for each transition as a multiple of the corresponding transition duration. If the edge of the waveform is reached or a complete intervening transition is detected before the aberration region duration elapses, the duration is truncated to the edge of the waveform or the start of the intervening transition.

Low- and high-state levels, specified as a 1-by-2 real-valued vector. The first element corresponds to the low-state level and the second element corresponds to the high-state level of the input waveform.

Tolerance level, specified as a real-valued scalar. The function expresses tolerance as a percentage of the difference between the upper and lower state levels. The initial and final levels of each transition must be within the respective state levels.

## Output Arguments

collapse all

Overshoots expressed as a percentage of the state levels, returned as a vector. The length of OS corresponds to the number of transitions detected in the input signal. For more information, see Overshoot.

Overshoot level, returned as a column vector.

Sample instants of pretransition or posttransition overshoots, returned as a column vector. If you specify fs or t, the overshoot instants are in seconds. If you do not specifyfs or t, the overshoot instants are the indices of the input vector.

collapse all

### State-Level Estimation

To determine the transitions, the overshoot function estimates the state levels of the input bilevel waveform x by using a histogram method with these steps.

1. Determine the minimum and maximum amplitudes of the data.

2. For the specified number of histogram bins, determine the bin width, which is the ratio of the amplitude range to the number of bins.

3. Sort the data values into the histogram bins.

4. Identify the lowest and highest indexed histogram bins with nonzero counts.

5. Divide the histogram into two subhistograms.

6. Compute the state levels by determining the mode or mean of the upper and lower histograms.

The function identifies all intervals which cross the upper-state boundary of the low state and the lower-state boundary of the high state. The low-state and high-state boundaries are expressed as the state level plus or minus a multiple of the difference between the state levels.

### Overshoot

The function computes the overshoot percentages based on the greatest deviation from the final state level in each transition.

For a positive-going (positive-polarity) pulse, the overshoot is given by

$100\frac{\left(O-{S}_{2}\right)}{\left({S}_{2}-{S}_{1}\right)}$

where O is the maximum deviation greater than the high-state level, S2 is the high state, and S1 is the low state.

For a negative-going (negative-polarity) pulse, the overshoot is given by

$100\frac{\left(O-{S}_{1}\right)}{\left({S}_{2}-{S}_{1}\right)}$

This figure shows the calculation of overshoot for a positive-going transition.

The red dashed lines indicate the estimated state levels. The double-sided black arrow depicts the difference between the high- and low-state levels. The solid black line indicates the difference between the overshoot value and the high-state level.

### State-Level Tolerances

Each state level can have associated lower- and upper-state boundaries. These state boundaries are defined as the state level plus or minus a scalar multiple of the difference between the high state and the low state. To provide a useful tolerance region, the scalar is typically a small number such as 2/100 or 3/100. In general, the region for the low state is defined as

where is the low-state level and is the high-state level. Replace the first term in the equation with to obtain the tolerance region for the high state.

This figure illustrates lower and upper 5% state boundaries (tolerance regions) for a positive-polarity bilevel waveform. The thick dashed lines indicate the estimated state levels.

## References

[1] IEEE Standard 181. IEEE® Standard on Transitions, Pulses, and Related Waveforms (2003): 15–17.