channelization using rfnoc - gnu radio

41
Channelization using RFNoC GRCON 2017 Phil Vallance Critical Mission Engineering

Upload: others

Post on 21-Jan-2022

19 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Channelization using RFNoC - GNU Radio

Channelization using RFNoC

GRCON 2017

Phil Vallance

Critical Mission Engineering

Page 2: Channelization using RFNoC - GNU Radio

Company Info

• Engineering services in the areas of embedded hardware, firmware,

software development and test.

• Specialties include: RF, DSP, FPGA, C/C++, Python, Linux.

• From initial operational concept, through engineering design &

development, to field deployment.

GRCON 2017 Channelization using RFNoC 1 / 27

Page 3: Channelization using RFNoC - GNU Radio

Table of contents

1. Introduction

2. Channelizer Background

3. Hardware Implementation

4. Filter Generation

5. GNURadio Software Component / Results

6. Future Work

GRCON 2017 Channelization using RFNoC 2 / 27

Page 4: Channelization using RFNoC - GNU Radio

Introduction

Page 5: Channelization using RFNoC - GNU Radio

Introduction : Goals

• Review the derivation of the M/2 channelizer structure found in A

Versatile Multichannel Filter Bank with Multiple Channel

Bandwidths [Harris F.(2010)].

• Provide detailed FPGA implementation optimized for both the Xilinx

FPGA architecture and the RFNoC framework.

• Detail implications using block-floating point FFT core.

• Describe current filter tap generation algorithm based on

[Lubberhuizen(2010)].

• Discuss limitations and future work.

GRCON 2017 Channelization using RFNoC 3 / 27

Page 6: Channelization using RFNoC - GNU Radio

Channelizer Background

Page 7: Channelization using RFNoC - GNU Radio

Channelizer Background : Motivation

• Relaxes the filter transition

bandwidth requirements.

• Allows perfect reconstruction of

the channels.

• Efficient implementation.

GRCON 2017 Channelization using RFNoC 4 / 27

Page 8: Channelization using RFNoC - GNU Radio

Channelizer Background : Identities

Noble Identities

M-Point FFT

r(nM,0)

r(nM, M � 2)

r(nM, M � 1)

y(nM, k) =

M�1X

r=0

yr(nM)ej 2⇡M rk

k, is the channel selector index

y(n)x(n)

y(n, k) =⇥x(n)e�j✓kn

⇤⇤ h(n)

=N�1X

r=0

x(n � r)e�j✓knh(r)

M-Point FFT

y(n)

Noble Identities

x(n)H(0)

...

H(M � 2)

H(M � 1)

...

H(0)

H(M � 2)

H(M � 1)

⌘⌘

H(Z)

H(Z)

H�ZN

H�ZN

N # N #

N " N "

Time Expansionx[r]

. . . . . .

x[r + 1]

x[r + 2]

x[r + 3]

xk[n] =

⇢x[r], n = Mr0, n /2 MZ ) X(ZM)

xk [n] =

