We've been conducting an experiment where we are recording the impulse response from a linear frequency sweep. This linear frequency typically spans from 5 Hz - 20 kHz. It produces a signal that looks like the red decay curve attached. We can obviously transform this using the FT to get the respective frequency components back. However, we've noticed that depending on what function generator we use we get artifacts in the resulting spectrum. To be clear, these ARE NOT overtones. That is an obvious issue that we've eliminated. In short, we've narrowed the problem down to the way some function generators (e.g. the Analog Discovery) output the sweep is that the step size for the frequency change scales depending upon the frequency range being swept. Another way to say this is that it is the rate of frequency changes which induces kink in the sweep which shows up at an artifact. (See the following post for more info on that issue).
Our solution at this point is to define the linear frequency sweep with same resolution (which is overkill for the low frequency components) throughout but ensures that the data come out correctly. We currently use a NI card but we are running into some issues there too. So, now to the questions are:
Is there a python interface to the pynq board that will allow us to define a waveform that has the same resolution (1 us or shorter) throughout and sustain this waveform for 10's of minutes?
Alternatively, is there way to stream a waveform from disk on the pynq (of course latency could be an issue there) or load a large waveform into memory (~10 million points in byte form (0's/1's))?
I've thought about trying to search for issues related to PWM but that is not quite right as in some cases we might want a non-linear or custom waveform.
Question
bhclowers
We've been conducting an experiment where we are recording the impulse response from a linear frequency sweep. This linear frequency typically spans from 5 Hz - 20 kHz. It produces a signal that looks like the red decay curve attached. We can obviously transform this using the FT to get the respective frequency components back. However, we've noticed that depending on what function generator we use we get artifacts in the resulting spectrum. To be clear, these ARE NOT overtones. That is an obvious issue that we've eliminated. In short, we've narrowed the problem down to the way some function generators (e.g. the Analog Discovery) output the sweep is that the step size for the frequency change scales depending upon the frequency range being swept. Another way to say this is that it is the rate of frequency changes which induces kink in the sweep which shows up at an artifact. (See the following post for more info on that issue).
Our solution at this point is to define the linear frequency sweep with same resolution (which is overkill for the low frequency components) throughout but ensures that the data come out correctly. We currently use a NI card but we are running into some issues there too. So, now to the questions are:
Is there a python interface to the pynq board that will allow us to define a waveform that has the same resolution (1 us or shorter) throughout and sustain this waveform for 10's of minutes?
Alternatively, is there way to stream a waveform from disk on the pynq (of course latency could be an issue there) or load a large waveform into memory (~10 million points in byte form (0's/1's))?
I've thought about trying to search for issues related to PWM but that is not quite right as in some cases we might want a non-linear or custom waveform.
Any advice or guidance would be appreciated.
Brian
Link to comment
Share on other sites
5 answers to this question
Recommended Posts
Archived
This topic is now archived and is closed to further replies.