Products > Test Equipment
Is there a way to tell if my oscilloscope's FFT is HW or SW?
bdunham7:
--- Quote from: ballsystemlord on December 14, 2022, 07:45:05 pm ---I understand the screens refresh rate will limit the update rate.
What I was interested in here is, "Is the FFT implementation able to keep up with the screen refresh rate and date being fed into the oscilloscope?"
For example, if the screen refreshes at 60Hz (it probably is), will I get 60 FFT updates per second or will I get only 1 update every second?
--- End quote ---
I wasn't referring to the screen refresh rate of the physical display, but rather the refresh rate of the FFT display on the screen. That may seem confusing, but it was clear in my mind at the time...
--- Quote ---Second, will the scope ignore samples going into it in order to speed up the FFT function, or can the HW/SW keep up?
--- End quote ---
Not sure what you mean exactly by 'ignore samples'. There will obviously be a lot of blind time, as there is for almost all DSO functions. If the FFT is set for 1Mpts, the scope will collect a million (220 actually) points at whatever timebase and sample rate is selected and put them in a buffer. Then it will perform the FFT calculations on that set of points. Then it will display them on the screen, rinse and repeat. Some parts could overlap if it uses alternating buffers. It takes a certain amount of time to collect the million points (this varies with settings) and then a certain amount of time to process them. Those together determine how quickly it can refresh the FFT display. You can change the timebase settings and reduce the number of FFT points from the maximum, both will affect the FFT refresh rate.
--- Quote ---Much like a DRAM chip holds SW but doesn't run the SW, the same applies here. The FPGA is HW that is programmed via SW but doesn't run SW. At least AFAIK.
--- End quote ---
Hmmmmm. Not sure I buy the DRAM analogy, but if you consider the FPGA to be 'hardware', then perhaps your scope is running the FFT in hardware. I'm not sure of the point of making the distinction. Suppose I program an FPGA to emulate a CPU and then run software on that?
ballsystemlord:
--- Quote from: bdunham7 on December 14, 2022, 08:01:35 pm ---
--- Quote from: ballsystemlord on December 14, 2022, 07:45:05 pm ---I understand the screens refresh rate will limit the update rate.
What I was interested in here is, "Is the FFT implementation able to keep up with the screen refresh rate and date being fed into the oscilloscope?"
For example, if the screen refreshes at 60Hz (it probably is), will I get 60 FFT updates per second or will I get only 1 update every second?
--- End quote ---
I wasn't referring to the screen refresh rate of the physical display, but rather the refresh rate of the FFT display on the screen. That may seem confusing, but it was clear in my mind at the time...
--- End quote ---
Got it.
--- Quote from: bdunham7 on December 14, 2022, 08:01:35 pm ---
--- Quote ---Second, will the scope ignore samples going into it in order to speed up the FFT function, or can the HW/SW keep up?
--- End quote ---
Not sure what you mean exactly by 'ignore samples'. There will obviously be a lot of blind time, as there is for almost all DSO functions. If the FFT is set for 1Mpts, the scope will collect a million (220 actually) points at whatever timebase and sample rate is selected and put them in a buffer. Then it will perform the FFT calculations on that set of points. Then it will display them on the screen, rinse and repeat. Some parts could overlap if it uses alternating buffers. It takes a certain amount of time to collect the million points (this varies with settings) and then a certain amount of time to process them. Those together determine how quickly it can refresh the FFT display. You can change the timebase settings and reduce the number of FFT points from the maximum, both will affect the FFT refresh rate.
--- End quote ---
"ignore samples" (Again, if my understanding is off, please correct me...)
Let's say that my scope can FFT 1Mpts in 1 second. Because my scope collects 8 GS/s, that would mean that in one second, I'd have performed the FFT function on 1Mpts and "ignored" 7,999 mega samples. Right?
--- Quote from: bdunham7 on December 14, 2022, 08:01:35 pm ---
--- Quote ---Much like a DRAM chip holds SW but doesn't run the SW, the same applies here. The FPGA is HW that is programmed via SW but doesn't run SW. At least AFAIK.
--- End quote ---
Hmmmmm. Not sure I buy the DRAM analogy, but if you consider the FPGA to be 'hardware', then perhaps your scope is running the FFT in hardware. I'm not sure of the point of making the distinction. Suppose I program an FPGA to emulate a CPU and then run software on that?
--- End quote ---
Well sure you can make the FPGA perform like a CPU, and many other SW controlled stuff. The point of buying an FPGA, instead of a plain CPU, and placing it into an oscilloscope, is so that you can do something using the FPGA's HW to crunch data vs. using SW on a CPU, right?
Edit: I originally said 6GS/s. That was incorrect. :-[
bdunham7:
--- Quote from: ballsystemlord on December 14, 2022, 08:32:43 pm ---Let's say that my scope can FFT 1Mpts in 1 second. Because my scope collects 6 GS/s, that would mean that in one second, I'd have performed the FFT function on 1Mpts and "ignored" 5,999 mega samples. Right?
--- End quote ---
Sure, I suppose, but those 1Mpts could be from a short, consecutive capture at full speed or from a decimated capture over the full second. To make it easy, lets say you have a 1GSa/s scope. You can capture all the samples for 1 millisecond or you can capture every thousandth sample for the full second. That's a matter of settings. If you want to look at lower frequencies, you need the longer capture time at a lower rate.
Fungus:
--- Quote from: ballsystemlord on December 14, 2022, 07:45:05 pm ---For example, if the screen refreshes at 60Hz (it probably is), will I get 60 FFT updates per second
--- End quote ---
Probably not.
2N3055:
--- Quote from: ballsystemlord on December 14, 2022, 08:32:43 pm ---........................
--- End quote ---
Hi.
It is nice to see when someone tries to understand and learn.
Let me first "kind of answer" the original question: MSO5000 (like many new-ish scopes) does FFT partially in FPGA (it crunches some preliminary data) and then data is fed to application processor (CPU) that in a role of DSP does final calculations and scaling. Where the actual partitioning lies depends from scope to scope.
About FFT itself: you perform a FFT over a certain data set (length). You need to capture data first, so that takes time. Then you calculate and display. If you want good frequency resolution (small frequency bin width) you need more (longer data). If you want to go to higher frequency you sample faster, which is again more data for same time period.
So sometimes you will have 1 FFT update per second although hardware accelerated FFT performs calculations in 1 ms. Why? Because you needed to wait 1 second for data to be captured..
That latency has to be accounted for. In this case this latency will dominate screen refresh rate.
How much time it takes depends on time base /sampling rate/FFT length interaction.
Secondly, FFT will be performed over exactly the amount of data it says. So if there is more in scope buffer, it will be ignored by FFT. It should be defined in User manual what it actually does. Some scopes will let you choose where from the buffer it will take data for FFT, so you can show spectrum from different parts of changing signal on screen. Some will simply chose some data from a buffer in a manner prescribed in manual.
There is something called sliding window FFT (sometimes called overlapped FFT). It works on pipeline principle, it has initial latency waiting for ADC sampling until sample is long enough and then performs FFT on that and displays it. Then it discards 1 latest sample and adds 1 new one and then again performs FFT. Latency here is one sample period, and therefore real time. This is used in real-time spectrum analysers. You can discard block of 10 or 100 and add that much new ones too.. That defines time period between spectrum plots..Spectrum waterfall or 3D plot display would be used to display it too..
There are some (higher end) scopes that have this capability. These will provide very fast screen updates but need specialized architectures in hardware to support it. Calculation is not so much a problem (although it needs to be beefy to handle it), but pumping all that data real time in parallel with normal scope functions..
Also I would recommend to read about windowing. It is a practice of "tapering off" beginning and end of sample buffer to account for discontinuity of data at data buffer ends. That is, because, the FFT should be performed on whole periods of repeating signal (starting from 0 and returning to 0 on the end). Since sample fixed periods with ADC, beginning and end of outside world signals will be "chopped off" wherever it pleases, so we need to deal with these untidy ends.
For that we use different shapes (windowing functions) to "cutoff ends" and "taper them from 0 to 0 at the ends". That makes spectrum to be cleaner but they each have different side effects that user should be familiar with.
Hope this helps .
Best,
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version