该篇应用笔记给出了多个具有多路输入或集成内插滤波器的高速复用数模转换器(DAC)的同步方法。这样的 DAC 用于 I/Q 上变频器或数字波束成形发射器中。这些 DAC 可提供数据时钟输出用于与数据源的同步。

 

在很多发射应用中必须产生多路相对相位准确已知的模拟输出。在正交调制器中(图 1),I 和 Q 通道必须具有明确的相位关系来实现镜频抑制。图 1 中,DAC1 和 DAC2 的延迟必须匹配。使用数字波束成形技术的发射器需要准确地控制大量 DAC 之间的相对相位。

 

图 1. 使用多路复用 DAC 的 I/Q 发射器中的 DAC 和第一上变频级
 

使用具有多路输入的 DAC (MUX-DAC)如 MAX19692,或具有数据时钟输出的内插 DAC 时,输入数据速率为 DAC 刷新速率的 1/N,DAC 在一个或两个数据时钟跳变沿锁存数据。MAX19692 中 N = 4,输入数据速率为 DAC 刷新速率的 1/4。DAC 输出一个由输入时钟经数字分频得到的数据时钟(DATACLK)。DAC 上电时,数字时钟分频器可在 N 个状态的任意一个启动。如果使用多个 DAC,不同 DAC 的时钟分频器会在不同的状态启动,所以 DAC 会在不同的时间锁存数据。除非这种情况被发现并校正,否则不同的 DAC 输出数据时相互之间可能会有一个或更多个时钟周期的延迟。如果每个 DAC 的时钟分频器可以复位,那么这种情况可以避免,但是仍然会存在一些问题。如果其中一个时钟分频器发生错误,DAC 会变得永久异相,除非执行一些错误状态检测方法。为了保证系统的可靠性,必须检测相位错误状态并改正。如果 DAC 工作于非常高速的状态下,那么复位信号与输入时钟的同步也可能是个难题。

 

图 2 所示是 MAX19692 的时钟(CLKP,CLKN)和数据时钟(DATACLKP,DATACLKN)接口的简化框图。初始时钟由一个两位计数器四分频后用于锁存数字 DAC 输入。该计数器可能在四个状态中的任意一个启动(图 3)。如果使用两个多路复用 DAC,这两个 DAC 可能会在不同的状态启动。这可能导致 DAC1 的锁存与 DAC2 的锁存之间存在 -1、0、1 或 2 个时钟周期的延迟。

 

MAX19692 的数据时钟输出再由数据输入锁存时钟进行 2 分频或 4 分频。然后数据在双倍数据率(DDR)模式下在时钟的两个跳变沿进行锁存,或者在四倍数据率(QDR)模式下在时钟的每 90°相位处进行锁存。如果多个 DAC 的数据时钟延迟相匹配,或数据时钟相互之间反相,那么锁存时钟相匹配。

 

图 2. MAX19692 内部时钟接口框图

 

图 3. MAX19692 锁存时钟(四种可能的状态)
 

DAC 的同步问题有两个方面:
DAC 的锁存时钟之间的相对相位必须被检测。


DAC 之间的相对相位必须被调整直到 DAC 被合适地定相。


检测 DAC 之间的相位误差可以通过检测两个 DAC 之间的数据时钟输出的相位误差来实现。相位检测器可以像一个异或门一样简单,也可以像相频检测器一样复杂。

 

可以通过操作一个或更多个 DAC 的时钟来实现两个 DAC 之间的相位调整,直到 DAC 数据时钟输出的相对相位为零。另外一种方法可以测量数据时钟之间的 DAC 延迟周期数和相应的延迟数据。下面的段落讲述了 I/Q 配置中的这两种方法。

 

通过“吞”脉冲实现 DAC 相位调整
如果 DAC 使用方波(比如 ECL)时钟,两个 DAC 之间的同步可以用图 4 所示的简单的高速逻辑电路来实现。为了简单明了,该原理图中的逻辑配置只能实现单端功能。但是实际应用中会使用差分逻辑如 ECL 来实现高速和低噪声性能。

 

图 4. 实现 DAC 同步的简单的高速逻辑电路
 

