How to adjust USBPHYC settings using USB Eye Diagram

Revision as of 08:54, 21 September 2022 by Registered User
Under construction.png Coming soon


1. General recommendations[edit source]

At IC level, Eye Diagram is characterized with a specific reference resistor between USB_RREF and ground.

Verify first that USB_RREF resistor is correctly connected and has proper value and precision (3 kΩ 1%)

2. Eye Diagram[edit source]

Common modeJitterLevel attenuationRising edgeRippleSignal-to-NoiseFalling egdeCommon modeJitterLevel attenuationRising edgeRipplesignal-to-NoiseFalling edgeUSB Eye diagram.png

2.1. Common mode troubleshooting[edit source]

Hardware root causes to investigate
  • Mismatch between D+ and D- (in terms of length and/or parallelism)
  • Check layout and add common mode filter (e.g. ECMF02-2AMX6[1])
Info white.png Information
It is not possible to solve common mode issue with software.

2.2. Jitter troubleshooting[edit source]

Hardware root causes to investigate
  • Too much capacitance (component or PCB) on D+/D- lines
  • USB Power/GND instability
Check decoupling / Check grounding
Software potential tuning

Only fine tuning available. High jitter has an HW root cause in most cases.

  • USBPHYC_TUNEx.HSDRVRFRED
0: increase rising edge but add jitter
  • USBPHYC_TUNEx.INCURREN/.INCURRINT
Reduce current increase with .INCURREN=0 or .INCURRINT=0
  • USBPHYC_TUNEx.HSDRVCHKITRM
Reduce the increase of the main level

2.3. Level attenuation or Signal-to-Noise troubleshooting[edit source]

Hardware root causes to investigate
  • too much serial resistance and capacitance (component or PCB) on D+/D- lines
  • USB Power/GND instability
Check decoupling / Check grounding
Software potential tuning
  • USBPHYC_TUNEx.HSDRVCHKITRM
Higher the value, higher will be the level of signal.
But noise and ripple can appear
  • USBPHYC_TUNEx.HSDRVCURINCR/.HSDRVDCLEV
Higher the value, higher will be the margin for the level.
But jitter in the rising edge and noise can appear

2.4. Rising edge or Falling edge troubleshooting[edit source]

Hardware root causes to investigate
  • too much serial resistance and capacitance (component or PCB) on D+/D- lines
  • Impedance mismatch : check characteristic impedance of lines, stubs…
Software potential tuning
  • USBPHYC_TUNEx.HSDRVRFRED
0 improve rising edge
1 slow-down rising edge.
Potential impact on jitter
  • USBPHYC_TUNEx.HSDRVCHKITRM
Depending on level, slope is increased/decreased
  • USBPHYC_TUNEx.HSDRVSLEW
0 normal rising edge
1 reduce rising edge.
Useful to reduce a hill shape ripple on top of rising/falling edge
  • USBPHYC_TUNEx.HSDRVCURINCR/.HSDRVDCLEV
Improve slope speed.
But jitter in the rising edge and noise can appear

2.5. Ripple troubleshooting[edit source]

Hardware root causes to investigate
  • Impedance mismatch : check characteristic impedance of lines, stubs…
Software potential tuning
  • USBPHYC_TUNEx.HSDRVCHKZTRM[1:0]
00: Usually open the eye but can create some jitter and ripple
11: Close the eye but can reduce jitter and ripple
  • USBPHYC_TUNEx.HSDRVSLEW
0 normal rising edge
1 reduce rising edge.
Useful to reduce a hill shape ripple on top of rising/falling edge

3. link between register value and Device Tree[edit source]

  • st,current-boost, <1> current boosting of 1mA .INCURREN=b1/.INCURRINT=b0
<2> current boosting of 2mA .INCURREN=b1/.INCURRINT=b1
           * st,no-lsfs-fb-cap, disables the LS/FS feedback capacitor 		.LFSCAPEN=b1
           * st,hs-slew-ctrl, slows the HS driver slew rate by 10% 		.HSDRVSLEW=b1
           * st,hs-dc-level, <0> decreases the HS driver DC level by 5 to 7mV 	.HSDRVDCCUR=b1
::                             <1> increases the HS driver DC level by 5 to 7mV	.HSDRVCURINCR=b1/.HSDRVDCLEV=b0
::                             <2> increases the HS driver DC level by 10 to 14mV 	.HSDRVCURINCR=b1/.HSDRVDCLEV=b1
           * st,fs-rftime-tuning, enables the FS rise/fall tuning option 		.FSDRVRFRED=1
           * st,hs-rftime-reduction, enables the HS rise/fall reduction feature 	.HSDRVRFRED=1
           * st,hs-current-trim, controls HS driver current trimming for choke 	.HSDRVCHKITRM=n [0:15]
           * st,hs-impedance-trim, controls HS driver impedance tuning for choke 	.HSDRVCHKZTRM=n [0:3]
           * st,squelch-level, adjusts the squelch DC threshold value 		.SQLCHCTL=n [0:3]
           * st,hs-rx-gain-eq, enables the HS Rx gain equalizer 			.HDRXGNEQEN
           * st,hs-rx-offset, adjusts the HS Rx offset 				.HSRXOFF=n [0:3]
           * st,no-hs-ftime-ctrl, disables the HS fall time control of single ended signals during pre-emphasis 		.HSFALLPREEM=1
           * st,no-lsfs-sc, disables the short circuit protection in LS/FS driver 	.SHTCCTCTLPROT
           * st,hs-tx-staggering, enables the basic staggering in HS Tx mode 	.STAGSEL


  • References: