【AD9361 数字基带】多个AD9361器件进行同步

一、概述

某些系统可能需要更复杂的配置,这些配置将多个设备组合在一起。在尝试协调每个器件的每个通道的数据的同时操作多个AD9361器件,对于独立运行且没有任何数据时序对齐机制的器件来说是不切实际的。要实现此类配置,需要与多个设备进行数据同步。

AD9361包含同步基带采样和数据时钟所需的外部控制输入和内部电路,使系统设计能够并行利用多个器件,性能与单个器件相当。

遗憾的是,AD9361不包含内部RF同步功能。如果没有一些外部帮助,就无法实现内部RF本地振荡器的同步。幸运的是,这在当今的FPGA系统中是微不足道的,下面将对此进行探讨。此外,还将探讨使用外部LO的替代选项。

二、多片同步 Multi-Chip Sync (MCS)

在这里插入图片描述

图中显示了AD9361的简化框图。该器件利用基带 PLL 模块中的小数 N 分频合成器为给定系统生成所需的采样率。该频率合成器从为参考时钟输入指定的频率范围内的任何参考时钟生成ADC采样时钟、DAC采样时钟和基带数字时钟。

对于需要两个以上输入或两个输出通道的MIMO系统,需要多个AD9361器件和一个公共基准振荡器。AD9361能够接受外部基准时钟,并使用简单的控制逻辑与其他器件同步操作。这个细节在上面的简化框图中被遗漏了。

每个AD9361都内置自己的基带PLL,可从参考时钟输入生成采样和数据时钟,因此需要额外的控制机制来同步多个器件。需要一个逻辑SYNC_IN脉冲输入,以便将每个器件的数据时钟与公共基准对齐。快速浏览一下原理图的原理图,可以看出这是如何完成的。ADCLK846 (U301) 时钟扇出缓冲器接受 40MHz Rakon 振荡器 (Y301),并驱动:

XTALN_A to the “A” AD9361 device,
***XTALN_***B to the “B” AD9361 device.
REF_CLK_FMC back to the FMC connector.比如FPGA

AD9361上的SYNC_IN引脚直接由FPGA驱动,长度与两个AD9361器件匹配,因此边沿同时撞击两个器件。

可以并联的器件总数仅受时钟和逻辑信号的驱动能力的限制。虽然在FMCOMMS5上,我们展示了 2 个设备,但这可以扩展到 n 个设备。

从硬件的角度来看 - 这就是所有必要的,从软件的角度来看,这就是事情变得有趣的时候。关键是要对几个寄存器进行正确编程(按正确的顺序),然后在正确的时间对SYNC_IN进行置位。

三、无操作系统

在使用 ad9361_init (struct ad9361_rf_phy *ad9361_phy, AD9361_InitParam *init_param) 函数初始化部件之前,应根据您的设置设置 AD9361_InitParam.gpio_sync(例如:default_init_param.gpio_sync = GPIO_SYNC_PIN)。

初始化部件后,只需调用函数 ad9361_do_mcs(struct ad9361_rf_phy *phy_master, struct ad9361_rf_phy *phy_slave) 函数即可(例如:ad9361_do_mcs(ad9361_phy, ad9361_phy_b))。

四、当需要执行 MCS 序列时

任何时候,只要软件可以影响到使零件错乱顺序的事情,就有必要重复这些步骤。这将是对以下方面进行更改的任何时间:

基带 PLL (BBPLL) 速率(器件数据速率)
FIR 滤波器启用/禁用,以防 BBPLL 必须更改
更改 Tx 或 Rx LO 设置

五、 射频相位差

如上所述,AD9361内部不包含内部RF同步功能,需要一些帮助。

有两种方法可以解决此问题:

1、测量内部LO中的相位差,并在FPGA中进行校正

Internal LOs + FPGA

在本节中,我们假设您已经阅读并理解了 IQ 旋转和校正部分的数学部分,我们将在这里重点介绍事物的实际方面。

FMCOMMS5板包括两个 ADG918 宽带 (-3dB @ 4GHz) 开关,用于将任一 AD9361 器件的 Tx1B 连接到任一 AD9361 器件的 Rx1C。这允许四种不同的状态:

在这里插入图片描述
由 FPGA 的 2 个不同 GPIO 引脚(CAL_SW_1 和 CAL_SW_2)控制。

在这里插入图片描述
我们可以使用它来找到两个差分接收器(A 和 B): θ rx . 中的相位差。

在这里插入图片描述
由于我们的最小开关矩阵不包括喷溅器(其自身会有相位误差),因此我们需要进行多步测量,并使用任一发射机的公共参考(在本例中为Tx1B_{A})。为了保持数学的正确性,我们在上述等式中加零(在本例中为 Tx1B_{A} - Tx1B_{A} = 0):

Theta_{Rx} = (Theta_{RX1C_{B}} - Theta_{Rx1C_{A}} + (Theta_{Tx1B_{A}} - Theta_{Tx1B_{A}}))

简单的代数重排,提供了简单的相位差测量。

Theta_{Rx} = (Theta_{Tx1B_{A}} - Theta_{Rx1C_{A}}) – (Theta_{Tx1B_{A}} – Theta_{RX1C_{B}})

发射器是相同的 - 通过使用一个普通的接收器,比较两个发射路径非常容易。

Theta_{Tx} = (Theta_{Tx1B_{A}} - Theta_{RX1C_{A}}) – (Theta_{Tx1B_{B}} – Theta_{Rx1C_{A}})

为了同时测量θ{Tx}和θ{Rx},我们使用了HDL的一个函数,该函数将发射机通道环回接收器通道。这为我们提供了 Rx 和 Tx 之间的时间参考,该参考永远不会改变。众所周知,Tx中的数字信号与模拟Tx信号的相位不同,但我们只是使用事物作为参考。绝对位置并不重要。这只是逐步执行四种设置的函数,并将差异驱动到相同。此处详细介绍了 (a) 计算相位差或 (θ{A} - θ{A}) 以及如何在 FPGA 内部校正此相位差的数学方法。

[https://wiki.analog.com/resources/eval/user-guides/ad-fmcomms2-ebz/iq_rotation]

3、使用外部LO信号

XTALN 引脚浮空,使用外部同步引脚A12 G12

2、 使用内部LO相位校准序列时

每当软件可能影响到使RF LO异相的情况时,就有必要重复这些步骤。这将是对以下方面进行更改的任何时间:

跳转至内部 RX/TX RFPLL (LO)
MCS 已完成

这种变化确实包括内部变化,例如将AD9361置于TDD模式(LO或LO分频器断电)。这真正意味着,您不能在TDD模式(LO关闭)下使用AD9361,从而在RF级别获得相位相干性。建议用户使用 FDD 模式保持 LO 开启。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值