This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

OPT3101EVM: High internal crosstalk measurement

Part Number: OPT3101EVM

Hello!

We're just getting started with the OPT3101EVM (and our own custom board).  Our first step was to port over the software to "C", and then ran it on the EVM using our own micro. 

After reading the calibration docs, it says that we should be getting less than 30 "codes" for the measureAndCorrectInternalCrosstalk() function (slau791 section 2.4), but we're seeing something considerably larger?

Results from the EVM:
      I,      Q,S, ScaledI, ScaledQ,tMain,tIlum,tMain(C),  tIlum(C),Magnitude
+057079,+004461,0,+0057079,+0004461, 2240, 0000,     +24, -128.0000,183.2

I'm assuming that the "codes" refers to the magnitude?

The PD is covered in six layers of electrical tape during this part of the calibration.

We're getting comparable results with our own hardware -- we're just not sure why the docs say 30 codes and we're getting > 180?

Any help would be appreciated!

-Matt

  • Hi,

    This value of 183 sounds like illumination xtalk and if this is the case rather than internal xtalk then this is expected. The procedure involving masking the PD is for illumination xtalk rather than internal xtalk.

    Best,

    Alex

  • Hi Alex,

    We just had it in our steps to mask it.  The results are the same (similar) whether masked or not.

    I did find that the SDK magnitude calculation:

    sqrt(pow(this->I>>(9-this->xtalkScale),2)+pow(this->Q>>(9-this->xtalkScale),2))*1.646

    had a huge amount of error due to the bit-shift.  For the measurement above it would display 183, but if you divided by (2^9) it would drop the magnitude to 112. 

    But the 112 is still too high, correct?

    Even if I use the values loaded from NVM:
    iphase_xtalk_int_reg : 0x0000d99c (55708)
    qphase_xtalk_int_reg : 0x00003a16 (14870)

    it still comes to 184/115 for the magnitude (depending on the method), and we haven't overwritten any of the defaults.

    The purpose of this exercise is to at least get the internal xtalk on the EVM below 30 prior to evaluating it on our board (so we know how "good" our board is!).  I was expecting to see less than the 30 codes on the EVM.

    Thanks!

    -Matt

  • Hi Matt,

    When EVM leaves our calibration it is check to be around 30 codes. Can you provide the full printout from the SDK run? Have any modifications been made to the SDK code?

    Best,

    Alex

  • Hi Alex,

    If the registers have these values loaded directly from NVM:

    iphase_xtalk_int_reg : 0x0000da14 (55828)
    qphase_xtalk_int_reg : 0x00001088 (4232)

    ... I'm not sure how that is less than 30 codes if it's the magnitude?

    The only real modification was porting the SDK over to C (so yes, some sort of big modifications!) but the process should be identical unless we missed something in the internal cross-talk.

    measureAndCorrectInternalCrosstalk:
          I,      Q,S, ScaledI, ScaledQ,tMain,tIlum,tMain(C),  tIlum(C),Magnitude
    +056146,+004942,0,+0056146,+0004942, 2304, 2304,     +32, +16.0000,180.0

    measureIllumCrosstalkSet:
    INFO:Performing Illum Crosstalk for TX0 HDR 0
          I,      Q,S, ScaledI, ScaledQ,tMain,tIlum,tMain(C),  tIlum(C),Magnitude
    +013615,+002095,0,+0013615,+0002095, 2312, 2312,     +33, +16.5000, 43.3

    INFO:Performing Illum Crosstalk for TX0 HDR 1
          I,      Q,S, ScaledI, ScaledQ,tMain,tIlum,tMain(C),  tIlum(C),Magnitude
    +017835,+004336,1,+0035670,+0008672, 2320, 2320,     +34, +17.0000,116.6

    INFO:Performing Illum Crosstalk for TX1 HDR 0
          I,      Q,S, ScaledI, ScaledQ,tMain,tIlum,tMain(C),  tIlum(C),Magnitude
    +065006,+000030,0,+0065006,+0000030, 2312, 2312,     +33, +16.5000,207.4

    INFO:Performing Illum Crosstalk for TX1 HDR 1
          I,      Q,S, ScaledI, ScaledQ,tMain,tIlum,tMain(C),  tIlum(C),Magnitude
    +065289,+000200,0,+0065289,+0000200, 2304, 2304,     +32, +16.0000,209.0

    FWIW, I believe the illumination crosstalk looks reasonable?   (the illumination temperature is not used in our case).  Since the illumination crosstalk can be used to account for the internal crosstalk, I'm thinking everything is working fine for it?  I just don't get why the xtalk_int registers are so large.

    That's as far as we got for calibrating so far -- no phase offset measurements until we had a good understanding of where we were at.

    Hope this helps and thank you!

    -Matt