Go to the documentation of this file.
39 #ifndef AXI_DAC_CORE_H_
40 #define AXI_DAC_CORE_H_
103 extern const uint16_t
sine_lut[128];
126 uint32_t chan, uint32_t freq_hz);
129 uint32_t chan, uint32_t *freq);
132 uint32_t chan, uint32_t phase);
135 uint32_t chan, uint32_t *phase);
139 int32_t scale_micro_units);
143 int32_t *scale_micro_units);
174 const uint32_t *custom_data_iq,
175 uint32_t custom_tx_count,
int32_t axi_dac_dds_set_calib_scale(struct axi_dac *dac, uint32_t chan, int32_t val, int32_t val2)
Calibrate scale for specific AXI DAC channel.
Definition: axi_dac_core.c:698
int32_t axi_dac_data_setup(struct axi_dac *dac)
AXI DAC Data Setup.
Definition: axi_dac_core.c:978
@ AXI_DAC_DATA_SEL_ZERO
Definition: axi_dac_core.h:82
const char * name
Definition: axi_dac_core.h:56
int32_t axi_dac_set_datasel(struct axi_dac *dac, int32_t chan, enum axi_dac_data_sel sel)
AXI DAC Set Data type for specific channel.
Definition: axi_dac_core.c:379
int32_t axi_dac_dds_set_scale(struct axi_dac *dac, uint32_t chan, int32_t scale_micro_units)
AXI DAC Set DDS scale for specific channel.
Definition: axi_dac_core.c:503
int32_t axi_dac_read(struct axi_dac *dac, uint32_t reg_addr, uint32_t *reg_data)
AXI DAC Data Read.
Definition: axi_dac_core.c:347
#define AXI_DAC_IQCOR_COEFF_1(x)
Definition: axi_dac_core.c:105
int32_t axi_dac_init_begin(struct axi_dac **dac_core, const struct axi_dac_init *init)
Begin AXI DAC Initialization.
Definition: axi_dac_core.c:887
int32_t axi_dac_dds_get_scale(struct axi_dac *dac, uint32_t chan, int32_t *scale_micro_units)
AXI DAC Get DDS scale for specific channel.
Definition: axi_dac_core.c:534
int32_t axi_dac_dds_get_calib_scale(struct axi_dac *dac, uint32_t chan, int32_t *val, int32_t *val2)
Get the scale calibration values for AXI DAC channel.
Definition: axi_dac_core.c:714
uint64_t clock_hz
Definition: axi_dac_core.h:62
uint32_t axi_dac_set_sine_lut(struct axi_dac *dac, uint32_t address)
AXI DAC Set data based on a Sine Lookup Table.
Definition: axi_dac_core.c:760
uint32_t base
Definition: axi_dac_core.h:71
uint32_t pat_data
Definition: axi_dac_core.h:99
#define AXI_DAC_REG_CLK_RATIO
Definition: axi_dac_core.c:71
int32_t axi_dac_init_finish(struct axi_dac *dac)
Begin AXI DAC Initialization.
Definition: axi_dac_core.c:911
@ AXI_DAC_DATA_SEL_DDS
Definition: axi_dac_core.h:79
const uint16_t sine_lut[128]
Definition: axi_dac_core.c:110
int32_t axi_dac_dds_get_phase(struct axi_dac *dac, uint32_t chan, uint32_t *phase)
AXI DAC Get DDS phase for specific channel.
Definition: axi_dac_core.c:477
Header file of Delay functions.
#define DAC_REG_DATA_PATTERN(c)
Definition: axi_dac_core.c:91
uint32_t dds_frequency_1
Definition: axi_dac_core.h:95
uint32_t dds_phase_1
Definition: axi_dac_core.h:96
int32_t axi_dac_set_buff(struct axi_dac *dac, uint32_t address, uint16_t *buff, uint32_t buff_size)
AXI DAC Set data buffer.
Definition: axi_dac_core.c:825
void axi_dac_dds_from_signed_mag_fmt(uint32_t val, int32_t *r_val, int32_t *r_val2)
AXI DAC Convert from signed magnitude format.
Definition: axi_dac_core.c:597
int32_t axi_dac_dds_get_frequency(struct axi_dac *dac, uint32_t chan, uint32_t *freq)
AXI DAC Get DDS frequency for specific channel.
Definition: axi_dac_core.c:427
int32_t axi_dac_dds_set_phase(struct axi_dac *dac, uint32_t chan, uint32_t phase)
AXI DAC Set DDS phase for specific channel.
Definition: axi_dac_core.c:452
#define AXI_DAC_SYNC
Definition: axi_dac_core.c:61
#define AXI_DAC_IQCOR_COEFF_2(x)
Definition: axi_dac_core.c:107
int32_t axi_dac_dds_set_frequency(struct axi_dac *dac, uint32_t chan, uint32_t freq_hz)
AXI DAC Set DDS frequency for specific channel.
Definition: axi_dac_core.c:403
struct axi_dac_channel * channels
Definition: axi_dac_core.h:75
#define AXI_DAC_TO_DDS_INIT(x)
Definition: axi_dac_core.c:87
int32_t axi_dac_dds_set_scale(struct axi_dac *dac, uint32_t chan, int32_t scale_micro_units)
AXI DAC Set DDS scale for specific channel.
Definition: axi_dac_core.c:503
#define AXI_DAC_REG_SYNC_CONTROL
Definition: axi_dac_core.c:60
Driver for the Analog Devices AXI-DAC-CORE module.
@ AXI_DAC_DATA_SEL_PN15
Definition: axi_dac_core.h:84
#define AXI_DAC_REG_STATUS
Definition: axi_dac_core.c:75
uint32_t axi_dac_set_sine_lut(struct axi_dac *dac, uint32_t address)
AXI DAC Set data based on a Sine Lookup Table.
Definition: axi_dac_core.c:760
int32_t axi_dac_dds_set_calib_phase(struct axi_dac *dac, uint32_t chan, int32_t val, int32_t val2)
Calibrate phase for specific AXI DAC channel.
Definition: axi_dac_core.c:730
#define AXI_DAC_REG_RSTN
Definition: axi_dac_core.c:56
#define AXI_DAC_REG_DATA_SELECT(c)
Definition: axi_dac_core.c:93
#define AXI_DAC_DDS_INCR(x)
Definition: axi_dac_core.c:88
#define AXI_DAC_REG_CLK_FREQ
Definition: axi_dac_core.c:67
#define AXI_DAC_RATE(x)
Definition: axi_dac_core.c:64
uint64_t no_os_do_div(uint64_t *n, uint64_t base)
void no_os_mdelay(uint32_t msecs)
Wait until msecs milliseconds passed.
Definition: aducm3029_delay.c:132
int32_t axi_dac_dds_get_calib_phase(struct axi_dac *dac, uint32_t chan, int32_t *val, int32_t *val2)
Get the phase calibration values for AXI DAC channel.
Definition: axi_dac_core.c:746
int32_t axi_dac_write(struct axi_dac *dac, uint32_t reg_addr, uint32_t reg_data)
AXI DAC Data Write.
Definition: axi_dac_core.c:363
Definition: axi_dac_core.h:91
int32_t axi_dac_set_datasel(struct axi_dac *dac, int32_t chan, enum axi_dac_data_sel sel)
AXI DAC Set Data type for specific channel.
Definition: axi_dac_core.c:379
const char * name
Definition: axi_dac_core.h:69
uint32_t base
Definition: axi_dac_core.h:58
int32_t axi_dac_dds_get_calib_scale(struct axi_dac *dac, uint32_t chan, int32_t *val, int32_t *val2)
Get the scale calibration values for AXI DAC channel.
Definition: axi_dac_core.c:714
#define AXI_DAC_DDS_SCALE(x)
Definition: axi_dac_core.c:82
const uint32_t sine_lut_iq[1024]
Definition: axi_dac_core.c:129
uint32_t dds_frequency_0
Definition: axi_dac_core.h:92
#define AXI_DAC_REG_RATECNTRL
Definition: axi_dac_core.c:63
#define AXI_DAC_TO_IQCOR_COEFF_1(x)
Definition: axi_dac_core.c:106
Definition: axi_dac_core.h:67
int32_t dds_scale_0
Definition: axi_dac_core.h:94
uint8_t num_channels
Definition: axi_dac_core.h:73
int32_t no_os_axi_io_read(uint32_t base, uint32_t offset, uint32_t *data)
AXI IO Altera specific read function.
Definition: altera_axi_io.c:59
AXI DAC Device Descriptor.
Definition: axi_dac_core.h:54
@ AXI_DAC_DATA_SEL_PN23
Definition: axi_dac_core.h:85
uint8_t num_channels
Definition: axi_dac_core.h:60
const uint16_t sine_lut[128]
Definition: adc_demo.c:53
int32_t axi_dac_dds_set_calib_scale(struct axi_dac *dac, uint32_t chan, int32_t val, int32_t val2)
Calibrate scale for specific AXI DAC channel.
Definition: axi_dac_core.c:698
struct axi_dac_channel * channels
Definition: axi_dac_core.h:64
int32_t axi_dac_remove(struct axi_dac *dac)
AXI DAC Resources deallocation.
Definition: axi_dac_core.c:1023
#define AXI_DAC_REG_DDS_SCALE(x)
Definition: axi_dac_core.c:81
int32_t axi_dac_dds_set_phase(struct axi_dac *dac, uint32_t chan, uint32_t phase)
AXI DAC Set DDS phase for specific channel.
Definition: axi_dac_core.c:452
int32_t axi_dac_load_custom_data(struct axi_dac *dac, const uint32_t *custom_data_iq, uint32_t custom_tx_count, uint32_t address)
AXI DAC Load custom data.
Definition: axi_dac_core.c:852
int32_t axi_dac_dds_set_frequency(struct axi_dac *dac, uint32_t chan, uint32_t freq_hz)
AXI DAC Set DDS frequency for specific channel.
Definition: axi_dac_core.c:403
void * no_os_malloc(size_t size)
int32_t axi_dac_init(struct axi_dac **dac_core, const struct axi_dac_init *init)
AXI DAC Main Initialization.
Definition: axi_dac_core.c:940
#define AXI_DAC_REG_CHAN_CNTRL_8(c)
Definition: axi_dac_core.c:104
void no_os_free(void *ptr)
uint32_t dds_phase_0
Definition: axi_dac_core.h:93
const uint32_t sine_lut_iq[1024]
Definition: axi_dac_core.c:129
@ AXI_DAC_DATA_SEL_SED
Definition: axi_dac_core.h:80
#define AXI_DAC_REG_DDS_INIT_INCR(x)
Definition: axi_dac_core.c:85
int32_t axi_dac_dds_get_calib_phase(struct axi_dac *dac, uint32_t chan, int32_t *val, int32_t *val2)
Get the phase calibration values for AXI DAC channel.
Definition: axi_dac_core.c:746
int32_t axi_dac_data_setup(struct axi_dac *dac)
AXI DAC Data Setup.
Definition: axi_dac_core.c:978
#define AXI_DAC_REG_CHAN_CNTRL_6(c)
Definition: axi_dac_core.c:97
int32_t no_os_axi_io_write(uint32_t base, uint32_t offset, uint32_t data)
AXI IO Altera specific write function.
Definition: altera_axi_io.c:73
int32_t axi_dac_init_begin(struct axi_dac **dac_core, const struct axi_dac_init *init)
Begin AXI DAC Initialization.
Definition: axi_dac_core.c:887
int32_t axi_dac_remove(struct axi_dac *dac)
AXI DAC Resources deallocation.
Definition: axi_dac_core.c:1023
uint32_t axi_dac_dds_to_signed_mag_fmt(int32_t val, int32_t val2)
AXI DAC Convert to signed magnitude format.
Definition: axi_dac_core.c:561
int32_t axi_dac_dds_get_scale(struct axi_dac *dac, uint32_t chan, int32_t *scale_micro_units)
AXI DAC Get DDS scale for specific channel.
Definition: axi_dac_core.c:534
#define AXI_DAC_IQCOR_ENB
Definition: axi_dac_core.c:98
enum axi_dac_data_sel sel
Definition: axi_dac_core.h:100
#define AXI_DAC_MMCM_RSTN
Definition: axi_dac_core.c:57
@ AXI_DAC_DATA_SEL_PN31
Definition: axi_dac_core.h:86
uint32_t dds_dual_tone
Definition: axi_dac_core.h:98
int32_t axi_dac_load_custom_data(struct axi_dac *dac, const uint32_t *custom_data_iq, uint32_t custom_tx_count, uint32_t address)
AXI DAC Load custom data.
Definition: axi_dac_core.c:852
#define AXI_DAC_TO_IQCOR_COEFF_2(x)
Definition: axi_dac_core.c:108
@ AXI_DAC_DATA_SEL_DMA
Definition: axi_dac_core.h:81
#define AXI_DAC_REG_CHAN_CNTRL_7(c)
Definition: axi_dac_core.c:100
#define AXI_DAC_DDS_INIT(x)
Definition: axi_dac_core.c:86
Header file of utility functions.
int32_t dds_scale_1
Definition: axi_dac_core.h:97
int32_t axi_dac_dds_set_calib_phase(struct axi_dac *dac, uint32_t chan, int32_t val, int32_t val2)
Calibrate phase for specific AXI DAC channel.
Definition: axi_dac_core.c:730
int32_t axi_dac_init_finish(struct axi_dac *dac)
Begin AXI DAC Initialization.
Definition: axi_dac_core.c:911
#define AXI_DAC_TO_DDS_SCALE(x)
Definition: axi_dac_core.c:83
int32_t axi_dac_init(struct axi_dac **dac_core, const struct axi_dac_init *init)
AXI DAC Main Initialization.
Definition: axi_dac_core.c:940
axi_dac_data_sel
Definition: axi_dac_core.h:78
@ AXI_DAC_DATA_SEL_LB
Definition: axi_dac_core.h:87
@ AXI_DAC_DATA_SEL_PN7
Definition: axi_dac_core.h:83
#define AXI_DAC_RSTN
Definition: axi_dac_core.c:58
@ AXI_DAC_DATA_SEL_PNXX
Definition: axi_dac_core.h:88
int32_t axi_dac_dds_get_calib_phase_scale(struct axi_dac *dac, uint32_t phase, uint32_t chan, int32_t *val, int32_t *val2)
Get the phase scale calibration values for AXI DAC channel.
Definition: axi_dac_core.c:669
int32_t axi_dac_dds_get_phase(struct axi_dac *dac, uint32_t chan, uint32_t *phase)
AXI DAC Get DDS phase for specific channel.
Definition: axi_dac_core.c:477
int32_t axi_dac_dds_set_calib_phase_scale(struct axi_dac *dac, uint32_t phase, uint32_t chan, int32_t val, int32_t val2)
Calibrate phase scale for specific AXI DAC channel.
Definition: axi_dac_core.c:634
int32_t axi_dac_set_buff(struct axi_dac *dac, uint32_t address, uint16_t *buff, uint32_t buff_size)
AXI DAC Set data buffer.
Definition: axi_dac_core.c:825
int32_t axi_dac_dds_get_frequency(struct axi_dac *dac, uint32_t chan, uint32_t *freq)
AXI DAC Get DDS frequency for specific channel.
Definition: axi_dac_core.c:427