Instances of this class handle configuring, and enabling the MityDSP Dual Arbitrary Waveform Generator core I/O interface.
More...
#include <core/DspAwgDual.h>
List of all members.
Public Member Functions |
| tcDspAwgDual (void *apAddress) |
| This constructor is used to open a AWG core instance.
|
| ~tcDspAwgDual () |
| Default destructor.
|
void | Enable (bool abEnable, teWaveform aeAorB) |
| Enable the AWG Core (output waveform on next clock if internally triggered, or next clock after external trigger).
|
void | SetExtTrigger (bool abExtTrigger, teWaveform aeAorB) |
| Configure AWG Trigger Mode.
|
void | SetPhase (unsigned int anPhase, teWaveform aeAorB) |
| Configure AWG starting phase.
|
void | SetPhase (double afValue, teDegOrRad aeUnits, teWaveform aeAorB) |
| Configure AWG starting phase.
|
void | SetPhaseIncrement (unsigned int anPhaseInc, teWaveform aeAorB) |
| Set the AWG phase increment.
|
void | SetPhaseIncrement (double afValue, teDegOrRad aeUnits, teWaveform aeAorB) |
| Set the AWG phase increment.
|
int | SetWaveformSamples (unsigned short *apValues, int anNumValues, int anStartIndex=0, bool abImplementNow=true) |
| Update the working copy of the AWG waveform sample table.
|
void | SetWaveformSin (unsigned short anHalfAmplitude=0x7FFF) |
| Configure AWG waveform memory for sin wave output.
|
bool | IsEnabled (teWaveform aeAorB) |
| Check if AWG Core is enabled.
|
bool | IsExtTriggered (teWaveform aeAorB) |
| Check if AWG Core is configured for external trigger operation.
|
unsigned int | GetPhase (teWaveform aeAorB) |
| Read back the current 24-bit phase value.
|
unsigned int | GetPhaseIncrement (teWaveform aeAorB) |
| Read back the current phase increment value.
|
Static Public Attributes |
static const int | gnNumSamples = 512 |
| Number of waveform samples supported.
|
static const int | gnPhaseAccumulatorSize = 0x01000000 |
| Number of possible phase values.
|
Protected Member Functions |
void | CopyWaveform (void) |
| Internal routine to copy the working waveform table to the FPGA core.
|
Detailed Description
Instances of this class handle configuring, and enabling the MityDSP Dual Arbitrary Waveform Generator core I/O interface.
Each AWG Core provides 512 16-bit samples (linearly interpolated) to define a waveform, and a a pair of 24-bit phase accumulators and programmable increments to define the frequencies.
- See also:
- tcDspAwgDual Page
Member Enumeration Documentation
Enumeration to specify inputs in degrees vs. radians.
- Enumerator:
-
Enumeration to specify the A or B waveform.
- Enumerator:
-
Constructor & Destructor Documentation
tcDspAwgDual::tcDspAwgDual |
( |
void * |
apAddress | ) |
|
This constructor is used to open a AWG core instance.
The base address of the FPGA core must be provided.
- Parameters:
-
[in] | apAddress | The base address of the AWG core. |
- Returns:
- None.
- See also:
- DspAwgDual.h
tcDspAwgDual::~tcDspAwgDual |
( |
| ) |
|
Member Function Documentation
void tcDspAwgDual::Enable |
( |
bool |
abEnable, |
|
|
teWaveform |
aeAorB |
|
) |
| |
Enable the AWG Core (output waveform on next clock if internally triggered, or next clock after external trigger).
- Parameters:
-
[in] | abEnable | When true, waveform generation is enabled. |
[in] | aeAorB | eeA for the A waveform, eeB for the B waveform. |
- Returns:
- None.
void tcDspAwgDual::SetExtTrigger |
( |
bool |
abExtTrigger, |
|
|
teWaveform |
aeAorB |
|
) |
| |
Configure AWG Trigger Mode.
- Parameters:
-
[in] | abExtTrigger | When true, the core will be configured to start generating pulses when a rising edge is seen on the provided external trigger port of the core. When false, the core will generate pulses immediately (given it is enabled). |
[in] | aeAorB | eeA for the A waveform, eeB for the B waveform. |
- Returns:
- None.
void tcDspAwgDual::SetPhase |
( |
unsigned int |
anPhase, |
|
|
teWaveform |
aeAorB |
|
) |
| |
Configure AWG starting phase.
It is not recommended that this value be updated while the AWG is enabled.
- Parameters:
-
[in] | anPhase | The initial phase, as a 24-bit integer. |
[in] | aeAorB | eeA for the A waveform, eeB for the B waveform. |
- Returns:
- None.
Configure AWG starting phase.
It is not recommended that this value be updated while the AWG is enabled.
- Parameters:
-
[in] | afValue | The initial phase, as double precision float. |
[in] | aeUnits | Indicates whether phase is in degrees (eeDegrees) or radians (eeRadians) |
[in] | aeAorB | eeA for the A waveform, eeB for the B waveform. |
- Returns:
- None.
void tcDspAwgDual::SetPhaseIncrement |
( |
unsigned int |
anPhaseInc, |
|
|
teWaveform |
aeAorB |
|
) |
| |
Set the AWG phase increment.
This is the number of counts that the 24-bit phase register is incremented each clock cycle. The waveform value output is linearly interpolated from the surrounding values in the sample table.
- Parameters:
-
[in] | anPhaseInc | The phase increment, as a 24-bit integer. |
[in] | aeAorB | eeA for the A waveform, eeB for the B waveform. |
- Returns:
- None.
Set the AWG phase increment.
This is the number of counts that the 24-bit phase register is incremented each clock cycle. The waveform value output is linearly interpolated from the surrounding values in the sample table.
- Parameters:
-
[in] | afValue | The phase increment, as a 24-bit integer. |
[in] | aeUnits | Indicates whether phase increment is in degrees (eeDegrees) or radians (eeRadians). |
[in] | aeAorB | eeA for the A waveform, eeB for the B waveform. |
- Returns:
- None.
int tcDspAwgDual::SetWaveformSamples |
( |
unsigned short * |
apValues, |
|
|
int |
anNumValues, |
|
|
int |
anStartIndex = 0 , |
|
|
bool |
abImplementNow = true |
|
) |
| |
Update the working copy of the AWG waveform sample table.
This table consists of 512 16-bit amplitude samples uniformly distributed across 360-degrees of phase. The number of samples to be provided, and (optionally) the starting index in the sample table are provided. A boolean indicates whether or not the working table should be loaded to the FPGA following the update.
- Note:
- The application need only provide the 512 16-bit samples. Offsetting and repeating the values as required for the FPGA is handled internally.
-
For a discontinuous waveform, 513 samples may be provided. The last data point becomes the "next" sample for the 512th entry in the waveform table. Discontinuous waveforms cannot be defined in sections.
- Parameters:
-
[in] | apValues | Pointer to an array of 16-bit sample values. |
[in] | anNumValues | Number of values provided (0-512). |
[in] | anStartIndex | Starting index in the sample table (0-511, default:0). |
[in] | abImplementNow | Indicates whether or not working table should be copied to AWG (default: true). |
- Returns:
- Number of samples actually written.
void tcDspAwgDual::SetWaveformSin |
( |
unsigned short |
anHalfAmplitude = 0x7FFF | ) |
|
Configure AWG waveform memory for sin wave output.
The output is scaled to be centered at 1/2 the full scale output of the AWG.
- Parameters:
-
[in] | anHalfAmplitude | Number of LSB's for 1/2 amplitude. Maximum value should be 0x7FFF. |
- Returns:
- None.
Check if AWG Core is enabled.
- Parameters:
-
[in] | aeAorB | eeA for the A waveform, eeB for the B waveform. |
- Returns:
- true if the core is enabled.
bool tcDspAwgDual::IsExtTriggered |
( |
teWaveform |
aeAorB | ) |
|
Check if AWG Core is configured for external trigger operation.
- Parameters:
-
[in] | aeAorB | eeA for the A waveform, eeB for the B waveform. |
- Returns:
- true if the core triggering is from external source.
unsigned int tcDspAwgDual::GetPhase |
( |
teWaveform |
aeAorB | ) |
|
Read back the current 24-bit phase value.
- Parameters:
-
[in] | aeAorB | eeA for the A waveform, eeB for the B waveform. |
- Returns:
- The 24-bit phase value.
unsigned int tcDspAwgDual::GetPhaseIncrement |
( |
teWaveform |
aeAorB | ) |
|
Read back the current phase increment value.
- Parameters:
-
[in] | aeAorB | eeA for the A waveform, eeB for the B waveform. |
- Returns:
- The current 24-bit phase increment per clock.
void tcDspAwgDual::CopyWaveform |
( |
void |
| ) |
|
|
protected |
Internal routine to copy the working waveform table to the FPGA core.
- Note:
- Currently, no support for a partial table load. The working table may be loaded in pieces, but sending the working table to the FPGA is always done in its entirety.
- Returns:
- None.
Member Data Documentation
const int MityDSP::tcDspAwgDual::gnNumSamples = 512 |
|
static |
Number of waveform samples supported.
const int MityDSP::tcDspAwgDual::gnPhaseAccumulatorSize = 0x01000000 |
|
static |
Number of possible phase values.
SEM_Handle MityDSP::tcDspAwgDual::mhMutex |
|
protected |
volatile unsigned int* MityDSP::tcDspAwgDual::mpBaseAddr |
|
protected |
Mutex to serialize access.