Equalizer¶
API Documentation: [cpp] [python] [.NET] [LabVIEW]
The Equalizer entity provides a concise interface for controlling equalizer and filter settings for receivers (inputs) and transmitters (outputs). Products supporting Equalizer are capable of applying frequency dependent gain to their signals. This can allow for compensation for signal loss and degradation due to cable quality, cable length and the number of connections. It can also act as a filter implemented in hardware or firmware. Products may implement on or more equalizers; each can be configured using the Equalizer index. Allowed index values are specified in the product data sheet.
Note
The Equalizer Entity is only functional on the Redriver Version of the USB-C-Switch.
Equalizer Mapping and Entities¶
The redriver model of the switch provides two equalizer entities. They provide progammatic control over linear equalizers and amplifiers (aka: redrivers) connected to the HS and SS sata lines. These equalizer entities split the configuration between receiver-side and transmitter-side settings allowing for compensation of signal intergrity loss due to cable quality, length, and insertoion losses. However, some of the settings can have combined effects between receiver and transmitter modes. The two equalizer entities are indexed to their respective data lines as defined below:
Index |
Equalizer Entity Mapping |
---|---|
0 |
USB2 High Speed |
1 |
USB3 SuperSpeed |
The transmitter is responsible for driving and selectively amplifying the signals traveling out the redriver hardware after any receiver-side equalization. Each equalizer entity has transmitter options of:
stem.equalizer[x].setTransmitterConfig(config)
[cpp]
[python]
[NET]
[LabVIEW]
stem.equalizer[x].getTransmitterConfig(config)
[cpp]
[python]
[NET]
[LabVIEW]
The receiver attempts to compensate for distortion of the incoming signal. Each equalizer entity has receiver options such as:
stem.equalizer[x].setReceiverConfig(chan, config)
[cpp]
[python]
[NET]
[LabVIEW]
stem.equalizer[x].getReceiverConfig(chan, config)
[cpp]
[python]
[NET]
[LabVIEW]
where (chan) paramters are defined below:
Value |
Receiver Channel |
---|---|
0 |
Applies setting to both common and mux sides |
1 |
Applies settings to mux side |
2 |
Applies settings to common side |
High Speed Redriver Configuration¶
Due to the half-duplex nature of the USB2 data lines, there is only one receiver and transmitter setting for both the common and mux ports. In addition, since the transmitter and receiver are tightly coupled, the linear gain achieved by transmitter setting varies with the equalizer receiver configuration. Approximate gains for example configurations are shown in the specifications table.
stem.equalizer[0].setTransmitterConfig(config)
[cpp]
[python]
[NET]
[LabVIEW]
stem.equalizer[0].getTransmitterConfig(config)
[cpp]
[python]
[NET]
[LabVIEW]
The HS Equalizer entity transmitter option controls the gain applied to HS signals only; USB Low Speed (LS) and Full Speed (FS) signals are unaffected and uncompensated. This option changes the DC boost applied to HS signals which can help achieve sharper rising edges. The allowed values are shown below:
Value |
High Speed Transmitter Configuration |
---|---|
0 |
40mV DC Boost |
1 |
60mV DC Boost |
2 |
80mV DC Boost |
3 |
0mV DC Boost (disabled) |
The chan parameter of the HS equalier receiver option can only be 0 because the HS data lines are half-duplex. All other values will result in an error return.
The HS equalizer receiver option configurations control the sensitivity of the redriver to incoming HS signals. The effect of this change in sensitivity can be considered a variable AC boost turned to the specific HS signal applied. Setting the HS equalizer to Level 0 will disable the HS redriver regardless of the HS entity transmitter configuration. The available options are shown below:
stem.equalizer[0].setReceiverConfig(0,config)
[cpp]
[python]
[NET]
[LabVIEW]
stem.equalizer[0].getReceiverConfig(0,config)
[cpp]
[python]
[NET]
[LabVIEW]
Value |
High Speed Receiver Equalization |
---|---|
0 |
Level 1 |
1 |
Level 2 |
2 |
Level 0 (disabled) |
Super Speed Redriver Configuration¶
The SS equalizer option controls various transmitter gains for each side of the ful-duplex SS data lines. Each configuration combines the transmitter gain and approximate peak-to-peak voltage for both the common and mux side transmitters. The available options are shown below.
stem.equalizer[1].setTransmitterConfig(config)
[cpp]
[python]
[NET]
[LabVIEW]
stem.equalizer[1].getTransmitterConfig(config)
[cpp]
[python]
[NET]
[LabVIEW]
Value |
Mux Side |
Com Side |
Range |
---|---|---|---|
0 |
1db |
0db |
900mVpp |
1 |
0db |
1db |
900mVpp |
2 |
1db |
1db |
900mVpp |
3 |
0db |
0db |
900mVpp |
4 |
0db |
0db |
1100mVpp |
5 |
1db |
0db |
1100mVpp |
6 |
0db |
1db |
1100mVpp |
7 |
2db |
2db |
1100mVpp |
8 |
0db |
0db |
1300mVpp |
The SS equalizers receiver option controls the receiver gain. The actual receiver gain is dependent on the alt-mode configuration and the port data direction (mux to common vs common to mux). There are independent receiver gain settings for the common and mux ports of the switch. Gains across settings, direction, and frequency is shown here:
stem.equalizer[1].setReceiverConfig(0,config)
[cpp]
[python]
[NET]
[LabVIEW]
stem.equalizer[1].getReceiverConfig(0,config)
[cpp]
[python]
[NET]
[LabVIEW]
Value |
SS Recieve Gain Lever |
---|---|
0-15 |
Increasing levels of gain |