Chapter 20
Polyphase FIR Filter
Implementation
for Communication Systems
Copyrigh
Multirate Processing 1 of 2
ESIEE, Slide 2
Copyrigh
Multirate Processing 2 of 2
Fe
Fe/M
Fe
ESIEE, Slide 3
LFe
Copyrigh
Downsampling 1 of 2
x(n)
y(m)
n mM ,
x( n) if
y( m )
else.
0
1
1
y( m ) x ( mM ) x ( n) ( n mM )
x( n)
M
M
m
ESIEE, Slide 4
M 1
x( n)e
j 2
k
n
M
k 1
Folding term
Copyrigh
Downsampling 2 of 2
Anti-aliasing Filter
fc : (Fe/M)/2
x(n)
H(z)
Fe
H(zM)
ESIEE, Slide 5
y(m)
M
Fe/M
H(z)
Copyrigh
Upsampling 1 of 2
x(m)
y(n)
Y (z)
y( n) z
n
ESIEE, Slide 6
n mL ,
x ( m ) if
y( n)
else.
0
x( m ) z
L m
X zL
Copyrigh
Upsampling 2 of 2
Interpolating Filter
fC : (Fe/L)/2
x(m)
L
Fe
ESIEE, Slide 7
y(n)
LFe
H(z)
H(z)
L
Copyrigh
E(zM)
H z
mM 1
n
h
(
n
)
z
n0
Let n=lM+k
H z
ESIEE, Slide 8
M 1
z Ek z
k 0
with
Ek z
N / M 1
h
lM
k
z
l 0
Copyrigh
E0(zM)
z-1
E1(zM)
MTe
z-1
Time
EM-1(zM)
Fe
ESIEE, Slide 9
are discarded.
N filter length
Fe/M
Copyrigh
E0(z)
z-1
E1(z)
EM-1(z)
z-1
Fe
MTe
Time
Fe/M
Copyrigh
E1(z)
N/M
EM-1(z)
Fe
MTe
Time
Fe/M
Commutator runs at Fe,. At each input sample only one component is computed and accumulated with the result of the previous one. The result is output when the last component
is reached and accumulator is reset. This spreads the processing load over MTe.
ESIEE, Slide 11
Copyrigh
H(z)
R(zL)
lL 1
H z h( n) z n
n0
Let n=mL+L-1-k
L 1
H z z
k 0
ESIEE, Slide 12
( L 1 k )
Rk z
with
Rk z
N / L 1
h
mL
k
z
m 0
Copyrigh
H(z)
R0(zL)
z-1
R1(zL)
Te/L
z-1
RM-1(zL)
Fe
ESIEE, Slide 13
Time
LFe
Copyrigh
R0(z)
R1(z)
-1
L
z-1
RM-1(z)
Fe
ESIEE, Slide 14
L
LFe
Copyrigh
R0(z)
R1(z)
N/L
RM-1(z)
Te/L
Fe
Time
LFe
Copyrigh
z-1
hL-1 h2L-1
h1
h0
ESIEE, Slide 16
z-1
h3L-1
z-1
z-1
z-1
z-1
hL+1
h2L+1
h0
h1
hL
hL+1
h2L
h2L+1
z-1
z-1
hL-1
h2L-1
h3L-1
hL
h2L
Copyrigh
Case Study
ESIEE, Slide 17
Copyrigh
Emitter 1 of 4
s(t)=1/2[cos(2fot).cos((Ak,Bk))-sin(2fot).sin((Ak,Bk))]
s(t)=1/2[cos(2fot).cos((Ak,Bk))-sin(2fot).sin((Ak,Bk))]
QPSK modulator
Ak
bits
Bk
Fb
: Phase
Cos()
RCF
DAC
Sin()
RCF
DAC
computation
Fs
Fe
Bit
Symbol
Sample
frequency
frequency
frequency
ESIEE, Slide 18
Copyrigh
Emitter 2 of 4
6 symbols length.
Roll_off : 0.5
Matlab command
h=RCOSFIR(0.5,3,16,1);
Equivalent system
16
H(z)
Copyrigh
Emitter 3 of 4
Rk z
N / L 1
h
mL
k
z
m 0
r0 m h 15 , h 31 , h 47 , h 63 , h 79 , h 95 , h 111
r1 m h 14 , h 30 , h 46 , h 62 , h 78 , h 94 , h 110
r15 m h 0 , h 16 , h 32 , h 48 , h 64 , h 80 , h 96
ESIEE, Slide 20
Copyrigh
Coefficients
1 sample
2nd sample
st
h(0)
h(16)
h(32)
h(48)
h(64)
h(80)
h(96)
h(1)
h(17)
h(33)
h(49)
h(65)
h(81)
h(97)
15th sample
Emitter 4 of 4
Symbols
x(0)
x(1)
x(2)
x(3)
x(4)
x(5)
x(6)
Shuffle coefficients
R=flipud(reshape(h,8,12));
R=round(R*2^15);
fid=fopen('coef.inc','wt');
for p=1:8
fprintf(fid,'\t.word\t%d\n,R(p,:))
end
h(15)
h(31)
h(47)
h(63)
h(79)
h(95)
h(111)
ESIEE, Slide 21
fclose(fid);
Emitter (C callable)
.sect "coefs2"
Ncomp
.set
16
coefs2
.include
coefsfin:
coefsize
.set coefsfin-coefs2
Lfil
.set
filbufQ
.usect "filtre2",Lfil
coefsize/Ncomp
.text
_firinit:
ST
#coefs2,*(adbufQ)
STM
#filbufQ,AR2
RPT
#Lfil-1
STL
A,*AR2+
RET
ESIEE, Slide 22
Copyrigh
_firTxQ:
;context save
LD
#var,DP
STM
#coefsize,BK
MVDM
adbufQ,AR2
STM
#1,AR0
STM
#filbufQ,AR3
;symbol buffer
STL
A,*AR3
RPTZ
A,#Lfil-1
MAC
*AR2+0%,*AR3+,A
MVMD
AR2,adbufQ
SFTA
A,-16
SFTA
A,-1
CMPM
@adbufQ,#coefs2
BC
endTxQ,NTC
MAR
*+AR3(-2)
RPT
#Lfil-2
DELAY *AR3endTxQ:
;context restore
RET
ESIEE, Slide 23
Copyrigh
Fe: 16 khz
Sample output
f= Fs/8=125 Hz
Fs: 1 khz
constant for each symbol
ESIEE, Slide 24
Copyrigh
Receiver 1 of 2
Bit
Symbol
processing processing
ADC
RCF
ADC
RCF
Fe
ESIEE, Slide 25
Fb
Fs
Copyrigh
Receiver 2 of 2
E0(z)
E1(z)
EM-1(z)
ESIEE, Slide 26
Copyrigh
Follow on Activities
ESIEE, Slide 27
Copyrigh
Reference
ESIEE, Slide 28
Copyrigh