Comments (2)
The output scales at one additional bit for every two stages. This is based upon two principles:
- Any incoming noise (zero mean, any standard deviation, any distribution) increases at a half a bit per stage. That is, the variance of the noise grows with the number of stages, but the standard deviation with the square root of the FFT length.
- Any tones (i.e. non-zero mean) will increase in value at one bit per stage. That is, the mean output will at most be N times the mean input, where N is the FFT length.
Therefore, the FFT drops one bit every other stage. This minimizes the computational power required, at no loss of relevant precision.
Dan
from dblclockfft.
Hello Dan,
thanks for your explaination!
Following that logic, the output scale should be calculated according to 2 ^ (log2(FFT_LEN) / 2)
, right?
log2(FFT_LEN)
to get the number of stages, and / 2
to account for the dropped bit in every other stage.
Now, if I understand the source code correctly, the first stage never drops a bit, so only the 3rd, 5th, etc.
This would lead to: 2 ^ ( (log2(FFT_LEN)-1) / 2)
for the scale factor.
What is now still unclear to me, is the fact that is sometime "un-drops" a bit, according to the scale factors I found.
F=16, for example, has a scale factor of 1 (2^0), so it apparently never dropped a bit. But the generated Verilog actually shows, that the qtrstage
drops a bit (input width == output width).
So I guess there is some other condition that affects the scale factor. Do you know what am I missing here?
Thanks and best regards,
Daniel
from dblclockfft.
Related Issues (13)
- Don't care output HOT 7
- Compiling under MINGW-w64/MSYS2 HOT 8
- Request to add a License to the project HOT 2
- Return value of `printf`.
- How would I use this FFT for my 20khz sampled audio signal? HOT 3
- Timing optimization HOT 3
- longmpy declared as a wire instead of a reg in hwbfly.v HOT 1
- unexpected output HOT 3
- Could I just use the .v file in rtl to build my core? HOT 2
- Support FP32 format HOT 1
- X propagation : 4096 pt FFT HOT 1
- Undefined behaviour of o_result HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dblclockfft.