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.

[参考译文] AFE7920EVM:如何在初始配置后使用操作码更新系统

Guru**** 2644745 points

Other Parts Discussed in Thread: AFE7920

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

https://e2e.ti.com/support/rf-microwave-group/rf-microwave/f/rf-microwave-forum/1573807/afe7920evm-how-to-use-the-opcodes-to-update-system-after-initial-configuration

器件型号:AFE7920EVM
主题:AFE7920 中讨论的其他器件

工具/软件:

您好:

我们将在射频记录器/播放器应用中使用 AFE7920。  我们在 Rx 或 Tx 中使用它、但不能同时使用两者。

系统初始化后、用户选择模式 (Rx 或 Tx)、他计划使用的通道(从 1 到 4)和工作频率。

然后、以设定的频率初始化所选的信道。

我们正在尝试使用操作码来更新系统配置、但遗憾的是、这不起作用。

在我们的测试中、我们使用基于 Latte 脚本生成的转储在 SPI 中发送初始配置、其中启用了 4 个 Rx、4Tx 且未启用 FB。 该器件工作正常、系统正确初始化(以设定的频率接收 Rx 数据、发送 Tx 数据)。

然后、 我们依次发送以下 4 个操作码 、以启用不同频率的 Rx、并禁用 Tx:  

  • 操作码 0x21(系统信道配置):启用所有 4 个 Rx、禁用 Tx 和 FB
  • 操作码 0x31(RX 通道频率配置):使用一条指令为所有 4 个通道设置所需的频率、两个频带均设置一个 NCO、为所有 NCO 设置相同的频率
  • 操作码 0x33(RX-FB 奈奎斯特频带配置):根据所选频率,为所有 4 个通道选择奈奎斯特频带:在 1474.56MHz 下,选择区域 1,在 1474.56MHz 以上,选择区域 2。  
  • 操作码 0x36(调优系统)

这不起作用:在所选频率下、Rx 上不会接收到任何数据。

我们使用操作码的方式是否正确?

感谢您的帮助、

