Agreed.

The coefficient interpolator, however, could get substantial savings beyond
that, even, and could be applicable to many things besides PFBs.

On Mon, Jan 21, 2013 at 3:36 PM, Dan Werthimer <[email protected]>wrote:

>
> hi aaron,
>
> if you use xilinx brams for coefficients, they can be configured as dual
> port memories,
> so you can get the PFB reverse and forward coefficients both at the same
> time,
> from the same memory,  almost for free, without any memory size penalty
> over single port,
>
> dan
>
>
>
>
> On Mon, Jan 21, 2013 at 3:18 PM, Aaron Parsons <
> [email protected]> wrote:
>
>> You guys probably appreciate this already, but although the coefficients
>> in the PFB FIR are generally symmetric around the center tap, the upper and
>> lower taps use these coefficients in reverse order from one another.  In
>> order to take advantage of the symmetry, you'll have to use dual-port ROMs
>> that support two different addresses (one counting up and one counting
>> down).  In the original core I wrote, I instead just shared coefficients
>> between the real and imaginary components.  This was an easy factor of 2
>> savings.  After that first factor of two, we found it was kind of
>> diminishing returns...
>>
>> Another thought could be a small BRAM with a linear interpolator between
>> addresses.  This would be a block with a wide range of uses, and could
>> easily cut the size of the PFB coefficients by an order of magnitude.  The
>> (hamming/hanning) window and the sinc that the PFB uses for its
>> coefficients are smooth functions, making all the fine subdivisions for
>> N>32  samples rather unnecessary.
>>
>> On Mon, Jan 21, 2013 at 2:56 PM, Dan Werthimer <[email protected]>wrote:
>>
>>>
>>>
>>> hi danny and ryan,
>>>
>>> i suspect if you are only doing small FFT's and PFB FIR's,
>>> 1K points or so,  then BRAM isn't likely to be the limiting resource,
>>> so you might as well store all the coefficients with high precision.
>>>
>>> but for long transforms, perhaps >4K points or so,
>>> then BRAM's might be in short supply, and then one could
>>> consider storing fewer coefficients (and also taking advantage
>>> of sin/cos and mirror symmetries, which don't degrade SNR at all).
>>>
>>> for any length FFT or PFB/FIR, even millions of points,
>>> if you store 1K coefficients with at least at least 10 bit precision,
>>> then the SNR will only be degraded slightly.
>>> quantization error analysis is nicely written up in memo #1, at
>>> https://casper.berkeley.edu/wiki/Memos
>>>
>>> best wishes,
>>>
>>> dan
>>>
>>>
>>>
>>> On Mon, Jan 21, 2013 at 4:33 AM, Danny Price <[email protected]>wrote:
>>>
>>>> Hey Jason,
>>>>
>>>> Rewinding the thread a bit:
>>>>
>>>> On Fri, Jan 4, 2013 at 7:39 AM, Jason Manley <[email protected]> wrote:
>>>>
>>>>> Andrew and I have also spoken about symmetrical co-efficients in the
>>>>> pfb_fir and I'd very much like to see this done. We recently added the
>>>>> option to share co-efficient generators across multiple inputs, which has
>>>>> helped a lot for designs with multiple ADCs. It seems to me that bigger
>>>>> designs are going to be BRAM limited (FFT BRAM requirements scale
>>>>> linearly), so we need to optimise cores to go light on this resource.
>>>>>
>>>>
>>>> Agreed that BRAM is in general more precious than compute. In addition
>>>> to using symmetrical coefficients, it might be worth looking at generating
>>>> coefficients. I did some tests this morning with a simple moving average
>>>> filter to turn 256 BRAM coefficients into 1024 (see attached model file),
>>>> and it looks pretty promising: errors are a max of about 2.5%.
>>>>
>>>> Coupling this with symmetric coefficients could cut coefficient storage
>>>> to 1/8th, at the cost of a few extra adders for the interpolation filter.
>>>> Thoughts?
>>>>
>>>> Cheers
>>>> Danny
>>>>
>>>
>>>
>>
>>
>> --
>> Aaron Parsons
>> 510-306-4322
>> Hearst Field Annex B54, UCB
>>
>
>


-- 
Aaron Parsons
510-306-4322
Hearst Field Annex B54, UCB

Reply via email to