DDS_HOLD[n] 寄存器可以設(shè)置為在 DDS 通道 n 上啟用保持模式。這使得 DDS 能夠保持矢量以生成長度無限(以及恒定頻率和振幅)的音調(diào),然后使用觸發(fā)器啟動頻率或振幅斜坡,接著以不同的頻率和/或振幅再次保持。激活保持模式后,適用以下更改:
- 啟用 DDS 輸出的初始觸發(fā)也不滿足第一個矢量的觸發(fā)條件。有關(guān)完整詳細(xì)信息,請參閱“初始啟動”。
- 在初始觸發(fā)后,每當(dāng)矢量處理器停止時,DDS 輸出不會靜音。相反,矢量啟動,但會無限期運(yùn)行(等待觸發(fā)事件)。一旦發(fā)生觸發(fā)事件,DDS 會在繼續(xù)播放下一個矢量之前播放電流矢量的 NUM_SAMP_M32+32 個額外樣本。
- 相位累加器以相位連續(xù)模式運(yùn)行。這可確保在啟動每個矢量時具有相位連續(xù)行為。當(dāng)啟動后發(fā)生第一個觸發(fā)時,會應(yīng)用第一個矢量的 PHASE_START 值,但隨后的所有操作都會忽略 PHASE_START 值。
- 每個矢量的長度必須是 32 的倍數(shù)(所有矢量的 NUM_SAMP_M32 字段必須是 32 的倍數(shù))。
- 必須禁用索引模式 (DDS_IMODE=0).。
- 必須禁用對稱模式(當(dāng) DDS_HOLD[n] 為 1 時,DDS_SYM[n] 必須為 0)。
(轉(zhuǎn)到典型應(yīng)用示例)下面是任意頻率和/或振幅之間平滑過渡的示例用例。在本描述中,矢量編號是通道矢量塊內(nèi)的偏移量。
- 設(shè)置初始頻率/振幅:
- 啟用保持模式 (DDS_HOLD) 并將矢量 0 (DDS_VEC) 設(shè)定為初始所需的頻率和振幅:
- 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,并等待觸發(fā)。
- 斜升至新的頻率/振幅:
- 當(dāng)需要新的頻率或振幅時,對矢量 1 進(jìn)行設(shè)定以生成從初始頻率/振幅(在步驟 1 中)開始、到新頻率和振幅結(jié)束的頻率或振幅斜坡。將 VTRIG_MODE 設(shè)置為 0斜坡的持續(xù)時間由 NUM_SAMP_M32 設(shè)置。對 FREQ_STEP、AMP_STEP 和 STEP_EXP 的相應(yīng)值進(jìn)行設(shè)定。設(shè)定 VTRIG_MODE = 0 和 LAST_VEC = 1。
- 使用新的頻率/振幅更新矢量 0(它尚未產(chǎn)生任何影響)。矢量 0 的其他字段可以保持不變(與步驟 1 相同)。
- 使用任何觸發(fā)方法觸發(fā) DDS。這會導(dǎo)致 DDS 播放矢量1(斜坡),然后返回到矢量 0(該矢量為新頻率和/或振幅)。然后,DDS 無限期地保持在矢量 0 上。
- 當(dāng)需要一個新的頻率或振幅時,重復(fù)步驟 2。