Florian。

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

    尊敬的 Florian:  

    您是否有理由要对这些操作使用宏调用? 我建议使用 C API 完成这些操作、C API 将写入后端的宏 我包含了 C API 函数的脚本以及文档。 您可以在随 Latte 安装的.chm 文件中找到 C API 文档、类似于下面的文件路径。

    “C:Texas Instruments \...\Documents\AFE79xxLatte\lib\Afe79xxLibraries\AFE79xxLibraryPG1p0\Docs\afe79xxCLibsDocumentation.chm”

    ##Update RX NCO
    afeInst = 0    #AFE Instance of AFE79_INST_TYPE type. If using the EVM this should be 0.
    rxChSel = 0 #Value to select the RX chain.Value 0 for RXA to 3 for RXD.
    bandNo = 0 #Band number. 0-band0, 1-band1.
    ncoNo = 0 #NCO number. 0-NCO0, 1-NCO1.
    ncoFreq = 9600#NCO frequency to set the NCO to in MHz.
    if sysParams.ncoFreqMode == '1KHz':
    	mixer = ncoFreq*1e3 #Should pass value in KHz in 1KHz ncoFreqMode and the frequency word value in FCW mode. The Mode is determined by the ncoFreqMode set in Latte while generating the bringup script.In FCW mode, the value can be calculate using the equation: mixer =  (uint32_t) (2^32*mixerFrequency/FadcRx).
    elif sysParams.ncoFreqMode == 'FCW':
    	mixer = int(round(2**32*ncoFreq/sysParams.FadcRx)) #Should pass value in KHz in 1KHz ncoFreqMode and the frequency word value in FCW mode. The Mode is determined by the ncoFreqMode set in Latte while generating the bringup script.In FCW mode, the value can be calculate using the equation: mixer =  (uint32_t) (2^32*mixerFrequency/FadcRx).
    CAFE.updateRxNco(afeInst,rxChSel,mixer,bandNo,ncoNo)
    engine.DDCNCOFreqWord=((ncoFreq)%sysParams.FadcRx)/(sysParams.FadcRx)*2**32 #Updating NCO word in capture window
    
    
    ##Update Tx NCO
    afeInst = 0    #AFE Instance of AFE79_INST_TYPE type. If using the EVM this should be 0.
    txChSel = 0 #Value to select the TX chain.Value 0 for TXA to 3 for TXD.
    ncoNo = 0 #NCO number. 0-NCO0, 1-NCO1.
    ncoFreq = 3000#NCO frequency to set the NCO to in MHz.
    if sysParams.ncoFreqMode == '1KHz':
    	mixer = ncoFreq*1e3 #Should pass value in KHz in 1KHz ncoFreqMode and the frequency word value in FCW mode. The Mode is determined by the ncoFreqMode set in Latte while generating the bringup script.In FCW mode, the value can be calculate using the equation: mixer =  (uint32_t) (2^32*mixerFrequency/FadcRx).
    elif sysParams.ncoFreqMode == 'FCW':
    	mixer = int(round(2**32*ncoFreq/sysParams.Fdac)) #Should pass value in KHz in 1KHz ncoFreqMode and the frequency word value in FCW mode. The Mode is determined by the ncoFreqMode set in Latte while generating the bringup script.In FCW mode, the value can be calculate using the equation: mixer =  (uint32_t) (2^32*mixerFrequency/FadcFb).
    CAFE.updateTxNco(afeInst,txChSel,mixer,ncoNo)
    
    ##TDD Override
    afeInst = 0    #AFE Instance of AFE79_INST_TYPE type. If using the EVM this should be 0.
    rxChSel = 0xf #Override Value of the RX chains. This is Bit wise channel select. Bit0 for RXA to Bit3 for RXD.
    fbChSel = 0x3 #Override Value of the FB chains. This is Bit wise channel select. Bit0 for FBAB to Bit1 for FBCD.
    txChSel = 0xf #Override Value of the TX chains. This is Bit wise channel select. Bit0 for TXA to Bit3 for TXD.
    enableOverride = 1 #Enables the Override. if enableOverride=0, it disables the TDD override; if enableOverride=1, it enables the TDD override && also sets the TDD values; if enableOverride=2, it only sets the TDD values.
    CAFE.overrideTdd(afeInst,rxChSel,fbChSel,txChSel,enableOverride) #Function to override and set the TDD values

      

    谢谢!  

    Mirana

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

    您好、Mirana、

    我们的第一个意图是使用操作码、因为它们似乎易于使用、SBAU337 中有很好的记录。 但从你所说的以及我在论坛上所阅读的各种讨论来看、使用操作码似乎并不那么简单。 按照 SBAU337“1.4 示例宏调用序列“中给出的示例、在发送具有 17 个操作码的第一个初始化序列时、我们的测试没有给出任何结果、发生了事件。

    只要我们能得到预期的结果,我们就可以使用 CAFE 函数。 我们的第一个问题是在 Tx 上获得始终相同的相位分散 、如 AFE7920EVM 中所述:4 通道之间 Rx 和 Tx 中的相位同步 — 射频和微波论坛-射频和微波 — TI E2E 支持论坛

    我们目前正在测试  txChainDirectctrl=1 的使用、以查看它是否能作为上述票证中的建议解决我们的问题。 然后、在 TDD 模式下、我们应该能够禁用未使用的通道。

    如果上述所有方法都有效、唯一的问题是更改 Rx 中的奈奎斯特区域。我们需要获取 1160 到 2500MHz 的信号、并能够动态地更改频率。 由于我们的 Rx 采样频率为 2 949、12MHz、因此频率计划被划分为奈奎斯特区域 1 和 2(分裂为 1 474、56MHz) 。

    从我在论坛上看到的情况来看、使用咖啡函数不可能改变奈奎斯特区域、但使用操作码似乎是可能的。 您会建议您做什么? 我们可以承受~100ms 的重新配置时间、但不会等待几秒钟来完全重新初始化芯片。

    此致、

    Florian。

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

    尊敬的 Florian:  

    感谢您更新另一个 E2E 主题的我的更新信息。 我已经结束了、但如果出现任何其他问题、请告诉我。  

    即使使用操作码、由于 ADC/DAC 的采样率、您也无法更改奈奎斯特区域、以便同时使用 1.6G 至 2.5G 的所有频率。 您可以对不同的奈奎斯特区域使用单独的 ADC/DAC、但会存在一些重叠。 我仍然可以解释操作码的使用过程、但我不确定它是否对您的用例有所帮助。 您可以利用频率规划、通过对同一信道上具有类似频率/带宽的频段进行分组、来帮助减轻潜在的混叠。 请告诉我您的首选前进之路!

    谢谢!

    Mirana

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

    您好、Mirana、

    实际上、我们不希望同时捕获整个频段 1.6G-2.5G。 在执行采集之前、我们需要通过设置频率来对该频带的某个 150MHz 切片进行采样。 然后、我们坚持 150m 频段、直到采集完成。 然后、我们希望能够选择另一个 150m 频带的切片、并进行另一次采集。 我们希望能够在所有 4 个通道上独立完成。

    我们需要的是能够在两次采集之间自由重新配置每个通道、为此、当新频率位于另一个奈奎斯特频带时、我们还需要能够更改奈奎斯特频带。

    因此、在不运行完整初始化序列(非常长)的情况下重新配置 AFE 会非常方便。 如果可以、使用操作码是可以的、因此如果您能解释如何使用它们、我将不胜感激。

    此致、

    Florian。

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

    尊敬的 Florian:  

    我现在正在了解您的用例。 如果您使用 C API 更新 RX NCO、则可以在奈奎斯特区域之间移动。 通过更改 NCO、器件将自动从预期的奈奎斯特区域读取。 请尝试使用下面的 C API 函数进行测试。 它在我的设置中按预期运行。 请告诉我您的设置是否由于另一个 E2E 主题中讨论的行为而需要进行额外的调试。  

    谢谢!

    Mirana

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

    您好、Mirana、

    感谢您的回答。

    我感到惊讶的是,你说的关于 updateRxNco 函数,因为你的同事大卫 Chaparro 在这篇文章中说了相反的:  

    https://e2e.ti.com/support/rf-microwave-group/rf-microwave/f/rf-microwave-forum/1519506/afe7901-change-nyquist-band-and-rx-frequency-after-device-bringup-sequence/5846500?tisearch=e2e-sitesearch&keymatch=AFE%20change%20nyquist%20zone#

    通过查看  updateRxNco 函数 v2p6 的代码、可以检查新频率是否与 INIT 中位于同一奈奎斯特区域(该检查已在 v2p6 中添加、因为 v2p5 中不存在)。

    此外、在 SBAA417 第 14 页中、我们可以找到以下信息:

    NCO 0 (rxNco0) 的 RX 混频器频率:
    这是每个通道和频带的混频器频率 (NCO) 阵列。 可实现的性能
    ADC、则需要具有所有频带的混频器频率以及与该 RX 对应的 NCO
    奈奎斯特区域。 该器件支持为每个 ADC 编程的多个脉冲、
    但可能会导致性能下降。

    基本而言、如果我们不改变奈奎斯特区域、就会出现“性能下降“、但我们不知道这种性能下降的细节。

    查看 updateRxNcoMultiNcoMode 的代码、我没有印象奈奎斯特区域也发生了变化、只有 FCW 被更新。 因此频率实际上发生了变化(这是我们在工作台上看到的情况)、但可能会出现“性能下降“、因此我们不想冒风险。 这就是我们真正想要更改奈奎斯特区域的原因。

    你对此有何看法?

    此致、

    Florian。

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

    尊敬的 Florian:

    我与 David 和我们的系统工程师 Jenny 交谈、以便更好地理解这一点。 您所引用的宏将被写入 updateRxNco () C API 的后端。 这些宏能够更改奈奎斯特区域、但您仍然会看到 David 提到的性能下降(尤其是线性性能或互调失真性能)。 我们有取决于奈奎斯特区域的特殊电路、以增强互调失真 (IMD) 导致的非线性。 特殊电路要求 在生产测试期间估算由奈奎斯特区域指定的 TI 工厂校准数据。 因此、 当初始化的校准数据 配置为一个奈奎斯特区域、但实际信号位于另一个奈奎斯特区域时、RX 性能可能不太理想。  更改奈奎斯特区域的校准数据包需要重新初始化器件。  

    谢谢!  

    Mirana

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

    您好、Mirana、

    感谢您的澄清和有关性能下降的详细信息。 这不是好消息,但至少我们知道我们要做什么。 我们将尝试优化初始化时间、以使用户尽可能缩短初始化时间。

    此致、

    Florian。

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

    我还有一个关于奈奎斯特区域的问题。 我想、由于滤波、奈奎斯特区域边界边缘有一个无法采集信号的区域(例如在 Rx @<xmt-block1>2949MHz</xmt-block> 中、我们无法记录信号@<xmt-block2>1474MHz</xmt-block>)。2949MHz。</s>1474MHz

    奈奎斯特频带边缘周围该区域的宽度是多少? 在以上示例中、如果我们配置为奈奎斯特频带 1、我是否可以获取信号@1454MHz 或它是否过于接近边缘?

    谢谢、

    Florian。

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

    尊敬的 Florian:  

    需要考虑以下几点:

    1.模拟抗混叠滤波器:您的抗混叠滤波器可以提供什么样的抑制?

    数字滤波器: 在 184.32MSPS I/Q 速率下、数字下变频器或数字上变频器滤波器 (FIR) 的通带约为输入接口速率(I/Q 速率)的 80%、即+/FIR –75MHz。 过渡带从 70MHz 开始。 您需要查看数字滤波器的滤波器响应、以了解系统可接受的抑制方式。

    您之前是否与 TI 签署了 NDA?  

    谢谢!

    Mirana