Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <iostream>
#include <set>
#include "../lib/waveform.h"
#include "../lib/AWG.h"
int main() {
auto sr = 614.4e6;
auto wfm = ArrayWaveform();
// idealy, waveform param setting here are loaded from
// another waveform via some sort of config file
wfm.setSamplingRate(sr);
wfm.setFreqResolution(1e3);
wfm.setFreqTone(
105e6,
1e6,
5
);
wfm.setAmplitude(std::vector<double> (5, 2000));
wfm.setPhase(std::vector<double> (5, 0));
wfm.printParam();
// generate waveform
auto wfmData = wfm.getStaticWaveform();
// auto awg = AWG();
// awg.open(0); // open card at index 0
// awg.setSampleRate(sr); // set card sampling rate
// awg.setActiveChannels(std::set<int> {0}); // set output channels
// awg.setChannel( // set channel output params
// 0,
// 2500,
// AWG::CHANNEL_STOPLVL::ZERO,
// true
// );
// awg.setTrigMode(
// 0,
// AWG::TRIGGER_MODE::POS
// ); // set trigger channel 0 (EXT0) mode to be positve edge
// awg.setTrigMaskOr({
// AWG::TRIGGER_MASK::EXT0,
// // AWG::TRIGGER_MASK::EXT1
// }); // set the trigger engine to be OR and enable both
// // channel EXT0 and/or EXT1
// awg.initReplayModeSeq(2); // intializes card for sequence replay mode
// // with two memory segments
// awg.writeSeqModeSegment(
// 0,
// wfmData.first,
// wfmData.second
// );
// awg.writeSeqModeSegment(
// 1,
// wfmData.first,
// wfmData.second
// ); // load wfms onto both memory segements for simplicity,
// // a memory segment needs only be initialized with data
// // if it is configured as part of the step sequence below
// awg.setSeqModeStep(
// 0,
// 0,
// 1,
// 1,
// AWG::SEQ_LOOPCONDITION::ONTRIG
// );
// awg.setSeqModeStep(
// 1,
// 1,
// 0,
// 1,
// AWG::SEQ_LOOPCONDITION::ONTRIG
// );
// awg.cardRun();
// awg.cardStop();
// awg.close();
return 0;
}