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.

[参考译文] AFE7900:关于 AFE7900通道间相位不平衡的补偿

Guru**** 2340070 points
Other Parts Discussed in Thread: AFE7900
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/rf-microwave-group/rf-microwave/f/rf-microwave-forum/1497219/afe7900-regarding-the-compensation-of-phase-imbalance-between-channels-of-afe7900

器件型号:AFE7900

工具/软件:

您好支持团队:

我们为每个单独的 ADC 通道(通道 A、通道 B、通道 C、通道 D)设计了一个具有相同前端链的定制 AFE7900板。 每个通道的频率范围为35 -60 MHz。 所有通道都具有相同的传输线路长度和集总元件。  

我使用 ZCU102 FPGA 板捕获每个通道的 IQ 数字数据。 根据捕获的数字 IQ 数据、我计算了通道 A 和 B、通道 A 和 C、通道 A 和 D、通道 B 和 C 之间的相对相位差  

根据计算结果、我发现存在一些固定相位差延迟、如下所示  

当我为通道 A、通道 B、通道 C 和通道 D 提供相同的射频输入、并且与函数发生器具有0度的相位差时。 以下是通过计算(Q/I)的逆 tan 和(Q/I)的通道 A 反向 tan 的相位差从捕获的 IQ 中获得的结果-(Q/I)的通道 B 反向 tan。

35 MHz =通道 A -通道 B = 2.3度  

45 MHz =通道 A -通道 B = 5°  

60 MHz =通道 A -通道 B = 7.7度  

------------------------------------------------------------------------

35 MHz =通道 A -通道 C = 2.8°

45 MHz =通道 A -通道 C = 5.2度  

60 MHz =通道 A -通道 C = 8°  

--------------------------------------------------------------------

35 MHz =通道 A -通道 D = 2°

45 MHz =通道 A -通道 D = 3.8度  

60 MHz =通道 A -通道 D = 5.5度  

------------------------------------------------------------------------

35 MHz =通道 B -通道 C = 0.4°

45 MHz =通道 B -通道 C =  0.8°  

60 MHz =通道 B -通道 C = 2°  

------------------------------------------------------------------------

当我提供具有0度相位差的相同射频输入时、这种固定相位差变化的原因可能是什么? (因为我们已经为 JESD 串行器/解串器线路进行了适当的长度匹配、并且所有4个输入射频通道在传输线长度和元件方面都是相同的)。 AFE7900内部是否有任何方法可以补偿相位差?

请您就此提供指导。 这对我们很重要、因为我们要根据捕获的 IQ 数字数据测量相对相位。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好支持团队:

    以上提出的查询是否有任何更新!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Maitry:

    PCB 和基板上的布线差异会导致一些相位差。 这种固定相位差可以通过移动 NCO 的相位在 AFE 内部进行补偿。 为此、您可以参考下面的两个函数。

    def RxPhaseOffset(rxch,phaseOff):		
    	phaseNum=int(phaseOff/(360./2**16))
    	device.closeLastPageSel()
    	device.writeReg(0x12,rxch)
    	device.writeReg(0xE1,(phaseNum>>8)&0xFF)
    	device.writeReg(0xE0,phaseNum&0xFF)
    	device.writeReg(0x12,0x0)
    
    def TxPhaseOffset(txch,phaseOff):
    	phaseNum=int(phaseOff/(360./2**16)) #The phase offset is phaseNum*(360/2^16) degrees
    	device.closeLastPageSel()
    	device.writeReg(0x19,txch<<4) # Open the TX TOP for the desired channels 
    	if sysParams.ncoFreqMode == '1KHz':
    		device.writeReg(0x111,(phaseNum>>8)&0xFF) #Upper 8 bits of phaseNum
    		device.writeReg(0x110,phaseNum&0xFF) #Lower 8 bits of phaseNum
    	elif sysParams.ncoFreqMode == 'FCW':
    		device.writeReg(0x391,(phaseNum>>8)&0xFF) #Upper 8 bits of phaseNum
    		device.writeReg(0x390,phaseNum&0xFF) #Lower 8 bits of phaseNum
    	device.writeReg(0x19,0x0) #Closing page

    此致、

    David Chaparro  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、David、  

    感谢您的答复。  

    我从你上面理解的给定函数如下。  

    • 将相位(以度为单位)转换为16位硬件表示。

    • 选择接收器通道。

    • 将相位值写入特定的硬件寄存器。

    • 取消选择安全/复位通道。

    我需要修改 LMKConfig.py 文件并将其添加到.py 文件的底部。  

    #---------------------------- 相位偏移校正----------------------------
    DEF RxPhaseOffset (rxch、phaseOff):
    PhaseNum = int (phaseOff /(360./2**16))
    AFE.device.closeLastPageSel
    AFE.device.writeReg(0x12、rxch)
    AFE.device.writeReg(0xE1 (PhaseNum >> 8)和0xFF)
    AFE.device.writeReg(0xE0、phaseNum 和0xFF)
    AFE.device.writeReg(0x12、0x0)

    在 AFE.initializeConfig ()参数之后、立即添加以下内容。  

    #---------------------------- 应用相对于通道1的相位偏移-----------------------
    #这些值基于您的理论平均相位差

    RxPhaseOffset (1、0.0)# Ch1是参考值
    RxPhaseOffset (2、2.3)# Ch2 lags→提前35 MHz  
    RxPhaseOffset (3、2.8)# Ch3 lags→超前35 MHz  
    RxPhaseOffset (4、2)# CH4→超前 IT for 35 MHz  

    PRINT ("应用于 RX 通道的相位偏移校准。")

    以上理解是否正确? 或者、您能否在 Latte 脚本中使用上述函数提供一个经过验证的示例?

    等待您的回答。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Maitry:

    RxPhaseOffset 函数调用应在 configAFE.py 脚本中的 AFE.deviceBringup 行之后添加。 只有在完全配置器件后、才能修改 NCO 相位。  

    此致、

    David Chaparro  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、David、  

    感谢您的快速答复。  

    您能否提供经过验证的修改 configAFE.py 脚本、以便我可以参考该脚本、在我的电路板中检查并验证相同内容?

    例如、如果我想按如下所示为35 MHz 设置相位偏移、您能否提供一个修改后的 configAFE.py 脚本、我可以从中获取参考?

    35 MHz =通道 A -通道 B = 2.3度  

    35 MHz =通道 A -通道 C = 2.8°

    35 MHz =通道 A -通道 D = 2°

    35 MHz =通道 B -通道 C = 0.4°

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Maitry:

    只需将上面提到的行添加到 configAfe 脚本中。  

    setupParams.skipLmk = 1 
    AFE.deviceBringup()
    AFE.TOP.overrideTdd(15,0,15)
    device.closeLastPageSel()
    setupParams.skipLmk = 0setupParams.skipLmk = 1 
    AFE.deviceBringup()
    AFE.TOP.overrideTdd(15,0,15)
    device.closeLastPageSel()
    setupParams.skipLmk = 0
    
    RxPhaseOffset(1, 0.0) # Ch1 is reference
    RxPhaseOffset(2, 2.3) # Ch2 lags → advance it for 35 MHz 
    RxPhaseOffset(3, 2.8) # Ch3 lags → advance it for 35 MHz 
    RxPhaseOffset(4, 2) # Ch4 lags → advance it for 35 MHz 

    此致、

    David Chaparro

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、David、  

    感谢您的澄清。 我将尝试更新您的相同内容。