DDS_HOLD[n] レジスタを設定すると、DDS チャネル n のホールド モードを有効化できます。これにより、DDS がベクトルを保持して、長さ (および一定の周波数と振幅) のトーンを生成し、このトリガを使用して周波数または振幅のランプを開始した後、別の周波数や振幅に保持できます。ホールド モードが有効になっている場合、次の変更が適用されます。
- DDS 出力を有効化する初期トリガは、最初のベクトルのトリガ条件を満たしません。詳細については、『初期起動』を参照してください。
- 最初のトリガの後、ベクトル プロセッサがストールしても、DDS 出力はミュートされません。代わりに、ベクトルは開始されますが、無期限に実行されます (トリガ イベントを待機します)。トリガ イベントが発生すると、DDS は、現在のベクトルの NUM_SAMP_M32+32 の追加サンプルを再生してから、次のベクトルに進みます。
- 位相アキュームレータは、位相連続モードで動作します。これにより、各ベクトルを開始するときの位相連続動作が保証されます。最初のベクトルの PHASE_START 値は、起動後に最初のトリガが発生したときに 1 回適用されますが、その後のすべての操作で 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 を繰り返します。