Keyboard Shortcuts
ctrl + shift + ? :
Show all keyboard shortcuts
ctrl + g :
Navigate to a group
ctrl + shift + f :
Find
ctrl + / :
Quick actions
esc to dismiss
Likes
Search
RBW filters
On Tue, Jul 27, 2021 at 01:24 PM, Reginald Beardsley wrote:
In what domain are the filters implemented? What are the coefficients for the operator?Reg, ? ?See the following Wiki page?? ? ?The?tinySA resolution filters are digital FIR filters implemented as DSP code inside the RX SI4432 so its probably best to download the datasheet for that chip to get a detailed description of their algorithm.? I'm not certain how much of that information is proprietary. ? ?The filters are selectable via a register location within the?RX SI4432.? Not much more can be done with them beyond that. Herb |
There is a very limited set of parameters that "tune" the filters.?
Parameters are:
------------------------------------------
For more info on the tinySA go to https://tinysa.org/wiki/ |
AN415 mentions IF filter bandwidth in a couple places (around page 34). The SI4332 data sheet has some info on page 64 table 12. (See register 0X1C)
toggle quoted message
Show quoted text
There also exists a spreadsheet on the website that calculates register parameters. -Ray WB6TPU On Jul 28, 2021, at 11:40 AM, Reginald Beardsley via groups.io <pulaskite@...> wrote: |
As it happened I spent a large part of the day looking at the RBW filter responses using a couple of tinySAs. I don't see an issue. The 300 kHz and 600 kHz filters are the only ones that have issues. The rest are textbook perfect. Might be beneficial to evaluate the other possible RBW values. Then again, the picture I got from the tinySA is SA mode might not be accurate.
Electronic filters have a nomenclature and taxonomy and are a rather recent invention ca 1930's. I'm accustomed to using them as well as some other taxonomies. Based on my tests today, I don't think significant improvement can be made except as part of a broader push for greater accuracy and dynamic range. I continue to be staggered by the performance of the tinySA in all modes. Have Fun! Reg |
It would cost some arithmetic, but it shouldn't be hard to run a 8-12 point filter and significantly improve the shape. For low computational cost I like triangular weightings. The multiplies can be done by bit shifts and the resulting filter shape is dominated by sinc**2.
Big question is how many multiply-add operations can one do per sweep point before reducing the sidelobes takes longer than the reduction in sweep time. Sound like an Octave exercise. Have Fun! Reg |
I'd like to note that *any* filter shape desired is easily produced in the least squared error sense by a Wiener inverse filter of length N. Every FFT based SA I've looked at has had a "most wanted" list including some of the worst filter shapes possible. But none of the good ones such as gaussian, sech and a few others. which are symmetric and have negligible sidelobes.
In any case, after careful reflection I've concluded, "What would you like?" Post processing can provide major improvements and any desired filter shape can be produced. It's a little strange doing what I would usually do in a time domain setting in the frequency domain. But it really doesn't change anything. If you ship the data to a tablet for processing you can do anything you want, so long as it doesn't violate the laws of physics. The compute cost is negligible. If the data is buffered you can run a raw waterfall and overlay it with the enhanced waterfall when it has been computed. In point of fact, the user would probably never notice the latency. My estimate from looking at the overall system performance is that you could get another 20-40 dB of dynamic range by post processing the data prior to display. Within the context of the current hardware, 1 Hz RBW is easily achievable in an externally hosted program. But beware, each frequency will require over 1 second to acquire. TANSTAFL Have Fun! Reg |
Reg,
I did once try some postprocessing by doing a deconvolution but that failed, either due to the amount of noise or some computational error. How would you do this RBW enhancement? Many ham's would like to be able to resolve the sidebands of a 1kHz modulated SSB signal. A 300Hz RBW would be nice. How could this be done? -- ------------------------------------------
For more info on the tinySA go to https://tinysa.org/wiki/ |
Erik,
You do it via Wiener deconvolution. I'll put together an example and an explanation. I've never done a decon in the frequency domain using what is traditionally a time domain operation. So it will take careful thought. The Wiener inverse is fiddly. You have to add white noise to the zero lag value of the autocorrelation to pre-whiten the spectrum or it will blow up badly. I've got a file folder showing the effects of different levels of pre-whitening from a grad school project. Have Fun! Reg |
I've had a long think about the data and I am convinced the sidelobes are a function of the time domain measurement window. A Wiener inverse is not needed to fix that.
Mathematically, for N Hz RBW you need 1/N seconds of data. A boxcar window of that length produces sinc sidelobes in the frequency domain. Instead of a boxcar of length n, use a triangular weighted window of length 2*n. That will be sinc**2 in the frequency domain which has very low sidelobes. If you scale the data properly you can do the weight multiplication by bit shift so the filter is a shift-add operation. You can, of course, use any weighting function for the time gate and get the Fourier transform of that as the spectral spreading function of the acquisition system. For a Gaussian response, apply Gaussian weights from a table. It can also be done in a completely analog manner with an FET and a function generator. That part I'm sure of. The matter of smaller RBW using the existing HW is rather harder. I'll address that later after I've done some more analysis. Have Fun! Reg |
As it didn't seem anyone understood what I wrote last, I started work on a tutorial to explain only to realized it already existed:
if you have data which matches either the time or the frequency display, you are doing the transform in the time domain. To get rid of the side lobes pick a time domain window function that suits you. There is no justification other than lack of memory for not offering all of them plus user defined. You just need room for the tables. BTW On a log scale sinc**2 doesn't look as attractive as it does on a linear scale. Sorry about that. I'm not as habituated to the log domain as are EEs. Have Fun! Reg |
This has *nothing* to do with the filter. It is basic sampling and Fourier transform theory.
First of all, some critical points. One *must* measure for a period of approximately 1/RBW duration. That's a pretty important concept. So for 1 Hz RBW you must measure for 1 second at each frequency. Improvements in sidelobe behavior will come at the price of longer acquisition times and vice versa. As the circuit details are not public, I shall address both methods of controlling the sidelobes generated by the data acquisition process. At each frequency over a period of at least 1/RBW seconds do one of the following: Make N measurements. Apply the appropriate weights to the samples and sum. Modulate an analog signal with an analog function and integrate over the 1/RBW period Either will work equally well if properly implemented. Analog or digital, on and off is a sinc(f) sidelobe choice. Have Fun! Reg |
Reg,
What Roger tried to says is that the tinySA has NO flexibility in defining the shape of the filters as the DSP processing is fixed (apart from limited parameters), there are no resources to do processing before the filters and there is no way to extract the unprocessed data. So the only way is to take many measurements and apply some form of post processing on the measurement data. If you know how to do that within acceptable time and with acceptable resources that would be most welcome. ------------------------------------------
For more info on the tinySA go to https://tinysa.org/wiki/ |
On Tue, Aug 31, 2021 at 12:14 AM, Erik Kaashoek wrote:
Reg, ? ? ? If the data before the SI4432 was available to a USB connected PC then Reg's suggestion? would definitely be worth considering for tinySA.App, since most PC's can handle the required post processing with minimal impact on performance.? The best example is the?Signal Hound series of spectrum analyzers which cost far more than the tinySA and lack stand-alone display capability. ? ? ? Erik's attempt at post processing the already transformed data after the SI4432 by doing a deconvolution was unsuccessful.? That is pretty much the only known algorithm that would be efficient enough for use by the tinySA firmware on the data after the SI4432. Herb
|
On Tue, Aug 31, 2021 at 02:14 AM, Erik Kaashoek wrote:
I spent a large part of the day reading the 334x datasheet. Here is how you implement sidelobe suppression on the existing HW: read RSSI as rapidly as possible until either N*dT > 1/RBW or satisfactory suppression is achieved. We are in sampled space. There is no escape. apply the desired window function sample weights to the samples and accumulate output corrected sample with sidelobes suppressed. I should note that there is no requirement that all of the data be real. One may interpolate additional samples with appropriate attention. Simon Spitz became very famous in the seismic community for figuring out the first of now several ways of doing that. Where in the source is the signal strength being read? So far I've not been able to determine how fast RSSI can be read. Have you measured that? On a separate subject, the best RBW that the 4432 can achieve is 156.25 Hz or 312.5 Hz (lo & hi). There are 3 basic methods for improving the resolution, Wiener, Fourier and sparse L1 decon. For the tinySA FW, Wiener is the obvious choice for resolution enhancement. Aside from resolutions < 3 kHz, it is only needed to implement RBW options other than those already present. The sampling sidelobes should be dealt with as outlined earlier with a range of window choices (hint: device with more storage). There are many windows because there are many use cases with different objectives. Have Fun! Reg |
On Tue, Aug 31, 2021 at 04:42 PM, Reginald Beardsley wrote:
read RSSI as rapidly as possible until either N*dT > 1/RBW or satisfactory suppression is achieved.The fastest read when using the narrowest RBW is 145000 samples per second.? You can test this by setting to zero span and RBW of 3kHz What you will see is that the noise level gets reduced when you go from 600kHz to 3kHz RBW because you are reading samples faster than the RBW will allow apply the desired window function sample weights to the samples and accumulatePlease explain a bit better (or provide a reference) how to do this. It this the same as a windows function when doing fourier? ? -- ------------------------------------------
For more info on the tinySA go to https://tinysa.org/wiki/ |
Yes, it is exactly the same mathematics as one encounters in a Fourier transform intro. You can never escape the window effect. The best that you can do is control it. The sample has to have a start and an end. Unless one does otherwise that's a time boxcar with sinc sidelobes in the frequency domain.
For a BWT (bandwidth - time product) of 0.5 you need 24 samples at 145 kSa/s to form the window for it to be long enough for a 3 kHz RBW. That is the bare minimum and requires a Gaussian window. I've attached a few pages from: "An Introduction to Digital Signal Processing" John H. Karl Academic Press 1989 I spent my career in seismic and have probably around 30-40 DSP books. This is one of the best overall and by far the best intro. Have Fun! Reg |
to navigate to use esc to dismiss