本应用笔记将详细说明用于同步多个AD9779器件的数字数据输入的方法。DAC输出的相位对齐通过设计保证,精度小于一个DACCLK输出周期。然而,由于输出延迟不匹配(室温下及冷热温度下),多个DAC输出的相位对齐可能存在细微的不一致,本应用笔记不讨论这一问题。
同步方案
同步多个AD9779 DAC有两种方案。在第一种方案中,一个器件用作主器件,其余器件用作从器件。在第二种方案中,所有器件都是从器件。两种方案具有相同的时序限制,不存在性能权衡。主/从模式和从模式的框图分别如图1和图2所示。
图1. 主/从SYNC_I/O分配
图2. 从SYNC_I分配
同步详解
工作中,差分时钟信号驱动所有主器件和从器件的AD9779 REFCLK输入。REFCLK输入接收器是一个高增益差分放大器,各差分输入需要接近400 mV的共模输入电平和至少400 mV p-p的摆幅。
如果选定了主器件,可以使能主器件的差分LVDS输出信号,该信号称为SYNC_O+和SYNC_O?.通过寄存器0x07的位5,可以将SYNC_O设置为在DACCLK的上升沿或下降沿触发。SYNC_O还有一个可编程的延迟,可以通过寄存器0x04的位0 (MSB)和寄存器0x05的位[7:4] (LSB)设置。SYNC_O通过将同步驱动器使能位(寄存器0x07的位6)置1而使能。SYNC_O信号速度可以是REFCLK速度的整数除数,通过寄存器0x04的位[3:1]设置。主器件的REFCLK输入和SYNC_O信号的可能时序情况如图3所示。
图3. DACCLK SYNC_O时序
SYNC_O驱动器和SYNC_I接收器规定用于LVDS电平(参见AD9779数据手册)。
驱动多个AD9779器件的CMOS数字数据输入的并行数字输入总线在时间上应均衡。如果多条数据总线不均衡,可以利用AD9779的编程能力,通过DATA_CLOCK_DELAY(寄存器0x04的位[7:4])以大约180 ps的增量偏移各AD9779的锁存时间。AD9779无法补偿单条数据总线中包含的位偏斜。
在所有AD9779器件上,SYNC_I、REFCLK输入与CMOS数字输入数据之间都存在建立保持关系。AD9779数据手册的"时序信息"部分说明了这些时序关系。
SYNC_O和SYNC_O_DELAY的推荐应用是利用SYNC_O_DELAY来均衡SYNC_I和REFCLK的时序,确保其时序关系有效。
SYNC_I具有其自己的可编程延迟,可以通过寄存器0x05的位0 (MSB)和寄存器0x06的位[7:4] (LSB)设置。SYNC_I_DELAY可以用于均衡不理想或者选用图2所示电路的应用中。SYNC_I通过将同步接收器使能位(寄存器0x07的位7)置1而使能。
表1显示了增量延迟SYNC_O_DELAY和SYNC_I_DELAY,这些延迟可以通过SPI寄存器设置。
表 1
图4所示为用于同步多个AD9779的内部电路框图。在可编程的延迟后,SYNC_I信号得到处理,使得对于SYNC_I的每个上升沿,只剩下一个长度为DACCLK周期的脉冲。注意在这种情况下,DACCLK代表AD9779 DAC的内部采样速率时钟,它可以与REFCLK相同,具体取决于对AD9779的编程。长度为DACCLK周期的该单一脉冲驱动图4中的5位分频器的负载信号。分频器延迟逻辑的5信号输出代表所有插值速率的可能DATACLK信号,包括使能零填充的可能性。通过设置DACCLK偏移寄存器,图4中的位1至位4可以DACCLK周期为增量进行延迟。5位分频器的内部时序、负载信号的影响和DACCLK偏移值如图6所示。
图4. AD9779多DAC同步电路框图
边沿检测器还驱动误差检测电路,图5更详细地显示了该电路。可编程误差检测电路可以用来测量时序裕量,如果超出时序裕量,将产生中断。
图5. 可编程时序裕量和负载信号产生详情
图6. SYNC_I、DACCLK和DATACLK的内部时序
图5更详细地显示了图4中虚线所示的电路。在电路内部,FF5输入端的信号相互之间必须满足建立保持要求。FF5输入端的无效时序可能导致REFCLK与数字输入数据之间的同步丢失。此点的时序故障通常表现为DAC输出噪底的提高。对于DACCLK和SYNC_I输入,FF5输入端的时序要求变为建立保持要求。
改变同步输入延迟可以有效移动REFCLK/SYNC_I的有效时序窗口。在实际应用中,对于给定的同步输入延迟,将产生一个具有给定宽度的有效REFCLK/SYNC_I时序窗口。如果时序裕量按1递增,可以将时序裕量值设置为SYNC IRQ的设置值。将时序裕量设置为此值时,事实上是将SYNC IRQ设置为0裕量。SYNC IRQ不区别建立和保持违规引起的时序误差。然而,根据设计,当可编程时序裕量超过建立和保持裕量二者中的较小者时,SYNC IRQ置1.用户可以通过提高寄存器0x06位[3:0]的值来提高时序裕量。对于0裕量,如果存在任何偏向敏感(建立或保持)特性的漂移,则SYNC IRQ置1.
事实上,DACCLK会对边沿检测器的输出进行采样。边沿检测器的输出是一个逻辑高电平宽度等于一个DACCLK周期的单脉冲。为使负载信号有效,边沿检测器的输出在围绕内部DACCLK信号上升沿的给定时序窗口内必须保持稳定(高电平或低电平)。
假设可编程时序裕量设为0,并且FF5输入端的时序有效,则FF3和FF4的Q输出相同,SYNC IRQ处于复位状态。在同样的条件下,如果FF5输入端的时序无效,则FF3和FF4的输出不同,SYNC IRQ置1.如果FF5输入端存在有效的时序条件,则必须将可编程时序裕量设置为大于0的值才能确定时序裕量。
设计一个在主/从同步配置下使用AD9779的系统时,推荐的程序是在SYNC IRQ置1前找出SYNC_O_DELAY的值(在该值时,可编程时序裕量可以设置为最大可能的值),这代表最佳的时序和最大的时序裕量。然后,用户可以降低可编程时序裕量的值。可编程时序裕量的降幅代表SYNC IRQ对漂移的敏感度。
在AD9779可以接收的高DACCLK频率时,DACCLK和SYNC_I的有效时序窗口可能占DACCLK周期相当大的一部分。然而,在较低的DACCLK频率时,可编程时序裕量的范围可能不会让用户有机会找到无效的时序窗口。这种情况下,用户可以确信:在正常漂移下,AD9779不会随温度漂移到无效时序状况中。
为确保同步,SYNC_I的最大速率为DATACLK/2,其中DATACLK是AD9779的输入数据速率(不是DACCLK)。图6给出了应用SYNC_I的两个可能示例。在这两个例子中,AD9779均处于4×插值模式,SYNC_I以DACCLK/8的速度运行。因此,4×线也是DATACLK输出信号。在图6 (a)中,DACCLK偏移值设为00000.在内部SYNC_I延迟(a)信号的上升沿,DACCLK上升沿使所有DATACLK输出位复位到0.注意,为在时间(X)设置4×线,SYNC_I延迟必须发生在相对于DACCLK的窗口(Y)。如果SYNC_I延迟(a)的发生时间略微提前或落后于此窗口,4×线的上升沿将提前或滞后一个DACCLK周期。
注意,当DACCLK偏移值为00000时,应用SYNC_I延迟(a)与4×线的上升沿之间存在一个DACCLK周期的延迟。
在图6 (b)中,DACCLK偏移值在时间(Z)设为00010.因此,8×、4×和2×设为010(与DACCLK偏移位一致)。4×线(DATACLK输出)的下一个上升沿出现在3个DACCLK周期之后。
如果多个DAC在某一时间窗口内接收到SYNC_I脉冲,并且它们全都具有相同的DACCLK偏移值,则其DATACLK信号同步。因此,多个AD9779器件的数据锁存同时发生。
在初始同步期间,2×、4×和8×计数器位可能不连续。这就是说,在初始应用SYNC_I上升沿时,计数器可能处于这样一种状态,使得同步可能导致其改变多个值。然而,在初始同步完成后,只要SYNC_I的速度保持DATACLK/2或更慢,那么同步脉冲只会在2×、4×和8×位复位到0时出现。(这似乎是多余的,但在实现同步后,SYNC_I脉冲实际上不必应用。)初始脉冲后的周期性SYNC_I脉冲主要用于AD9779器件失去同步这一罕有场合。电源毛刺或不良时钟脉冲触发系统中的某些但不是全部AD9779器件时,可能发生器件失去同步的情况。
时序规格。
第一个需要注意的时序规格是SYNC_I与REFCLK之间的关系,如图7所示。从AD9779数据手册可知,所需的时序规格为:tS = -0.2 ns,tH = 1.0 ns.
图7. REFCLK与SYNC_I的时序关系
如果DACCLK OFFSET值被设置为非0值,则图7所示的DACCLK信号会左移一个DACCLK周期。同样,如果SYNC_I_DELAY被设置为非0值,则SYNC_I_DELAY每递增一次,图7中的SYNC_I信号就会左移AD9779数据手册给定的SYNC_I_DELAY增量。
第二个重要时序规格是DATACLK输出与数字输入数据之间的时序关系,该时序信息如图8所示。当DATACLK_DELAY_ENABLE复位时,这些值有效。如果DATACLK_DELAY_ENABLE置1,则DATACLK发生延迟(移至图8右侧),而数字输入数据的采样点保持静止。因此,tS和tH的阻挡窗口相对于DATACLK左移。DATACLK_DELAY_ENABLE置1时,每递增一次的平均延迟和DATACLK_DELAY的增量值参见AD9779数据手册。
图8. 建立保持、DATACLK到输入数据
建立保持数据与REFCLK的关系参见AD9779数据手册,某些应用中该数据也是必要的。