<< Chapter < Page | Chapter >> Page > |
A matter of confusion to many engineers is that the filter bank scheme seems to produce time samples from FFT bins. This confusion has its root in the fact that the DFT, and hence the FFT, are usually discussed in the context of digital spectrum analysis and are typically spoken of as methods of converting from the time domain to the frequency domain. How then can a DFT-based filter bank produce time samples from spectral bins? In fact, the right perspective is the opposite one.
Consider again [link] from the viewpoint of digital spectrum analysis. A simple FFT-based spectrum analyzer accepts N samples of the input sequence, weights or windows the data, transforms it by using an N-point FFT, and then estimates the power spectral density by computing the magnitude square of the bin outputs. Comparing these steps to [link] , we see that they are identical except for two things: (1) the magnitude squaring operation at the bin outputs and (2) the fact that in spectrum analysis the window and transform operation is rarely done for every input sample. (Typically it is done every N-th sample [called 1:1 overlapping ] or even less frequently.) These facts suggest that DFT/FFT-based digital spectrum analysis is derived from the filter bank concept rather than the other way around. The filter bank shown in [link] uses a transform computed over a record of weighted, delayed input data to split the input signal's energy into N spectral bands. The degree to which this separation is completed depends on the choice of windowing or weighting function and on the length of the transform. If the function is chosen properly, the windowing operation and the DFT/FFT computation can be computed less frequently, that is, decimation can be introduced. In this context, the simple FFT-based spectrum analyzer can be recognized to perform an instantaneous power measurement at the output of each of the filters in the bank. The quality of the analyzer depends on the window function chosen and the DFT/FFT order N (as they affect the passband shape), the rate at which the filter outputs are computed (given by the decimation factor M ), and the number of instantaneous power measurements averaged to obtain the spectral estimate. Thus we can conclude that the digital spectrum analyzer approximates the true power spectrum by measuring the power seen in each of the bandpass filter outputs produced by the DFT-based filter bank.
An interesting sidelight is that the most common name for the transmultiplexer preprocessor stems from the filter bank's relationship with digital spectrum analysis. Look again at [link] . The input to the QN-point FFT is weighted and delayed input samples. From the bank-of-tuners viewpoint we know that the weighting function is just the tuner pulse response needed to bandlimit the tuned signal properly. In the context of spectrum analysis, however, this function is called a data window. They are in fact identical and the tuner viewpoint provides the analytical basis on which to design the needed window. We've already observed that after pruning the FFT, the QN-point transform separates into two sections. The first section folds together Q windowed samples at a time to generate the N-point input to the FFT. From this viewpoint, it is commonly referred to as the window-and-fold section of the FDM-to-TDM transmultiplexer.
Table 1 shows a stylized example of a software implementation of an FDM-TDM transmultiplexer. Some details of the initialization steps have been blurred for the sake of simplicity and the parameters user are certainly not those appropriate to all applications, but the code should serve as an accurate guide to the amount of computation needed and its organization.
SUBROUTINE TMUX(INPUT_ARRAY, INPUT_POINTER, OUTPUT_VECTOR)
CC SUBROUTINE TMUX - IMPLEMENTS A BASIC FDM-TO-TDM TRANSMUX.
C A NEW VECTOR OF CHANNELIZED CHANNEL OUTPUTS, CALLEDC "OUTPUT_VECTOR" IS PRODUCED EACH TIME THE SUBROUTINE IS CALLED,
C UNLESS THE DATA IN "INPUT_ARRAY" IS EXPENDED.C
PARAMETER N = 64 !NUMBER OF CHANNELS AND/OR BINSPARAMETER Q = 3 !WEIGHTING FUNCTION EXPANSION FACTOR
PARAMETER M = N !DECIMATION FACTORC THIS CHOICE OF M YIELDS BASIC TRANSMUX
CINTEGER M, N, Q, INPUT_POINTER, J, K, INDEX
COMPLEX INPUT_ARRAY(1), OUTPUT_VECTORS(N), VRP(N)REAL WEIGHTING(N*Q)
CDATA WEIGHTING/ * QN values of the weighting function h(k) */
CC ****************** MOVE TIME POINTER **************************
CINPUT_POINTER = INPUT_POINTER + M
CC ****************** COMPUTE v(r,p) *****************************
CDO 10 J=1,N
10 VRP(J) = CMPLX(0.,0.) !ZERO THE VECTOR VRPC
DO 30 J=1,NDO 20 K=1 Q
INDEX = (K-1)*N+J-1 !COMPUTE OFFSET IN DATA AND WEIGHTINGVRP(J) = VRP(J) + INPUT_ARRAY(INPUT_POINTER -INDEX) *
1 WEIGHTING(INDEX+1)20 CONTINUE
30 CONTINUEC
C ****************** COMPUTE VECTOR OF OUTPUTS ******************C ****************** USING INVERSE FFT ROUTINE ******************
CCALL IFFT(VRP,OUTPUT_VECTOR,N)
CC ****************** REMOVE RESIDUAL CARRIER TERM ***************
CC ------------ IF M NOT EQUAL TO N, REMOVE CARRIER HERE
CC ********************* NORMAL RETURN ***************************
CRETURN
CEND
Stylized FORTRAN Example of an FDM-TDM Transmultiplexer
Notification Switch
Would you like to follow the 'An introduction to the fdm-tdm digital transmultiplexer' conversation and receive update notifications?