:MEASure:EYE:NMARgin

Meas. mode:
Eye
Package License:
L-RND
L-MFG
Legacy Licenses:
TDQ
PAM
Waveform type:
PAM4
Flex Apps:
FlexDCA
FlexRT

Command Syntax

:MEASure:EYE:NMARgin

Query Syntax

:MEASure:EYE:NMARgin?

Description

The Noise Margin (rms) measurement measures the electrical output of an O/E receiver. The Noise Margin(rms) measurement includes the contribution of all three PAM4 waveform eyes. This differs from a Partial Noise Margin measurement (:MEASure:EYE:PNMargin) that is based on the contribution of a single PAM4 eye. Noise margin is a system-level test that measures the amount of noise power that can be added to a system while maintaining its performance at a specific Symbol Error Rate (SER) at the output of an O/E receiver. This differs from a TDECQ measurement (:MEASure:EYE:TDEQ) which is performed at a transmitter's output and is not a system-level test. TDECQ is unsuitable for a system-level test due to the expectation that TDECQ remain constant if overall optical power and OMA is reduced in a linear method.

Like the TDECQ measurement, the Noise Margin (rms) measurement is made using two vertical histograms which are located at 0.45 UI and 0.55 UI from the waveform's average crossing time. The location of these histograms is annotated on the displayed waveform. This location of the histograms ar shown in the following figure.

The response from the :STATus:DETails? and :STATus:REASon? child queries are unique for the Noise Margin and TDECQ measurements, because you can query additional measurement information if a measurement correctly completes. For other measurements, the :STATus? queries only return information for measurements with errors.

For example if :MEASure:EYE:NMARgin:STATus? returns CORR, the :STATus:DETails? child returns a comma delimited string with additional measurement information as shown in this example:

"Left sigma: 29.4 mV rms,Right sigma: 29.4 mV rms,Equalizer noise enhancement: 0.7884,Intrinsic channel noise: 2.0 mV rms"

and the :STATus:REASon? child returns the first field of the above string:

"Left sigma: 29.4 mV rms"

Measurement Identification

Avoid subtle programming errors! To ensure that the correct measurement is installed or queried, always explicitly identify a measurement when installing a measurement or querying a measured value, status, or detail. To identify a measurement, specify the measurement's source waveform (:SOURce child command). With some measurements, you may also need to specify other identifying values. Generally, when selecting a measurement using FlexDCA's GUI, if a dialog appears prompting you to select values, you should explicitly specify these values when remotely identifying the measurement. More information.

For example, to return the status of the measurement, :MEASure:EYE:NMARgin:

flex.write(':MEASure:EYE:NMARgin:SOURce CHAN1A')
if flex.query(':MEASure:EYE:NMARgin:STATus?') == 'CORR';
    measurement = flex.query(':MEASure:EYE:NMARgin?')
else:
	details = flex.query(':MEASure:EYE:NMARgin:STATus:DETails?')
	reason = flex.query(':MEASure:EYE:NMARgin:STATus:REASon?')

Child commands for measurement identification:

  • :MEASure:EYE:NMARgin:SOURce

Requires FlexDCA revision A.05.70 and above.

License Required. The ability to perform a Noise Margin PAM4 measurement requires options 9FP or TFP.

Measurement Ready?

To confirm that the measurement is ready to read, you can query the measurement's status:

if ('CORR' in Flex.query(':MEASure:EYE:NMARgin:STATus?')):
	measurement = Flex.query(':MEASure:EYE:NMARgin?')

If averaging is turned on (:ACQuire:AVERaging), you can also confirm if the measurement result is ready by comparing the number of specified averages (:ACQuire:ECOunt?) versus the number of measurement sweeps that have occurred (:MEASure:EYE:NMARgin:COUNt?). The technique uses the :COUNt? common measurement query. For example,

if (Flex.query(':MEASure:EYE:NMARgin:COUNt?') >= Flex.query(':ACQuire:ECOUNt?')):
	measurement = Flex.query(':MEASure:EYE:NMARgin?')

You can also use an acquisition limit lest to test that a number of waveform samples, or pattern acquisitions have completed before returning a measurement. Refer to the :LTESt:ACQuire:CTYPe command.

Common Measurement Child Queries

This command supports the use of the following common measurement queries: :LOCation?, :COUNt?, :MAXimum?, :MINimum?, :MEAN?, and :SDEViation?.