Re: [USRP-users] RFNoC Custom Filtering in Freq domain

2018-09-30 Thread Marcus Müller via USRP-users
Hi Rob,

it's been a while, but I've played around with an overlap-save FFT
filter in RFNoC. Sadly, I didn't keep the code myself, but I think I
can get it if I ask the right people; it's been my first stumblings in
RFNoC ... so, not quite sure how much help the code would be. Wouldn't
write the same code today, and there's no magic involved there. But a
couple of bugs were definitely created along the way.
It was a rather textbook implementation based on – I think– a 256-FFT.
But: I just had my multiplication done in the overlapping logic, IIRC.
Must've been complex, too, didn't have linear phase in the system I was
simulating with that.

Best regards,
Marcus

On Thu, 2018-09-27 at 13:44 -0400, Rob Kossler via USRP-users wrote:
> Hi,
> I am just getting started on some custom RFNoC development and trying
> to decide how to approach the problem.  Essentially, I want to
> implement a pair of filters in the frequency domain.  It is similar
> to a pair of FIR filters (on a block-by-block basis) but I want the
> capability for very long filters (equal in length to FFT size).  I
> expect that it is not possible to have so many taps using the
> existing FIR filter so that is why I want to apply in the freq
> domain.  
> 
> I noticed that there is a Window RFNoC block that could be used as
> part of my development, but it appears that this window uses "real"
> rather than "complex" coefficients.  Anyway, here are the steps I
> want to implement:
> FFT incoming stream
> Split FFT output into two streams
> Multiply Stream 1 by complex filter 1 (same length as FFT)
> Multiply Stream 2 by complex filter 2 (same length as FFT)
> IFFT Stream 1
> IFFT Stream 2
> I considered modifying the existing window.v to handle complex
> coefficients.  I also considered using the new "replay" NOC block to
> store the coefficients and stream them out in a circular fashion. 
> This might use the "multiply.v" component, but again it would need to
> be modified to handle complex multiplies.
> 
> Anyway, as I am just getting started, I am looking for any helpful
> advice.  Thanks.
> Rob
> ___
> USRP-users mailing list
> USRP-users@lists.ettus.com
> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com


___
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com


[USRP-users] RFNoC Custom Filtering in Freq domain

2018-09-27 Thread Rob Kossler via USRP-users
Hi,
I am just getting started on some custom RFNoC development and trying to
decide how to approach the problem.  Essentially, I want to implement a
pair of filters in the frequency domain.  It is similar to a pair of FIR
filters (on a block-by-block basis) but I want the capability for very long
filters (equal in length to FFT size).  I expect that it is not possible to
have so many taps using the existing FIR filter so that is why I want to
apply in the freq domain.

I noticed that there is a Window RFNoC block that could be used as part of
my development, but it appears that this window uses "real" rather than
"complex" coefficients.  Anyway, here are the steps I want to implement:

   1. FFT incoming stream
   2. Split FFT output into two streams
   3. Multiply Stream 1 by complex filter 1 (same length as FFT)
   4. Multiply Stream 2 by complex filter 2 (same length as FFT)
   5. IFFT Stream 1
   6. IFFT Stream 2

I considered modifying the existing window.v to handle complex
coefficients.  I also considered using the new "replay" NOC block to store
the coefficients and stream them out in a circular fashion.  This might use
the "multiply.v" component, but again it would need to be modified to
handle complex multiplies.

Anyway, as I am just getting started, I am looking for any helpful advice.
Thanks.
Rob
___
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com