Jump to content

Meindert Norg

Members
  • Posts

    11
  • Joined

  • Last visited

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Meindert Norg's Achievements

Member

Member (2/4)

1

Reputation

  1. Attila, I indeed measure about 30 ns of 'drift' that you contribute to fetching data from RAM. However, I don't seem to be able to eliminate that. Can you please educate me on how to configure what you call 'finite run with repeat' vs 'continuous run'? I interpret 'finite run with repeat' to be set with: WaveFormLib.FDwfAnalogOutEnableSet(hdwf, channel, 1) WaveFormLib.FDwfAnalogOutFunctionSet(hdwf, channel, dwfc.funcPlayPattern) WaveFormLib.FDwfAnalogOutFrequencySet(hdwf, channel, ctypes.c_double(hzRate)) WaveFormLib.FDwfAnalogOutAmplitudeSet(hdwf, channel, ctypes.c_double(ampOutVoltageRange)) WaveFormLib.FDwfAnalogOutRepeatSet(hdwf, channel, ctypes.c_double(0)) # WaveFormLib.FDwfAnalogOutRunSet(hdwf, channel, ctypes.c_double(0)) WaveFormLib.FDwfAnalogOutDataSet(hdwf, channel, rgdPlay, nrSamples) WaveFormLib.FDwfAnalogOutConfigure(hdwf, channel, 1) and 'continuous run' to be set with WaveFormLib.FDwfAnalogOutRunSet(hdwf, channel, ctypes.c_double(0))WaveFormLib.FDwfAnalogOutEnableSet(hdwf, channel, 1) WaveFormLib.FDwfAnalogOutFunctionSet(hdwf, channel, dwfc.funcPlayPattern) WaveFormLib.FDwfAnalogOutFrequencySet(hdwf, channel, ctypes.c_double(hzRate)) WaveFormLib.FDwfAnalogOutAmplitudeSet(hdwf, channel, ctypes.c_double(ampOutVoltageRange)) # WaveFormLib.FDwfAnalogOutRepeatSet(hdwf, channel, ctypes.c_double(0)) WaveFormLib.FDwfAnalogOutRunSet(hdwf, channel, ctypes.c_double(0)) WaveFormLib.FDwfAnalogOutDataSet(hdwf, channel, rgdPlay, nrSamples) WaveFormLib.FDwfAnalogOutConfigure(hdwf, channel, 1) but they both give the same 30ns per record drift. The way I measure this: Generate 100 kHz signal with external signal generator, view on ch1 of benchtop o'scope and connect to AD pro input 1 Connect AD Pro output 2 to ch2 or benchtop o'scope Run RecordOnlyExample.py (generates .pkl file with recorded data) Run PlaybackOnlyExample (plays back data from PlaybackOnlyExample.pyRecordOnlyExample.py.pkl file) Watch the 2 signals on the o'scope drift w.r.t. each other. Count the time for 1 period drift (~33 sec). 33 sec for at a record length of 100 ms = 330 'drift events' 1 period of 100 kHz signal == 10 usec 10 usec / 330 events = 30 ns. Thank you for your input.
  2. Thank you Attila! Rev beta v3.23.19 indeed fixed the pulse and now continuous run dwf.FDwfAnalogOutRunSet(hdwf, iWavegen, c_double(0)) also works. Thanks again. Meindert
  3. Hi Atilla, Thank you. About the 32/64ki device buffer size: do you mean 32/64MSamples buffer size? Or am I thinking of the wrong buffer Meindert
  4. Using dwf.FDwfAnalogOutRunSet(hdwf, iWavegen, c_double(0.0)) made it 'worse', See photo below. Note that I'm ultimately not really to make a sweep of any kind (hence I think the AnalogOut_Sweep.py example will not suit my needs). I want to repeatedly play back a 6 MHz synthesized (home-made) signal and (for now) am using a sine with decreasing amplitude to prove that the output looks like what I generated. I was able to reproduce the issue (PlaybackOnlyExample3.py) to its simplest form where instead of a sine I'm now using a slope from 1 to 0. At the point where the waveform is repeated, the analog output is set to the new value (you can test that by changing the start value) for ~50 ns, then set to the old value (you can test that by changing the end value) for ~500 or 600 ns set to the new value to start the actual playback of the signal. PlaybackOnlyExample3.py 10 Hz slope from +1 to -0.5 V, at a playback frequency of 6 MHz (166 ns period). Zoomed in to where the signal jumps from -0.5 V to +1 V and starts at the start of the downwards slope again: Any thoughts?
  5. Hi, I'm playing back a 5 second long 8 kHz sine signal at 6 MHz using funcPlayPattern. (30e6 sample) The sine signal is modulated with a ramp which changes from 1 to 0 over the length of the sine signal, resulting in an amplitude of ~1 at the start of the 5 sec playback, and 0 at the end. The issue is that if I zoom into the tail end of the 5 seconds data set on my o'scope, I can see an unexpected ~50 ns long pulse. See scope photos. Any thoughts on what might cause that pulse and how to prevent it? Input data: 1 sec / div 2 ms / div 50 usec / div 500 ns / div with the unexpected pulse triggered. I uploaded the file which I use to switch back and forth between using a PlaybackOnlyExample2.pypre-recorded signal (not included) and a synthesized signal. The latter is the default setting, generating the signal at output 2.
  6. Hi Attilla, I'm trying to use funcCustomPattern to indefinitely play back a (previously recorded) noise signal (5 sec at 6 MHz), but I'm doing something wrong in my python script. I attached my code which (if I remember correctly) started with AnalogOut_Custom.py. Do you happen to have a good example of how to do this? I'm also trying to understand what the difference is between these 4 AnalogOut functions: funcCustomPattern - 28 - Generate waveform from custom repeated data with fixed sample rate. funcPlayPattern - 29 - Generate waveform from custom data in stream play style with fixed sample rate. funcCustom - 30 - Generate waveform from custom repeated data. funcPlay - 31 - Generate waveform from custom data in stream play style. When I google this, I learn that: 'Play' means "pre-defined or standard waveform patterns, such as sine waves, square waves, triangle waves, sawtooth waves, and others." and that 'Custom' means "This function allows you to define your own custom waveform pattern by specifying individual data points or samples." However, in the example you provided me in https://forum.digilent.com/topic/29985-glitch-in-playback-at-1-mhz/#comment-91414 you are actually generating the sine data in .py and then using the funcPlay to output it on ch1, which is identical to funcCustom in the description above. Moreover, when using funcPlay, what is the difference between setting the FDwfAnalogOutRepeatSet to repeat 0x (indefinitely) and using funcPlauPattern? Thank you. Meindert
  7. Hi, I received an example file from Glitch in playback at 1 MHz - Test and Measurement - Digilent Forum with a "FDwfAnalogOutNodePlayInfo" function call. However, this function is not documented in the WaveForms™ SDK Reference Manual (Revised March 8, 2024). Do you have an updated manual available? Thank you. Meindert.
  8. Hi Attila, I tested it and it solved the glitch problem. Thank you for the quick SW update. Meindert
  9. Thank you Atilla. Looking forward to the update. Meindert.
  10. Hi Atilla, Thank you for that example. I ran your example (after some modifications to the plot function and a change of numpy.float into numpy.float64 because I'm running py 2.23.4). Unfortunately, I'm still getting glitches every 2^18-ish (262.144) samples, however this time the recorded data seems to be set to 0 for a few samples while in the original problem description I also lost samples. Any thoughts? AnalogOutIn_DeepMem_mod.py
  11. Hi, Using a AD3250 I'm recording the output of out1 on in1 and notice glitches in the recorded signal. I attached a modified version of AnalogOutIn_PlayRecord.py to reproduce the issue. Steps to reproduce : Connect WaveGenOutch1 to Osciloscope Channel1 AD Pro 3250 connected with USB directly to laptop Run attached ReproduceGlitchesInRecording.py Check the 3dr plot, which is the diff of the recorded signal. Observations: When connecting Osciloscope Channel1 to an external signal generator I do not see these glitches. Glitches seem to be 2^18 = 262.144 samples apart. Note that AD Pro 3250 is supposed to have 64 MiSamples for playback, so I'm not expecting to run into memory issues. Q: Any idea what might cause this? Here are some plots: Loopback measurement: zoom: Measurement with external singal generator: ReproduceGlitchesInRecording.py
×
×
  • Create New...