{x[r ], n = Mr0, n /∈MZ

⇒ X(ZM)

GRCON 2017 Channelization using RFNoC 5 / 27

Page 9: Channelization using RFNoC - GNU Radio

Channelizer Background : Channel Selector

M:1

Z�1

Z�(M�2)

Z�(M�1)

+

y(nM, k) =M�1Pr=0

yr(nM)ej 2⇡M rk

k, is the channel selector indexThis is the DFT for frequency index k. This summation could be done for any index.

+

ej0k 2⇡M

ej(M�2)k 2⇡M

ej(M�1)k 2⇡M

y(nM, k)yr

...

...

H0(ZM )

H1(ZM )

HM�1(ZM )

HM�2(ZM )

H0(Z)

HM�1(Z)

HM�2(Z)

M:1x(n)

x(n)

y(n, k) =⇥x(n)e�j✓kn

⇤ ⇤ h(n) =

N�1XXX

r=0

x(n � r)e�j✓k(n�r)h(r)

e�j✓kn

M:1

x(n)

y(n, k)

y(nM, k)

y(nM, k)

y(n, k)

N is length of filter H

y(n, k) =

N�1XXX

r=0

x(n � r)e�j✓k(n�r)h(r) =

N�1XXX

r=0

x(n � r)e�j✓knh(r)ej✓kr

= e�j✓kn

N�1XXX

r=0

x(n � r)h(r)ej✓kr

M:1

x(n) y(nM, k)

y(n, k)

Need to transform Bandpass filter

H(Zej✓k)

Scaling Property of Z

M:1

x(n) y(nM, k)

y(n, k)

H(Zej✓k)

e�jM✓kn

Noble Identity

H(Z)

e�j✓kn

H(Zej 2⇡M k)

Restrict ✓k to a multiple of2⇡

M

y(n, k) =[x(n)e−jθkn

] ∗ h(n) =N−1∑∑∑

r=0

x(n− r)e−jθknh(r)

M:1

Z�1

Z�(M�2)

Z�(M�1)

+

y(nM, k) =M�1Pr=0

yr(nM)ej 2⇡M rk

k, is the channel selector indexThis is the DFT for frequency index k. This summation could be done for any index.

+

ej0k 2⇡M

ej(M�2)k 2⇡M

ej(M�1)k 2⇡M

y(nM, k)yr

...

...

H0(ZM )

H1(ZM )

HM�1(ZM )

HM�2(ZM )

H0(Z)

HM�1(Z)

HM�2(Z)

M:1x(n)

x(n)

y(n, k) =⇥x(n)e�j✓kn

⇤ ⇤ h(n) =

N�1XXX

r=0

x(n � r)e�j✓k(n�r)h(r)

e�j✓kn

M:1

x(n)

y(n, k)

y(nM, k)

y(nM, k)

y(n, k)

N is length of filter H

y(n, k) =

N�1XXX

r=0

x(n � r)e�j✓k(n�r)h(r) =

N�1XXX

r=0

x(n � r)e�j✓knh(r)ej✓kr

= e�j✓kn

N�1XXX

r=0

x(n � r)h(r)ej✓kr

M:1

x(n) y(nM, k)

y(n, k)

Need to transform Bandpass filter

H(Zej✓k)

Scaling Property of Z

M:1

x(n) y(nM, k)

y(n, k)

H(Zej✓k)

e�jM✓kn

Noble Identity

H(Z)

e�j✓kn

H(Zej 2⇡M k)

Restrict ✓k to a multiple of2⇡

M

y(n, k) =N−1∑∑∑

r=0

x(n− r)e−jθk (n−r)h(r) = e−jθknN−1∑∑∑

r=0

x(n− r)h(r)e jθk r

GRCON 2017 Channelization using RFNoC 6 / 27

Page 10: Channelization using RFNoC - GNU Radio

Channelizer Background : Channel Selector

M:1

Z�1

Z�(M�2)

Z�(M�1)

+

y(nM, k) =M�1Pr=0

yr(nM)ej 2⇡M rk

k, is the channel selector indexThis is the DFT for frequency index k. This summation could be done for any index.

+

ej0k 2⇡M

ej(M�2)k 2⇡M

ej(M�1)k 2⇡M

y(nM, k)yr

...

...

H0(ZM )

H1(ZM )

HM�1(ZM )

HM�2(ZM )

H0(Z)

HM�1(Z)

HM�2(Z)

M:1x(n)

x(n)

y(n, k) =⇥x(n)e�j✓kn

⇤ ⇤ h(n) =

N�1XXX

r=0

x(n � r)e�j✓k(n�r)h(r)

e�j✓kn

M:1

x(n)

y(n, k)

y(nM, k)

y(nM, k)

y(n, k)

N is length of filter H

y(n, k) =

N�1XXX

r=0

x(n � r)e�j✓k(n�r)h(r) =

N�1XXX

r=0

x(n � r)e�j✓knh(r)ej✓kr

= e�j✓kn

N�1XXX

r=0

x(n � r)h(r)ej✓kr

M:1

x(n) y(nM, k)

y(n, k)

Need to transform Bandpass filter

H(Zej✓k)

Scaling Property of Z

M:1

x(n) y(nM, k)

y(n, k)

H(Zej✓k)

e�jM✓kn

Noble Identity

H(Z)

e�j✓kn

H(Zej 2⇡M k)

Restrict ✓k to a multiple of2⇡

M

y(n, k) =[x(n)e−jθkn

] ∗ h(n) =N−1∑∑∑

r=0

x(n− r)e−jθknh(r)M:1

Z�1

Z�(M�2)

Z�(M�1)

+

y(nM, k) =M�1Pr=0

yr(nM)ej 2⇡M rk

k, is the channel selector indexThis is the DFT for frequency index k. This summation could be done for any index.

+

ej0k 2⇡M

ej(M�2)k 2⇡M

ej(M�1)k 2⇡M

y(nM, k)yr

...

...

H0(ZM )

H1(ZM )

HM�1(ZM )

HM�2(ZM )

H0(Z)

HM�1(Z)

HM�2(Z)

M:1x(n)

x(n)

y(n, k) =⇥x(n)e�j✓kn

⇤ ⇤ h(n) =

N�1XXX

r=0

x(n � r)e�j✓k(n�r)h(r)

e�j✓kn

M:1

x(n)

y(n, k)

y(nM, k)

y(nM, k)

y(n, k)

N is length of filter H

y(n, k) =

N�1XXX

r=0

x(n � r)e�j✓k(n�r)h(r) =

N�1XXX

r=0

x(n � r)e�j✓knh(r)ej✓kr

= e�j✓kn

N�1XXX

r=0

x(n � r)h(r)ej✓kr

M:1

x(n) y(nM, k)

y(n, k)

Need to transform Bandpass filter

H(Zej✓k)

Scaling Property of Z

M:1

x(n) y(nM, k)

y(n, k)

H(Zej✓k)

e�jM✓kn

Noble Identity

H(Z)

e�j✓kn

H(Zej 2⇡M k)

Restrict ✓k to a multiple of2⇡

M

y(n, k) =N−1∑∑∑

r=0

x(n− r)e−jθk (n−r)h(r) = e−jθknN−1∑∑∑

r=0

x(n− r)h(r)e jθk r

GRCON 2017 Channelization using RFNoC 6 / 27

Page 11: Channelization using RFNoC - GNU Radio

Channelizer Background : Channel Selector

M:1

Z�1

Z�(M�2)

Z�(M�1)

+

y(nM, k) =M�1Pr=0

yr(nM)ej 2⇡M rk

k, is the channel selector indexThis is the DFT for frequency index k. This summation could be done for any index.

+

ej0k 2⇡M

ej(M�2)k 2⇡M

ej(M�1)k 2⇡M

y(nM, k)yr

...

...

H0(ZM )

H1(ZM )

HM�1(ZM )

HM�2(ZM )

H0(Z)

HM�1(Z)

HM�2(Z)

M:1x(n)

x(n)

y(n, k) =⇥x(n)e�j✓kn

⇤ ⇤ h(n) =

N�1XXX

r=0

x(n � r)e�j✓k(n�r)h(r)

e�j✓kn

M:1

x(n)

y(n, k)

y(nM, k)

y(nM, k)

y(n, k)

N is length of filter H

y(n, k) =

N�1XXX

r=0

x(n � r)e�j✓k(n�r)h(r) =

N�1XXX

r=0

x(n � r)e�j✓knh(r)ej✓kr

= e�j✓kn

N�1XXX

r=0

x(n � r)h(r)ej✓kr

M:1

x(n) y(nM, k)

y(n, k)

Need to transform Bandpass filter

H(Zej✓k)

Scaling Property of Z

M:1

x(n) y(nM, k)

y(n, k)

H(Zej✓k)

e�jM✓kn

Noble Identity

H(Z)

e�j✓kn

H(Zej 2⇡M k)

Restrict ✓k to a multiple of2⇡

M

Restrict θk to a multiple of 2πM

M:1

Z�1

Z�(M�2)

Z�(M�1)

+

y(nM, k) =M�1Pr=0

yr(nM)ej 2⇡M rk

k, is the channel selector indexThis is the DFT for frequency index k. This summation could be done for any index.

+

ej0k 2⇡M

ej(M�2)k 2⇡M

ej(M�1)k 2⇡M

y(nM, k)yr

...

...

H0(ZM )

H1(ZM )

HM�1(ZM )

HM�2(ZM )

H0(Z)

HM�1(Z)

HM�2(Z)

M:1x(n)

x(n)

y(n, k) =⇥x(n)e�j✓kn

⇤ ⇤ h(n) =

N�1XXX

r=0

x(n � r)e�j✓k(n�r)h(r)

e�j✓kn

M:1

x(n)

y(n, k)

y(nM, k)

y(nM, k)

y(n, k)

N is length of filter H

y(n, k) =

N�1XXX

r=0

x(n � r)e�j✓k(n�r)h(r) =

N�1XXX

r=0

x(n � r)e�j✓knh(r)ej✓kr

= e�j✓kn

N�1XXX

r=0

x(n � r)h(r)ej✓kr

M:1

x(n) y(nM, k)

y(n, k)

Need to transform Bandpass filter

H(Zej✓k)

Scaling Property of Z

M:1

x(n) y(nM, k)

y(n, k)

H(Zej✓k)

e�jM✓kn

Noble Identity

H(Z)

e�j✓kn

H(Zej 2⇡M k)

Restrict ✓k to a multiple of2⇡

M

GRCON 2017 Channelization using RFNoC 7 / 27

Page 12: Channelization using RFNoC - GNU Radio

Channelizer Background : Channel Selector

M:1

Z�1

Z�(M�2)

Z�(M�1)

+

y(nM, k) =M�1Pr=0

yr(nM)ej 2⇡M rk

k, is the channel selector indexThis is the DFT for frequency index k. This summation could be done for any index.

+

ej0k 2⇡M

ej(M�2)k 2⇡M

ej(M�1)k 2⇡M

y(nM, k)yr

...

...

H0(ZM )

H1(ZM )

HM�1(ZM )

HM�2(ZM )

H0(Z)

HM�1(Z)

HM�2(Z)

M:1x(n)

x(n)

y(n, k) =⇥x(n)e�j✓kn

⇤ ⇤ h(n) =

N�1XXX

r=0

x(n � r)e�j✓k(n�r)h(r)

e�j✓kn

M:1

x(n)

y(n, k)

y(nM, k)

y(nM, k)

y(n, k)

N is length of filter H

y(n, k) =

N�1XXX

r=0

x(n � r)e�j✓k(n�r)h(r) =

N�1XXX

r=0

x(n � r)e�j✓knh(r)ej✓kr

= e�j✓kn

N�1XXX

r=0

x(n � r)h(r)ej✓kr

M:1

x(n) y(nM, k)

y(n, k)

Need to transform Bandpass filter

H(Zej✓k)

Scaling Property of Z

M:1

x(n) y(nM, k)

y(n, k)

H(Zej✓k)

e�jM✓kn

Noble Identity

H(Z)

e�j✓kn

H(Zej 2⇡M k)

Restrict ✓k to a multiple of2⇡

M

Restrict θk to a multiple of 2πM

M:1

Z�1

Z�(M�2)

Z�(M�1)

+

y(nM, k) =M�1Pr=0

yr(nM)ej 2⇡M rk

k, is the channel selector indexThis is the DFT for frequency index k. This summation could be done for any index.

+

ej0k 2⇡M

ej(M�2)k 2⇡M

ej(M�1)k 2⇡M

y(nM, k)yr

...

...

H0(ZM )

H1(ZM )

HM�1(ZM )

HM�2(ZM )

H0(Z)

HM�1(Z)

HM�2(Z)

M:1x(n)

x(n)

y(n, k) =⇥x(n)e�j✓kn

⇤ ⇤ h(n) =

N�1XXX

r=0

x(n � r)e�j✓k(n�r)h(r)

e�j✓kn

M:1

x(n)

y(n, k)

y(nM, k)

y(nM, k)

y(n, k)

N is length of filter H

y(n, k) =

N�1XXX

r=0

x(n � r)e�j✓k(n�r)h(r) =

N�1XXX

r=0

x(n � r)e�j✓knh(r)ej✓kr

= e�j✓kn

N�1XXX

r=0

x(n � r)h(r)ej✓kr

M:1

x(n) y(nM, k)

y(n, k)

Need to transform Bandpass filter

H(Zej✓k)

Scaling Property of Z

M:1

x(n) y(nM, k)

y(n, k)

H(Zej✓k)

e�jM✓kn

Noble Identity

H(Z)

e�j✓kn

H(Zej 2⇡M k)

Restrict ✓k to a multiple of2⇡

M

GRCON 2017 Channelization using RFNoC 7 / 27

Page 13: Channelization using RFNoC - GNU Radio

Channelizer Background : Filter Transformation

H(Z) =

N−1∑∑∑

n=0

h(n)Z−n =

M−1∑∑∑

r=0

Z−rHr (ZM)

=

M−1∑∑∑

r=0

Z−r(N/M)−1∑∑∑

n=0

h(r + NM)Z−nM

H(z) = h(0) + h(M + 0)Z−M + h(2M + 0)Z−2M +

h(1)Z−1 + h(M + 1)Z−(M+1) + h(2M + 1)Z−(2M+1) +

h(2)Z−2 + h(M + 2)Z−(M+2) + h(2M + 2)Z−(2M+2) +

h(3)Z−3 + h(M + 3)Z−(M+3) + h(2M + 3)Z−(2M+3) +...

......

......

...

h(M − 1)Z−(M−1) + h(2M − 1)Z−(2M−1) + h(3M − 1)Z−(3M−1) +

· · ·· · ·· · ·· · ·

· · ·

GRCON 2017 Channelization using RFNoC 8 / 27

Page 14: Channelization using RFNoC - GNU Radio

Channelizer Background : Filter Transformation

M:1

H(z) = h(0) + h(M + 0)Z�M + h(2M + 0)Z�2M +h(1)Z�1 + h(M + 1)Z�(M+1) + h(2M + 1)Z�(2M+1) +h(2)Z�2 + h(M + 2)Z�(M+2) + h(2M + 2)Z�(2M+2) +h(3)Z�3 + h(M + 3)Z�(M+3) + h(2M + 3)Z�(2M+3) +

......

......

......

h(M � 1)Z�(M�1) + h(2M � 1)Z�(2M�1) + h(3M � 1)Z�(3M�1) +

· · ·· · ·· · ·· · ·

· · ·

H(Z) =

N�1XXX

n=0

h(n)Z�n

= h(0) + h(1)Z�1 + h(2)Z�2 + · · · + h(N � 1)Z�(N�1)

Z�1

Z�(M�2)

Z�(M�1)

+

...

H0(ZM)

H1(ZM)

HM�2(ZM)

HM�1(ZM)

Z�1

Z�(M�2)

Z�(M�1)

+

...

M:1

M:1

M:1

M:1

H0(Z)

H1(Z)

HM�2(Z)

HM�1(Z)

+

... y(n)x(n)

H0(Z)

H1(Z)

HM�1(Z)

HM�2(Z)

x(n)

y(n)

H(Z) =

M�1XXX

r=0

Z�rHr(ZM)

=

M�1XXX

r=0

Z�r

(N/M)�1XXX

n=0

h(r + NM)Z�nM

H(Z) =

N�1XXX

n=0

h(n)Z�n

= h(0) + h(1)Z�1 + h(2)Z�2 + · · · + h(N � 1)Z�(N�1)

Substitute Z�1 with Z�1ej✓ and Z�M with Z�MejkM(2⇡/M)

G(Z) =

N�1XXX

n=0

h(n)[e�j✓Z]�n

= h(0) + h(1)ej✓Z�1 + h(2)e2j✓Z�2 + · · · + h(N � 1)ej(N�1)✓Z�(N�1)

M:1

Z�1

Z�(M�2)

Z�(M�1)

+

...

H1(ZM)

HM�2(ZM)

HM�1(ZM)

G(z) = h(0) + h(M + 0)Z�MejkM(2⇡/M) + h(2M + 0)Z�2Mejk2M(2⇡/M) +h(1)Z�1ejk(2⇡/M) + h(M + 1)Z�(M+1)ejk(M+1)(2⇡/M) + h(2M + 1)Z�(2M+1)ejk(2M+1)(2⇡/M) +h(2)Z�2e2jk(2⇡/M) + h(M + 2)Z�(M+2)ejk(M+2)(2⇡/M) + h(2M + 2)Z�(2M+2)ejk(2M+2)(2⇡/M) +

......

......

......

h(M � 1)Z�(M�1)e(M�1)jk(2⇡/M) + h(2M � 1)Z�(2M�1)ejk(2M�1)(2⇡/M) + h(3M � 1)Z�(3M�1)ejk(3M�1)(2⇡/M) +

· · ·· · ·· · ·· · ·

· · ·

H0(ZM)

M:1

+

...

H0(ZM)

H1(ZM)

HM�2(ZM)

HM�1(ZM)

ej(M�1)k 2⇡M

ej2k 2⇡M

H0(ZM)

H0(ZMe�jkM(2⇡/M))

ej0k 2⇡M n

Take advantage of periodicity of complex exponential

ejk 2⇡M n

Z�1

Z�(M�2)

Z�(M�1)

x(n)

y(n)

M:1

H(z) = h(0) + h(M + 0)Z�M + h(2M + 0)Z�2M +h(1)Z�1 + h(M + 1)Z�(M+1) + h(2M + 1)Z�(2M+1) +h(2)Z�2 + h(M + 2)Z�(M+2) + h(2M + 2)Z�(2M+2) +h(3)Z�3 + h(M + 3)Z�(M+3) + h(2M + 3)Z�(2M+3) +

......

......

......

h(M � 1)Z�(M�1) + h(2M � 1)Z�(2M�1) + h(3M � 1)Z�(3M�1) +

· · ·· · ·· · ·· · ·

· · ·

H(Z) =

N�1XXX

n=0

h(n)Z�n

= h(0) + h(1)Z�1 + h(2)Z�2 + · · · + h(N � 1)Z�(N�1)

Z�1

Z�(M�2)

Z�(M�1)

+

...

H0(ZM)

H1(ZM)

HM�2(ZM)

HM�1(ZM)

Z�1

Z�(M�2)

Z�(M�1)

+

...

M:1

M:1

M:1

M:1

H0(Z)

H1(Z)

HM�2(Z)

HM�1(Z)

+

... y(n)x(n)

H0(Z)

H1(Z)

HM�1(Z)

HM�2(Z)

x(n)

y(n)

H(Z) =

M�1XXX

r=0

Z�rHr(ZM)

=

M�1XXX

r=0

Z�r

(N/M)�1XXX

n=0

h(r + NM)Z�nM

H(Z) =

N�1XXX

n=0

h(n)Z�n

= h(0) + h(1)Z�1 + h(2)Z�2 + · · · + h(N � 1)Z�(N�1)

Substitute Z�1 with Z�1ej✓ and Z�M with Z�MejkM(2⇡/M)

G(Z) =

N�1XXX

n=0

h(n)[e�j✓Z]�n

= h(0) + h(1)ej✓Z�1 + h(2)e2j✓Z�2 + · · · + h(N � 1)ej(N�1)✓Z�(N�1)

M:1

Z�1

Z�(M�2)

Z�(M�1)

+

...

H1(ZM)

HM�2(ZM)

HM�1(ZM)

G(z) = h(0) + h(M + 0)Z�MejkM(2⇡/M) + h(2M + 0)Z�2Mejk2M(2⇡/M) +h(1)Z�1ejk(2⇡/M) + h(M + 1)Z�(M+1)ejk(M+1)(2⇡/M) + h(2M + 1)Z�(2M+1)ejk(2M+1)(2⇡/M) +h(2)Z�2e2jk(2⇡/M) + h(M + 2)Z�(M+2)ejk(M+2)(2⇡/M) + h(2M + 2)Z�(2M+2)ejk(2M+2)(2⇡/M) +

......

......

......

h(M � 1)Z�(M�1)e(M�1)jk(2⇡/M) + h(2M � 1)Z�(2M�1)ejk(2M�1)(2⇡/M) + h(3M � 1)Z�(3M�1)ejk(3M�1)(2⇡/M) +

· · ·· · ·· · ·· · ·

· · ·

H0(ZM)

M:1

+

...

H0(ZM)

H1(ZM)

HM�2(ZM)

HM�1(ZM)

ej(M�1)k 2⇡M

ej2k 2⇡M

H0(ZM)

H0(ZMe�jkM(2⇡/M))

ej0k 2⇡M n

Take advantage of periodicity of complex exponential

ejk 2⇡M n

Z�1

Z�(M�2)

Z�(M�1)

x(n)

y(n)

M:1

H(z) = h(0) + h(M + 0)Z�M + h(2M + 0)Z�2M +h(1)Z�1 + h(M + 1)Z�(M+1) + h(2M + 1)Z�(2M+1) +h(2)Z�2 + h(M + 2)Z�(M+2) + h(2M + 2)Z�(2M+2) +h(3)Z�3 + h(M + 3)Z�(M+3) + h(2M + 3)Z�(2M+3) +

......

......

......

h(M � 1)Z�(M�1) + h(2M � 1)Z�(2M�1) + h(3M � 1)Z�(3M�1) +

· · ·· · ·· · ·· · ·

· · ·

H(Z) =

N�1XXX

n=0

h(n)Z�n

= h(0) + h(1)Z�1 + h(2)Z�2 + · · · + h(N � 1)Z�(N�1)

Z�1

Z�(M�2)

Z�(M�1)

+

...

H0(ZM)

H1(ZM)

HM�2(ZM)

HM�1(ZM)

Z�1

Z�(M�2)

Z�(M�1)

+

...

M:1

M:1

M:1

M:1

H0(Z)

H1(Z)

HM�2(Z)

HM�1(Z)

+

... y(n)x(n)

H0(Z)

H1(Z)

HM�1(Z)

HM�2(Z)

x(n)

y(n)

H(Z) =

M�1XXX

r=0

Z�rHr(ZM)

=

M�1XXX

r=0

Z�r

(N/M)�1XXX

n=0

h(r + NM)Z�nM

H(Z) =

N�1XXX

n=0

h(n)Z�n

= h(0) + h(1)Z�1 + h(2)Z�2 + · · · + h(N � 1)Z�(N�1)

Substitute Z�1 with Z�1ej✓ and Z�M with Z�MejkM(2⇡/M)

G(Z) =

N�1XXX

n=0

h(n)[e�j✓Z]�n

= h(0) + h(1)ej✓Z�1 + h(2)e2j✓Z�2 + · · · + h(N � 1)ej(N�1)✓Z�(N�1)

M:1

Z�1

Z�(M�2)

Z�(M�1)

+

...

H1(ZM)

HM�2(ZM)

HM�1(ZM)

G(z) = h(0) + h(M + 0)Z�MejkM(2⇡/M) + h(2M + 0)Z�2Mejk2M(2⇡/M) +h(1)Z�1ejk(2⇡/M) + h(M + 1)Z�(M+1)ejk(M+1)(2⇡/M) + h(2M + 1)Z�(2M+1)ejk(2M+1)(2⇡/M) +h(2)Z�2e2jk(2⇡/M) + h(M + 2)Z�(M+2)ejk(M+2)(2⇡/M) + h(2M + 2)Z�(2M+2)ejk(2M+2)(2⇡/M) +

......

......

......

h(M � 1)Z�(M�1)e(M�1)jk(2⇡/M) + h(2M � 1)Z�(2M�1)ejk(2M�1)(2⇡/M) + h(3M � 1)Z�(3M�1)ejk(3M�1)(2⇡/M) +

· · ·· · ·· · ·· · ·

· · ·

H0(ZM)

M:1

+

...

H0(ZM)

H1(ZM)

HM�2(ZM)

HM�1(ZM)

ej(M�1)k 2⇡M

ej2k 2⇡M

H0(ZM)

H0(ZMe�jkM(2⇡/M))

ej0k 2⇡M n

Take advantage of periodicity of complex exponential

ejk 2⇡M n

Z�1

Z�(M�2)

Z�(M�1)

x(n)

y(n)

GRCON 2017 Channelization using RFNoC 9 / 27

Page 15: Channelization using RFNoC - GNU Radio

Channelizer Background : Filter Transformation

M:1

H(z) = h(0) + h(M + 0)Z�M + h(2M + 0)Z�2M +h(1)Z�1 + h(M + 1)Z�(M+1) + h(2M + 1)Z�(2M+1) +h(2)Z�2 + h(M + 2)Z�(M+2) + h(2M + 2)Z�(2M+2) +h(3)Z�3 + h(M + 3)Z�(M+3) + h(2M + 3)Z�(2M+3) +

......

......

......

h(M � 1)Z�(M�1) + h(2M � 1)Z�(2M�1) + h(3M � 1)Z�(3M�1) +

· · ·· · ·· · ·· · ·

· · ·

H(Z) =

N�1XXX

n=0

h(n)Z�n

= h(0) + h(1)Z�1 + h(2)Z�2 + · · · + h(N � 1)Z�(N�1)

Z�1

Z�(M�2)

Z�(M�1)

+

...

H0(ZM)

H1(ZM)

HM�2(ZM)

HM�1(ZM)

Z�1

Z�(M�2)

Z�(M�1)

+

...

M:1

M:1

M:1

M:1

H0(Z)

H1(Z)

HM�2(Z)

HM�1(Z)

+

... y(n)x(n)

H0(Z)

H1(Z)

HM�1(Z)

HM�2(Z)

x(n)

y(n)

H(Z) =

M�1XXX

r=0

Z�rHr(ZM)

=

M�1XXX

r=0

Z�r

(N/M)�1XXX

n=0

h(r + NM)Z�nM

H(Z) =

N�1XXX

n=0

h(n)Z�n

= h(0) + h(1)Z�1 + h(2)Z�2 + · · · + h(N � 1)Z�(N�1)

Substitute Z�1 with Z�1ej✓ and Z�M with Z�MejkM(2⇡/M)

G(Z) =

N�1XXX

n=0

h(n)[e�j✓Z]�n

= h(0) + h(1)ej✓Z�1 + h(2)e2j✓Z�2 + · · · + h(N � 1)ej(N�1)✓Z�(N�1)

M:1

Z�1

Z�(M�2)

Z�(M�1)

+

...

H1(ZM)

HM�2(ZM)

HM�1(ZM)

G(z) = h(0) + h(M + 0)Z�MejkM(2⇡/M) + h(2M + 0)Z�2Mejk2M(2⇡/M) +h(1)Z�1ejk(2⇡/M) + h(M + 1)Z�(M+1)ejk(M+1)(2⇡/M) + h(2M + 1)Z�(2M+1)ejk(2M+1)(2⇡/M) +h(2)Z�2e2jk(2⇡/M) + h(M + 2)Z�(M+2)ejk(M+2)(2⇡/M) + h(2M + 2)Z�(2M+2)ejk(2M+2)(2⇡/M) +

......

......

......

h(M � 1)Z�(M�1)e(M�1)jk(2⇡/M) + h(2M � 1)Z�(2M�1)ejk(2M�1)(2⇡/M) + h(3M � 1)Z�(3M�1)ejk(3M�1)(2⇡/M) +

· · ·· · ·· · ·· · ·

· · ·

H0(ZM)

M:1

+

...

H0(ZM)

H1(ZM)

HM�2(ZM)

HM�1(ZM)

ej(M�1)k 2⇡M

ej2k 2⇡M

H0(ZM)

H0(ZMe�jkM(2⇡/M))

ej0k 2⇡M n

Take advantage of periodicity of complex exponential

ejk 2⇡M n

Z�1

Z�(M�2)

Z�(M�1)

x(n)

y(n)

M:1

H(z) = h(0) + h(M + 0)Z�M + h(2M + 0)Z�2M +h(1)Z�1 + h(M + 1)Z�(M+1) + h(2M + 1)Z�(2M+1) +h(2)Z�2 + h(M + 2)Z�(M+2) + h(2M + 2)Z�(2M+2) +h(3)Z�3 + h(M + 3)Z�(M+3) + h(2M + 3)Z�(2M+3) +

......

......

......

h(M � 1)Z�(M�1) + h(2M � 1)Z�(2M�1) + h(3M � 1)Z�(3M�1) +

· · ·· · ·· · ·· · ·

· · ·

H(Z) =

N�1XXX

n=0

h(n)Z�n

= h(0) + h(1)Z�1 + h(2)Z�2 + · · · + h(N � 1)Z�(N�1)

Z�1

Z�(M�2)

Z�(M�1)

+

...

H0(ZM)

H1(ZM)

HM�2(ZM)

HM�1(ZM)

Z�1

Z�(M�2)

Z�(M�1)

+

...

M:1

M:1

M:1

M:1

H0(Z)

H1(Z)

HM�2(Z)

HM�1(Z)

+

... y(n)x(n)

H0(Z)

H1(Z)

HM�1(Z)

HM�2(Z)

x(n)

y(n)

H(Z) =

M�1XXX

r=0

Z�rHr(ZM)

=

M�1XXX

r=0

Z�r

(N/M)�1XXX

n=0

h(r + NM)Z�nM

H(Z) =

N�1XXX

n=0

h(n)Z�n

= h(0) + h(1)Z�1 + h(2)Z�2 + · · · + h(N � 1)Z�(N�1)

Substitute Z�1 with Z�1ej✓ and Z�M with Z�MejkM(2⇡/M)

G(Z) =

N�1XXX

n=0

h(n)[e�j✓Z]�n

= h(0) + h(1)ej✓Z�1 + h(2)e2j✓Z�2 + · · · + h(N � 1)ej(N�1)✓Z�(N�1)

M:1

Z�1

Z�(M�2)

Z�(M�1)

+

...

H1(ZM)

HM�2(ZM)

HM�1(ZM)

G(z) = h(0) + h(M + 0)Z�MejkM(2⇡/M) + h(2M + 0)Z�2Mejk2M(2⇡/M) +h(1)Z�1ejk(2⇡/M) + h(M + 1)Z�(M+1)ejk(M+1)(2⇡/M) + h(2M + 1)Z�(2M+1)ejk(2M+1)(2⇡/M) +h(2)Z�2e2jk(2⇡/M) + h(M + 2)Z�(M+2)ejk(M+2)(2⇡/M) + h(2M + 2)Z�(2M+2)ejk(2M+2)(2⇡/M) +

......

......

......

h(M � 1)Z�(M�1)e(M�1)jk(2⇡/M) + h(2M � 1)Z�(2M�1)ejk(2M�1)(2⇡/M) + h(3M � 1)Z�(3M�1)ejk(3M�1)(2⇡/M) +

· · ·· · ·· · ·· · ·

· · ·

H0(ZM)

M:1

+

...

H0(ZM)

H1(ZM)

HM�2(ZM)

HM�1(ZM)

ej(M�1)k 2⇡M

ej2k 2⇡M

H0(ZM)

H0(ZMe�jkM(2⇡/M))

ej0k 2⇡M n

Take advantage of periodicity of complex exponential

ejk 2⇡M n

Z�1

Z�(M�2)

Z�(M�1)

x(n)

y(n)

M:1

H(z) = h(0) + h(M + 0)Z�M + h(2M + 0)Z�2M +h(1)Z�1 + h(M + 1)Z�(M+1) + h(2M + 1)Z�(2M+1) +h(2)Z�2 + h(M + 2)Z�(M+2) + h(2M + 2)Z�(2M+2) +h(3)Z�3 + h(M + 3)Z�(M+3) + h(2M + 3)Z�(2M+3) +

......

......

......

h(M � 1)Z�(M�1) + h(2M � 1)Z�(2M�1) + h(3M � 1)Z�(3M�1) +

· · ·· · ·· · ·· · ·

· · ·

H(Z) =

N�1XXX

n=0

h(n)Z�n

= h(0) + h(1)Z�1 + h(2)Z�2 + · · · + h(N � 1)Z�(N�1)

Z�1

Z�(M�2)

Z�(M�1)

+

...

H0(ZM)

H1(ZM)

HM�2(ZM)

HM�1(ZM)

Z�1

Z�(M�2)

Z�(M�1)

+

...

M:1

M:1

M:1

M:1

H0(Z)

H1(Z)

HM�2(Z)

HM�1(Z)

+

... y(n)x(n)

H0(Z)

H1(Z)

HM�1(Z)

HM�2(Z)

x(n)

y(n)

H(Z) =

M�1XXX

r=0

Z�rHr(ZM)

=

M�1XXX

r=0

Z�r

(N/M)�1XXX

n=0

h(r + NM)Z�nM

H(Z) =

N�1XXX

n=0

h(n)Z�n

= h(0) + h(1)Z�1 + h(2)Z�2 + · · · + h(N � 1)Z�(N�1)

Substitute Z�1 with Z�1ej✓ and Z�M with Z�MejkM(2⇡/M)

G(Z) =

N�1XXX

n=0

h(n)[e�j✓Z]�n

= h(0) + h(1)ej✓Z�1 + h(2)e2j✓Z�2 + · · · + h(N � 1)ej(N�1)✓Z�(N�1)

M:1

Z�1

Z�(M�2)

Z�(M�1)

+

...

H1(ZM)

HM�2(ZM)

HM�1(ZM)

G(z) = h(0) + h(M + 0)Z�MejkM(2⇡/M) + h(2M + 0)Z�2Mejk2M(2⇡/M) +h(1)Z�1ejk(2⇡/M) + h(M + 1)Z�(M+1)ejk(M+1)(2⇡/M) + h(2M + 1)Z�(2M+1)ejk(2M+1)(2⇡/M) +h(2)Z�2e2jk(2⇡/M) + h(M + 2)Z�(M+2)ejk(M+2)(2⇡/M) + h(2M + 2)Z�(2M+2)ejk(2M+2)(2⇡/M) +

......

......

......

h(M � 1)Z�(M�1)e(M�1)jk(2⇡/M) + h(2M � 1)Z�(2M�1)ejk(2M�1)(2⇡/M) + h(3M � 1)Z�(3M�1)ejk(3M�1)(2⇡/M) +

· · ·· · ·· · ·· · ·

· · ·

H0(ZM)

M:1

+

...

H0(ZM)

H1(ZM)

HM�2(ZM)

HM�1(ZM)

ej(M�1)k 2⇡M

ej2k 2⇡M

H0(ZM)

H0(ZMe�jkM(2⇡/M))

ej0k 2⇡M n

Take advantage of periodicity of complex exponential

ejk 2⇡M n

Z�1

Z�(M�2)

Z�(M�1)

x(n)

y(n)

GRCON 2017 Channelization using RFNoC 9 / 27

Page 16: Channelization using RFNoC - GNU Radio

Channelizer Background : Filter Transformation

M:1

H(z) = h(0) + h(M + 0)Z�M + h(2M + 0)Z�2M +h(1)Z�1 + h(M + 1)Z�(M+1) + h(2M + 1)Z�(2M+1) +h(2)Z�2 + h(M + 2)Z�(M+2) + h(2M + 2)Z�(2M+2) +h(3)Z�3 + h(M + 3)Z�(M+3) + h(2M + 3)Z�(2M+3) +

......

......

......

h(M � 1)Z�(M�1) + h(2M � 1)Z�(2M�1) + h(3M � 1)Z�(3M�1) +

· · ·· · ·· · ·· · ·

· · ·

H(Z) =

N�1XXX

n=0

h(n)Z�n

= h(0) + h(1)Z�1 + h(2)Z�2 + · · · + h(N � 1)Z�(N�1)

Z�1

Z�(M�2)

Z�(M�1)

+

...

H0(ZM)

H1(ZM)

HM�2(ZM)

HM�1(ZM)

Z�1

Z�(M�2)

Z�(M�1)

+

...

M:1

M:1

M:1

M:1

H0(Z)

H1(Z)

HM�2(Z)

HM�1(Z)

+

... y(n)x(n)

H0(Z)

H1(Z)

HM�1(Z)

HM�2(Z)

x(n)

y(n)

H(Z) =

M�1XXX

r=0

Z�rHr(ZM)

=

M�1XXX

r=0

Z�r

(N/M)�1XXX

n=0

h(r + NM)Z�nM

H(Z) =

N�1XXX

n=0

h(n)Z�n

= h(0) + h(1)Z�1 + h(2)Z�2 + · · · + h(N � 1)Z�(N�1)

Substitute Z�1 with Z�1ej✓ and Z�M with Z�MejkM(2⇡/M)

G(Z) =

N�1XXX

n=0

h(n)[e�j✓Z]�n

= h(0) + h(1)ej✓Z�1 + h(2)e2j✓Z�2 + · · · + h(N � 1)ej(N�1)✓Z�(N�1)

M:1

Z�1

Z�(M�2)

Z�(M�1)

+

...

H1(ZM)

HM�2(ZM)

HM�1(ZM)

G(z) = h(0) + h(M + 0)Z�MejkM(2⇡/M) + h(2M + 0)Z�2Mejk2M(2⇡/M) +h(1)Z�1ejk(2⇡/M) + h(M + 1)Z�(M+1)ejk(M+1)(2⇡/M) + h(2M + 1)Z�(2M+1)ejk(2M+1)(2⇡/M) +h(2)Z�2e2jk(2⇡/M) + h(M + 2)Z�(M+2)ejk(M+2)(2⇡/M) + h(2M + 2)Z�(2M+2)ejk(2M+2)(2⇡/M) +

......

......

......

h(M � 1)Z�(M�1)e(M�1)jk(2⇡/M) + h(2M � 1)Z�(2M�1)ejk(2M�1)(2⇡/M) + h(3M � 1)Z�(3M�1)ejk(3M�1)(2⇡/M) +

· · ·· · ·· · ·· · ·

· · ·

H0(ZM)

M:1

+

...

H0(ZM)

H1(ZM)

HM�2(ZM)

HM�1(ZM)

ej(M�1)k 2⇡M

ej2k 2⇡M

H0(ZM)

H0(ZMe�jkM(2⇡/M))

ej0k 2⇡M n

Take advantage of periodicity of complex exponential

ejk 2⇡M n

Z�1

Z�(M�2)

Z�(M�1)

x(n)

y(n)

M:1

H(z) = h(0) + h(M + 0)Z�M + h(2M + 0)Z�2M +h(1)Z�1 + h(M + 1)Z�(M+1) + h(2M + 1)Z�(2M+1) +h(2)Z�2 + h(M + 2)Z�(M+2) + h(2M + 2)Z�(2M+2) +h(3)Z�3 + h(M + 3)Z�(M+3) + h(2M + 3)Z�(2M+3) +

......

......

......

h(M � 1)Z�(M�1) + h(2M � 1)Z�(2M�1) + h(3M � 1)Z�(3M�1) +

· · ·· · ·· · ·· · ·

· · ·

H(Z) =

N�1XXX

n=0

h(n)Z�n

= h(0) + h(1)Z�1 + h(2)Z�2 + · · · + h(N � 1)Z�(N�1)

Z�1

Z�(M�2)

Z�(M�1)

+

...

H0(ZM)

H1(ZM)

HM�2(ZM)

HM�1(ZM)

Z�1

Z�(M�2)

Z�(M�1)

+

...

M:1

M:1

M:1

M:1

H0(Z)

H1(Z)

HM�2(Z)

HM�1(Z)

+

... y(n)x(n)

H0(Z)

H1(Z)

HM�1(Z)

HM�2(Z)

x(n)

y(n)

H(Z) =

M�1XXX

r=0

Z�rHr(ZM)

=

M�1XXX

r=0

Z�r

(N/M)�1XXX

n=0

h(r + NM)Z�nM

H(Z) =

N�1XXX

n=0

h(n)Z�n

= h(0) + h(1)Z�1 + h(2)Z�2 + · · · + h(N � 1)Z�(N�1)

Substitute Z�1 with Z�1ej✓ and Z�M with Z�MejkM(2⇡/M)

G(Z) =

N�1XXX

n=0

h(n)[e�j✓Z]�n

= h(0) + h(1)ej✓Z�1 + h(2)e2j✓Z�2 + · · · + h(N � 1)ej(N�1)✓Z�(N�1)

M:1

Z�1

Z�(M�2)

Z�(M�1)

+

...

H1(ZM)

HM�2(ZM)

HM�1(ZM)

G(z) = h(0) + h(M + 0)Z�MejkM(2⇡/M) + h(2M + 0)Z�2Mejk2M(2⇡/M) +h(1)Z�1ejk(2⇡/M) + h(M + 1)Z�(M+1)ejk(M+1)(2⇡/M) + h(2M + 1)Z�(2M+1)ejk(2M+1)(2⇡/M) +h(2)Z�2e2jk(2⇡/M) + h(M + 2)Z�(M+2)ejk(M+2)(2⇡/M) + h(2M + 2)Z�(2M+2)ejk(2M+2)(2⇡/M) +

......

......

......

h(M � 1)Z�(M�1)e(M�1)jk(2⇡/M) + h(2M � 1)Z�(2M�1)ejk(2M�1)(2⇡/M) + h(3M � 1)Z�(3M�1)ejk(3M�1)(2⇡/M) +

· · ·· · ·· · ·· · ·

· · ·

H0(ZM)

M:1

+

...

H0(ZM)

H1(ZM)

HM�2(ZM)

HM�1(ZM)

ej(M�1)k 2⇡M

ej2k 2⇡M

H0(ZM)

H0(ZMe�jkM(2⇡/M))

ej0k 2⇡M n

Take advantage of periodicity of complex exponential

ejk 2⇡M n

Z�1

Z�(M�2)

Z�(M�1)

x(n)

y(n)

M:1

H(z) = h(0) + h(M + 0)Z�M + h(2M + 0)Z�2M +h(1)Z�1 + h(M + 1)Z�(M+1) + h(2M + 1)Z�(2M+1) +h(2)Z�2 + h(M + 2)Z�(M+2) + h(2M + 2)Z�(2M+2) +h(3)Z�3 + h(M + 3)Z�(M+3) + h(2M + 3)Z�(2M+3) +

......

......

......

h(M � 1)Z�(M�1) + h(2M � 1)Z�(2M�1) + h(3M � 1)Z�(3M�1) +

· · ·· · ·· · ·· · ·

· · ·

H(Z) =

N�1XXX

n=0

h(n)Z�n

= h(0) + h(1)Z�1 + h(2)Z�2 + · · · + h(N � 1)Z�(N�1)

Z�1

Z�(M�2)

Z�(M�1)

+

...

H0(ZM)

H1(ZM)

HM�2(ZM)

HM�1(ZM)

Z�1

Z�(M�2)

Z�(M�1)

+

...

M:1

M:1

M:1

M:1

H0(Z)

H1(Z)

HM�2(Z)

HM�1(Z)

+

... y(n)x(n)

H0(Z)

H1(Z)

HM�1(Z)

HM�2(Z)

x(n)

y(n)

H(Z) =

M�1XXX

r=0

Z�rHr(ZM)

=

M�1XXX

r=0

Z�r

(N/M)�1XXX

n=0

h(r + NM)Z�nM

H(Z) =

N�1XXX

n=0

h(n)Z�n

= h(0) + h(1)Z�1 + h(2)Z�2 + · · · + h(N � 1)Z�(N�1)

Substitute Z�1 with Z�1ej✓ and Z�M with Z�MejkM(2⇡/M)

G(Z) =

N�1XXX

n=0

h(n)[e�j✓Z]�n

= h(0) + h(1)ej✓Z�1 + h(2)e2j✓Z�2 + · · · + h(N � 1)ej(N�1)✓Z�(N�1)

M:1

Z�1

Z�(M�2)

Z�(M�1)

+

...

H1(ZM)

HM�2(ZM)

HM�1(ZM)

G(z) = h(0) + h(M + 0)Z�MejkM(2⇡/M) + h(2M + 0)Z�2Mejk2M(2⇡/M) +h(1)Z�1ejk(2⇡/M) + h(M + 1)Z�(M+1)ejk(M+1)(2⇡/M) + h(2M + 1)Z�(2M+1)ejk(2M+1)(2⇡/M) +h(2)Z�2e2jk(2⇡/M) + h(M + 2)Z�(M+2)ejk(M+2)(2⇡/M) + h(2M + 2)Z�(2M+2)ejk(2M+2)(2⇡/M) +

......

......

......

h(M � 1)Z�(M�1)e(M�1)jk(2⇡/M) + h(2M � 1)Z�(2M�1)ejk(2M�1)(2⇡/M) + h(3M � 1)Z�(3M�1)ejk(3M�1)(2⇡/M) +

· · ·· · ·· · ·· · ·

· · ·

H0(ZM)

M:1

+

...

H0(ZM)

H1(ZM)

HM�2(ZM)

HM�1(ZM)

ej(M�1)k 2⇡M

ej2k 2⇡M

H0(ZM)

H0(ZMe�jkM(2⇡/M))

ej0k 2⇡M n

Take advantage of periodicity of complex exponential

ejk 2⇡M n

Z�1

Z�(M�2)

Z�(M�1)

x(n)

y(n)

GRCON 2017 Channelization using RFNoC 9 / 27

Page 17: Channelization using RFNoC - GNU Radio

Channelizer Background : M Filter Transformation

Substitute Z−1 with Z−1e jθ and Z−M with Z−Me jkM(2π/M)

G(Z) =

N−1∑∑∑

n=0

h(n)[e−jθZ ]−n

= h(0) + h(1)e jθZ−1 + h(2)e2jθZ−2 + · · ·+ h(N − 1)e j(N−1)θZ−(N−1)

G(z) = h(0) + h(M + 0)Z−Me jkM(2π/M) + h(2M + 0)Z−2Me jk2M(2π/M) +

h(1)Z−1e jk(2π/M) + h(M + 1)Z−(M+1)e jk(M+1)(2π/M) + h(2M + 1)Z−(2M+1)e jk(2M+1)(2π/M) +

h(2)Z−2e2jk(2π/M) + h(M + 2)Z−(M+2)e jk(M+2)(2π/M) + h(2M + 2)Z−(2M+2)e jk(2M+2)(2π/M) +...

......

......

...

h(M − 1)Z−(M−1)e(M−1)jk(2π/M) + h(2M − 1)Z−(2M−1)e jk(2M−1)(2π/M) + h(3M − 1)Z−(3M−1)e jk(3M−1)(2π/M) +

· · ·· · ·· · ·· · ·

· · ·

Serpentine Shift

+ + +

Polyp

hase

Fi

lter

Circ

ular

Buf

fer

M-P

oint

IFFT

Inpu

t Dat

a Bu

ffer

Polyp

hase

Filte

r

Circ

ular

Buf

fer

M-P

oint

IFFT

Inpu

t Dat

a Bu

ffer

Aliased Regions Passband

Polyp

hase

Fi

lter

Circ

ular

Buf

fer

Out

put D

ata

Buffe

r

+

M-P

oint

FFT

H(z) = h(0) + h(M + 0)Z�M + h(2M + 0)Z�2M +h(1)Z�1 + h(M + 1)Z�(M+1) + h(2M + 1)Z�(2M+1) +h(2)Z�2 + h(M + 2)Z�(M+2) + h(2M + 2)Z�(2M+2) +h(3)Z�3 + h(M + 3)Z�(M+3) + h(2M + 3)Z�(2M+3) +

......

......

......

h(M � 1)Z�(M�1) + h(2M � 1)Z�(2M�1) + h(3M � 1)Z�(3M�1) +

· · ·· · ·· · ·· · ·

· · ·

H(Z) =

N�1XXX

n=0

h(n)Z�n

= h(0) + h(1)Z�1 + h(2)Z�2 + · · · + h(N � 1)Z�(N�1)

y(nM, k) =M�1Pr=0

yr(nM)ej 2⇡M rk

k, is the channel selector indexThis is the DFT for frequency index k. This summation could be done for any index.

y(nM, k) =M�1Pr=0

yr(nM)ej 2⇡M rk

k, is the channel selector index.Channelizer outputs samples from each frequency bin at a rate of fs/M

An M/2 channelizer outputs samples from each frequency bin at a rate of 2fs/M.To accomplish this the IFFT is run every M/2 input samples starting at port (M/2) - 1 andprogressing up the stack to Port 0. The M/2 addresses to which the new M/2 inputssamples are delivered are first vacated by their former contents. There is a serpentineshift through a bu↵er.The input bu↵er is then filtered by the polyphase filter bank on the new bu↵er contents.This data shifting into the polyphase filter stages causes a frequency - dependent phase shift✓ (!) = �t!✓ (!k) = nTk 1

M2⇡T = nk

M 2⇡✓ (!k)|n=M = nk

M 2⇡��n=M

= k2⇡

✓ (!k)|n=M/2 = nkM 2⇡

��n=M/2

= k⇡

From this we see that the odd indexed frequency terms experience a phase shift of ⇡ radians foreach successive M/2 shift of input data.Must compensate for this phase shift by applying the appropriate phase correction to the spectraldata. For an M/2 channelizer, the correction is a circular shift of the filter output data.

The new form of the M/2 Channelizer incorporates the sample rate conversiondirectly into the polyphase filter bank.Normal polyphase filter representation

H (Z) =M�1Pr=0

Z�rHr

�ZM

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

2X Filter Representation

H (Z) =M/2�1P

r=0Z�rHr

�ZM

�+ Z�(r+M/2)Hr+M/2(Z

M )

where

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

M-Point FFT

r(nM,0)

r(nM, M � 2)

r(nM, M � 1)

+

ej0k 2⇡M

ej(M�2)k 2⇡M

ej(M�1)k 2⇡M

y(nM, k)

n + 31

n

n � 1

n � 32

n � 33 n � 97 n + 63 n � 1 n � 65

n � 65 n + 31 n � 33 n � 97n � 129

n � 96 n � 180 n n � 64

n � 64

n � 128

n � 128 n + 32 n � 32 n � 96

yr

+M/2:1

+

M/2:1

M/2:1

M/2:1

M/2:1

+

M/2:1

M/2:1

M/2:1

M/2:1

M/2:1

M/2:1

+

x(n)y(n)

Top Half

M:1

Z�1

Z�(M�2)

Z�(M�1)

+

H0(ZM)

H1(ZM)

HM�2(ZM )

HM�1(ZM )

...

Z�1

Z�(M�2)

Z�(M�1)

+

...

M:1

M:1

M:1

M:1

H0(Z)

H1(Z)

HM�2(Z)

HM�1(Z)

Z�1

...

Z�(M�1)

Z�(M�1)

Z�1

...

...

...

Z�1 H1

�Z2

H0

�Z2

Z�1 Z�1

Z�1

Z�(M/2�1)

Z�(M/2�1)

H0

�Z2

H1

�Z2

HM/2�1

�Z2

HM�1

�Z2

Z�(M/2�1)

Z�(M/2�1)

HM/2�1

�Z2

HM/2

�Z2

HM/2+1

�Z2

HM�1

�Z2

H0

�ZM

H1

�ZM

HM/2�1

�ZM

HM�1

�ZM

x(n)

y(n)

x(n)

y(n)

H0

�Z2

H1

�Z2

...

HM/2�1

�Z2

HM/2

�Z2

Z�1HM/2+1

�Z2

Z�1HM�1

�Z2

...

...

...

...

x(n)

y(n)

+

... y(n)x(n)

H0(Z)

H1(Z)

HM�1(Z)

HM�2(Z)

x(n)

y(n)

H(0)

H(M � 2)

H(M � 1)

...

H(0)

H(M � 2)

H(M � 1)

...

The new form of the M/2 Channelizer incorporates the sample rate conversiondirectly into the polyphase filter bank.Normal polyphase filter representation

H (Z) =M�1Pr=0

Z�rHr

�ZM

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

2X Filter Representation

H (Z) =M/2�1P

r=0Z�rHr

�ZM

�+ Z�(r+M/2)Hr+M/2(Z

M )

where

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

x(n)

x(n)y(nM, k)

x(n)

y(n)

Bottom Half

Z�2x(n) Z�2 Z�2

y(n)

Z�1x(n)

h(k) h(k + M) h(k + 2M) h(k + 3M)

+ + +

Z�2 Z�2 Z�2

y(n)

h�k + M

2

�h�k + 3M

2

�h�k + 5M

2

�h�k + 7M

2

Serpentine Shift

+ + +

Polyp

hase

Fi

lter

Circ

ular

Buf

fer

M-P

oint

IFFT

Inpu

t Dat

a Bu

ffer

Polyp

hase

Filte

r

Circ

ular

Buf

fer

M-P

oint

IFFT

Inpu

t Dat

a Bu

ffer

Aliased Regions Passband

Polyp

hase

Fi

lter

Circ

ular

Buf

fer

Out

put D

ata

Buffe

r

+

M-P

oint

FFT

H(z) = h(0) + h(M + 0)Z�M + h(2M + 0)Z�2M +h(1)Z�1 + h(M + 1)Z�(M+1) + h(2M + 1)Z�(2M+1) +h(2)Z�2 + h(M + 2)Z�(M+2) + h(2M + 2)Z�(2M+2) +h(3)Z�3 + h(M + 3)Z�(M+3) + h(2M + 3)Z�(2M+3) +

......

......

......

h(M � 1)Z�(M�1) + h(2M � 1)Z�(2M�1) + h(3M � 1)Z�(3M�1) +

· · ·· · ·· · ·· · ·

· · ·

H(Z) =

N�1XXX

n=0

h(n)Z�n

= h(0) + h(1)Z�1 + h(2)Z�2 + · · · + h(N � 1)Z�(N�1)

y(nM, k) =M�1Pr=0

yr(nM)ej 2⇡M rk

k, is the channel selector indexThis is the DFT for frequency index k. This summation could be done for any index.

y(nM, k) =M�1Pr=0

yr(nM)ej 2⇡M rk

k, is the channel selector index.Channelizer outputs samples from each frequency bin at a rate of fs/M

An M/2 channelizer outputs samples from each frequency bin at a rate of 2fs/M.To accomplish this the IFFT is run every M/2 input samples starting at port (M/2) - 1 andprogressing up the stack to Port 0. The M/2 addresses to which the new M/2 inputssamples are delivered are first vacated by their former contents. There is a serpentineshift through a bu↵er.The input bu↵er is then filtered by the polyphase filter bank on the new bu↵er contents.This data shifting into the polyphase filter stages causes a frequency - dependent phase shift✓ (!) = �t!✓ (!k) = nTk 1

M2⇡T = nk

M 2⇡✓ (!k)|n=M = nk

M 2⇡��n=M

= k2⇡

✓ (!k)|n=M/2 = nkM 2⇡

��n=M/2

= k⇡

From this we see that the odd indexed frequency terms experience a phase shift of ⇡ radians foreach successive M/2 shift of input data.Must compensate for this phase shift by applying the appropriate phase correction to the spectraldata. For an M/2 channelizer, the correction is a circular shift of the filter output data.

The new form of the M/2 Channelizer incorporates the sample rate conversiondirectly into the polyphase filter bank.Normal polyphase filter representation

H (Z) =M�1Pr=0

Z�rHr

�ZM

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

2X Filter Representation

H (Z) =M/2�1P

r=0Z�rHr

�ZM

�+ Z�(r+M/2)Hr+M/2(Z

M )

where

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

M-Point FFT

r(nM,0)

r(nM, M � 2)

r(nM, M � 1)

+

ej0k 2⇡M

ej(M�2)k 2⇡M

ej(M�1)k 2⇡M

y(nM, k)

n + 31

n

n � 1

n � 32

n � 33 n � 97 n + 63 n � 1 n � 65

n � 65 n + 31 n � 33 n � 97n � 129

n � 96 n � 180 n n � 64

n � 64

n � 128

n � 128 n + 32 n � 32 n � 96

yr

+M/2:1

+

M/2:1

M/2:1

M/2:1

M/2:1

+

M/2:1

M/2:1

M/2:1

M/2:1

M/2:1

M/2:1

+

x(n)y(n)

Top Half

M:1

Z�1

Z�(M�2)

Z�(M�1)

+

H0(ZM)

H1(ZM)

HM�2(ZM )

HM�1(ZM )

...

Z�1

Z�(M�2)

Z�(M�1)

+

...

M:1

M:1

M:1

M:1

H0(Z)

H1(Z)

HM�2(Z)

HM�1(Z)

Z�1

...

Z�(M�1)

Z�(M�1)

Z�1

...

...

...

Z�1 H1

�Z2

H0

�Z2

Z�1 Z�1

Z�1

Z�(M/2�1)

Z�(M/2�1)

H0

�Z2

H1

�Z2

HM/2�1

�Z2

HM�1

�Z2

Z�(M/2�1)

Z�(M/2�1)

HM/2�1

�Z2

HM/2

�Z2

HM/2+1

�Z2

HM�1

�Z2

H0

�ZM

H1

�ZM

HM/2�1

�ZM

HM�1

�ZM

x(n)

y(n)

x(n)

y(n)

H0

�Z2

H1

�Z2

...

HM/2�1

�Z2

HM/2

�Z2

Z�1HM/2+1

�Z2

Z�1HM�1

�Z2

...

...

...

...

x(n)

y(n)

+

... y(n)x(n)

H0(Z)

H1(Z)

HM�1(Z)

HM�2(Z)

x(n)

y(n)

H(0)

H(M � 2)

H(M � 1)

...

H(0)

H(M � 2)

H(M � 1)

...

The new form of the M/2 Channelizer incorporates the sample rate conversiondirectly into the polyphase filter bank.Normal polyphase filter representation

H (Z) =M�1Pr=0

Z�rHr

�ZM

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

2X Filter Representation

H (Z) =M/2�1P

r=0Z�rHr

�ZM

�+ Z�(r+M/2)Hr+M/2(Z

M )

where

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

x(n)

x(n)y(nM, k)

x(n)

y(n)

Bottom Half

Z�2x(n) Z�2 Z�2

y(n)

Z�1x(n)

h(k) h(k + M) h(k + 2M) h(k + 3M)

+ + +

Z�2 Z�2 Z�2

y(n)

h�k + M

2

�h�k + 3M

2

�h�k + 5M

2

�h�k + 7M

2

GRCON 2017 Channelization using RFNoC 10 / 27

Page 18: Channelization using RFNoC - GNU Radio

Channelizer Background

Standard Decimate by M Channelizer

M-Point FFT

r(nM,0)

r(nM, M � 2)

r(nM, M � 1)

y(nM, k) =

M�1X

r=0

yr(nM)ej 2⇡M rk

k, is the channel selector index

y(n)x(n)

y(n, k) =⇥x(n)e�j✓kn

⇤⇤ h(n)

=N�1X

r=0

x(n � r)e�j✓knh(r)

M-Point FFT

y(n)

Noble Identities

x(n)H(0)

...

H(M � 2)

H(M � 1)

...

H(0)

H(M � 2)

H(M � 1)

⌘⌘

H(Z)

H(Z)

H�ZN

H�ZN

N # N #

N " N "

y(n, k) =[x(n)e−jθkn

] ∗ h(n) =N−1∑∑∑

r=0

x(n− r)e−jθknh(r)

GRCON 2017 Channelization using RFNoC 11 / 27

Page 19: Channelization using RFNoC - GNU Radio

Channelizer Background : M/2 Filter Transformation

Serpentine Shift

+ + +

Polyp

hase

Fi

lter

Circ

ular

Buf

fer

M-P

oint

IFFT

Inpu

t Dat

a Bu

ffer

Polyp

hase

Filte

r

Circ

ular

Buf

fer

M-P

oint

IFFT

Inpu

t Dat

a Bu

ffer

Aliased Regions Passband

Polyp

hase

Fi

lter

Circ

ular

Buf

fer

Out

put D

ata

Buffe

r

+

M-P

oint

FFT

H(z) = h(0) + h(M + 0)Z�M + h(2M + 0)Z�2M +h(1)Z�1 + h(M + 1)Z�(M+1) + h(2M + 1)Z�(2M+1) +h(2)Z�2 + h(M + 2)Z�(M+2) + h(2M + 2)Z�(2M+2) +h(3)Z�3 + h(M + 3)Z�(M+3) + h(2M + 3)Z�(2M+3) +

......

......

......

h(M � 1)Z�(M�1) + h(2M � 1)Z�(2M�1) + h(3M � 1)Z�(3M�1) +

· · ·· · ·· · ·· · ·

· · ·

H(Z) =

N�1XXX

n=0

h(n)Z�n

= h(0) + h(1)Z�1 + h(2)Z�2 + · · · + h(N � 1)Z�(N�1)

y(nM, k) =M�1Pr=0

yr(nM)ej 2⇡M rk

k, is the channel selector indexThis is the DFT for frequency index k. This summation could be done for any index.

y(nM, k) =M�1Pr=0

yr(nM)ej 2⇡M rk

k, is the channel selector index.Channelizer outputs samples from each frequency bin at a rate of fs/M

An M/2 channelizer outputs samples from each frequency bin at a rate of 2fs/M.To accomplish this the IFFT is run every M/2 input samples starting at port (M/2) - 1 andprogressing up the stack to Port 0. The M/2 addresses to which the new M/2 inputssamples are delivered are first vacated by their former contents. There is a serpentineshift through a bu↵er.The input bu↵er is then filtered by the polyphase filter bank on the new bu↵er contents.This data shifting into the polyphase filter stages causes a frequency - dependent phase shift✓ (!) = �t!✓ (!k) = nTk 1

M2⇡T = nk

M 2⇡✓ (!k)|n=M = nk

M 2⇡��n=M

= k2⇡

✓ (!k)|n=M/2 = nkM 2⇡

��n=M/2

= k⇡

From this we see that the odd indexed frequency terms experience a phase shift of ⇡ radians foreach successive M/2 shift of input data.Must compensate for this phase shift by applying the appropriate phase correction to the spectraldata. For an M/2 channelizer, the correction is a circular shift of the filter output data.

The new form of the M/2 Channelizer incorporates the sample rate conversiondirectly into the polyphase filter bank.Normal polyphase filter representation

H (Z) =M�1Pr=0

Z�rHr

�ZM

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

2X Filter Representation

H (Z) =M/2�1P

r=0Z�rHr

�ZM

�+ Z�(r+M/2)Hr+M/2(Z

M )

where

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

M-Point FFT

r(nM,0)

r(nM, M � 2)

r(nM, M � 1)

+

ej0k 2⇡M

ej(M�2)k 2⇡M

ej(M�1)k 2⇡M

y(nM, k)

n + 31

n

n � 1

n � 32

n � 33 n � 97 n + 63 n � 1 n � 65

n � 65 n + 31 n � 33 n � 97n � 129

n � 96 n � 180 n n � 64

n � 64

n � 128

n � 128 n + 32 n � 32 n � 96

yr

+M/2:1

+

M/2:1

M/2:1

M/2:1

M/2:1

+

M/2:1

M/2:1

M/2:1

M/2:1

M/2:1

M/2:1

+

x(n)y(n)

Top Half

M:1

Z�1

Z�(M�2)

Z�(M�1)

+

H0(ZM)

H1(ZM)

HM�2(ZM )

HM�1(ZM )

...

Z�1

Z�(M�2)

Z�(M�1)

+

...

M:1

M:1

M:1

M:1

H0(Z)

H1(Z)

HM�2(Z)

HM�1(Z)

Z�1

...

Z�(M�1)

Z�(M�1)

Z�1

...

...

...

Z�1 H1

�Z2

H0

�Z2

Z�1 Z�1

Z�1

Z�(M/2�1)

Z�(M/2�1)

H0

�Z2

H1

�Z2

HM/2�1

�Z2

HM�1

�Z2

Z�(M/2�1)

Z�(M/2�1)

HM/2�1

�Z2

HM/2

�Z2

HM/2+1

�Z2

HM�1

�Z2

H0

�ZM

H1

�ZM

HM/2�1

�ZM

HM�1

�ZM

x(n)

y(n)

x(n)

y(n)

H0

�Z2

H1

�Z2

...

HM/2�1

�Z2

HM/2

�Z2

Z�1HM/2+1

�Z2

Z�1HM�1

�Z2

...

...

...

...

x(n)

y(n)

+

... y(n)x(n)

H0(Z)

H1(Z)

HM�1(Z)

HM�2(Z)

x(n)

y(n)

H(0)

H(M � 2)

H(M � 1)

...

H(0)

H(M � 2)

H(M � 1)

...

The new form of the M/2 Channelizer incorporates the sample rate conversiondirectly into the polyphase filter bank.Normal polyphase filter representation

H (Z) =M�1Pr=0

Z�rHr

�ZM

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

2X Filter Representation

H (Z) =M/2�1P

r=0Z�rHr

�ZM

�+ Z�(r+M/2)Hr+M/2(Z

M )

where

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

x(n)

x(n)y(nM, k)

x(n)

y(n)

Bottom Half

Z�2x(n) Z�2 Z�2

y(n)

Z�1x(n)

h(k) h(k + M) h(k + 2M) h(k + 3M)

+ + +

Z�2 Z�2 Z�2

y(n)

h�k + M

2

�h�k + 3M

2

�h�k + 5M

2

�h�k + 7M

2

Serpentine Shift

+ + +

Polyp

hase

Fi

lter

Circ

ular

Buf

fer

M-P

oint

IFFT

Inpu

t Dat

a Bu

ffer

Polyp

hase

Filte

r

Circ

ular

Buf

fer

M-P

oint

IFFT

Inpu

t Dat

a Bu

ffer

Aliased Regions Passband

Polyp

hase

Fi

lter

Circ

ular

Buf

fer

Out

put D

ata

Buffe

r

+

M-P

oint

FFT

H(z) = h(0) + h(M + 0)Z�M + h(2M + 0)Z�2M +h(1)Z�1 + h(M + 1)Z�(M+1) + h(2M + 1)Z�(2M+1) +h(2)Z�2 + h(M + 2)Z�(M+2) + h(2M + 2)Z�(2M+2) +h(3)Z�3 + h(M + 3)Z�(M+3) + h(2M + 3)Z�(2M+3) +

......

......

......

h(M � 1)Z�(M�1) + h(2M � 1)Z�(2M�1) + h(3M � 1)Z�(3M�1) +

· · ·· · ·· · ·· · ·

· · ·

H(Z) =

N�1XXX

n=0

h(n)Z�n

= h(0) + h(1)Z�1 + h(2)Z�2 + · · · + h(N � 1)Z�(N�1)

y(nM, k) =M�1Pr=0

yr(nM)ej 2⇡M rk

k, is the channel selector indexThis is the DFT for frequency index k. This summation could be done for any index.

y(nM, k) =M�1Pr=0

yr(nM)ej 2⇡M rk

k, is the channel selector index.Channelizer outputs samples from each frequency bin at a rate of fs/M

An M/2 channelizer outputs samples from each frequency bin at a rate of 2fs/M.To accomplish this the IFFT is run every M/2 input samples starting at port (M/2) - 1 andprogressing up the stack to Port 0. The M/2 addresses to which the new M/2 inputssamples are delivered are first vacated by their former contents. There is a serpentineshift through a bu↵er.The input bu↵er is then filtered by the polyphase filter bank on the new bu↵er contents.This data shifting into the polyphase filter stages causes a frequency - dependent phase shift✓ (!) = �t!✓ (!k) = nTk 1

M2⇡T = nk

M 2⇡✓ (!k)|n=M = nk

M 2⇡��n=M

= k2⇡

✓ (!k)|n=M/2 = nkM 2⇡

��n=M/2

= k⇡

From this we see that the odd indexed frequency terms experience a phase shift of ⇡ radians foreach successive M/2 shift of input data.Must compensate for this phase shift by applying the appropriate phase correction to the spectraldata. For an M/2 channelizer, the correction is a circular shift of the filter output data.

The new form of the M/2 Channelizer incorporates the sample rate conversiondirectly into the polyphase filter bank.Normal polyphase filter representation

H (Z) =M�1Pr=0

Z�rHr

�ZM

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

2X Filter Representation

H (Z) =M/2�1P

r=0Z�rHr

�ZM

�+ Z�(r+M/2)Hr+M/2(Z

M )

where

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

M-Point FFT

r(nM,0)

r(nM, M � 2)

r(nM, M � 1)

+

ej0k 2⇡M

ej(M�2)k 2⇡M

ej(M�1)k 2⇡M

y(nM, k)

n + 31

n

n � 1

n � 32

n � 33 n � 97 n + 63 n � 1 n � 65

n � 65 n + 31 n � 33 n � 97n � 129

n � 96 n � 180 n n � 64

n � 64

n � 128

n � 128 n + 32 n � 32 n � 96

yr

+M/2:1

+

M/2:1

M/2:1

M/2:1

M/2:1

+

M/2:1

M/2:1

M/2:1

M/2:1

M/2:1

M/2:1

+

x(n)y(n)

Top Half

M:1

Z�1

Z�(M�2)

Z�(M�1)

+

H0(ZM)

H1(ZM)

HM�2(ZM )

HM�1(ZM )

...

Z�1

Z�(M�2)

Z�(M�1)

+

...

M:1

M:1

M:1

M:1

H0(Z)

H1(Z)

HM�2(Z)

HM�1(Z)

Z�1

...

Z�(M�1)

Z�(M�1)

Z�1

...

...

...

Z�1 H1

�Z2

H0

�Z2

Z�1 Z�1

Z�1

Z�(M/2�1)

Z�(M/2�1)

H0

�Z2

H1

�Z2

HM/2�1

�Z2

HM�1

�Z2

Z�(M/2�1)

Z�(M/2�1)

HM/2�1

�Z2

HM/2

�Z2

HM/2+1

�Z2

HM�1

�Z2

H0

�ZM

H1

�ZM

HM/2�1

�ZM

HM�1

�ZM

x(n)

y(n)

x(n)

y(n)

H0

�Z2

H1

�Z2

...

HM/2�1

�Z2

HM/2

�Z2

Z�1HM/2+1

�Z2

Z�1HM�1

�Z2

...

...

...

...

x(n)

y(n)

+

... y(n)x(n)

H0(Z)

H1(Z)

HM�1(Z)

HM�2(Z)

x(n)

y(n)

H(0)

H(M � 2)

H(M � 1)

...

H(0)

H(M � 2)

H(M � 1)

...

The new form of the M/2 Channelizer incorporates the sample rate conversiondirectly into the polyphase filter bank.Normal polyphase filter representation

H (Z) =M�1Pr=0

Z�rHr

�ZM

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

2X Filter Representation

H (Z) =M/2�1P

r=0Z�rHr

�ZM

�+ Z�(r+M/2)Hr+M/2(Z

M )

where

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

x(n)

x(n)y(nM, k)

x(n)

y(n)

Bottom Half

Z�2x(n) Z�2 Z�2

y(n)

Z�1x(n)

h(k) h(k + M) h(k + 2M) h(k + 3M)

+ + +

Z�2 Z�2 Z�2

y(n)

h�k + M

2

�h�k + 3M

2

�h�k + 5M

2

�h�k + 7M

2

Serpentine Shift

+ + +

Polyp

hase

Fi

lter

Circ

ular

Buf

fer

M-P

oint

IFFT

Inpu

t Dat

a Bu

ffer

Polyp

hase

Filte

r

Circ

ular

Buf

fer

M-P

oint

IFFT

Inpu

t Dat

a Bu

ffer

Aliased Regions Passband

Polyp

hase

Fi

lter

Circ

ular

Buf

fer

Out

put D

ata

Buffe

r

+

M-P

oint

FFT

H(z) = h(0) + h(M + 0)Z�M + h(2M + 0)Z�2M +h(1)Z�1 + h(M + 1)Z�(M+1) + h(2M + 1)Z�(2M+1) +h(2)Z�2 + h(M + 2)Z�(M+2) + h(2M + 2)Z�(2M+2) +h(3)Z�3 + h(M + 3)Z�(M+3) + h(2M + 3)Z�(2M+3) +

......

......

......

h(M � 1)Z�(M�1) + h(2M � 1)Z�(2M�1) + h(3M � 1)Z�(3M�1) +

· · ·· · ·· · ·· · ·

· · ·

H(Z) =

N�1XXX

n=0

h(n)Z�n

= h(0) + h(1)Z�1 + h(2)Z�2 + · · · + h(N � 1)Z�(N�1)

y(nM, k) =M�1Pr=0

yr(nM)ej 2⇡M rk

k, is the channel selector indexThis is the DFT for frequency index k. This summation could be done for any index.

y(nM, k) =M�1Pr=0

yr(nM)ej 2⇡M rk

k, is the channel selector index.Channelizer outputs samples from each frequency bin at a rate of fs/M

An M/2 channelizer outputs samples from each frequency bin at a rate of 2fs/M.To accomplish this the IFFT is run every M/2 input samples starting at port (M/2) - 1 andprogressing up the stack to Port 0. The M/2 addresses to which the new M/2 inputssamples are delivered are first vacated by their former contents. There is a serpentineshift through a bu↵er.The input bu↵er is then filtered by the polyphase filter bank on the new bu↵er contents.This data shifting into the polyphase filter stages causes a frequency - dependent phase shift✓ (!) = �t!✓ (!k) = nTk 1

M2⇡T = nk

M 2⇡✓ (!k)|n=M = nk

M 2⇡��n=M

= k2⇡

✓ (!k)|n=M/2 = nkM 2⇡

��n=M/2

= k⇡

From this we see that the odd indexed frequency terms experience a phase shift of ⇡ radians foreach successive M/2 shift of input data.Must compensate for this phase shift by applying the appropriate phase correction to the spectraldata. For an M/2 channelizer, the correction is a circular shift of the filter output data.

The new form of the M/2 Channelizer incorporates the sample rate conversiondirectly into the polyphase filter bank.Normal polyphase filter representation

H (Z) =M�1Pr=0

Z�rHr

�ZM

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

2X Filter Representation

H (Z) =M/2�1P

r=0Z�rHr

�ZM

�+ Z�(r+M/2)Hr+M/2(Z

M )

where

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

M-Point FFT

r(nM,0)

r(nM, M � 2)

r(nM, M � 1)

+

ej0k 2⇡M

ej(M�2)k 2⇡M

ej(M�1)k 2⇡M

y(nM, k)

n + 31

n

n � 1

n � 32

n � 33 n � 97 n + 63 n � 1 n � 65

n � 65 n + 31 n � 33 n � 97n � 129

n � 96 n � 180 n n � 64

n � 64

n � 128

n � 128 n + 32 n � 32 n � 96

yr

+M/2:1

+

M/2:1

M/2:1

M/2:1

M/2:1

+

M/2:1

M/2:1

M/2:1

M/2:1

M/2:1

M/2:1

+

x(n)y(n)

Top Half

M:1

Z�1

Z�(M�2)

Z�(M�1)

+

H0(ZM)

H1(ZM)

HM�2(ZM )

HM�1(ZM )

...

Z�1

Z�(M�2)

Z�(M�1)

+

...

M:1

M:1

M:1

M:1

H0(Z)

H1(Z)

HM�2(Z)

HM�1(Z)

Z�1

...

Z�(M�1)

Z�(M�1)

Z�1

...

...

...

Z�1 H1

�Z2

H0

�Z2

Z�1 Z�1

Z�1

Z�(M/2�1)

Z�(M/2�1)

H0

�Z2

H1

�Z2

HM/2�1

�Z2

HM�1

�Z2

Z�(M/2�1)

Z�(M/2�1)

HM/2�1

�Z2

HM/2

�Z2

HM/2+1

�Z2

HM�1

�Z2

H0

�ZM

H1

�ZM

HM/2�1

�ZM

HM�1

�ZM

x(n)

y(n)

x(n)

y(n)

H0

�Z2

H1

�Z2

...

HM/2�1

�Z2

HM/2

�Z2

Z�1HM/2+1

�Z2

Z�1HM�1

�Z2

...

...

...

...

x(n)

y(n)

+

... y(n)x(n)

H0(Z)

H1(Z)

HM�1(Z)

HM�2(Z)

x(n)

y(n)

H(0)

H(M � 2)

H(M � 1)

...

H(0)

H(M � 2)

H(M � 1)

...

The new form of the M/2 Channelizer incorporates the sample rate conversiondirectly into the polyphase filter bank.Normal polyphase filter representation

H (Z) =M�1Pr=0

Z�rHr

�ZM

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

2X Filter Representation

H (Z) =M/2�1P

r=0Z�rHr

�ZM

�+ Z�(r+M/2)Hr+M/2(Z

M )

where

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

x(n)

x(n)y(nM, k)

x(n)

y(n)

Bottom Half

Z�2x(n) Z�2 Z�2

y(n)

Z�1x(n)

h(k) h(k + M) h(k + 2M) h(k + 3M)

+ + +

Z�2 Z�2 Z�2

y(n)

h�k + M

2

�h�k + 3M

2

�h�k + 5M

2

�h�k + 7M

2

GRCON 2017 Channelization using RFNoC 12 / 27

Page 20: Channelization using RFNoC - GNU Radio

Channelizer Background : M/2 Filter Transformation

Serpentine Shift

+ + +

Polyp

hase

Fi

lter

Circ

ular

Buf

fer

M-P

oint

IFFT

Inpu

t Dat

a Bu

ffer

Polyp

hase

Filte

r

Circ

ular

Buf

fer

M-P

oint

IFFT

Inpu

t Dat

a Bu

ffer

Aliased Regions Passband

Polyp

hase

Fi

lter

Circ

ular

Buf

fer

Out

put D

ata

Buffe

r

+

M-P

oint

FFT

H(z) = h(0) + h(M + 0)Z�M + h(2M + 0)Z�2M +h(1)Z�1 + h(M + 1)Z�(M+1) + h(2M + 1)Z�(2M+1) +h(2)Z�2 + h(M + 2)Z�(M+2) + h(2M + 2)Z�(2M+2) +h(3)Z�3 + h(M + 3)Z�(M+3) + h(2M + 3)Z�(2M+3) +

......

......

......

h(M � 1)Z�(M�1) + h(2M � 1)Z�(2M�1) + h(3M � 1)Z�(3M�1) +

· · ·· · ·· · ·· · ·

· · ·

H(Z) =

N�1XXX

n=0

h(n)Z�n

= h(0) + h(1)Z�1 + h(2)Z�2 + · · · + h(N � 1)Z�(N�1)

y(nM, k) =M�1Pr=0

yr(nM)ej 2⇡M rk

k, is the channel selector indexThis is the DFT for frequency index k. This summation could be done for any index.

y(nM, k) =M�1Pr=0

yr(nM)ej 2⇡M rk

k, is the channel selector index.Channelizer outputs samples from each frequency bin at a rate of fs/M

An M/2 channelizer outputs samples from each frequency bin at a rate of 2fs/M.To accomplish this the IFFT is run every M/2 input samples starting at port (M/2) - 1 andprogressing up the stack to Port 0. The M/2 addresses to which the new M/2 inputssamples are delivered are first vacated by their former contents. There is a serpentineshift through a bu↵er.The input bu↵er is then filtered by the polyphase filter bank on the new bu↵er contents.This data shifting into the polyphase filter stages causes a frequency - dependent phase shift✓ (!) = �t!✓ (!k) = nTk 1

M2⇡T = nk

M 2⇡✓ (!k)|n=M = nk

M 2⇡��n=M

= k2⇡

✓ (!k)|n=M/2 = nkM 2⇡

��n=M/2

= k⇡

From this we see that the odd indexed frequency terms experience a phase shift of ⇡ radians foreach successive M/2 shift of input data.Must compensate for this phase shift by applying the appropriate phase correction to the spectraldata. For an M/2 channelizer, the correction is a circular shift of the filter output data.

The new form of the M/2 Channelizer incorporates the sample rate conversiondirectly into the polyphase filter bank.Normal polyphase filter representation

H (Z) =M�1Pr=0

Z�rHr

�ZM

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

2X Filter Representation

H (Z) =M/2�1P

r=0Z�rHr

�ZM

�+ Z�(r+M/2)Hr+M/2(Z

M )

where

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

M-Point FFT

r(nM,0)

r(nM, M � 2)

r(nM, M � 1)

+

ej0k 2⇡M

ej(M�2)k 2⇡M

ej(M�1)k 2⇡M

y(nM, k)

n + 31

n

n � 1

n � 32

n � 33 n � 97 n + 63 n � 1 n � 65

n � 65 n + 31 n � 33 n � 97n � 129

n � 96 n � 180 n n � 64

n � 64

n � 128

n � 128 n + 32 n � 32 n � 96

yr

+M/2:1

+

M/2:1

M/2:1

M/2:1

M/2:1

+

M/2:1

M/2:1

M/2:1

M/2:1

M/2:1

M/2:1

+

x(n)y(n)

Top Half

M:1

Z�1

Z�(M�2)

Z�(M�1)

+

H0(ZM)

H1(ZM)

HM�2(ZM )

HM�1(ZM )

...

Z�1

Z�(M�2)

Z�(M�1)

+

...

M:1

M:1

M:1

M:1

H0(Z)

H1(Z)

HM�2(Z)

HM�1(Z)

Z�1

...

Z�(M�1)

Z�(M�1)

Z�1

...

...

...

Z�1 H1

�Z2

H0

�Z2

Z�1 Z�1

Z�1

Z�(M/2�1)

Z�(M/2�1)

H0

�Z2

H1

�Z2

HM/2�1

�Z2

HM�1

�Z2

Z�(M/2�1)

Z�(M/2�1)

HM/2�1

�Z2

HM/2

�Z2

HM/2+1

�Z2

HM�1

�Z2

H0

�ZM

H1

�ZM

HM/2�1

�ZM

HM�1

�ZM

x(n)

y(n)

x(n)

y(n)

H0

�Z2

H1

�Z2

...

HM/2�1

�Z2

HM/2

�Z2

Z�1HM/2+1

�Z2

Z�1HM�1

�Z2

...

...

...

...

x(n)

y(n)

+

... y(n)x(n)

H0(Z)

H1(Z)

HM�1(Z)

HM�2(Z)

x(n)

y(n)

H(0)

H(M � 2)

H(M � 1)

...

H(0)

H(M � 2)

H(M � 1)

...

The new form of the M/2 Channelizer incorporates the sample rate conversiondirectly into the polyphase filter bank.Normal polyphase filter representation

H (Z) =M�1Pr=0

Z�rHr

�ZM

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

2X Filter Representation

H (Z) =M/2�1P

r=0Z�rHr

�ZM

�+ Z�(r+M/2)Hr+M/2(Z

M )

where

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

x(n)

x(n)y(nM, k)

x(n)

y(n)

Bottom Half

Z�2x(n) Z�2 Z�2

y(n)

Z�1x(n)

h(k) h(k + M) h(k + 2M) h(k + 3M)

+ + +

Z�2 Z�2 Z�2

y(n)

h�k + M

2

�h�k + 3M

2

�h�k + 5M

2

�h�k + 7M

2

Serpentine Shift

+ + +

Polyp

hase

Fi

lter

Circ

ular

Buf

fer

M-P

oint

IFFT

Inpu

t Dat

a Bu

ffer

Polyp

hase

Filte

r

Circ

ular

Buf

fer

M-P

oint

IFFT

Inpu

t Dat

a Bu

ffer

Aliased Regions Passband

Polyp

hase

Fi

lter

Circ

ular

Buf

fer

Out

put D

ata

Buffe

r

+

M-P

oint

FFT

H(z) = h(0) + h(M + 0)Z�M + h(2M + 0)Z�2M +h(1)Z�1 + h(M + 1)Z�(M+1) + h(2M + 1)Z�(2M+1) +h(2)Z�2 + h(M + 2)Z�(M+2) + h(2M + 2)Z�(2M+2) +h(3)Z�3 + h(M + 3)Z�(M+3) + h(2M + 3)Z�(2M+3) +

......

......

......

h(M � 1)Z�(M�1) + h(2M � 1)Z�(2M�1) + h(3M � 1)Z�(3M�1) +

· · ·· · ·· · ·· · ·

· · ·

H(Z) =

N�1XXX

n=0

h(n)Z�n

= h(0) + h(1)Z�1 + h(2)Z�2 + · · · + h(N � 1)Z�(N�1)

y(nM, k) =M�1Pr=0

yr(nM)ej 2⇡M rk

k, is the channel selector indexThis is the DFT for frequency index k. This summation could be done for any index.

y(nM, k) =M�1Pr=0

yr(nM)ej 2⇡M rk

k, is the channel selector index.Channelizer outputs samples from each frequency bin at a rate of fs/M

An M/2 channelizer outputs samples from each frequency bin at a rate of 2fs/M.To accomplish this the IFFT is run every M/2 input samples starting at port (M/2) - 1 andprogressing up the stack to Port 0. The M/2 addresses to which the new M/2 inputssamples are delivered are first vacated by their former contents. There is a serpentineshift through a bu↵er.The input bu↵er is then filtered by the polyphase filter bank on the new bu↵er contents.This data shifting into the polyphase filter stages causes a frequency - dependent phase shift✓ (!) = �t!✓ (!k) = nTk 1

M2⇡T = nk

M 2⇡✓ (!k)|n=M = nk

M 2⇡��n=M

= k2⇡

✓ (!k)|n=M/2 = nkM 2⇡

��n=M/2

= k⇡

From this we see that the odd indexed frequency terms experience a phase shift of ⇡ radians foreach successive M/2 shift of input data.Must compensate for this phase shift by applying the appropriate phase correction to the spectraldata. For an M/2 channelizer, the correction is a circular shift of the filter output data.

The new form of the M/2 Channelizer incorporates the sample rate conversiondirectly into the polyphase filter bank.Normal polyphase filter representation

H (Z) =M�1Pr=0

Z�rHr

�ZM

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

2X Filter Representation

H (Z) =M/2�1P

r=0Z�rHr

�ZM

�+ Z�(r+M/2)Hr+M/2(Z

M )

where

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

M-Point FFT

r(nM,0)

r(nM, M � 2)

r(nM, M � 1)

+

ej0k 2⇡M

ej(M�2)k 2⇡M

ej(M�1)k 2⇡M

y(nM, k)

n + 31

n

n � 1

n � 32

n � 33 n � 97 n + 63 n � 1 n � 65

n � 65 n + 31 n � 33 n � 97n � 129

n � 96 n � 180 n n � 64

n � 64

n � 128

n � 128 n + 32 n � 32 n � 96

yr

+M/2:1

+

M/2:1

M/2:1

M/2:1

M/2:1

+

M/2:1

M/2:1

M/2:1

M/2:1

M/2:1

M/2:1

+

x(n)y(n)

Top Half

M:1

Z�1

Z�(M�2)

Z�(M�1)

+

H0(ZM)

H1(ZM)

HM�2(ZM )

HM�1(ZM )

...

Z�1

Z�(M�2)

Z�(M�1)

+

...

M:1

M:1

M:1

M:1

H0(Z)

H1(Z)

HM�2(Z)

HM�1(Z)

Z�1

...

Z�(M�1)

Z�(M�1)

Z�1

...

...

...

Z�1 H1

�Z2

H0

�Z2

Z�1 Z�1

Z�1

Z�(M/2�1)

Z�(M/2�1)

H0

�Z2

H1

�Z2

HM/2�1

�Z2

HM�1

�Z2

Z�(M/2�1)

Z�(M/2�1)

HM/2�1

�Z2

HM/2

�Z2

HM/2+1

�Z2

HM�1

�Z2

H0

�ZM

H1

�ZM

HM/2�1

�ZM

HM�1

�ZM

x(n)

y(n)

x(n)

y(n)

H0

�Z2

H1

�Z2

...

HM/2�1

�Z2

HM/2

�Z2

Z�1HM/2+1

�Z2

Z�1HM�1

�Z2

...

...

...

...

x(n)

y(n)

+

... y(n)x(n)

H0(Z)

H1(Z)

HM�1(Z)

HM�2(Z)

x(n)

y(n)

H(0)

H(M � 2)

H(M � 1)

...

H(0)

H(M � 2)

H(M � 1)

...

The new form of the M/2 Channelizer incorporates the sample rate conversiondirectly into the polyphase filter bank.Normal polyphase filter representation

H (Z) =M�1Pr=0

Z�rHr

�ZM

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

2X Filter Representation

H (Z) =M/2�1P

r=0Z�rHr

�ZM

�+ Z�(r+M/2)Hr+M/2(Z

M )

where

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

x(n)

x(n)y(nM, k)

x(n)

y(n)

Bottom Half

Z�2x(n) Z�2 Z�2

y(n)

Z�1x(n)

h(k) h(k + M) h(k + 2M) h(k + 3M)

+ + +

Z�2 Z�2 Z�2

y(n)

h�k + M

2

�h�k + 3M

2

�h�k + 5M

2

�h�k + 7M

2

Serpentine Shift

+ + +

Polyp

hase

Fi

lter

Circ

ular

Buf

fer

M-P

oint

IFFT

Inpu

t Dat

a Bu

ffer

Polyp

hase

Filte

r

Circ

ular

Buf

fer

M-P

oint

IFFT

Inpu

t Dat

a Bu

ffer

Aliased Regions Passband

Polyp

hase

Fi

lter

Circ

ular

Buf

fer

Out

put D

ata

Buffe

r

+

M-P

oint

FFT

H(z) = h(0) + h(M + 0)Z�M + h(2M + 0)Z�2M +h(1)Z�1 + h(M + 1)Z�(M+1) + h(2M + 1)Z�(2M+1) +h(2)Z�2 + h(M + 2)Z�(M+2) + h(2M + 2)Z�(2M+2) +h(3)Z�3 + h(M + 3)Z�(M+3) + h(2M + 3)Z�(2M+3) +

......

......

......

h(M � 1)Z�(M�1) + h(2M � 1)Z�(2M�1) + h(3M � 1)Z�(3M�1) +

· · ·· · ·· · ·· · ·

· · ·

H(Z) =

N�1XXX

n=0

h(n)Z�n

= h(0) + h(1)Z�1 + h(2)Z�2 + · · · + h(N � 1)Z�(N�1)

y(nM, k) =M�1Pr=0

yr(nM)ej 2⇡M rk

k, is the channel selector indexThis is the DFT for frequency index k. This summation could be done for any index.

y(nM, k) =M�1Pr=0

yr(nM)ej 2⇡M rk

k, is the channel selector index.Channelizer outputs samples from each frequency bin at a rate of fs/M

An M/2 channelizer outputs samples from each frequency bin at a rate of 2fs/M.To accomplish this the IFFT is run every M/2 input samples starting at port (M/2) - 1 andprogressing up the stack to Port 0. The M/2 addresses to which the new M/2 inputssamples are delivered are first vacated by their former contents. There is a serpentineshift through a bu↵er.The input bu↵er is then filtered by the polyphase filter bank on the new bu↵er contents.This data shifting into the polyphase filter stages causes a frequency - dependent phase shift✓ (!) = �t!✓ (!k) = nTk 1

M2⇡T = nk

M 2⇡✓ (!k)|n=M = nk

M 2⇡��n=M

= k2⇡

✓ (!k)|n=M/2 = nkM 2⇡

��n=M/2

= k⇡

From this we see that the odd indexed frequency terms experience a phase shift of ⇡ radians foreach successive M/2 shift of input data.Must compensate for this phase shift by applying the appropriate phase correction to the spectraldata. For an M/2 channelizer, the correction is a circular shift of the filter output data.

The new form of the M/2 Channelizer incorporates the sample rate conversiondirectly into the polyphase filter bank.Normal polyphase filter representation

H (Z) =M�1Pr=0

Z�rHr

�ZM

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

2X Filter Representation

H (Z) =M/2�1P

r=0Z�rHr

�ZM

�+ Z�(r+M/2)Hr+M/2(Z

M )

where

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

M-Point FFT

r(nM,0)

r(nM, M � 2)

r(nM, M � 1)

+

ej0k 2⇡M

ej(M�2)k 2⇡M

ej(M�1)k 2⇡M

y(nM, k)

n + 31

n

n � 1

n � 32

n � 33 n � 97 n + 63 n � 1 n � 65

n � 65 n + 31 n � 33 n � 97n � 129

n � 96 n � 180 n n � 64

n � 64

n � 128

n � 128 n + 32 n � 32 n � 96

yr

+M/2:1

+

M/2:1

M/2:1

M/2:1

M/2:1

+

M/2:1

M/2:1

M/2:1

M/2:1

M/2:1

M/2:1

+

x(n)y(n)

Top Half

M:1

Z�1

Z�(M�2)

Z�(M�1)

+

H0(ZM)

H1(ZM)

HM�2(ZM )

HM�1(ZM )

...

Z�1

Z�(M�2)

Z�(M�1)

+

...

M:1

M:1

M:1

M:1

H0(Z)

H1(Z)

HM�2(Z)

HM�1(Z)

Z�1

...

Z�(M�1)

Z�(M�1)

Z�1

...

...

...

Z�1 H1

�Z2

H0

�Z2

Z�1 Z�1

Z�1

Z�(M/2�1)

Z�(M/2�1)

H0

�Z2

H1

�Z2

HM/2�1

�Z2

HM�1

�Z2

Z�(M/2�1)

Z�(M/2�1)

HM/2�1

�Z2

HM/2

�Z2

HM/2+1

�Z2

HM�1

�Z2

H0

�ZM

H1

�ZM

HM/2�1

�ZM

HM�1

�ZM

x(n)

y(n)

x(n)

y(n)

H0

�Z2

H1

�Z2

...

HM/2�1

�Z2

HM/2

�Z2

Z�1HM/2+1

�Z2

Z�1HM�1

�Z2

...

...

...

...

x(n)

y(n)

+

... y(n)x(n)

H0(Z)

H1(Z)

HM�1(Z)

HM�2(Z)

x(n)

y(n)

H(0)

H(M � 2)

H(M � 1)

...

H(0)

H(M � 2)

H(M � 1)

...

The new form of the M/2 Channelizer incorporates the sample rate conversiondirectly into the polyphase filter bank.Normal polyphase filter representation

H (Z) =M�1Pr=0

Z�rHr

�ZM

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

2X Filter Representation

H (Z) =M/2�1P

r=0Z�rHr

�ZM

�+ Z�(r+M/2)Hr+M/2(Z

M )

where

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

x(n)

x(n)y(nM, k)

x(n)

y(n)

Bottom Half

Z�2x(n) Z�2 Z�2

y(n)

Z�1x(n)

h(k) h(k + M) h(k + 2M) h(k + 3M)

+ + +

Z�2 Z�2 Z�2

y(n)

h�k + M

2

�h�k + 3M

2

�h�k + 5M

2

�h�k + 7M

2

GRCON 2017 Channelization using RFNoC 12 / 27

Page 21: Channelization using RFNoC - GNU Radio

Channelizer Background : M/2 Filter Transformation

Serpentine Shift

+ + +

Polyp

hase

Fi

lter

Circ

ular

Buf

fer

M-P

oint

IFFT

Inpu

t Dat

a Bu

ffer

Polyp

hase

Filte

r

Circ

ular

Buf

fer

M-P

oint

IFFT

Inpu

t Dat

a Bu

ffer

Aliased Regions Passband

Polyp

hase

Fi

lter

Circ

ular

Buf

fer

Out

put D

ata

Buffe

r

+

M-P

oint

FFT

H(z) = h(0) + h(M + 0)Z�M + h(2M + 0)Z�2M +h(1)Z�1 + h(M + 1)Z�(M+1) + h(2M + 1)Z�(2M+1) +h(2)Z�2 + h(M + 2)Z�(M+2) + h(2M + 2)Z�(2M+2) +h(3)Z�3 + h(M + 3)Z�(M+3) + h(2M + 3)Z�(2M+3) +

......

......

......

h(M � 1)Z�(M�1) + h(2M � 1)Z�(2M�1) + h(3M � 1)Z�(3M�1) +

· · ·· · ·· · ·· · ·

· · ·

H(Z) =

N�1XXX

n=0

h(n)Z�n

= h(0) + h(1)Z�1 + h(2)Z�2 + · · · + h(N � 1)Z�(N�1)

y(nM, k) =M�1Pr=0

yr(nM)ej 2⇡M rk

k, is the channel selector indexThis is the DFT for frequency index k. This summation could be done for any index.

y(nM, k) =M�1Pr=0

yr(nM)ej 2⇡M rk

k, is the channel selector index.Channelizer outputs samples from each frequency bin at a rate of fs/M

An M/2 channelizer outputs samples from each frequency bin at a rate of 2fs/M.To accomplish this the IFFT is run every M/2 input samples starting at port (M/2) - 1 andprogressing up the stack to Port 0. The M/2 addresses to which the new M/2 inputssamples are delivered are first vacated by their former contents. There is a serpentineshift through a bu↵er.The input bu↵er is then filtered by the polyphase filter bank on the new bu↵er contents.This data shifting into the polyphase filter stages causes a frequency - dependent phase shift✓ (!) = �t!✓ (!k) = nTk 1

M2⇡T = nk

M 2⇡✓ (!k)|n=M = nk

M 2⇡��n=M

= k2⇡

✓ (!k)|n=M/2 = nkM 2⇡

��n=M/2

= k⇡

From this we see that the odd indexed frequency terms experience a phase shift of ⇡ radians foreach successive M/2 shift of input data.Must compensate for this phase shift by applying the appropriate phase correction to the spectraldata. For an M/2 channelizer, the correction is a circular shift of the filter output data.

The new form of the M/2 Channelizer incorporates the sample rate conversiondirectly into the polyphase filter bank.Normal polyphase filter representation

H (Z) =M�1Pr=0

Z�rHr

�ZM

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

2X Filter Representation

H (Z) =M/2�1P

r=0Z�rHr

�ZM

�+ Z�(r+M/2)Hr+M/2(Z

M )

where

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

M-Point FFT

r(nM,0)

r(nM, M � 2)

r(nM, M � 1)

+

ej0k 2⇡M

ej(M�2)k 2⇡M

ej(M�1)k 2⇡M

y(nM, k)

n + 31

n

n � 1

n � 32

n � 33 n � 97 n + 63 n � 1 n � 65

n � 65 n + 31 n � 33 n � 97n � 129

n � 96 n � 180 n n � 64

n � 64

n � 128

n � 128 n + 32 n � 32 n � 96

yr

+M/2:1

+

M/2:1

M/2:1

M/2:1

M/2:1

+

M/2:1

M/2:1

M/2:1

M/2:1

M/2:1

M/2:1

+

x(n)y(n)

Top Half

M:1

Z�1

Z�(M�2)

Z�(M�1)

+

H0(ZM)

H1(ZM)

HM�2(ZM )

HM�1(ZM )

...

Z�1

Z�(M�2)

Z�(M�1)

+

...

M:1

M:1

M:1

M:1

H0(Z)

H1(Z)

HM�2(Z)

HM�1(Z)

Z�1

...

Z�(M�1)

Z�(M�1)

Z�1

...

...

...

Z�1 H1

�Z2

H0

�Z2

Z�1 Z�1

Z�1

Z�(M/2�1)

Z�(M/2�1)

H0

�Z2

H1

�Z2

HM/2�1

�Z2

HM�1

�Z2

Z�(M/2�1)

Z�(M/2�1)

HM/2�1

�Z2

HM/2

�Z2

HM/2+1

�Z2

HM�1

�Z2

H0

�ZM

H1

�ZM

HM/2�1

�ZM

HM�1

�ZM

x(n)

y(n)

x(n)

y(n)

H0

�Z2

H1

�Z2

...

HM/2�1

�Z2

HM/2

�Z2

Z�1HM/2+1

�Z2

Z�1HM�1

�Z2

...

...

...

...

x(n)

y(n)

+

... y(n)x(n)

H0(Z)

H1(Z)

HM�1(Z)

HM�2(Z)

x(n)

y(n)

H(0)

H(M � 2)

H(M � 1)

...

H(0)

H(M � 2)

H(M � 1)

...

The new form of the M/2 Channelizer incorporates the sample rate conversiondirectly into the polyphase filter bank.Normal polyphase filter representation

H (Z) =M�1Pr=0

Z�rHr

�ZM

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

2X Filter Representation

H (Z) =M/2�1P

r=0Z�rHr

�ZM

�+ Z�(r+M/2)Hr+M/2(Z

M )

where

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

x(n)

x(n)y(nM, k)

x(n)

y(n)

Bottom Half

Z�2x(n) Z�2 Z�2

y(n)

Z�1x(n)

h(k) h(k + M) h(k + 2M) h(k + 3M)

+ + +

Z�2 Z�2 Z�2

y(n)

h�k + M

2

�h�k + 3M

2

�h�k + 5M

2

�h�k + 7M

2

Serpentine Shift

+ + +

Polyp

hase

Fi

lter

Circ

ular

Buf

fer

M-P

oint

IFFT

Inpu

t Dat

a Bu

ffer

Polyp

hase

Filte

r

Circ

ular

Buf

fer

M-P

oint

IFFT

Inpu

t Dat

a Bu

ffer

Aliased Regions Passband

Polyp

hase

Fi

lter

Circ

ular

Buf

fer

Out

put D

ata

Buffe

r

+

M-P

oint

FFT

H(z) = h(0) + h(M + 0)Z�M + h(2M + 0)Z�2M +h(1)Z�1 + h(M + 1)Z�(M+1) + h(2M + 1)Z�(2M+1) +h(2)Z�2 + h(M + 2)Z�(M+2) + h(2M + 2)Z�(2M+2) +h(3)Z�3 + h(M + 3)Z�(M+3) + h(2M + 3)Z�(2M+3) +

......

......

......

h(M � 1)Z�(M�1) + h(2M � 1)Z�(2M�1) + h(3M � 1)Z�(3M�1) +

· · ·· · ·· · ·· · ·

· · ·

H(Z) =

N�1XXX

n=0

h(n)Z�n

= h(0) + h(1)Z�1 + h(2)Z�2 + · · · + h(N � 1)Z�(N�1)

y(nM, k) =M�1Pr=0

yr(nM)ej 2⇡M rk

k, is the channel selector indexThis is the DFT for frequency index k. This summation could be done for any index.

y(nM, k) =M�1Pr=0

yr(nM)ej 2⇡M rk

k, is the channel selector index.Channelizer outputs samples from each frequency bin at a rate of fs/M

An M/2 channelizer outputs samples from each frequency bin at a rate of 2fs/M.To accomplish this the IFFT is run every M/2 input samples starting at port (M/2) - 1 andprogressing up the stack to Port 0. The M/2 addresses to which the new M/2 inputssamples are delivered are first vacated by their former contents. There is a serpentineshift through a bu↵er.The input bu↵er is then filtered by the polyphase filter bank on the new bu↵er contents.This data shifting into the polyphase filter stages causes a frequency - dependent phase shift✓ (!) = �t!✓ (!k) = nTk 1

M2⇡T = nk

M 2⇡✓ (!k)|n=M = nk

M 2⇡��n=M

= k2⇡

✓ (!k)|n=M/2 = nkM 2⇡

��n=M/2

= k⇡

From this we see that the odd indexed frequency terms experience a phase shift of ⇡ radians foreach successive M/2 shift of input data.Must compensate for this phase shift by applying the appropriate phase correction to the spectraldata. For an M/2 channelizer, the correction is a circular shift of the filter output data.

The new form of the M/2 Channelizer incorporates the sample rate conversiondirectly into the polyphase filter bank.Normal polyphase filter representation

H (Z) =M�1Pr=0

Z�rHr

�ZM

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

2X Filter Representation

H (Z) =M/2�1P

r=0Z�rHr

�ZM

�+ Z�(r+M/2)Hr+M/2(Z

M )

where

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

M-Point FFT

r(nM,0)

r(nM, M � 2)

r(nM, M � 1)

+

ej0k 2⇡M

ej(M�2)k 2⇡M

ej(M�1)k 2⇡M

y(nM, k)

n + 31

n

n � 1

n � 32

n � 33 n � 97 n + 63 n � 1 n � 65

n � 65 n + 31 n � 33 n � 97n � 129

n � 96 n � 180 n n � 64

n � 64

n � 128

n � 128 n + 32 n � 32 n � 96

yr

+M/2:1

+

M/2:1

M/2:1

M/2:1

M/2:1

+

M/2:1

M/2:1

M/2:1

M/2:1

M/2:1

M/2:1

+

x(n)y(n)

Top Half

M:1

Z�1

Z�(M�2)

Z�(M�1)

+

H0(ZM)

H1(ZM)

HM�2(ZM )

HM�1(ZM )

...

Z�1

Z�(M�2)

Z�(M�1)

+

...

M:1

M:1

M:1

M:1

H0(Z)

H1(Z)

HM�2(Z)

HM�1(Z)

Z�1

...

Z�(M�1)

Z�(M�1)

Z�1

...

...

...

Z�1 H1

�Z2

H0

�Z2

Z�1 Z�1

Z�1

Z�(M/2�1)

Z�(M/2�1)

H0

�Z2

H1

�Z2

HM/2�1

�Z2

HM�1

�Z2

Z�(M/2�1)

Z�(M/2�1)

HM/2�1

�Z2

HM/2

�Z2

HM/2+1

�Z2

HM�1

�Z2

H0

�ZM

H1

�ZM

HM/2�1

�ZM

HM�1

�ZM

x(n)

y(n)

x(n)

y(n)

H0

�Z2

H1

�Z2

...

HM/2�1

�Z2

HM/2

�Z2

Z�1HM/2+1

�Z2

Z�1HM�1

�Z2

...

...

...

...

x(n)

y(n)

+

... y(n)x(n)

H0(Z)

H1(Z)

HM�1(Z)

HM�2(Z)

x(n)

y(n)

H(0)

H(M � 2)

H(M � 1)

...

H(0)

H(M � 2)

H(M � 1)

...

The new form of the M/2 Channelizer incorporates the sample rate conversiondirectly into the polyphase filter bank.Normal polyphase filter representation

H (Z) =M�1Pr=0

Z�rHr

�ZM

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

2X Filter Representation

H (Z) =M/2�1P

r=0Z�rHr

�ZM

�+ Z�(r+M/2)Hr+M/2(Z

M )

where

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

x(n)

x(n)y(nM, k)

x(n)

y(n)

Bottom Half

Z�2x(n) Z�2 Z�2

y(n)

Z�1x(n)

h(k) h(k + M) h(k + 2M) h(k + 3M)

+ + +

Z�2 Z�2 Z�2

y(n)

h�k + M

2

�h�k + 3M

2

�h�k + 5M

2

�h�k + 7M

2

Serpentine Shift

+ + +

Polyp

hase

Fi

lter

Circ

ular

Buf

fer

M-P

oint

IFFT

Inpu

t Dat

a Bu

ffer

Polyp

hase

Filte

r

Circ

ular

Buf

fer

M-P

oint

IFFT

Inpu

t Dat

a Bu

ffer

Aliased Regions Passband

Polyp

hase

Fi

lter

Circ

ular

Buf

fer

Out

put D

ata

Buffe

r

+

M-P

oint

FFT

H(z) = h(0) + h(M + 0)Z�M + h(2M + 0)Z�2M +h(1)Z�1 + h(M + 1)Z�(M+1) + h(2M + 1)Z�(2M+1) +h(2)Z�2 + h(M + 2)Z�(M+2) + h(2M + 2)Z�(2M+2) +h(3)Z�3 + h(M + 3)Z�(M+3) + h(2M + 3)Z�(2M+3) +

......

......

......

h(M � 1)Z�(M�1) + h(2M � 1)Z�(2M�1) + h(3M � 1)Z�(3M�1) +

· · ·· · ·· · ·· · ·

· · ·

H(Z) =

N�1XXX

n=0

h(n)Z�n

= h(0) + h(1)Z�1 + h(2)Z�2 + · · · + h(N � 1)Z�(N�1)

y(nM, k) =M�1Pr=0

yr(nM)ej 2⇡M rk

k, is the channel selector indexThis is the DFT for frequency index k. This summation could be done for any index.

y(nM, k) =M�1Pr=0

yr(nM)ej 2⇡M rk

k, is the channel selector index.Channelizer outputs samples from each frequency bin at a rate of fs/M

An M/2 channelizer outputs samples from each frequency bin at a rate of 2fs/M.To accomplish this the IFFT is run every M/2 input samples starting at port (M/2) - 1 andprogressing up the stack to Port 0. The M/2 addresses to which the new M/2 inputssamples are delivered are first vacated by their former contents. There is a serpentineshift through a bu↵er.The input bu↵er is then filtered by the polyphase filter bank on the new bu↵er contents.This data shifting into the polyphase filter stages causes a frequency - dependent phase shift✓ (!) = �t!✓ (!k) = nTk 1

M2⇡T = nk

M 2⇡✓ (!k)|n=M = nk

M 2⇡��n=M

= k2⇡

✓ (!k)|n=M/2 = nkM 2⇡

��n=M/2

= k⇡

From this we see that the odd indexed frequency terms experience a phase shift of ⇡ radians foreach successive M/2 shift of input data.Must compensate for this phase shift by applying the appropriate phase correction to the spectraldata. For an M/2 channelizer, the correction is a circular shift of the filter output data.

The new form of the M/2 Channelizer incorporates the sample rate conversiondirectly into the polyphase filter bank.Normal polyphase filter representation

H (Z) =M�1Pr=0

Z�rHr

�ZM

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

2X Filter Representation

H (Z) =M/2�1P

r=0Z�rHr

�ZM

�+ Z�(r+M/2)Hr+M/2(Z

M )

where

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

M-Point FFT

r(nM,0)

r(nM, M � 2)

r(nM, M � 1)

+

ej0k 2⇡M

ej(M�2)k 2⇡M

ej(M�1)k 2⇡M

y(nM, k)

n + 31

n

n � 1

n � 32

n � 33 n � 97 n + 63 n � 1 n � 65

n � 65 n + 31 n � 33 n � 97n � 129

n � 96 n � 180 n n � 64

n � 64

n � 128

n � 128 n + 32 n � 32 n � 96

yr

+M/2:1

+

M/2:1

M/2:1

M/2:1

M/2:1

+

M/2:1

M/2:1

M/2:1

M/2:1

M/2:1

M/2:1

+

x(n)y(n)

Top Half

M:1

Z�1

Z�(M�2)

Z�(M�1)

+

H0(ZM)

H1(ZM)

HM�2(ZM )

HM�1(ZM )

...

Z�1

Z�(M�2)

Z�(M�1)

+

...

M:1

M:1

M:1

M:1

H0(Z)

H1(Z)

HM�2(Z)

HM�1(Z)

Z�1

...

Z�(M�1)

Z�(M�1)

Z�1

...

...

...

Z�1 H1

�Z2

H0

�Z2

Z�1 Z�1

Z�1

Z�(M/2�1)

Z�(M/2�1)

H0

�Z2

H1

�Z2

HM/2�1

�Z2

HM�1

�Z2

Z�(M/2�1)

Z�(M/2�1)

HM/2�1

�Z2

HM/2

�Z2

HM/2+1

�Z2

HM�1

�Z2

H0

�ZM

H1

�ZM

HM/2�1

�ZM

HM�1

�ZM

x(n)

y(n)

x(n)

y(n)

H0

�Z2

H1

�Z2

...

HM/2�1

�Z2

HM/2

�Z2

Z�1HM/2+1

�Z2

Z�1HM�1

�Z2

...

...

...

...

x(n)

y(n)

+

... y(n)x(n)

H0(Z)

H1(Z)

HM�1(Z)

HM�2(Z)

x(n)

y(n)

H(0)

H(M � 2)

H(M � 1)

...

H(0)

H(M � 2)

H(M � 1)

...

The new form of the M/2 Channelizer incorporates the sample rate conversiondirectly into the polyphase filter bank.Normal polyphase filter representation

H (Z) =M�1Pr=0

Z�rHr

�ZM

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

2X Filter Representation

H (Z) =M/2�1P

r=0Z�rHr

�ZM

�+ Z�(r+M/2)Hr+M/2(Z

M )

where

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

x(n)

x(n)y(nM, k)

x(n)

y(n)

Bottom Half

Z�2x(n) Z�2 Z�2

y(n)

Z�1x(n)

h(k) h(k + M) h(k + 2M) h(k + 3M)

+ + +

Z�2 Z�2 Z�2

y(n)

h�k + M

2

�h�k + 3M

2

�h�k + 5M

2

�h�k + 7M

2

GRCON 2017 Channelization using RFNoC 12 / 27

Page 22: Channelization using RFNoC - GNU Radio

Channelizer Background : M/2 Filter Transformation

Serpentine Shift

+ + +

Polyp

hase

Fi

lter

Circ

ular

Buf

fer

M-P

oint

IFFT

Inpu

t Dat

a Bu

ffer

Polyp

hase

Filte

r

Circ

ular

Buf

fer

M-P

oint

IFFT

Inpu

t Dat

a Bu

ffer

Aliased Regions Passband

Polyp

hase

Fi

lter

Circ

ular

Buf

fer

Out

put D

ata

Buffe

r

+

M-P

oint

FFT

H(z) = h(0) + h(M + 0)Z�M + h(2M + 0)Z�2M +h(1)Z�1 + h(M + 1)Z�(M+1) + h(2M + 1)Z�(2M+1) +h(2)Z�2 + h(M + 2)Z�(M+2) + h(2M + 2)Z�(2M+2) +h(3)Z�3 + h(M + 3)Z�(M+3) + h(2M + 3)Z�(2M+3) +

......

......

......

h(M � 1)Z�(M�1) + h(2M � 1)Z�(2M�1) + h(3M � 1)Z�(3M�1) +

· · ·· · ·· · ·· · ·

· · ·

H(Z) =

N�1XXX

n=0

h(n)Z�n

= h(0) + h(1)Z�1 + h(2)Z�2 + · · · + h(N � 1)Z�(N�1)

y(nM, k) =M�1Pr=0

yr(nM)ej 2⇡M rk

k, is the channel selector indexThis is the DFT for frequency index k. This summation could be done for any index.

y(nM, k) =M�1Pr=0

yr(nM)ej 2⇡M rk

k, is the channel selector index.Channelizer outputs samples from each frequency bin at a rate of fs/M

An M/2 channelizer outputs samples from each frequency bin at a rate of 2fs/M.To accomplish this the IFFT is run every M/2 input samples starting at port (M/2) - 1 andprogressing up the stack to Port 0. The M/2 addresses to which the new M/2 inputssamples are delivered are first vacated by their former contents. There is a serpentineshift through a bu↵er.The input bu↵er is then filtered by the polyphase filter bank on the new bu↵er contents.This data shifting into the polyphase filter stages causes a frequency - dependent phase shift✓ (!) = �t!✓ (!k) = nTk 1

M2⇡T = nk

M 2⇡✓ (!k)|n=M = nk

M 2⇡��n=M

= k2⇡

✓ (!k)|n=M/2 = nkM 2⇡

��n=M/2

= k⇡

From this we see that the odd indexed frequency terms experience a phase shift of ⇡ radians foreach successive M/2 shift of input data.Must compensate for this phase shift by applying the appropriate phase correction to the spectraldata. For an M/2 channelizer, the correction is a circular shift of the filter output data.

The new form of the M/2 Channelizer incorporates the sample rate conversiondirectly into the polyphase filter bank.Normal polyphase filter representation

H (Z) =M�1Pr=0

Z�rHr

�ZM

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

2X Filter Representation

H (Z) =M/2�1P

r=0Z�rHr

�ZM

�+ Z�(r+M/2)Hr+M/2(Z

M )

where

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

M-Point FFT

r(nM,0)

r(nM, M � 2)

r(nM, M � 1)

+

ej0k 2⇡M

ej(M�2)k 2⇡M

ej(M�1)k 2⇡M

y(nM, k)

n + 31

n

n � 1

n � 32

n � 33 n � 97 n + 63 n � 1 n � 65

n � 65 n + 31 n � 33 n � 97n � 129

n � 96 n � 180 n n � 64

n � 64

n � 128

n � 128 n + 32 n � 32 n � 96

yr

+M/2:1

+

M/2:1

M/2:1

M/2:1

M/2:1

+

M/2:1

M/2:1

M/2:1

M/2:1

M/2:1

M/2:1

+

x(n)y(n)

Top Half

M:1

Z�1

Z�(M�2)

Z�(M�1)

+

H0(ZM)

H1(ZM)

HM�2(ZM )

HM�1(ZM )

...

Z�1

Z�(M�2)

Z�(M�1)

+

...

M:1

M:1

M:1

M:1

H0(Z)

H1(Z)

HM�2(Z)

HM�1(Z)

Z�1

...

Z�(M�1)

Z�(M�1)

Z�1

...

...

...

Z�1 H1

�Z2

H0

�Z2

Z�1 Z�1

Z�1

Z�(M/2�1)

Z�(M/2�1)

H0

�Z2

H1

�Z2

HM/2�1

�Z2

HM�1

�Z2

Z�(M/2�1)

Z�(M/2�1)

HM/2�1

�Z2

HM/2

�Z2

HM/2+1

�Z2

HM�1

�Z2

H0

�ZM

H1

�ZM

HM/2�1

�ZM

HM�1

�ZM

x(n)

y(n)

x(n)

y(n)

H0

�Z2

H1

�Z2

...

HM/2�1

�Z2

HM/2

�Z2

Z�1HM/2+1

�Z2

Z�1HM�1

�Z2

...

...

...

...

x(n)

y(n)

+

... y(n)x(n)

H0(Z)

H1(Z)

HM�1(Z)

HM�2(Z)

x(n)

y(n)

H(0)

H(M � 2)

H(M � 1)

...

H(0)

H(M � 2)

H(M � 1)

...

The new form of the M/2 Channelizer incorporates the sample rate conversiondirectly into the polyphase filter bank.Normal polyphase filter representation

H (Z) =M�1Pr=0

Z�rHr

�ZM

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

2X Filter Representation

H (Z) =M/2�1P

r=0Z�rHr

�ZM

�+ Z�(r+M/2)Hr+M/2(Z

M )

where

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

x(n)

x(n)y(nM, k)

x(n)

y(n)

Bottom Half

Z�2x(n) Z�2 Z�2

y(n)

Z�1x(n)

h(k) h(k + M) h(k + 2M) h(k + 3M)

+ + +

Z�2 Z�2 Z�2

y(n)

h�k + M

2

�h�k + 3M

2

�h�k + 5M

2

�h�k + 7M

2

H0

�Z2

H1

�Z2

HM/2�1

�Z2

HM/2

�Z2

Z�1HM/2+1

�Z2

Z�1HM�1

�Z2

...

...

...

Inpu

t Dat

a Bu

ffer

x(n)To IFFT

H (Z) =

M/2−1∑∑∑

r=0

Z−rHr(ZM)+ Z−(r+M/2)Hr+M/2(ZM)

where

Hr(ZM) =

(N/M)−1∑∑∑

n=0

h (r + nM)Z−nM

• Delay in Polyphase filter bank

effectively implements a circular

shift of M/2

• This shifting of origin will need

to be compensated before PFB

outputs are sent to IFFT.

GRCON 2017 Channelization using RFNoC 13 / 27

Page 23: Channelization using RFNoC - GNU Radio

Channelizer Background : Origin Compensation

M-Point FFT

OutputBuffer

Polyphase Data Buffers

Cyclically Shifted Buffer

r(nM,0)

r(nM, M � 2)

r(nM, M � 1)

H(0)

...

H(M � 1)

H(M � 2)

n+8n+7n+6n+5n+4n+3n+2n+1

nn-1n-2n-3n-4n-5n-6n-7

n-8n-9

n-10n-11n-12n-13n-14n-15

n-16n-17n-18n-19n-20n-21n-22n-23

M-Point FFT

r(nM,0)

r(nM, M � 2)

r(nM, M � 1)

n+4n+3n+2n+1

nn-1n-2n-3

n-4n-5n-6n-7n-8n-9

n-10n-11

n-12n-13n-14n-15n-16n-17n-18n-19

n-20n-21n-22n-23n-24n-25n-26n-27

H(0)

...

H(M � 1)

H(M � 2)

GRCON 2017 Channelization using RFNoC 14 / 27

Page 24: Channelization using RFNoC - GNU Radio

Channelizer Background : Origin CompensationM-Point FFT

OutputBuffer

Polyphase Data Buffers

Cyclically Shifted Buffer

r(nM,0)

r(nM, M � 2)

r(nM, M � 1)

H(0)

...

H(M � 1)

H(M � 2)

n+8n+7n+6n+5n+4n+3n+2n+1

nn-1n-2n-3n-4n-5n-6n-7

n-8n-9

n-10n-11n-12n-13n-14n-15

n-16n-17n-18n-19n-20n-21n-22n-23

M-Point FFT

r(nM,0)

r(nM, M � 2)

r(nM, M � 1)

n+4n+3n+2n+1

nn-1n-2n-3

n-4n-5n-6n-7n-8n-9

n-10n-11

n-12n-13n-14n-15n-16n-17n-18n-19

n-20n-21n-22n-23n-24n-25n-26n-27

H(0)

...

H(M � 1)

H(M � 2)

• Need to implement Circular Shift

GRCON 2017 Channelization using RFNoC 15 / 27

Page 25: Channelization using RFNoC - GNU Radio

Channelizer Background : System Diagram

Serpentine Shift

+ + +

Polyp

hase

Fi

lter

Circ

ular

Buf

fer

M-P

oint

IFFT

Inpu

t Dat

a Bu

ffer

Polyp

hase

Filte

r

Circ

ular

Buf

fer

M-P

oint

IFFT

Inpu

t Dat

a Bu

ffer

Aliased Regions Passband

Polyp

hase

Fi

lter

Circ

ular

Buf

fer

Out

put D

ata

Buffe

r

+

M-P

oint

FFT

H(z) = h(0) + h(M + 0)Z�M + h(2M + 0)Z�2M +h(1)Z�1 + h(M + 1)Z�(M+1) + h(2M + 1)Z�(2M+1) +h(2)Z�2 + h(M + 2)Z�(M+2) + h(2M + 2)Z�(2M+2) +h(3)Z�3 + h(M + 3)Z�(M+3) + h(2M + 3)Z�(2M+3) +

......

......

......

h(M � 1)Z�(M�1) + h(2M � 1)Z�(2M�1) + h(3M � 1)Z�(3M�1) +

· · ·· · ·· · ·· · ·

· · ·

H(Z) =

N�1XXX

n=0

h(n)Z�n

= h(0) + h(1)Z�1 + h(2)Z�2 + · · · + h(N � 1)Z�(N�1)

y(nM, k) =M�1Pr=0

yr(nM)ej 2⇡M rk

k, is the channel selector indexThis is the DFT for frequency index k. This summation could be done for any index.

y(nM, k) =M�1Pr=0

yr(nM)ej 2⇡M rk

k, is the channel selector index.Channelizer outputs samples from each frequency bin at a rate of fs/M

An M/2 channelizer outputs samples from each frequency bin at a rate of 2fs/M.To accomplish this the IFFT is run every M/2 input samples starting at port (M/2) - 1 andprogressing up the stack to Port 0. The M/2 addresses to which the new M/2 inputssamples are delivered are first vacated by their former contents. There is a serpentineshift through a bu↵er.The input bu↵er is then filtered by the polyphase filter bank on the new bu↵er contents.This data shifting into the polyphase filter stages causes a frequency - dependent phase shift✓ (!) = �t!✓ (!k) = nTk 1

M2⇡T = nk

M 2⇡✓ (!k)|n=M = nk

M 2⇡��n=M

= k2⇡

✓ (!k)|n=M/2 = nkM 2⇡

��n=M/2

= k⇡

From this we see that the odd indexed frequency terms experience a phase shift of ⇡ radians foreach successive M/2 shift of input data.Must compensate for this phase shift by applying the appropriate phase correction to the spectraldata. For an M/2 channelizer, the correction is a circular shift of the filter output data.

The new form of the M/2 Channelizer incorporates the sample rate conversiondirectly into the polyphase filter bank.Normal polyphase filter representation

H (Z) =M�1Pr=0

Z�rHr

�ZM

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

2X Filter Representation

H (Z) =M/2�1P

r=0Z�rHr

�ZM

�+ Z�(r+M/2)Hr+M/2(Z

M )

where

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

M-Point FFT

r(nM,0)

r(nM, M � 2)

r(nM, M � 1)

+

ej0k 2⇡M

ej(M�2)k 2⇡M

ej(M�1)k 2⇡M

y(nM, k)

n + 31

n

n � 1

n � 32

n � 33 n � 97 n + 63 n � 1 n � 65

n � 65 n + 31 n � 33 n � 97n � 129

n � 96 n � 180 n n � 64

n � 64

n � 128

n � 128 n + 32 n � 32 n � 96

yr

+M/2:1

+

M/2:1

M/2:1

M/2:1

M/2:1

+

M/2:1

M/2:1

M/2:1

M/2:1

M/2:1

M/2:1

+

x(n)y(n)

Top Half

M:1

Z�1

Z�(M�2)

Z�(M�1)

+

H0(ZM)

H1(ZM)

HM�2(ZM )

HM�1(ZM )

...

Z�1

Z�(M�2)

Z�(M�1)

+

...

M:1

M:1

M:1

M:1

H0(Z)

H1(Z)

HM�2(Z)

HM�1(Z)

Z�1

...

Z�(M�1)

Z�(M�1)

Z�1

...

...

...

Z�1 H1

�Z2

H0

�Z2

Z�1 Z�1

Z�1

Z�(M/2�1)

Z�(M/2�1)

H0

�Z2

H1

�Z2

HM/2�1

�Z2

HM�1

�Z2

Z�(M/2�1)

Z�(M/2�1)

HM/2�1

�Z2

HM/2

�Z2

HM/2+1

�Z2

HM�1

�Z2

H0

�ZM

H1

�ZM

HM/2�1

�ZM

HM�1

�ZM

x(n)

y(n)

x(n)

y(n)

H0

�Z2

H1

�Z2

...

HM/2�1

�Z2

HM/2

�Z2

Z�1HM/2+1

�Z2

Z�1HM�1

�Z2

...

...

...

...

x(n)

y(n)

+

... y(n)x(n)

H0(Z)

H1(Z)

HM�1(Z)

HM�2(Z)

x(n)

y(n)

H(0)

H(M � 2)

H(M � 1)

...

H(0)

H(M � 2)

H(M � 1)

...

The new form of the M/2 Channelizer incorporates the sample rate conversiondirectly into the polyphase filter bank.Normal polyphase filter representation

H (Z) =M�1Pr=0

Z�rHr

�ZM

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

2X Filter Representation

H (Z) =M/2�1P

r=0Z�rHr

�ZM

�+ Z�(r+M/2)Hr+M/2(Z

M )

where

Hr

�ZM

�=

(N/M)�1Pn=0

h (r + nM)Z�nM

x(n)

x(n)y(nM, k)

x(n)

y(n)

Bottom Half

Z�2x(n) Z�2 Z�2

y(n)

Z�1x(n)

h(k) h(k + M) h(k + 2M) h(k + 3M)

+ + +

Z�2 Z�2 Z�2

y(n)

h�k + M

2

�h�k + 3M

2

�h�k + 5M

2

�h�k + 7M

2

GRCON 2017 Channelization using RFNoC 16 / 27

Page 26: Channelization using RFNoC - GNU Radio

Hardware Implementation

Page 27: Channelization using RFNoC - GNU Radio

Hardware Implementation : Input BufferInpu

t Dat

a Bu

ffer

Dual PortRAMZ�3

Dual PortRAMZ�3

x(n) y(n)Count ItemsZ�3

Read LogicZ�1

AXI Throttle LogicZ�1tready

Z�1 Z�1

• Utilizes AXI flow to conform to the RFNoC interface.

• Provides a ping-pong buffer interface for continuous streaming.

• Each dual-port RAM is read twice. (Produces the time domain

sequence required by the PFB)

GRCON 2017 Channelization using RFNoC 17 / 27

Page 28: Channelization using RFNoC - GNU Radio

Hardware Implementation : Polyphase Filter Bank

+ + +

Top Half

Bottom Half

Z�2x(n) Z�2 Z�2

y(n)

Z�1x(n)

h(k) h(k + M) h(k + 2M) h(k + 3M)

+ + +

Z�2 Z�2 Z�2

y(n)

h�k + M

2

�h�k + 3M

2

�h�k + 5M

2

�h�k + 7M

2

H0

�Z2

Z�1HM/2+1

�Z2

GRCON 2017 Channelization using RFNoC 18 / 27

Page 29: Channelization using RFNoC - GNU Radio

Hardware Implementation : DSP48

P6

M5

A4

A3

B4

B3Z�1Z�1

Z�1 Z�1

Z�1

Z�1

A B

PCOUT

• Take advantage of Systolic Architecture of PFB.

• Fully pipeline DSP internals to maximize FMax.

• Utilize dedicated routing for optimal placement.

GRCON 2017 Channelization using RFNoC 19 / 27

Page 30: Channelization using RFNoC - GNU Radio

Hardware Implementation : PFB Final Implementation

+P6P6

M5 M5

A4A4

A3 A3

B4

B3

B4

B3

y(n)

x(n)

Z�1

Z�3

Z�3

Z�1

Z�1 Z�1

Z�1Z�1

Z�1 Z�1

Z�1

Z�1

Z�1 Z�1

Z�1 Z�1

Z�1

Z�1

Dual Port

RAM Z�3

Dual Port

RAM Z�3

Dual Port

RAM Z�3

Dual Port

RAM Z�3

Dual Port

RAM Z�3

h0,0

h255,1

h254,1

x253(n � 1)h253,1

x0(n)

x254(n � 1)

x255(n � 1)

h255,3

h254,3

h253,3

x255(n � 3)

x254(n � 3)

x253(n � 3)

x252(n � 3)h252,3

x252(n � 1)h252,1

x251(n � 1)h251,1

+x251(n � 3)h251,3

Coef ROMs

Delay Line

Phase

• Utilizes built in routing of Xilinx architecture

• Samples can be streamed continuously.

• Achieves high FMax value > 500 MHz.

GRCON 2017 Channelization using RFNoC 20 / 27

Page 31: Channelization using RFNoC - GNU Radio

Hardware Implementation : Circular BufferC

ircul

ar B

uffe

r

Z�1 Z�1 y(n)

Dual PortRAMZ�3

Dual PortRAMZ�3

O↵set LogicCounter

Z�3

+Z�2

Muxing only the write enables

x(n)

phase

Z�5

Z�2

Z�1

Z�1

• Utilizes ping-pong buffering to allow streaming.

• Offset counter logic offsets the read pointer by M/2 samples every

other block of M samples.

GRCON 2017 Channelization using RFNoC 21 / 27

Page 32: Channelization using RFNoC - GNU Radio

Hardware Implementation : Exp Shifter

EXP

Shift

er

Corr ROMZ�3

�Z�1

�Z�1

x(n)

Ref

Z�3

Z�1

ShifterZ�1

⇥Z�3

Z�1

AXI FIFOZ�3 y(n)

Box Car64 Tapsshift value

• Using block floating point IFFT (common exponent for block of

samples).

• Averages the exponent of 64 consecutive IFFT frames.

• Current block is shifted by the integer difference between the current

exponent and the moving average.

• Enforces headroom in output to allow for loud, bursty transmissions.

GRCON 2017 Channelization using RFNoC 22 / 27

Page 33: Channelization using RFNoC - GNU Radio

Filter Generation

Page 34: Channelization using RFNoC - GNU Radio

Filter Generation

• Based on the work of Wessel Lubberhuizen found in

[Lubberhuizen(2010)].

• Using root raised erf functions to perform filter coefficient

calculation.

• Stable even for very narrow filter bandwidths.

• Simple Calculation.

• Not as flexible as Remez.

• Provides flat passband and low stopband with linear phase.

GRCON 2017 Channelization using RFNoC 23 / 27

Page 35: Channelization using RFNoC - GNU Radio

GNURadio Software Component

/ Results

Page 36: Channelization using RFNoC - GNU Radio

GNURadio Software Component / Results

• This setup is using a 256 channel channelizer.

• Four sub-bands specified in the mask vector argument to poly channelizer block.

• The tap update python block configures the taps at start-up and when number

of channels is adjusted.

• chanmux is the block controller for the RFNoC block.

• The tap update is being converted to C++ and integrated in chanmux.

GRCON 2017 Channelization using RFNoC 24 / 27

Page 37: Channelization using RFNoC - GNU Radio

GNURadio Software Component / Results

GRCON 2017 Channelization using RFNoC 25 / 27

Page 38: Channelization using RFNoC - GNU Radio

Future Work

Page 39: Channelization using RFNoC - GNU Radio

Future Work

• Word sizes larger than 16 bit I/Q samples, current head space is

diminishing DR.

• Narrow-band signals would also benefit.

• Second task is to convert the python code found in the tap update

module in to C++.

GRCON 2017 Channelization using RFNoC 26 / 27

Page 40: Channelization using RFNoC - GNU Radio

Questions?

GRCON 2017 Channelization using RFNoC 27 / 27

Page 41: Channelization using RFNoC - GNU Radio

References i

Harris F., McGwier R., Egg B.

A versatile multichannel filter bank with multiple channel

bandwidths.

In CrownCom 5th International Conference on Cognitive Radio

Oriented Wireless Networks and Communications, pp. 1–5, Cannes,

France, 2010.

Lubberhuizen, Wessel.

Near perfect reconstruction polyphase filterbank.

http://www.mathworks.com/matlabcentral/fileexchange/

15813-near-perfect-reconstruction-polyphase-filterbank,

2010.