hi wan,
i think my email yesterday about the round off/quantization
noise always being fixed level is wrong. the observed noise levels will
depend on the shifter settings, because some of the round off/quantization
noise from the earlier FFT stages will be downshifted away, depending on
the shift settings.
but as i mentioned in earlier emails, to get high dynamic range,
and high SNR, one should not turn on all the shifters - it's best
to shift at just enough stages to prevent overflow.
this will take some experimentation, depending on noise
levels and the amount of RFI, but it important for long FFT's.
best wishes,
dan
On 1/17/2010 4:43 PM, Dan Werthimer wrote:
hi wan,
the noise floor is independent of shifter settings -
the noise RMS is typically about 1 or 2 LSB's
(depending on the length of the FFT), due
to quantization noise and round offer errors.
so you'd like to get your signal as high as possible
wrt to this noise floor by optimizing the FFT shifter
settings, subtracting out the average fixed noise patterns,
sending a high signal level into the FFT, using as many bits
as possible in the FFT, using the best rounding, etc.
best wishes,
dan
On 1/17/2010 4:04 PM, [email protected] wrote:
Hi Dan:
Thanks for your information again. But I am not still not very sure
about how the noise floor steps is generated.
Do you believe this is because I am using the maximum dynamic range?
I can achieve some improvement if I use smaller dynamic range?
Thanks
Wan
-----Original Message-----
From: Dan Werthimer [mailto:[email protected]]
Sent: Friday, 15 January 2010 12:47 PM
To: Cheng, Wan (CASS, Marsfield)
Cc: [email protected]; [email protected]
Subject: Re: [casper] DC part of FFT output
hi wan,
regarding shifter settings to optimize dynamic range:
(this is important for long FFT's)
for coherent signals (pure sine/cos wave), you need to downshift at
every FFT stage
to prevent overflow, since coherent signals grow by 2 every stage.
pure noise signals grow by sqrt(2) every stage,
so one should downshift at every other stage for maximum dynamic range.
for signals in between pure noise and pure sine waves, (eg: radio
telescope data
with some RFI), to get maximum dynamic range, it's good to shift
somewhere
in between these two extremes, and it's good to turn the first stage
shifter on,
(depending on how strong your input signal is).
perhaps:
1st stage: down-shift
2nd: down-shift
3rd: no shift
4-6: repeat of stage 1-3.
7-9: repeat of stage 1-3
....
dan
On 1/14/2010 2:34 PM, [email protected] wrote:
Hi Jason:
Thanks for your important information.
But one point I could not understand is the shift bits of FFT.
I guess it is used to shift the output at every FFT stage. So why
data only in top 10 bits? 10 bits data multiplies 8 bits coeff, the
data should be in all 18 bits?
Wan
-----Original Message-----
From: Jason Manley [mailto:[email protected]]
Sent: Thursday, 14 January 2010 5:46 PM
To: Cheng, Wan (CASS, Marsfield)
Cc: [email protected]; [email protected]
Subject: Re: [casper] DC part of FFT output
We (KAT) use:
* Round +-even in FFT and PFB.
* Bitwidth at 18bits. Multipliers are 18x25 in V5, not 25x25.
* Using lower bitwidths for lookup table in PFB does not have a
major impact on performance (eg, PAPER is using 8 bit lookups).
* There is support for different coeff bitwidths and signal
bitwidths in the FFT and PFB. If you need more bits, consider 25 bits
I/O and 18 bits ceoffs. While still needing more routing resources,
you will not need more multipliers.
* It is critical that you position your signal properly and set
FFT
shift pattern correctly. For most applications, you will position your
input signal in the (top bit -1) of your FFT and downshift on every
stage (all 1's in the fft_shift input). But for a 32k FFT, you would
then have 15 bits of downshift. With your signal in the top 10 bits of
an 18 bit number, you will shift out 18-10-15 = -7 and hence lose
data. So in this case, you'd probably want to shift on every second
stage or something. This would ensure that you're never shifting data
out the bottom, but now you need to be careful that you're not
overflowing on any FFT stage. Check the 'of' port; though not aligned
with the data, it will report if an overflow did occur at some point.
Jason
On 14 Jan 2010, at 03:07,<[email protected]> <[email protected]>
wrote:
Hi Dan:
Thanks for your suggestions.
I believe we get enough SNR and dynamic range. We just suspect if
there are some potential problems in our design. Calibration is our
current solution, and I believe it will work well in our system.
And I tried all different rounding options, I found round +/- inf is
the best, even better than round even or odd. Is this normal?
For wider bit width in FFT, I remember over 18 bits could not work
properly. So now it is fixed and it can work upto 25 bits?
Thanks, Dan.
Wan
From: Dan Werthimer [mailto:[email protected]]
Sent: Thursday, 14 January 2010 11:54 AM
To: Cheng, Wan (CASS, Marsfield)
Cc: [email protected]
Subject: Re: [casper] DC part of FFT output
hi wan,
here are five steps you could take, if you haven't already,
to raise your signal higher above the noise floor and increase
dynamic range:
-1) adjust the FFT shifter settings to boost the output
signal so it's in the MSB's, way above the pattern noise.
0) subtract out the fixed pattern noise in post processing/
calibration.
(this might be tricky, as it might be signal level dependent??)
this is easiest done after the FPGA (in C or some other high
level language).
1) raise the signal amplitude, so SNR will be higher
2) use more bits in the FFT. i think with virtex 5, you can go to
25 bits.
(this takes more FFT resources)
3) turn on rounding in the FFT (this takes more FPGA resources).
the best rounding to use is round to even, or round to odd.
(not round up, or round down).
i'm not sure what kind of rounding we used in the FFT.
best wishes,
dan
On 1/13/2010 3:31 PM, [email protected] wrote:
Hi Dan:
Thanks a lot. I also believe it is from round off noise.
But it does not just occupy the least significant bit. I guess,
because there are a number of stages in PFB and FFT, the round off
noise will be distributed and accumulated at every stage. So at the
final output, it would not just least significant bit any more. For
a 1024 points FFT, I believe it could occupy 6 bits of 36 bits
output. But they are still relative very small compared with the
main carrier output. Please see the attached(steps2) for details
about the noise floor.
Our problem is we are using a 32K FFT, a fixed pattern become
obvious on noise floor after we integrate for 1 sec. Please see the
attached for 32K FFT noise floor. The pattern on noise floor is
fixed, it would not change with the input. So is there any way we
could remove or minimize the steps on noise floor?
Thanks
Wan
From: Dan Werthimer [mailto:[email protected]]
Sent: Wednesday, 13 January 2010 2:37 PM
To: [email protected]
Subject: Re: [casper] DC part of FFT output
hi wan,
what are the levels of this output?
if they are the least significant bits,
then this is likely from round off noise.
best wishes,
dan
On 1/12/2010 6:45 PM, [email protected] wrote:
Hi All:
I use a matlab sine wave generator to generate a sine wave as an
input to PFB and FFT.
But I find I get a little DC output and a few small steps from FFT
output. I am pretty sure there is no DC added into the input
signal. So where these DC could be from?
And why there is some small steps on the noise floor?
For the details of spectrum output, please see the attached.
Thanks
Wan