jitter_separation()
This function does a jitter analysis and separates the jitter components
Syntax
JitRes = jitter_separation(vJitterSig, vRefClkSig, Nbpp, BitPeriod, BERLevel, DataType, Pattern, Nbps, NumSeq, RJBWMode, EdgeType, InterpType, MeasType)
Arguments
| Name | Description | Range | Type | Default | Required |
|---|---|---|---|---|---|
| vJitterSig | time-domain based jittered signal | (-∞, ∞) | real | yes | |
| vRefClk | time-domain based reference clock signal or bit period | (0, ∞) | real | no | |
| Nbpp | number of bits per pattern | 2 to 217 | integer | yes | |
| BitPeriod | bit period | 0 < BitPeriod < 1e-3 | real | yes | |
| BERLevel | BER level at which to measure TJ | 1e-40 < BERLevel < 1e-1 | real | 1e-12 | no |
| DataType | data-type | 1 (Periodic), 2(Random) † | integer | 1 | no |
| Pattern | bit pattern vector or bit pattern file-name | 0 and 1 | array, string | no | |
| Nbps | number of bits per sequence | [2, Inf] | integer | † † | no |
| NumSeq | number of sequences of data to be used in jitter analysis | [1, Inf] | integer | † † † | no |
| RJBWMode | RJ Bandwidth Mode | 1(Narrow or Pink), 2(Wide or White) | integer | 1 | no |
| EdgeType | Data Edge Type | 1(Rising), 2(Falling), 3(Both) | integer | 3 | no |
| InterType | Interpolation type for holes in TIE for jitter spectrum | 1(None), 2(Linear) | integer | 1 | no |
| MeasType | Specifies the jitter components and graphs to calculate. | † † † † | integer | 3 | no |
| † Note that Random data type is not supported in this release. † † The default for Nbps is 2 minimum number of whole patterns per sequence Nbpp. † † † NumSeq defaults is calculated as number of TIE points/Nbps. † † † † MeasType can be one of the following: 1 Calculate TJpp,RJrms,DJdd 2 Returns TJpp,RJrms,DJdd,PJdd,PJrms,ISIpp,DCD,DDJpp. 3 In addition to measurements in type 2, calculate TJ,RJPJ,DDJ,DDJR,DDJF Histograms & Bathtub Plot & DDJ vs Bit 4 In addition to measurements in type 3, calculate RJPJ spectrum. WARNING: Takes a long-time | |||||
Examples
The following example executes a jitter separation of a jittered signal that uses a PRBS10 source:
JitRes = jitter_separation(vJitSig, , 1023, 50 ps)
The returned value JitRes is a list of 18 different measurements:
- TJpp = JitRes[0]
- RJrms = JitRes[1]
- DJdd = JitRes[2]
- PJdd = JitRes[3]
- PJrms = JitRes[4]
- ISIpp = JitRes[5]
- DCD = JitRes[6]
- DDJpp = JitRes[7]
- TJHist = JitRes[8]
- RJPJHist = JitRes[9]
- DDJHist = JitRes[10]
- DDJFHist = JitRes[11]
- DDJRHist = JitRes[12]
- DataBath = JitRes[13]
- MdlBath = JitRes[14]
- DataQBath = JitRes[15]
- MdlQBath = JitRes[16]
- DDJvsBit = JitRes[17]
- RJPJSpec = JitRes[18]
Where:
vJitterSig is the time-domain jittered signal. The argument jittered signal is the serial data (time versus amplitude) used in jitter separation. This signal is used in calculating the zero crossings, and the serial data is calculated from the zero crossings. If there are no zero crossings, then jitter separation will terminate with an error message. Currently, only periodic pattern serial data is supported, and the pattern must be repeatable. Arbitrary or random serial data is not supported.
vRefClkSig can be a reference clock signal (time versus amplitude) or the bit period. If the clock signal is given, the zero crossings are used to find the clock serial. This zero crossing is used along with the zero crossings of the jittered data in calculating the Time Interval Error (TIE). If the bit period is given, then the clock zero crossings are calculated from the bit period. If not given, the fourth argument bit period is used.
Nbpp is the pattern length and is required in order to automatically detect the pattern. At minimum this should be 2 (a clock signal) and a maximum of 2 17 . Note that for larger pattern length the number of serial bits needed would be large and jitter separation would take a long time. See Viewing Results for more information.
BitPeriod = Bit period must be greater than 0 and less than 1e-3.
BERLevel is the level at which to calculate TJ, RJpp. This argument is optional and the default value is 1e-12. For example if the system is being designed for a BER of 1e-12, then doing a jitter separation at 1e-12 would calculate the TJ at 1e-12.
Pattern can be an array of 0s and 1s or the name of a file containing the pattern. An example of a pattern in array format is [1,0,0,0,0,0,0,0,1,0]. A pattern must have a 0 and a 1. In addition, the minimum pattern is a [0, 1] - a clock signal. If the pattern is given in a file, the pattern bits must be space separated and in a single line. If pattern is not given, the pattern is automatically detected from the signal bits. For each sequence of data, the pattern is detected and compared with the previous sequence patter or the given pattern. If the pattern matches, that particular sequence of data is used.
Nbps indicates the number of bits-per-acquisition or sequence. Nbps is optional and the default is 2 * Minimum # Whole Pattern per sequence * Nbpp = 2 * 64 * Nbpp. In most cases this default value would work, but in some cases this value might need to be set manually since this argument has a direct bearing on the number of serial bits needed for a valid jitter separation and the RJPJ separation method. See Viewing Results for more information.
NumSeqs can be used to control the amount of data to be used in jitter separation. The default value is (# TIE Points)/Nbps, and in most cases this would work. But if increased control is required over the number of bits to be used, this argument can be set to a different value.
RJBWMode Jitter analysis uses a spectral technique to separate RJ from PJ. In the RJ, PJ Spectrum the noise floor or baseline depicts RJ. The narrow spikes above RJ depict PJ (see RJ, PJ Spectrum graph). This separation works well for wide bandwidth RJ, having a uniform PSD across the entire jitter spectrum. But in some cases, this is not the norm and the PJ components appear much broader. In such cases PJ can be mis-represented as RJ and this affects the TJ (since TJ is a multiplier of RJ). Setting RJ bandwidth mode to Wide or White treats RJ as flat. See References for more information.
MeasType specifies the jitter components and graphs to be calculated and displayed. There are four values that can be used for MeasType:
- 1 (RJ DJ TJ): Calculate TJpp, RJrms, DJdd.
- 2 (Add PJ DDJ): TJpp, RJrms, DJdd, PJdd, PJrms, ISIpp, DCD, DDJpp
- 3 (Add Histograms, Bathtub, DDJ versus Bits): Measurements in MeasType=2 + TJ, RJPJ, DDJ, DDJR, DDJF Histograms, Bathtub graphs, and DDJ versus Bits graph.
- 4 (Add full RJPJ spectrum): Measurements in mode 3 + RJPJ spectrum.
| Note Type 4 measurements can take an exceptionally long time to complete. |
InterType For clock-type signals, the DFT is calculated from the uniformly spaced RJ, PJ time record, where each value in the RJ, PJ time record corresponds to a voltage transition in the clock-type waveform. For NRZ data-type signals, the RJ, PJ time record is not comprised of uniformly spaced jitter values. For these signals, the RJ, PJ time record contains "holes" caused by consecutive logical ones or zeros. The lack of information about the jitter at times corresponding to these holes makes it impossible to determine the true RJ, PJ spectrum.
There are two options for displaying the RJ, PJ spectrum. If InterType , the Data TIE Interpolation mode is set to none, then the spectrum is calculated as if the holes were all set to a value of zero. In this case, the resulting spectrum appears to be modulated (convolved in the frequency domain) by the data pattern. If InterpType is set to linear, then the spectrum is calculated as if the unknown values (holes) were determined using linear interpolation. In this second case, the resulting spectrum is calculated by filtering out the higher possible spectral components with a time-variant low-pass filter.
Defined in
$HPEESOF_DIR/expressions/ael/JitAnalysis.ael
See Also
Notes and Equations
- This function requires the ads_si_verification license.

Caution
Due to memory limitations, large datasets created for performing jitter analysis can cause instabilities in ADS. This can result in the Data Display window crashing without saving the DDS file. To avoid losing any setup information, save the DDS file before performing a jitter analysis. - Default value for Nbps = 2 * Minimum # Whole Pattern per sequence * Nbpp = 2 * 64 * Nbpp
For Periodic data type if the number of whole pattern per sequence, Nwpps = Nbps / Ntpp, is less than 64, the method used for RJPJ Separation is random (which is different than the data type or pattern being random). For PRBS15 if Nbps=60000, Ntpp=16384, NTIEs=2621359 then Nwpps=3. If the number of sequences to use is less than minimum number of sequences needed for DDJ separation, MinSeqsDDJ = 100/Nwpps, then DDJ cannot be separated and the initial sequences are not used. For example if Nwpps=3, then MinSeqsDDJ =100/3 = 34. In this case, increase the number of TIE to (MinSeqsDDJ+1) * Nbps.
Some calculations for the PRBS15 example are shown below:
Nbps = BitMultiplier * Nbpp
Nwpps = floor(Nbps/Ntpp)
MinSeqsDDJ = ceil(100/Nwpps)
MinNTIEs = (MinSeqsDDJ + 1) * Nbps
MinNSeqs = floor(NTIEs/Nbps)
MaxNSeqs = MinNTIEs/Nbps
Where:
MinNTIEs is the minimum number of TIEs that are needed if the corresponding number of Nbps is used.
MinSeqsDDJ is the minimum number of sequences that are needed for a successful DDJ separation.
MinNSeqs is the minimum number of sequences that can be used for given NTIEs.
MaxNSeqs is the maximum number of sequences that can be used for given MinSeqsDDJ.
So in the above example, if Nbps = 13 * Nbpp = 425971, then Nwpps = 25.
For this Nbps, the minimum number of sequences that can be used for a valid DDJ separation is 4. This is less than the number of sequences, 6 that is possible with NTIEs= 2621359. So a valid DDJ separation can be done. In the table below, for Nwpps ≤63 the RJPJ separation used is random. For Nwpps ≠¥64, the RJPJ separation used is periodic.BitMultiplier Nbps Nwpps MinNTIEs MinSeqsDDJ MaxNSeqs MinNSeqs 1 32767 1 3309467 100 101 79 7 229369 13 2064321 8 9 11 13 425971 25 2129855 4 5 6 19 622573 37 2490292 3 4 4 25 819175 49 3276700 3 4 3 31 1015777 61 3047331 2 3 2 32 1048544 63 3145632 2 3 2 34 1114078 67 3342234 2 3 2 36 1179612 71 3538836 2 3 2 38 1245146 75 3735438 2 3 2 40 1310680 79 3932040 2 3 1 In addition the frequency resolution of the RJ, PJ Spectrum is improved by increasing Nbps. But increasing Nbps can significantly increase the RJ, PJ spectrum calculation time.
- NumSeqs default value = (# TIE Points)/Nbps.
In order to get a valid jitter separation the number of data points should be at least have 32 complete data patterns, otherwise jitter separation would terminate with an error. With number of bits between 32 and 128, jitter separation will be performed, but the results are questionable. For accurate results, use at least 128 patterns. Since the separation algorithm is a statistical procedure, the results would correlate better with more patterns.
PJ is separated from RJ by inspecting the spectral content of jitter. The robustness of this separation methodology depends on having sufficient frequency resolution in the jitter spectrum. When the frequency resolution drops below a threshold it could start to cause a reduction in RJ/PJ separation accuracy. This happens when the number of complete data patterns in the serial data falls below 128 patterns. When this happens, examine the RJ, PJ spectrum. If the spectrum is comprised primarily of random noise with very few tall PJ spikes, then the questionable results are accurate. If there are a large number of PJ spikes then the jitter measurement should be repeated several times while varying the sequence record length. If the RJ and PJ results change significantly with record length, then the results are correct.
Privacy
Statement
|
Terms of Use
|
Legal |
Contact Us
|
© Agilent 2000-2008 ![]()