SBASAO8 June 2025 DAC39RF20
ADVANCE INFORMATION
Any DSP channel can operate in DDS Vector mode (see DSP_MODEn). In this mode, the interpolation filters are disabled and the NCO/Mixer logic is repurposed to generate user-defined waveforms (defined by DDS_VEC). The DSP does not require any input samples from the JESD interface.
| Term | Definition |
|---|---|
| Vector Field | Each DDS Vector is made up of several fields that define signal attributes to produce a waveform segment. Example fields are PHASE_START and FREQ_START. |
| Vector | A vector is one entry in the vector table and contains fields which define a waveform segment (see DDS_VEC) |
| Vector Table | A table of vectors that are used by the DDS (see DDS_VEC). |
| Vector Block | A portion of the vector table assigned to a DDS channel (a subset of DDS_VEC) |
| Waveform Segment | A signal that the DDS produces based on a single vector in the vector table. |
| Waveform | A signal that is produced by playing a sequence of waveform segments |
| Stalled | The vector processor is stalled when waiting for a trigger event. This always occurs at startup. Stalling also occurs if a vector is loaded that has the vector's VTRIG_MODE field set and no trigger is active or already queued in the trigger queue. In general, the DDS output is muted while the vector processor is stalled; however, Hold mode defines an exception to this. |
The DDS Vector mode synthesizer is shown in Figure 7-41. Key features are:
The vector table (defined by DDS_VEC) is divided into blocks and assigned to the DSP channels. The DSP channels are grouped into channel sets (channel 0 and 2 are grouped and channel 1 and 3 are grouped). When both DSP channels in a group are in DDS-Vector mode, the memory is shared between the two channels. This is depicted in Table 7-10. Each DDS channel executes the vectors in the channel's assigned vector block in ascending order, starting with the lowest index. When a DDS channel finishes playing a vector, the channel inspects the LAST_VEC field of that vector. If LAST_VEC=1, the channel starts over at the beginning of the channels assigned vector block.
| Vector Range | If channel 2 is NOT in DDS-Vector Mode | If channel 0 is NOT in DDS-Vector Mode | If channel 0 and 2 are both in DDS-Vector Mode |
|---|---|---|---|
| DDS_VEC[0:63] | Channel 0 | Channel 2 | Channel 0 |
| DDS_VEC[64:127] | Channel 2 |
| Vector Range | If channel 3 is NOT in DDS-Vector Mode | If channel 1 is NOT in DDS-Vector Mode | If channel 1 and 3 are both in DDS-Vector Mode |
|---|---|---|---|
| DDS_VEC[128:191] | Channel 1 | Channel 3 | Channel 1 |
| DDS_VEC[192:255] | |||
| DDS_VEC[256:319] | Channel 3 | ||
| DDS_VEC[320:383] |
The mapping in the above tables allows channel 0 and 2 to share resources. Similarly, channel 1 and 3 share resources.
More memory is allocated to channels 1 and 3. This maximizes the available memory when combining DDS-Vector mode with DUC or DDS-Stream modes. In those mixed configurations, the DDS-Vector mode applies to channels 1, 2, and/or 3, but not channel 0.
The Vector Processor is responsible for reading each vector, formatting and scaling the parameters, and applying them to the DDS accumulators for the proper duration of time.
Table 7-12 defines how the parameters produced by the Vector Processor. All references to DDS vector fields refer to the field of the specific vector being played.
| Signal | Format | Description |
|---|---|---|
| step_exp | Integer |
Step exponent. Ranges from -4 to -32. The purpose of this value is to apply a scaling factor to the amplitude and frequency step that is appropriate for the duration of the vector. Longer vectors use a smaller scaling factor (larger STEP_EXP value). step_exp = -STEP_EXP - 1 The recommended value for the STEP_EXP field of each vector is: STEP_EXP = floor(log2(NUM_SAMP_M32+32)) - 1 |
| amp_start | 49-bit signed |
Initial value for amplitude accumulator. Applied when a vector begins. amp_start = AMP_START * 233 amp_start can be set to zero to mute the DDS output while waiting for a trigger. |
| amp_step | 49-bit signed |
Initial value for amplitude step accumulator. amp_step =AMP_STEP * 233 * 2step_exp + amp_step/2 Note: The “amp_step2/2” term makes sure that the sequence of amplitude values follows a simpler quadradic equation. |
| amp_step2 | 49-bit signed |
Step for amplitude step accumulator (2nd order term). Applied during the entire vector. This term only applies when 2nd-order amplitude is enabled (see DDS_AMP2) amp_step2 = AMP_STEP2 * 233 * 4step_exp |
| freq_start | 65-bit |
Initial value for frequency accumulator. Applied when a vector begins. freq_start =FREQ_START * 217 + freq_step/2 Note: The “freq_step/2” term makes sure that the sequence of phase values follows a simpler quadradic equation. Note: When 2nd-order amplitude is enabled (see DDS_AMP2), the lower 16-bits of FREQ_START are used for amplitude control, and the formula above for freq_start assumes those 16-bits are zero. |
| freq_step | 65-bit |
Step value for frequency accumulator. Applied during the entire vector. freq_step = FREQ_STEP * 233 * 2step_exp |
| phase_start | 65-bit |
Initial value for phase accumulator. Applied when a vector begins. phase_start = PHASE_START * 249 |
| vec_start | 1-bit |
Control signal indicating the start of a vector. Causes the accumulators to initialize. Asserted for one sample period. If the Vector Processor encounters a vector that requires a trigger (and no trigger is in the queue), the vec_start signal is asserted, but amp_start and amp_step are set to zero to mute the DDS output. Once the trigger occurs, vec_start is asserted again but this time with amp_start and amp_step configured normally to start the vector. If Hold Mode is active, no mute is generated. The amp_start and amp_step signals are not set to zero and vec_start is not pulsed a second time in response to the trigger event (because the vector is already playing). |
| load_phase | 1-bit | When Hold Mode is disabled, the load_phase signal matches the vec_start signal (the phase accumulator loads phase_start). When Hold Mode is enabled, load_phase remains low to achieve phase-continuous operation. |