DDS_HOLD[n] 寄存器可以设置为在 DDS 通道 n 上启用保持模式。这使得 DDS 能够保持矢量以生成长度无限(以及恒定频率和振幅)的音调,然后使用触发器启动频率或振幅斜坡,接着以不同的频率和/或振幅再次保持。激活保持模式后,适用以下更改:
- 启用 DDS 输出的初始触发也不满足第一个矢量的触发条件。有关完整详细信息,请参阅“初始启动”。
- 在初始触发后,每当矢量处理器停止时,DDS 输出不会静音。相反,矢量启动,但会无限期运行(等待触发事件)。一旦发生触发事件,DDS 会在继续播放下一个矢量之前播放电流矢量的 NUM_SAMP_M32+32 个额外样本。
- 相位累加器以相位连续模式运行。这可确保在启动每个矢量时具有相位连续行为。当启动后发生第一个触发时,会应用第一个矢量的 PHASE_START 值,但随后的所有操作都会忽略 PHASE_START 值。
- 每个矢量的长度必须是 32 的倍数(所有矢量的 NUM_SAMP_M32 字段必须是 32 的倍数)。
- 必须禁用索引模式 (DDS_IMODE=0).。
- 必须禁用对称模式(当 DDS_HOLD[n] 为 1 时,DDS_SYM[n] 必须为 0)。
(转到典型应用示例)下面是任意频率和/或振幅之间平滑过渡的示例用例。在本描述中,矢量编号是通道矢量块内的偏移量。
- 设置初始频率/振幅:
- 启用保持模式 (DDS_HOLD) 并将矢量 0 (DDS_VEC) 设定为初始所需的频率和振幅:
- FREQ_START = 所需的频率;
- AMP_START = 所需的振幅;
- NUM_SAMP_M32 = 0;FREQ_STEP = 0;AMP_STEP = 0;STEP_EXP = 0;VTRIG_MODE = 1;LAST_VEC = 0;
- 启动 DDS (SYS_EN=1)。
- DDS 无限期地播放矢量 0,并等待触发。
- 斜升至新的频率/振幅:
- 当需要新的频率或振幅时,对矢量 1 进行设定以生成从初始频率/振幅(在步骤 1 中)开始、到新频率和振幅结束的频率或振幅斜坡。将 VTRIG_MODE 设置为 0斜坡的持续时间由 NUM_SAMP_M32 设置。对 FREQ_STEP、AMP_STEP 和 STEP_EXP 的相应值进行设定。设定 VTRIG_MODE = 0 和 LAST_VEC = 1。
- 使用新的频率/振幅更新矢量 0(它尚未产生任何影响)。矢量 0 的其他字段可以保持不变(与步骤 1 相同)。
- 使用任何触发方法触发 DDS。这会导致 DDS 播放矢量1(斜坡),然后返回到矢量 0(该矢量为新频率和/或振幅)。然后,DDS 无限期地保持在矢量 0 上。
- 当需要一个新的频率或振幅时,重复步骤 2。