MUX-DAC1 时钟路径上与门(G1)的插入允许对 MUX-DAC1 的时钟进行操作。MUX-DAC2 的时钟路径上插入与门(G2)用于延迟匹配。异或门(G3)起相位检测的作用。当 DATACLK1 和 DATACLK2 的输出不同时 G3 输出“1”。如果 G3out = “1”,应该“吞掉” MUX-DAC1 的时钟脉冲,将 DATACLK1 的边沿移位一个 CLK 时钟周期。G3 输出的上升沿(G3out)由 FF1 和 G4 组成的上升沿检测器(PED)来检测。如果检测到上升沿,PED 输出“0”,持续一个时钟周期。在 SPB 应用于 G1 之前,FF2 将这个信号重新定时,从而使 MUX-DAC1 的一个时钟脉冲被抑制。这就使 DATACLK1 延迟一个 CLK 时钟周期。经过若干个时钟周期后,DATACLK1 的延迟与 DATACLK2 一致,如图 5 所示。使用这种方法时,触发器要在时钟的下降沿进行状态更新,以消除 DAC 时钟信号的毛刺,两个 MUX-DAC 的输入时序要相同。布线时要考虑延迟以确保满足两个触发器的建立和保持时间的要求,且在时钟为低时将 SPB 信号的脉冲应用于 G1。否则,时钟信号可能会产生毛刺。同时建议使用无噪声电源为时钟同步电路供电,将抖动的引入减到最小。

 

图 5. 所示逻辑电路操作的时序图
 

通过输入数据移位实现 DAC 相位调整
可以利用 Xilinx® FPGA 中先进的数字时钟管理程序(DCM)来检测两个 MUX-DAC 的数据时钟之间的相位差异(图 6)。DCM1 生成一个与 DATACLK1 和 DATACLK2 相同频率的时钟。以时钟周期的 1/256 为间距对 DCLK1 的延迟进行动态调整。触发器 DFF1 和 DFF2 在每个时钟周期对 DATACLK1 和 DATACLK2 进行一次采样。如果 DFF1 在 DATACLK1 为低时采样 DATACLK1,DFF1 会输出固定的“0”。如果 DFF1 在 DATACLK1 为高时采样 DATACLK1,DFF1 会输出固定的“1”。所以 DFF3 和 DFF4 可在任意时钟相位定时,与 DCLK1 的延迟设置无关。通过将 DCLK1 的延迟进行分级,使用 DCM1 的动态延迟调整功能以及读取 DFF3 和 DFF4 的输出,我们可以得到基于 DATACLK1 和 DATACLK2 上升沿的延迟设置。根据延迟设置,我们可以计算出为了保持 MUX-DAC1 和 MUX-DAC2 输入数据的同相,MUX-DAC1 的输入数据需要延迟的 DAC 时钟周期数。FPGA 中 4 x 4 桶形移位器的实现可使数据等待时间以一个 DAC 时钟周期为增量进行改变(参见图 6)。

 

MAX19692 有四个并行数据端口 A、B、C 和 D。输入 DAC 的数据序列是 An、Bn、 Cn、Dn、An+1、Bn+1、Cn+1、Dn+1、An+2 等。12 位 4 x 4 柱形移位器(图 6)允许输入 MUX-DAC1 的数据延迟 -1、0、1 或 2 个 CLK 周期。因此可以进行数据等待时间的调整直到两个 DAC 的输出数据同相。这样的话,两个 DAC 的数据时钟可能相距几个整数时钟(CLK)周期且不再改变。由于 DAC 的建立和保持时间以数据时钟为基准,所以两个 DAC 的数据时序必须不同。可以通过驱动 DAC 的 FPGA 中的多个 DCM 来实现。

 

图 6. 利用 FPGA 中桶形移位器的实现完成 MUX-DAC 的同步
 

每个 DAC 使用一个 PLL 实现 DAC 同步
如果 DAC 使用锁相环(PLL)合成器来定时,那么同步两个 DAC 的方法就是每个 DAC 使用单独的 PLL (图 7)。DAC1 和 DAC2 的 LVDS 数据时钟输出相位与参考时钟相比较。这样的话,DAC 的内部时钟分频器在时钟生成 PLL 中作为反馈分频器使用。

 

图 7. 每个 DAC 使用一个 PLL 实现 MUX-DAC 同步

 

这种方法中,两个 DAC 的建立和保持时间相匹配。但是这种方法有两个缺点,两个 PLL 会带来额外的成本且 PLL 的相位噪声极限可能会造成性能极限。

 

结论
MAX19692 为 2.3Gsps、12 位、可工作于多个奈奎斯特频带内的 DAC,具有集成的 4:1 输入数据多路复用器,是 I/Q 应用中的理想器件。当 I/Q 应用中 MAX19692 的使用被强调时,所讨论的方案同样适用于其它 DAC 和应用,比如在多于两个通道应用中使用的 MAX5858A。本文所推荐的方案适用于任意数量的 DAC。为了对高速器件进行正确的同步,还必须考虑与电路板引线相关的延迟。