diff --git a/applications/lofar2/model/pfb_os/dsp_study_erko.txt b/applications/lofar2/model/pfb_os/dsp_study_erko.txt index 3ff11a27fa938796e6a7b2b7697e0131832d364c..d0ef8e813f66e3f1cfe165daee50be5a4299557b 100644 --- a/applications/lofar2/model/pfb_os/dsp_study_erko.txt +++ b/applications/lofar2/model/pfb_os/dsp_study_erko.txt @@ -326,18 +326,28 @@ c) s-plane and z-plane input samples and a sequence of filter coefficients [LYONS 5.2]. - Convolution equation [LYONS Eq. 5.6, JOS4 7.2.4]: - N-1 - y(n) = sum h(k) x(n - k) = h(k) * x(n) - k=0 + N-1 + y[n] = sum h[k] x[n - k] = h * x + k=0 + + Change of variable m = n - k yields: + + n + y[n] = sum h[n - m] x[m] = x * h + m=n-(N-1) -- Impulse response h(k) are the FIR filter coefficients: + So convolution involves weight, multiply last, newest sample x[n] by h[0] + and oldest by h[N-1]. If x is impulse at n = 0, then y[n] = h[n] is the + impulse response. - x(n) --> x(n-1) --> ... --> x(n-(N-1)) --\ +- Impulse response h[k] are the FIR filter coefficients: + + x[n] --> x[n-1] --> ... --> x[n-(N-1)] --\ | | | - h(0) h(1) h(N-1) - \----------\-- ... ----------------\--> + --> y(n) + h[0] h[1] h[N-1] + \----------\-- ... ----------------\--> + --> y[n] -- Difference equation, so b(m) = h(m) for m = 0, 1, ...,N-1: +- Difference equation, so b[m] = h[m] for m = 0, 1, ...,N-1: y[n] = b[0]x[n] + b[1]x[n-1] + ... + b[N-1] x[n-(N-1)] @@ -350,14 +360,14 @@ c) s-plane and z-plane - Convolution in time domain is equivalent to multiplication in frequency domain: - y(n) = h(k) * x(n) ==> DFT ==> Y(z) = H(z) X(z) + y[n] = h[k] * x[n] ==> DFT ==> Y(z) = H(z) X(z) For DFT this is circular convolution. With suffcient zero padding N >= len(h) + len(x) - 1 [LYONS 13.10], then the circular convolution can calculate the linear convolution: N-1 - y[n] = sum h(k) x((n - k) % N) + y[n] = sum h[k] x[(n - k) % N] k=0 - Number of FIR coefficients (Ntaps) @@ -383,7 +393,7 @@ c) s-plane and z-plane . -1 order no decay implies impulses at end-points of impulse response. - Linear phase FIR filter - . Even or odd symmetrical h(n) = +-h(M - 1 - n), n = 0,1,...,N-1 + . Even or odd symmetrical h[n] = +-h[M - 1 - n)] n = 0,1,...,N-1 [PROAKIS 8.2.1]. Reason for using FIR [LYONS 5.10.3] . Group delay (= envelope delay[LYONS 5.8]) of symmetrical FIR filter is: G = (N_taps - 1) / 2 [Ts] [LYONS 5.10.3] @@ -405,7 +415,7 @@ c) s-plane and z-plane . construct 2N + 1 half band from N (non zero) half band design, trick to use different weights [HARRIS 8.5] . Low pass, fc = fs / 4, sinc(t) = sin(pi t) / (pi t) [numpy] - . h_lp[n] = h_ideal(n) = 2 f_cutoff sinc(2 f_cutoff n) = 1/2 sinc(n / 2), + . h_lp[n] = h_ideal[n] = 2 f_cutoff sinc(2 f_cutoff n) = 1/2 sinc(n / 2), n in Z . h_hp[n] = h_lp[n] exp(j pi n) = h_lp[n] * cos(n pi) . Low pass and high pass half band filters are complementary [HARRIS 8.2], @@ -440,7 +450,7 @@ c) s-plane and z-plane for different shifts (lag) in time. Autocorrelation can show the periodicity of a signal, because then it has similarity for some k > 0. . Difference between correlation and convolution is that convolution flips - one input, so corr(x, y) = conv(x, flip(y)). Hence if ne input is + one input, so corr(x, y) = conv(x, flip(y)). Hence if the input is symmetrical then correlation and convolution are the same. * The purpose of convolution is to determine the output of a filter with impulse response h. @@ -460,7 +470,7 @@ c) s-plane and z-plane . To prove that correlation can be expressed as convolution use a helper function [WOLFSOUND]: - xh[n] = sum_k x[n + k] h[k], with sum_k for k = -inf to +inf + xh[n] = sum_k x[n + k] h[k], correlation with sum_k for k = -inf to +inf = sum_k x[-(-n - k)] h[k] = sum_k x1[-n - k] h[k], with x1[p] = x[-p] = (x1[n] * h[n])[-n], because convolution equation is [LYONS Eq. 5.6, @@ -1012,7 +1022,7 @@ c) s-plane and z-plane - for DCT it extends flipped to avoid a zero-th order discontinuity, the slope (first order) is typically still discontinuous. - and for type II it extends symmetrically half way between the end points - . The different types come from how the boudaries are defined. + . The different types come from how the boundaries are defined. . The DCT makes the transform converge faster than the DFT, because any discontinuities in a function reduce the rate of convergence of the Fourier series. @@ -1191,31 +1201,36 @@ c) s-plane and z-plane sample instead of L samples [LYONS 10.11]. - Time domain Down, Up, Resample U/D: - . down [CROCHIERE Eq 2.55]: - +inf +inf - y[m] = sum h[k] x[mD - k] = sum h[mD - n] x[n], using n = mD - k - k=-inf n=-inf - - . up [CROCHIERE Eq 2.78, 2.80]: - +inf - y[m] = sum h[m - k] x[k / U], for k / U is integer, else x[] = 0 for - k=-inf inserted zeros - - +inf - = sum h[m - rU] x[r] = v[m], using r = m // U - n yields: - r=-inf - - +inf - = sum h[nU + m % U] x[m // U - n] - n=-inf + . down [CROCHIERE Eq 2.55, PROAKIS Eq 10.23]: n = mD + +inf +inf + yd[m] = sum h[k] x[mD - k] = sum h[mD - n] x[n], using n = mD - k + k=-inf n=-inf + + . up [CROCHIERE Eq 2.78]: + +inf + yu[n] = sum h[n - k] x[k / U], for r = k / U is integer, else x[] = 0 + k=-inf for inserted zeros - . resample [CROCHIERE Eq 2.88, 2.90] - +inf - y[m] = v[mD] = sum h[mD - rU] x[r], using r = mD // U - n yields: - r=-inf +inf - = sum h[nU + mD % U] x[mD // U - n] - n=-inf + = sum h[n - rU] x[r] + r=-inf + + using r = n // U - m yields [CROCHIERE Eq 2.80]: + + +inf + = sum h[mU + n % U] x[n // U - m] + m=-inf + + . resample [CROCHIERE Eq 2.88] + +inf + yr[m] = yu[mD] = sum h[mD - rU] x[r] + r=-inf + + using r = nD // U - m yields [CROCHIERE Eq 2.90]: + + +inf + = sum h[mU + nD % U] x[nD // U - m] + m=-inf - Noble identities [LYONS Fig 10.20], HARRIS 2.2.1, VAIDYANATHAN Fig 4.2.3] . Downsampling : x[n] --> H(z^Q) --> Q:1 --> y[m], is equivalent to: @@ -1533,6 +1548,7 @@ c) s-plane and z-plane circular shift. Therefore R(m) / wb should be an integer then [TUTHILL]. + 13b) Single channel up converter [HARRIS 7]