METHOD AND SIGNAL PROCESSOR FOR FREQUENCY ANALYSIS OF TIME DOMAIN SIGNALS

Abstract: A signal processor and method of processing N discrete samples (ai) of a quantized time domain signal to determine the frequency content or frequency spectrum of the time domain signal. Real and imaginary components (aiR and aiI) of the quantized signal are processed in accordance with a decomposition technique that eliminates considerable hardware and reduces processing time. In a multiple stage processor (20), interstage multipliers are eliminated. One such disclosed processor includes a first data memory state (22) for storing the discrete samples of the quantized time domain signal and for retrieving the stored samples in a predetermined order in which component positions are circularly rotated by a predetermined number of positions from the order of storage thereof. An L-point computational stage (24) receives the retrieved samples of the quantized time domain signal and calculates real and imaginary output signals representing the solution to an L-point discrete Fourier transform. A second data memory stage (22) stores the real and imaginary output signals from said L-point computational stage. An M point computational stage, where N=LM and L and M are relatively prime numbers, receives the retrieved output signals and calculates real and imaginary output signals (A) representing the solution to an LM point discrete Fourier transform.

Description: METHOD AND SIGNAL PROCESSOR FOR FREQUENCY ANALYSIS OF TIME DOMAIN SIGNALS FIELD OF THE INVENTION The present invention relates to signal analyzers and, more particularly, to a novel signal processing method and system * that analyzes the frequency (spectral) character- istics of a signal in electrical form through a technique that uses the Multidimensional Discrete Fourier Transform (MDFT) in conjunction with the internal structural properties of the Discrete Fourier Transform (DFT) . BACKGROUND OF THE INVENTION The frequency (spectral) content of a signal is an important parameter in numerous applications such as radar and sonar signal processing speech analysis and synthesis, meteorological measurements, vibration analysis, and so forth- In a Doppler radar system for example, the echo or return signal contains various frequency components. These frequency components are typically analyzed by "Fourier analysis" techniques to provide information as to the existence of moving and stationary objects and character¬ istics such as the speed of the objects. Fourier analysis essentially breaks the signal down into various frequency components so that a complex signal can be represented by a series of simple or fundamental frequencies. The simple frequencies can then be used to reconstruct the events that are causing or generating the complex frequency spectrum of the signal under consideration. A continuous signal can be decomposed into sets of sinusoidal functions by the Fourier Transform: O PI in which. G(/«/) is called the frequency spectrum of the signal f(t). The Fourier Transform, therefore, transforms a signal from the time domain, in which the signal is expressed as a function of time, into the frequency domain in which the signal is expressed as a function of frequency. Frequency analysis techniques have advanced over the years from mere separation of frequencies by analog filtering to present day techniques involving digital analysis. For digital analysis, the signal to be processed is quantized by a suitable sampling or other digitizing process. When the continuous signal is digitized, the Fourier Transform cannot be used to represent the frequency spectrum of the digitized signals due to the discrete nature of the digitized signal. However, a discrete approximation derived from the Fourier Transform can be used to transform digitized signals from the time domain into the frequency domain. This discrete approximation is referred to as the Discrete Fourier Transform (DFT) . A digitized signal can be decomposed into sets of sinusoidal functions by the Discrete Fourier Transform, the k-th. term of which is: where N represents the total number of digitized samples taken of the continuous time domain signal f(t)j n represents the numbering of the digitized samples of the signal f(t); and a represents the digitized samples of the signal f(t) . This Discrete Fourier Transform is termed an N-point transform since N digitized samples are transformed from the time domain into the frequency domain. The larger the total number of digitized samples taken of the continuous signal, the closer the digitized time domain signal represents the continuous time domain signal, and the closer the Discrete Fourier Transform of the digitized signal approaches the Fourier Transform of the continuous time domain . signal. Therefore, the digital samples may number in the hundreds or even thousands in systems requiring high precision. Consequently, numerous additions, subtractions and multiplications must be performed by a digital processor in order to obtain digital numbers which are indicative of the frequency spectrum of the continuous time domain signal. A single multiplication typically takes much more time to perform than a single addition or substraction. Morover, each multiplication in the DFT generally involves multiplying complex numbers, i.e., numbers containing both a real and an imaginary component. Such complex multiplication further increases the time, and the hardware, required to carry out each multiplication. Thus, the speed at which a particular processor processes data is determined in large part by the number of multiplications the particular processor must perform. The total amount of hardware required to perform the numerous additions, subtractions and multiplications in an N-point DFT processor can be reduced by cascading an L,—point DFT processor stage and an L^-point DFT processor stage where N = L-, . L 2 - OMPI In general, a phase shifter or "twiddle factor" multiplier is required between each stage. But if L,- ^ and L, are mutually prime numbers (i.e., if .^ and L 2 do not contain any common factors) , then an interstage twiddle factor multiplier is not required. What are required, however, are data rotators which suitably reorder the data before the data enters each stage. Thus, one type of hardware is traded for another. It is known that the total amount of hardware required to perform the numerous additions, subtractions and multiplications in an N-point DFT processor stage can also be reduced by requiring the number of data points processed by the stage to be a power of two and then using what is referred to as a Fast Fourier Transform (FFT) technique to calculate the DFT. Thus constrained, N = 2-^ where j a_ is an integer. The total amount of hardware required to perform the numerous additions, subtractions and multiplications in an N-ponit DFT processor stage has also been reduced by requiring N to be the product of certain small prime numbers. Using group theoretic properties of numbers, Samuel Winograd recently discovered that the computation of an N-point DFT can be converted to a cyclic convolution when the integer N has certain properties. (Winograd, "A New Method For Computing DFT," 1977 IEEE International Convention on Acoustics, Speech and Signal Processing, pp. 366-68) . Using Winograd's discovery and the Chinese Remainder Theorem For Polynomials, it is possible to reduce the number of multipliers requried to compute an N-point DFT when N is the product of small prime numbers. When N is the product of certain small prime numbers, the number of multipliers can be reduced still further. As in the FFT approach, the Winograd Discrete Fourier Transform (WDFT) approach requires multipliers within each processor stage. In general, these intrastage multipliers are complex. However, using the WDFT approach certain small prime numbers are found to exist for which the intrastage multipliers are either real or imaginary but never complex. Thus for certain small prime numbers, the number of multiplications required to be performed, and the corresponding hardware to carry out the multiplications, is reduced. Numerous approaches to implementing Discrete Fourier Transform signal processors have been employed. The fastest known processors employ Fast • Fourier Transform mechanizations. The speed of the known processors is limited by the number of multiplications the particular processor must perform. For example, the FFT processor disclosed in U.S. Patent No. 3,783,258 transforms 4096 complex points into Fourier coefficients in about 10 milliseconds, and the FFT processor disclosed in U.S. Patent No. 3,920,978 transforms 1024 points in about 25 milliseconds. Other examples of the prior art approaches to this type of signal processing are included in U.S. Patent Nos. 3,899,667; 3,777,131; 3,778,604 and 3,952,186. The fastest known prior art TTL technology processor processes data at approximately a 6MHz complex signal data rate or a real signal data processing rate of 12MHz. However, there may be situations in which a real signal data processing rate of 16MHz or higher may be desirable. For example, in a typical Doppler radar application, 100 nanosecond pulses of energy may be OMPI transraitted at 500 nanosecond intervals. In order to locate and process the return energy, the interval between successive pulses is divided into four intervals called range cells and a predetermined number of samples are taken in each range cell (e.g. , 120 samples) . Since a target will move only slightly in range from pulse to pulse, e.g., a target moving at 10,000 ft./sec. will move 0.005 ft. in one interpulse period, data can be collected from corresponding range cells in successive interpulse periods in order to perform a frequency analysis. The data collected over a predetermined time interval such as 60 microseconds is reordered so that all the data from the same range cell is grouped together. With the exemplary figures above, therefore, there are four sets of 120 data points (samples) to independently process. For a particular range cell, there is a new piece of complex data every 500 nanoseconds (a 2MHz complex data rate) . Thus, there is a need to process data at a 4MHz real data rate and since t ere are four such sets of data collected, the overall real data rate is 16MHz. In other words, a typical frequency analysis application may require processing signals in sets of 480 complex data points, with each set representing 120 discrete samples in each of four successive cells. If 40 complex data points are to be processed every 60 microseconds, and if each complex data point has a real and an imaginary part, then the overall real signal data processing rate is 16MHz. The data therefore must be processed at a 4MHz real signal data rate in each, of four cells. When known prior art processors are used in this application, an FFT processor is required for each OMPI pair of range cells since the FFT processor has only a 6MHz complex data rate. One version of the processor in the present invention, however, is capable of processing data at a 24 MHz real data rate with less hardware than the known prior art FFT mechanizations required to process at a 12MHz real data rate. BRIEF DESCRIPTION OF THE INVENTION The foregoing and other dramatic improvements in the art of spectral analysis of signals are provided in the signal processor and method according to the present invention which utilizes novel data manipulation and processing techniques in conjunction with the most desirable aspects of the foregoing techniques to eliminate the need for complex multipliers in each processor stage, to eliminate the need for complex phase shifters or twiddle factor multipliers between each stage, and to minimize the number of multipliers in the processor and the number of multiplications the processor must perform. These advantages are accomplished with a computational stage that includes a first storage device into which is loaded the sums and differences of the real and imaginary components of time domain input data comprising N discrete samples. The stored sums and differences are retrieved from the storage device in a first predetermined order, and multiplied by constant values. The resulting products are summed with the stored sums and differences to produce partial sums of the real and imaginary components, The partial sums are stored in a second storage device, and the real and imaginary components are retrieved separately in a second predetermined order. The " sums and differences of the retrieved partial sums are then calculated to produce real and imaginary output data representing the frequency content of the time domain signal. K ΕF DESCRIPTION OF THE DRAWINGS Figure 1 is a functional block diagram of a generalized N point processor with N = L, . L- • ... n arranged in accordance with the present invention; Figure 2 is a functional block diagram illustrating in greater detail one form of an odd integer L point computational stage of the system of Figure 1; Figure 3A-3C are functional block diagrams illustrating in greater detail various forms of the add/subtract accumulator circuits for the first and last stages of the computational stage of Figure 2; Figures 4A-4D are functional block diagrams illustrating in greater detail various forms of the multiply/accumulator circuits for the second stage of the computational stage of Figure 2; Figure 5 is a generalized functional block diagram of a processor according to the present invention in which the computational DFT stages are for even or odd integers; Figure 6 is a functional block diagram illustrating in greater detail one form of an even integer computational stage of the processor of Figure 5; Figure 7 is a functional block diagram of one embodiment of a 120 point processor according to the invention in which three L point processors of values 8, 5 and 3 are employed for processing 120 points; Figure 8 is a functional block diagram illustrating in greater detail the processor of Figure 7 and, in particular, the data memory and memory buffer (register) circuits; Figure 9 is a functional block diagram illustrating in greater detail one of the real and imaginary data memories of Figures 7 and 8; Figures 10A and 10B are functional block diagrams illustrating in greater detail the input and output registers of the processor of Figure 8; Figures 11A-11C are flow graphs illustrating the data flow for one embodiment of the respective three point, five point and eight point computational stages of Figures 7 and 8 when employing a parallel processing technique; OMPI Figures 12A-12C are schematic block diagrams illustrating schematically one implementation of each of the three, five and eight point computational stages, respectively; and Figures 13A-13C illustrate a prior art FFT processor for 128 data points for comparitive purposes. DETAILED DESCRIPTION The present invention relates to a novel signal processing method and system that analyzes the frequency characteristics of a signal. To facilitate a description of the invention, it is described hereinafter in a Do pler radar environment and a theoretical, mathematical development relating to the invention is provided. Also, a comparison with known prior art devices in the Doppler radar environment is provided in order that the dramatic improvements in speed and hardware simplicity will be appreciated. The order of presentation is not intended to be in any wa restrictive, but, rather, is intended to assist one skilled in the art to gain a more rapid appreciation of tie invention. Moreover, it should be understood that the invention has numerous applications other than in Doppler radar systems. The invention, in fact, has general application to any field in which the spectral content of a signal is to be accurately analyzed. For instance, in addition to tracking radar -systems of the Doppler variety, the -invention may be used to analyze the frequency content of signals developed in various radar and sonar applications, storm monitoring systems, navigation systems, guidance systems, seismic analysis syste s, speech reproduction and analysis systems, to name a few. I. THEORETICAL CONSIDERATIONS A theoretical discussion of certain aspects of the Discrete Fourier Transform (DFT) and the Multidimensional Discrete Fourier Transform (MDFT) will assist in an understanding of the theory of the invention since these provide a theoretical base from which to start. In particular, the following discussion of the MDFT shows one familiar form of decomposition of complex terms in known MDFT signal processing techniques. From this initial discussion, it will be seen that the present invention employs a decomposition technique for the DFT that greatly simplifies the frequency analysis of a signal and results in increased processing speed with decreased hardware for a particular processor stage. Moreover, it will be seen that other theoretical considerations lead to a unique method and system not only of individual processing stages but also of cascaded processing stages. A. Multidimensional Discrete Fourier Transform Theory The magnitude and phase A of any frequency component k of the Discrete Fourier Transform of a set of N input data samples a^ resulting from suitably digitizing a continuous input signal is given by the equation: where A-^ and a are complex numbers and where W is the exponential term exp (-J2TT/N). If N, the number of input data samples, is equal to the product of two integers L and M, that is, if N - LM, then Multidirectional Discrete Fourier Transform Theory can be used to further decompose the k-th term of the DFT given -above in equation (1) . Thus, here every Lth data sample is grouped together, equation (1) can be rewritten as follows: -l . (4-1 A k * - * Σι * Iow kl Z * * * *©--W klm < 2 > If the following substitution of variables is made for k: k = r M + s r = 0, 1, 2, . . ., L-l s = 0, 1 , 2, . . . , M-l Then equation (2) can be rewritten as follows : - s - Sδ t « "> rl c w 1 1 -- ^ sm~ < 3 ' or where The term j is t e M-point DFT of the input data samples a*^^ for a given value of i, and the term W S1 is a multiplicative factor, generally called a Twiddle Factor, which represents a phase shift. The term -A^ + S ( OMPI is the L-point DFT of the bracketed expression of equation (3), or in other words, the L-point DFT of the M-point DFT of the data set Lm+i for a given i multiplied by an appropriae Twiddle Factor. Equation (3) therefore indicates that an N = LM point DFT may be obtained for N input data samples by sequentially computing the M-point DFT of L sets of input data, multiplying these coefficients by the appropriate Twiddle Factors and then computing the L- point DFT of each of M sets of numbers. B. Theory of Decomposition According to the Invention for All Odd Integers It will be appreciated by one skilled in the art that decomposition of the DFT by the multidimensional DFT approach can lead to processor implementations for small point transforms which are integral powers of 2. Of course, numerous multiplications are required within each processor stage and between stages. According to the present invention, decomposition of the DFT is accomplished in such a way that the processor need not perform numerous multiplications and both the speed and size of the processor are minimized. Decomposition of the Discrete Fourier Transform in accordance with the invention will first be described theoretically for the general case of an odd number of points. It will also be shown theoretically that according to the invention the transform need only be decomposed for prime numbers and powers of primes rather than for all odd numbers. However, the decomposition below is in its most general form and thus provides the option of not completely decomposing the DFT of a product of primes into its multidimensional form. • ∑. lm m~ OMPI ° For N = odd integer the DFT equation is where W = e a^ = i complex input time sample; and. A^ = complex output frequency sample . Decomposition of the DFT according to the invention is based on the observation that: - cos 2TTbd ( a d + a M ) - j sin 2 f/ (a,-a ιτ _ Λ ) . N l d Q N-d' Therefore, by performing a, + . a w - A --f° r all d = 1, 2, . . . , N-l, the matrix equation can be 2 rewritten with entries that are either real or imaginary but never complex. - u ' l OMPI ~ Additionally , cos 2 1 (ab , = cos JT aN cos 2fa(H-b) + gin 2gN N N N N (7) s -i■*n• « 2JT g a(N-b) _ = „ cos c 2 g a(N-b) and: 27aN 277a (N-b) . 277^ (N-b) β xn ~N < ab ) = sin cos N N Sin N cos 277aN N - sin -^~a(N-b) (8) Therefore, the "cosine" entries in the equation (6) matrix are the same for A^ as they are for A N _T_. Similarly, the "sine" entries in the equation (6) matrix are the same for A^ and A^- j -. except for the sign. This suggests that the computations may be further simplified by accumulating the "cosine" terms and the "sine" terras separately and then properly adding the results. If * * a bR + j bl aπd a i = a iR, thβn thβ observations above lead to the following set of computations to obtain the N-point DFT: (1) First the sums and differences of the real and imaginary parts of the input data are calculated and stored. _+ . . N-l a iR + a (N-i)R "" S iR X - 1 . 2 ... — (9) _- . , _ N-l iR " a (N-i)R = 5 iR ι- i , Z ,..., 2 il (N-i)I = Sil 1 * *™ f - • • •* i N-l a il " a (N-i)I ~ S il i-1,2,..., ^ If the input data is fed into the equation (9) and (10) computations in pairs: a iR' N-i ) R i = 1 2 N_1 a OR a a il' a a (N-i)l i 1 a oι then these computations can be performed in three data channels. The first data channel computes all the S. β , S. τ for i= 1,2, ..., — N-5—l ; the second data channel computes all the ST 0 , S? τ for i=l,2... — N■—=—1 and the third data channel computes S Q + R , S O + I because the A Q term is different than all the rest. (2) Next the sums of products of "cosine" and "sine" terms must be computed. As observed above this needs only to be done up to (N-l)/2: (N-D/2 T = (cos 2 bi -1) + S + bR i=l iR N OR (11) N-l 2 T = ∑. S~ (sin 2_ bi) b = 1, 2 , ..., N-l bi i=l iR N (12) N-l 2 U = ∑- S " (sin 2 bi) b = 1, 2, ..., N-l (13) bR i=l il N ~2~ " N-l U = Σ- s (cos 2 bi-1) + S (14) bi i-1 il N 01 b = 1, 2, .., N-l Since the "cosine" terms are multiplying complex numbers the result has been a contribution to both the real and imaginary portions of the output (T bR , U j ^) . Similarly, the "sine" terms contribute to both the real and imaginary portions of the output (T bj , + + ϋ bR^ * ^ O π( ^ ®oτ are retained since they represent the components of A Q . (3) The final step is to properly combine the real and imaginary portions of the above computations and make use of symmetry to compute the A b = 1, 2, ..., N-l. (N-b) 2 A 0I * S OI < 16 > A = T + U b = 1, 2, ..., N^ (17) bR bR bR 2 U - τ b - 1, 2, N-l (19) bl bl bi 2 U + T b = 1, 2, N-l (20) (N-b)I bl bl 2 C. Theory of Decomposition According to the Invention For N = 2 r Points This section theoretically describes decomposition of the Discrete Fourier Transform according to the invention for the case of N = 2 r , r>2 points. The two point transform is a trivial case that is just the sum and difference of the input samples. The four and eight point transforms are also special cases of the general decomposition. The Discrete Fourier Transform equations for N — 2 can be written in matrix form as: The fundamental observation to be made is that: tf . (n-b)d + W a N-b = W- V W -bd "N- = cos 2T~ bd (a b + a N _ b ) - j sin - 2g1/- bd (a^ - N _ b N for b = 1, 2,...,= • N= and W°a 0 + ^ 2 - N/2 = a. l N/2 depending on whether d is even or odd. Therefore equation (21) can be rewritten such that all the members of the matrix are either real or imaginary but never complex. w thierei a^ = i " complex input time sample — a i • -R■-, + a i •l 1- A^ = i complex output frequency sample - A ±R + A 1 Additionally for a = 1,2, • » » , 2 ■ * ■ 2 ~ * ><~ΪΓ cos -≤g- ab = cos jj~- (N-b) a OMPI s in -22T a = -gin _ (N _ b ) a Therefore, the "cosine" entries in equation (22) are the same for A j ^ as they are for & $ _■ , b=l, ... , N - l. Similarly, the "sine" entries in equation (22) are the same for A^ and A N _ b , b=l,2,..., N - l except for the sign. This suggests that the computations may be further simplified by accumulating the "cosine" terms and the "sine" terms separately and then properly adding the results. Another observation is that for a = 1,2,..., N - l 2 " This observation has several effects on the computation of equation (22): (1) If "a" is even, the "cosine" term does not change sign going from A j ^ to A-^ _ . but it does change sign if "a" 2 is odd. This suggests that computation of the "cosine" term should be subdivided into two computations which are then properly added; namely a summation of "cosine" terms with "a" even and one for "a" odd from b = 0,1,2, . . . , N. 4 (2 ) If "a" is odd, the "sine" term does not change sign going from A^ to A_ « but 2 OMPI fa O it does change sign if "a" is even. This suggests that computation of the "sine" terms should be accomplished in two separate summing operations; namely a summation of "sine" terms with "a" odd and one for "a" even over b = 0,1, . . ., N. 4 These observations provide significant reduction in the required computations for the N = 2 r point transform. The one additional set of terms to deal with are those in columns 1 and 2 of equation (22) because they do not follow the same format as all other columns. The a_ + . jj /2 terms could be carried along separately through the processing and then added at the end. However, this would mean that each would have to be present for N/2 of the output frequency terms and this would cause a data processing slow down or the need for N/2 data accumulations on the output, whereas only four output accumulators would otherwise be needed to properly combine the "sine" and "cosine" summations described above. The alternative is to find "sine" or "cosine" summations that will always be added at the output. Then the a Q + N 2 terms could be added into these summations as an extra term. For b = 0,2, . . ., N/4, the term to be added is a Q + a N ,2 anci f° r b = 1,3,5, . . ., N/4 - 1, the term to be added is a Q - N/2* T ^ ιe cos ne summation for "a" "even" satisfies the requirements and thus will be subdivided into two summations to handle the two terms. The above discussion leads to the following set of steps for computing the N = 2 r point DFT using the decomposition technique of the present invention. OMPI (1) First, the sums and differences of the real and imaginary parts of the input data are calculated and stored. a OR +a N D " S OR ' * a OR " "N . = S OR 23) 2 R 2 R a iR +a (N-i)R = S+ iR l = ' 2 I " λ (24) a iR- a (N-i)R = S iR ± = 1 ' 2 I - λ (25) a OI + a N τ * S OI (26) 2 ■L a il~ a (N-i)l * S il l - 1 ' 2 ! " X (29) If the input data are fed into this set of computations in pairs: a OR' a 4R . _ 2 a iR' a (N-i)R 2 X aO I' a 4I i . ! 2 2 - 1 a il' a (N-i)I * * then these computations can be performed by computing and storing all the S ^ R , S + i:r for i = 0,1, . . ., N/2 - 1 and all the S~£ R , S~ z for i = 0,1. . . ., N/2 - 1 in only two data input channels. (2) Second the sura of products of "cosines" and "sines" must be computed. The equations below are a result of the above discussion. N b = 0, 2, 4, H ' T bR= ■ £ S 2iR COε ^ (2 --> + S OR < 31 b = 1, 3, 5. . ϊ- 1 bR .2i+l)R β - T * b(2i+1) (32) N b = 0, 1, 2, • • *' " "" Note here that = 0 because cos *-~- (2i+l) = 0 for all i = 0,1,2, . . .,2 - 1. T = .&?I . . ., (33) Note here that T ε__ = 0 since sin 0=0 T 2 i = sinTi = 0 (34) T bl " ζ Q - S ύi + 1)R 8in ¥* < 2i+1 > b = l, 2, • • ., N Again noting that T = 0. OMPI 4 where:U N_ = O because cos 211 N(2i+1) = 0 for all 4 " *• N 4 u* bR where: U „ = 0 since sin 0=0, and OR U = 0 since sin 27T N 2 i = sin i = 0 N 4 !* OMPI Equations (30) - (39) represent 2N different numbers to compute and store in a second 2N point data memory. By observation, no input to this summation sequence is used more than (N + 1) places. Therefore, these 4 computations can be sequentially performed m (N + 1) data channels. (3) Finally the data output channels have the function of properly adding all of the .partial sums of "sines" and "cosines" to produce the real and imaginary portions of the outputs. A OR * T OR + T 0R *bl - ϋ OI + ϋ OI (40) A = T" + u* + T° + U° b =0,1,2,.. (41) bR bR bR bR bR 4 A = U" + IT bl bl bl - r - T b =0,1,2, ...N (42) bl bl 4 A (N-b)R= T bR " T bR + ϋ bR " ^R (43) - 1 (44) b =0,1,2, ...,N - 1 4 A (N-b)R~ T bR " ^R " T bR " R (45) b =1,2,...,N 4 A (N-b)l - 4l + U bl + T bl + T bl (46) b =1,2, ...,N 4 f OMPI A (N+b)R (47) 2 - •S. - « £. - «& ♦ «E» b =1,2, ...,N - 1 4 A (N+b) I = "Si - . - « Sι * ■ «gι (48) b =1,2, ...,N - 1 4 This is a total of 2N computations. Note that each input term is used in exactly four places and E E O O a group of four inputs (i.e., T bR , U bR , T bR , U bR for a given "b") forms four outputs (i.e., ^r * A (N-b)R ' A (N-b)R ' A (N+b)R )* Therefore tne output computation structure can make use of four relatively simple data channels as described hereinafter. C. Interstage Multipliers and Ring Theory The preceeding section dealt with the multiplications and thus the multipliers required within a single transform processor stage (intrastage multipliers) when the DFT is performed using a decomposition technique according. to the present invention. In this section, the multipliers included between each cascaded processor stage (interstage multipliers) will be dealt with theoretically. in the discussion regarding equation (3),. the multiplicative term 31 was identified as the Twiddle Factor which imparts a phase shift to the data as the data flows from the M-point DFT processor stage to the L-point processor stage in an N=LM point processor formed by cascading an M-point processor with an L- point processor. If L and M are constrained to be relatively prime, that is, if L and M contain no common factors, then the Twiddle Factor multipliers can be replaced by circular rotation of the input data set of both the M-point and L-point transform stages. The input data set for an N=LM point transform can be represented as an L by M matrix as follows; l L-l ~L l L+i l 2L-l A (M-1)L L (M-l)L+i (M-DL+L-1 wherein every L-th data sample is grouped together such that each of the L columns of the matrix of equation (49) contains an M-point data set. The i-th data set then contains the members a i' a L+i l 2L+i' (M-l)L+i. If the i-th data set is circularly rotated by "q i" positions - for example if "q i" equals 1, every member of the i-th data set will be moved up one position in the i-th column- of the matrix of equation (49) and the topmost member would move to the bottom¬ most location and the rotated i-th data set will then contain the members α L+i' ~2L+i' a (M-l)L+i, i, Then the Twiddle Factor of equation (3) becomes: • T ™ w.i-dJdJl1e -Fnac .t.or = τWτ s i * + Lsq^i If the sequence of output terms A _^ rM+s or equation (3) are also rotated but by "b s" positions by substituting r 1 -bε for r, then the Twiddle Factor becomes: m T.wi - JddJl-I e - Faac -t.or = τ Wf s i + Ls q ^ * i - Msbi Twiddle Factor = w si(< 3 L - bM + 1) (50) It is then apparent that if the term (qL - bM + 1) of equation (50) becomes zero, the exponent becomes zero and thus the Twiddle Factor equals unity. Thus the Twiddle Factor multipliers can be eliminated if the term (qL-bM+1) can be made zero. L and M are relatively prime numbers and thus have no common factors. With this condition imposed upon L and M, ring theory indicates that a unique q and b exist. In this regard it must be borne in mind that even though there is one equation with two unknowns, a unique q and b exist since additional constraints have already been implicitly imposed upon both q and b. Since the i-th data set has M members, rotating the members by "q i" positions, or (M + "q i") positions or (2M + "q i") positions, and so forth, places the data members in the same relative locations in the data set. Hence, 0 4 q < M. Similarly, since the output term ^ M+S constitutes an L element set, rotating the members by "b s" positions or (L + "b s") positions or (2L + "b s") positions, and so forth, places the members in the same relative locations in the data set. Hence, 0 ^ b <j£. Thus, these range constraints which are implicitly imposed upon q and b result in a unique value for both q and b. Thus, the Twiddle Factor multiplier can be eliminated between the cascaded stages provided the input data for each stage is suitably rearranged. II. Generalized Processor According To the Present Invention The foregoing theoretical considerations can be used in an efficient manner to produce a novel OMPI co¬ processor and processing method. In general, as illustrated in Figure 1, a processor for N data points according to the present invention consists of k cascaded stages such that: where all the L n 's are relatively prime. Each L point processor stage 20 includes a data memory stage .22 and an L n - point computational stage 24 as described hereinafter in detail. The L 's are preferably relatively prime in order that the Twiddle Factors can be removed and replaced by suitable data rotation. The decomposition technique according to the invention is implemented in the computational stage to assure that the intrastage multipliers are real or imaginary but never complex. The input data is first reordered into (N/L- j data sets of L, members where L, is the number of data points of the first processor stage 20. Each data set is then rotated a suitable amount (see Section I, subsection C) , and an Li-point computation using the decomposition is then performed on each data set. The output of this first processor stage is then reordered into (N/L 2 ) data sets of L, members (where L 2 is the number of data points of the second processor stage) . Each of these data sets are rotated a suitable amount, and an 2~Pol n t computation is then performed on each data set. This process is continued for each successive stage L_, reordering the previous stage's output into (N/L n ) data sets of L n members, rotating each data set and then performing an -L-^-point computation on each data set. The data memory 22 is utilized to suitably reorder and rotate the input data to each of the stages. As will be described subsequently in greater detail, different memories are used for the real and the imaginary components of the data, and each such memory is subdivided into two halves so that one half can read data out while the other half writes data in. The real data rate can be up to 24MHz. A. Computational Stage For Odd Integers It will be appreciated from the theoretical considerations discussed previously that the DFT for an odd integer can be performed using the present decomposition technique with a minimum of multiplication steps. One implementation of the computational stage employing the previously described decomposition technique and employing a minimum of circuit components is illustratd in general form in Figure 2. While the generalized implementation of Figure 2 is believed to be a relatively efficient implementation of the previously described DFT decomposition and computation technique for odd integers, it should be understood that there may be other implementations that will be apparent to one skilled in the art and the Figure 2 embodiment is not considered to be exhaustive of all possibilities. Referring now to Figure 2, the computational stage 24 may be viewed as one way of performing the three stages or steps of calculations represented by equations (9) - (20) previously discussed. As was previously mentioned in Section I, subsection B hereof, the first step performed by the computational stage is to obtain the sums and differences of the real and imaginary parts of the input data after it is - υ OM appropriately grouped into sets and reordered (equations (9) and (10 ). This initial computation is performed in three data channels 30, 32, and 34. Each data channel preferably includes a conventional summing circuit (+), and data accumulators or registers (R) . A first data channel 30 computes all the sums of the real and the imaginary components S^ R + , S^ j + for i = 1, 2, . . . , —^—. A second data channel 32 computes all the differences of the real and imaginary components S^ R -, S 1 + for i=l,2... ^^-. A third data channel 34 computes the sums of the amplitudes of the real .and imaginary time samples of the input data S 0 R' s oi* The algebraic summation of this first computing step is accomplished by suitable conventional summing circuits and registers in each data channel. The input data signal is fed to the summing circuit together with the previously stored partial sum from the first storage register. The summing circuit performs algebraic summations to obtain the sums and differences under the control of timing control signals Cl, C2 and C3 from the controller of Figure 1 such that only the appropriate data related to a data channel is summed at any particular instant in that data channel. The sum and difference values are stored in a memory 36 having 2N storage locations. These values are then supplied to suitable conventional multipliers (X) and summing circuuits (+) in a group of ~ data channels in order to compute the products of the cosine and sine terms and their sums as set forth in equations (11)-(14). Specifically, the data from the memory 36 is fed to a conventional multiplier (X) together with the appropriate sine and cosine terms. The input data from the memory is applied to the multipliers in the following sequence: OMPI S OR iR 2 iR 2 The multiplier output signals are supplied to summing circuits controlld by timing control signals c 3 +ι through c 3+(u-ι /2 ^ n orι3er to successively sum the new data and partial sums stored in a first, data accumulator or register R. The output data from each of the ! ■ data channels are supplied from a second register R to a memory 38 having 2N data storage locations. The third step performed by the computational stage 24 is to combine the real and imaginary portions of the data stored by the memory 38 in order to compute the A values as set forth in equations (15)-(20). By taking advantage of the fact that the entries of the • computational steps appear twice in the computations (e.g., U^ appears in both the computation for A. -, and the computation for A $ *f_*b ) ι)/ only two data channels are required with the following input data sequence from the memory 38: S OR <* S OI ' T bR • "br < - X ' 2 2=V > ϋ bl ' T bl (b = 1,2, ...,N-1). The computations of this third step may be accomplished by suitable conventional summing circuits (+) and accumulators or registers R. Control of the sequence in which data is fed to the data channels may, of course, be controlled in this computational step as in others by the sequence in which the memory is addressed by the controller. Similarly, the algebraic summation of the appropriate data by the appropriate data channel may be controlled as in previous computational steps by timing control signals C 4+N-l and C 5+N-l- In this latter regard, the timing control signals c^ (where i = 1, 2, 3, ..., 5 + — N=——1 ) can have four control functions, namely: 1) Subtract the new input data from the partial sum 2) Add the new input data to the partial sum 3) Ignore the new input data 4) Reset the accumulator (register) and start a new cycle. In the odd integer embodiment of Figure 2, the "ignore the new input data" control function or command is not required. The "add new input" and "reset accumulator" commands are always required and the "subtract" ccπimand is required in the C 2 ; C 4 (C 3+1 ), C 5' ** " C 3+N-1 and C 5+N __ 1 timing control signals. There are numerous conventional ways of summing, subtracting, multiplying and accumulating in the various data channels of the Figure 2 embodiment. The most desirable will depend on such considerations as speed, power, cost and availability of a given technology at the time of implementation. Certain possible implementations of the add/subtract accumulator and the multiply/accumulator data channels are illustrated in Figures 3A-3C and 4A-4D, respectively. Referring to Figures 3A-3C, there are shown three embodiments of add/subtract accumulators which may be employed in the first stage data channels 30, 32 and 34 as well as in the third stage data channels. In Figure 3A, the input data from a previous stage, from a data source or from the memory 38 is applied to a controllable data sign control circuit 40 (e.g., a data inverter/non-inverter in the case of analog signal processing) controlled by the appropriate add/subtract control signal C^ . The output signal from the sign control circuit 40 is applied to a conventional summing circuit 42 which receives a second input signal from the output terminal of a register 44. The signal from the circuit 42 is supplied as input data to the register 44 and the output signal from the register 44 is supplied to a register 46 as well as to the summing circuit. It will be appreciated that the summing circuit 42 always performs the algebraic summation of the two input signals so that the sum or difference of the two input signals to the summing circuit may be obtained selectively by controlling the sign of one input signal. Such selective control may be accomplished by selectively inverting (for subtraction) or not inverting (for addition) the input data in response to the control signal C^ or in other suitable manner. It will also be appreciated that a programmable read-only memory 48 (PROM) may be utilized to selectively add or subtract two input signals as illustrated in Figure 3B. Alternatively, specific add/subtract accumulators are available in integrated circuit form for processing of the input data in the data channels of the computational stage as shown in Figure 3C. Similarly, various multiply/accumulator structures may be utilized for the second section of the computational stage 24 of Figure 2 as is illustrated in Figures 4A-4D. Referring now to Figure 4A, the input data from the memory 36 of Figure 2 is supplied to one input terminal of a suitable coventional multiplier 50 and the sine or cosine function is supplied to the other input terminal of the multiplier 50. The output signal- from the multiplier 50 is applied to a suitable data sign control circuit 52 which is controlled by an add/subtract signal C^ from the controller. The output signal from the data sign control circuit 52 is applied to one input terminal of a conventional summing circuit 54 and the output signal from the summing circuit is applied to the data input terminal of a suitable conventional register 56. The output signal from the register 56 is applied to the other input terminal of the summing circuit 54 and to a second conventional register 58 which in turn supplies an output signal to the memory '■? 38 of the next section of the computational stage. It will be appreciated that the multiply/accumulator circuit of Figure 4A is identical to the circuit of Figure 3A with the addition of a multiplier as the first stage. Thus, its operation is identical to the circuit of Figure 3A except that the input signal to the data sign control circuit 52 is the product of the input data and a suitable multiplier value as illustrated. Figure 4B illustrates a circuit which employs the add/subtract accumulator of Figure 3B with the addition of a programmable read only memory (PROM) 60 which provides an output which is the product of the input data and a suitable one of the sine and cosine functions previously described, e.g., through a table look-up technique. The multiply/accumulator circuit of Figure 4C makes use of a standard multiply/accumulate integrated circuit chip as illustrated. The multiply/accumulator circuit illustrated in Figure 4D employs the add/subtract accumulator of Figure 3C with the addition of a multiplier 62 to provide the product of the input data and the sine and cosine functions in a manner similar to that shown in Figure 4A. It is interesting to note in connection with the odd integer embodiment of Figure 2 that odd integers are either primes, powers of primes or products of these two. As was previously described, if the transform size N is decomposable into factors that are relatively prime, then the Discrete Fourier Transform may be performed as a sequence of smaller transform computations. For instance, if N is an odd i .nt.eger and, .N, = pr.l p 2 r2 . . . pre w.here ( ~ ?i > PJ. ) - 1 when i is unequal to j, then the N point transform can be broken into a sequence of transforms as shown in Figure 5. In Figure 5, each processor stage includes a data memory stage and a p. point computational stage as was previously described in connection with Figure 1. This is made possible by the fact that in the Figure 5 embodiment, all p. are odd integers and may thus be decomposed as shown. This means that the decomposed solution requires the following amount of hardware: I (p. - l)/2 real multipliers i-1 x ( i + 9)/2 rea ι adders i=l . x memory inside transforms i=l 2 - 2N(e-l) memory between transforms The numbers of multipliers, adders, etc., are always smaller than when performing the transform as one large N point transform. Therefore, when N is odd but decomposable, the decomposed solution is preferred. The foregoing can be shown by considering N=^p.p 2 . If the transform is computed as N points, then it requires: p. p + 9 real accumulators p, p, - 1 real multipliers If the transform is first decomposed into p, and p 2 point transforms then it requires: p. + 9 + p 2 + 9 real accumulators p - 1 + p. - 1 real multipliers To see if the N point decomposition is prudent for certain p i# it is necessary to find cases in which: Pl p 2 + 9 p χ + 9 + p 2 + 9 (51) P χ P 2 + 9 (53) p. < 1, respectively. (54) Equation (54) has no solution and equation (53) has only the solution p^, 2 equal to 3,5. However, it can be shown that p = 3 is a special case that only requires four accumulators instead of the six obtained by using the formula. This means that equation (53) does not have a solution and thus it is always better to first decompose an odd integer where possible. B. Computational Stage For N = 2 r Points In Section I, subsection C of this application there was discussed the theory of decomposition according to the invention for N equals 2 r points. One •embodiment of a computational stage for numbers N = 2 r is illustrated in Figure 6. Referring now to Figure 6, the various circuit elements are conventional and are identified with notations like those in Figure 2, previously described. Therefore, the individual circuit elements will not be described in detail. It should be noted that the input signal is supplied to a first section of the computational stage 24' to obtain the sums and differences of the real and imaginary parts of the input data as described in connection with equations 23-29. As was previously mentioned, only two data input channels are necessary for this sum and difference function. The sums and ' differences in the first section 70 are stored in a suitable memory 71 for subsequent processing by second and third sections 72 and 74, respectively, of the computational stage. The second section 72 of the computational stage 24' comprises a plurality of multiply/accumulator circuits and provides the products of the input signals, i.e., the cosines and sines and the sums of the real and imaginary parts of the input data, as was previously described in connection with equations 30- 39. It will be noted that the second section 72 of the computational stage includes N + 1 data channels 4 * identical in structure to those described in connection with the second section of the computational stage 24 of Figure 2. The output signal from the second section 72 is supplied to a suitable memory 73. The memory 73 then provides input data to the third section 74 of the computational stage. The third section 74 of the computational stage includes four data channels identical to the data channels in the third section of the computational OMPI " stage 24 of Figure 2. Each of these data channels is a controllable add/subtract accumulator controlled by appropriate timing signals to perform the additions and subtractions of equations 40-48 previously described. By appropriate grouping of the data from the memory 73, only four data channels are necessary as was previously mentioned. The control lines, C^, (where i = 1,2, ...,7+N) can have four functions as with the control lines o the previously described computational stage. These functions include adding the new input data, subtracting the new input data, ignoring the new input data and resetting the accumulator to start the next cycle. The control lines C j ^ may not in all cases require a subtraction control. For example, the control line C^ is preferably controlling its associated adder to produce the S _ and s _ signals of equations 23 and 24. In any event, however, all of the accumulators require the ability to reset and ignore the input signals and thus controllable adders are employed in all instances. Of course, as in connection with the computational stage of Figure 2 there are numerous ways in which the adders, multipliers and accumulators may be implemented. The most desirable way will normally depend upon the availability of a given technology at the time of implementation as well as the speed and power considerations. For example, the multipliers require only a small number of multiplier constants and may be efficiently implemented as a look-up in a memory such as a PROM, particularly if speed is an important • consideration. O III. SPECIFIC EXAMPLE OF A PROCESSOR ACCORDING TO THE PRESENT INVENTION A specific example of the present invention for processing 120 data points (i.e., N = 120) is described hereina-fter in connection with Figures 7-10 after briefly discussing the theoretical considerations. It should be understood that the 120 point DFT processor described hereinafter is only one example of a processor that might be used in practice for signal analysis such as in a radar system. Other implementations for other uses will be clearly apparent to one skilled in the art from the entirety of the description herein. A. Theoretical Considerations As was previously described, an N point processor may be implemented as a series of smaller point processors and various advantages can be obtained if the smaller point processors are arranged to process a number of points which are relatively prime in number. From the previous discussion, it can be seen that a particular frequency component for the 120 pont DFT is given by the following equation: For a 120 point DFT, the processing can clearly be. accomplished by two smaller point processors of L and M points (see, e.g., Figure 1 wherein ^ and 1* 2 point processors are shown) where L and M are 15 and 8, for example. Accordingly, the above expression can be rewritten as follows: -\-A 8r+S = to (« 8 ) ri -« sL έ, * 15m+ -. ( « 15) ^ < 56 > Since 15 and 8 are relatively prime numbers, the processor can be implemented without the Twiddle Factor multipliers previously discussed. Therefore, setting the exponent of equation (50) to zero with L = 15 and M = 8, and O * 6 q<8, 04-b<15, it will be noted that q equals 1 and b equals 2. Therefore, the input sequence a 1ς _ + j must be circularly rotated by "q i" or "i" positions. This can be accomplished by rotating the "W" multiplier by "-i" locations which in turn can be accomplished by factoring a W 15si term from the inner summation of equation (56). Equation (56) then becomes: Replacing r with (r, -2s) mod 15, equation (57) becomes: with r^ = 0,1,2,...,14 s = 0,1,2, ... ,7 All of the coefficients A j . are computed by letting r, and s take on all their possible values. Letting G (s) ∑L , , 15.s(m-i) G i m=0 15m+i W ' equation (58) becomes: it - £ G< s) (wVl 1 (59) However, since 15 = 3x5, the transform represented by equation (59) can be decomposed such that: JL - 0,1,2 p = 0,1,2,3,4 Then *k = A 8C(5^+p-2s)mod 153+s = (60) 0 (W 0 )^ C(W 8 )P3 ∑= Q G (s . (w 24 )P v 3 Since 3 and 5 are relatively prime with respect to each other and with respect to 8, the Twiddle Factors can also be eliminated. Setting the exponent in equation (50) equal to zero with L=3, M=5, and 0^q <M and 0^b<L, one finds that q=3 and b=2. Therefore, the input sequence must be circularly rotated by "q j" or n 3j n positions. This can be accomplished by rotating the "W" multiplier by "-3j" locations which in turn can be accomplished by OMPI factoring a (W 8 ) 9 P3 term from the inner summation of equation (60). Equation (60) then becomes: s A 8[(5 +p-2s)mod 15]+s = Replacing JL with ( ^ χ -2p) mod 3, equation (61) becomes: * _ A _ £ w 4 ° i j ∑ G (s) w 24p(v-3j) = *k~ A t " j=0 W v=0 G 3v+j where t = 8[ [5 C( l λ -2p) mod 3]+ p-2 s] mod 153 + s (63) H. ( *' S) = ^ G<^ +j W 2 *^ 3 ^ (64) The foregoing equations (55) to (64) indicate the following sequence of steps is required to generate the k-th frequency component of the 120 point DFT: 1. Circularly rotate the input sequence a ,. . by "i" positions, i = 0,1,2, ... ,14; 2. Perform an 8 point computation (Fig. 6) on each of these rotated sequences i = 0,1,2, ... ,14; OMPI 3. Circularly rotate the output of the 8 point computational stage, the sequence G (*s)' . by "3j" positions 0,1,2, for each s = 0,1,2, ... , 1 ; 4. Perform a 5 point computation (Fig. 2) on each of these rotated sequences j = 0,1,2, for each s = 0,1,2, ...,7; Perform a 3 point computation (Fig. 2) on the output of the 5 point computational stage, the sequence H. ( ' S ) , p = 0,1,2,3,4 for each s = 0,1,2,...,7; and 6. The output of the 3 point computational stage is then K where t is defined in equation (63), and A fc is the k-th frequency component A^ of the 120 point DFT. B. Implementation of 120 Point Processor According to the Invention , The 120 point processor described above mathematically, and the sequence of steps necessary to carry out the 120 point DFT analysis, can be implemented for a high data rate situation as indicated in block diagram form in Figures 7-12. This type of arrangement can be utilized for a variety of applications where a high rate of processing is required, e.g., Doppler radar, missile guidance systems, commercial aviation systems, sonar systems, etc. In this regard, it should be noted that the arrangement may vary considerably depending upon the data rate and the speeds of the circuit technologies employed. Specifically, if the system is not required to operate at or near the speed limits of the technology employed, there need not be a computational stage dedicated to each small point transform. This is particularly true because of the modular nature of the embodiments illustrated. Thus, for low data rates, the computational stage may first be configured to perform a three point transform, then a five point transform, and then an eight point transform. For example, if the data rate is about the same as the limits of the technology used (e.g., about 6 MHz for TTL technology), then the 120 point processor may be implemented for the three and five point transforms in the hardware configuration of Figure 2 and the eight point transform in the hardware configuration of Figure 6. This type of implementation is shown in Figure 7. It should be noted, however, that these particular small point transforms of Figure 7 can be reduced from the general cases shown in Figures 2 and 6 to more simplified hardware since, as will be appreciated, certain mathematical terms such as sums may be dropped from the computations with minor manipulations of the equations previously described. However, the manipulations of the data can always be accomplished by hardware configurations based on the multiply/accumulate and add/subtract accumulate basic building blocks. in the high data rate applications, all of the basic add/subtract and multiply/accumulate blocks must operate all the time to satisfy the input data rate requirement. Thus, 17 add/subtract accumulates, 2 multiply/accumulates and 2 multipliers are required in this case. If the data rate is about 1/k of the data rate limits of the technology, where k = the number of all point factors that comprise the data, then only one of the small point transform configurations need be built in hardware and its configuration can be selectively modified by the controller to first perform an L point transform, then an M point transform, etc. The hardware shown in Figure 7 may be so configured to implement either a configuration like that in Figure 2 or in Figure 6 depending on which of the k stages is being computed for the lower data rate, a reconfiguration of the stage by the controller and a recirculation of the data between the input and output memories and through the stage may be employed. If the data rate is further reduced to 1/3 k of the technology limits, then only a single array of multiply accumulators need be implemented. These blocks can be used to do the middle computations of Figures 2 and 6, as well as the input output computation, by using the multiplier to multiply by one during the add/subtract cycles. As the data rate further reduces, the required number of multiply/accumulators that jnuεt be implemented in hardware to perform the computational stages may eventually be reduced to only one. For data rates above the chosen technology limits (about 6 MHz for TTL) , such as the specific sample being addressed, two approaches may be taken. First, several processors such as in Figures 2 and 6 may be built and operated in parallel. Second a single step manipulation of small point transform equations leads to a parallel implementation of the equations rather than the serial one shown in Figures 2 and 6. Both of these solutions will be addressed here in the 120 point case as a specific example. The specific example of the invention in Figures 7-12 operates at a 16MHz data rate and employs 12 bit data words for each data point of interest. Other coding may be employed (e.g., 8 bit data words) but the 12 bit embodiment is preferred since it is most compatible with modern systems. Referring now to Figure 7, a data memory stage 100 receives digitized input data from a source which may vary with the particular application. The data memory 100, which is described in more detail hereinafter, is of sufficient size to store 240 input data points respectively forming the real and imaginary components of 120 complex input data points. The input data sequence A 15 ^. is circularly rotated by "i" positions as will be more fully described hereinafter and is fed to an 8 point computational stage 102. An 8 point transform is performed on each rotated sequence for i = 0, 1,2,. . . 14 in stage 102 and the transformed values are stored in a data memory stage 104. (s) The data sequence G 2 +S stored in the data memory stage 104 is circularly rotated by "3j" positions for j = 0, 1, 2 for each s = 0, 1, 2, ..., 7 as will be more fully described hereinafter, and is fed to a 5 point computational stage 106. A 5 point transform is performed on each of the rotated sequences j = 0, 1, 2 for each s = 0, 1, 2, ..., 7, and the transformed values stored in a data memory stage 108 in the next processor stage. The data sequence H. "' stored in the data memory stage 108 is applied to a 3 point computational stage 110. A 3 point transform is performed on each sequence p = 0, 1, 2, 3, 4, for s = 0, 1, 2, ...» 7 and the output stored in a data memory stage 112. The data sequence A^ stored in the data memory stage 112d_ is the output of the processor which can be fed to other circuit components as output data. The entire operation of the processor is controlled by a controller 114. The controller provides the control signals C j ^, as previously described, in any suitable conventional manner. For example, the controller 114 may be a timing circuit of conventional design operating at the desired data rate in synchronism with (or controlling access to) the incoming data. Alternatively, a microprocessor and a suitable interface may be utilized to sequence the data through the processor. The rotation of the data described hereinafter in detail may be accomplished by a conventional technique of addressing the data memories in a predetermined sequence so that the output data from the memory can be fed to the next stage in any desired sequence. 1. The Data Memory Stages Figure 8 illustrates the data memory and computational stages of Figure 7 in greater detail. The data memory stages 100, 104, 108, 112 of Figure 7 each consist of a real part 100A, 104A, 108A, 112A, respectively, which store the real components of the complex data, and an imaginary part 100B, 104B, 108B, 112B, respectively, which store the imaginary components of the complex data. Each memory stage is further divided into two halves as more fully illustrated in Figure 9 so that one half can be writing data out of it for the "n th " data set while the other half is reading data into it for the "n+l th " data set. These divisions of the data memory into two real and two imaginary parts reduces the data rate at which OMPI each data memory element must operate while maintaining a 16MHz data rate for the overall data memory stage. The data memory stages 100A and 100B are identical and share a common control and addressing scheme comprising two 9316 binary counters and four 512x4 PROM's described hereinafter in connection with Figure 9. Each data memory 100A, 100B includes twelve (12) 256x4 RAM's (Random Access Memory) as configured in Figure 9. It should be noted that this hardware and all hardware used herein is standard MIL-SPEC-TTL DIP hardware. The control and addressing hardware shown in greater detail in Figure 9 comprises two (2) 9316 binary counters and four (4) 512x4 PROM's (Programmable Read Only Memory) as configured in Figure 9. As previously indicated, the input data is first reordered into a sequence of a -^m-^ subsets each of which contain 8 data words. The data memory stage 100A processes the real data bits and the data memory stage 100B processes the imaginary data bits. The data bits are then rotated to eliminate the Twiddle Factor multipliers. The reordering and rotation is preferably accomplished as a one step process. Both the reordering and rotation are accomplished through an addressing procedure that is controlled by a counter addressing a PROM as previously mentioned. In the data memory stage 10OA, the input data from the first data set is stored in a RAM 114 and a RAM 116 as it arrives via the input line. The sequence of operations, for a pulse Doppler radar is as follows: a) a from range cell 1 is stored in RAM 114 location O, OMPI b) a from range cell 2 is stored in RAM 116 location O, c) a from range cell 3 is stored in RAM 114 location 1, d) a from range cell 4 is stored in RAM 116 location 1, . This process continues until all 120 real samples, a^, from all 4 range cells are stored in RAM 114 and RAM 116 for the first data set. Then the data.from range cell 1 of the first data set is removed from RAM 114 in the proper reordered and rotated format that groups sets of eight samples together as defined by the equations for the 120 point computational stage. The first group to be removed is a , a,-, a_ Q , ..., a.-- The second group to be removed is a ai.., al.b - , aJ_1. , ...» -LU and the final group to be removed for range cell 1 of data set 1 is - 4 , 2g , -., ..., a., ιg . There are 15 of these sets of eight real numbers frαn range cell 1 of data set 1. Then the same sequences of the data from data set 1 range cells 2, 3 and 4 are removed from RAM 116 and RAM 114. Figure 9 shows the outputs of RAM's 114, 116, 118 and 120 all connected. The illustrated memory devices are preferably of the type that have "tri- state" outputs. This means that the output of any one of the RAM's 11-4-120 can be enabled to remove its data without being effected by the other three RAM's. As the first set of 120 data points from data set 1 are removed from RAM 114 a second set of data is being entered into the RAM 118 and the RAM 120 in the βame manner is described above for data set 1 entering the RAM 114 and RAM 116. This data storage scheme is then repeated for all subsequent data sets. The odd numbered data sets enter the RAM 114 and the RAM 116 and the even numbered data sets enter the RAM 118 and the RAM 120. Similarly, data set 2 is removed from the RAM 118 and the RAM 120 in the same order as data set 1 was removed from the RAM 114 and the RAM 116. At the same time, data set 3 is being stored in the RAM 114 and the RAM 116. The reordering and rotation process is carried out by the RAM 114, the RAM 116, the RAM 118 and the RAM 120 controlled by a pair of counters 122 which address PROM's 124 and 126. The counters and the PROM's 124, 126 address the RAM 114, 116 and the RAM 118, 120 such that the data is written in and read out in the proper sequence. Referring once again to Figure 8, the operation of the data memory 100B is identical to that of the data memory 100A just described, except that the data memory 100A processes the real components of the complex input data while the data memory 100B processes the imaginary components of the complex input data. The data memory stages 104A, 104B, 108A, 108B, and 112A and 112B are essentially the same as the input data memory stages 100A and 100B respectively. One difference is that the RAM 116 and the RAM 120, the RAM 116A and the RAM 120A are not required. The reason for this change is that only one range cell.at a time is processed through the computational hardware rather than four range cells. Therefore, less data memory is required between the small point stages because only one range cell of data must be stored. The input and output sequencing for data memory stages 104A, 108A, 112A are similar to that for data memory stage 100A except that a data set only has -one range cell of data rather than four. Actual order of the samples will be as previously described in connection with the foregoing equations. The input and output sequencing for data memory stages 104B, 108B and 112B are similar to that of respective data memory stages 104A, 108A, and 112A except that they store the imaginary data. in addition to the foregoing, each computational stage is provided with an input register and an output register as an interface between the computational stage and the memories. Thus, in Figure 8 the eight point computational stage 102 has an input register 128 and an output register 130. The computational stage 106 has an input register 132 and an output register 136, and the stage 110 has associated input register 136 and output register 138. 2. The Input and Output Registers of the Computational Stages As was previously mentioned, each computation stage has an associated input memory or register to synchronize data being fed to the processor stage by the preceding data memory stage and to set-up a full complement of data for the computational stage to transform. Each computational stage also has an output memory or register to synchronize the data being fed to the subsequent data memory stage from the computational stage. Figures 10A and 10B respectively illustrate in more detail one embodiment of an input register stage 128 which is the input memory for the 8 point computational stage 102, and one embodiment of an output register stage 138 which is the output memory for the 3 point stage 110. Referring now to Figure 10A, data flows from data memory 100A to a conventional, serially loaded register 140 and from data memory 100B to a conventional, serially loaded register 142. For the specific example, the individual .data words enter the serial register 140 or serial register 142 at an 8MHz rate. Therefore a new set of data is present in the serial registers at a 1MHz rate. When serially loaded, the registers contain eight, 12 bit words which have been serially shifted into eight stages of twelve shift registers (8 twelve bit serial shift registers). The data words (12 bits) in serial registers 140 are read in parallel to 8 conventional twelve bit parallel loaded registers 144 and the words in serial register 142 are read in parallel to eight conventional twelve bit parallel loaded registers 146. The outputs signals from the parallel loaded registers 144 and 146 are tri-state and can thus be multiplexed to the 8 point computational stage by connecting the outputs together and controlling the output enable lines of the registers. Thus each set of eight words is on the input to the 8 point stage 102 for 500 nsec. This represents a 2MHz rate of change of 8 input samples to the 8 point stage. The operation of the input register 132 for the 5 point computational stage 106 and of the input register 136 for the 3 point stage 110 is identical to the operation of input register 118 for the eight point transform except there is less hardware required because there are only 5 and 3 twelve bit input words required, respectively. This reduces the time to obtain a new data set in the serial registers and thus OMP the time that the data is available in parallel to the 5 and 3 point stages. Figure 10B illustrates a mechanization of the output register stage 138 for the 3 point stage 110. Every three clock periods a new set of 3 data words is computed by the 3 point stage 110 and is loaded into the output registers shown in Figure 10B. The corresponding output bits of these three tri-state registers are tied together and multiplexed at the clock rate to the data memory 112A during the time that the 3 point stage is computing a new set of data outputs. A similar register is provided for the memory 112B. The operation of output register 130 for the 8 point stage and of output register 134 for the 5 point stage is identical except that there are 8 and 5 data registers required, respectively, and the new data sets are computed every 8 and 5 clock cycles respectively. There is also a set of registers such as in Figure 10B for the imaginary words that are computed by the 8, 5 and 3 point stages. These feed into data memory 104B, 108B and 112B respectively. Therefore the data rate out of the output register hardware is at the required 8MHz rate in both the real and imaginary channels. 3. The Computational Stages For the 120 Point Processor The computational stages 102, 106 and 110 of Figures 7 and 8 are preferably parallel configuration implementations, i.e., computations are done in parallel as in the generalized forms of the processor stages previously described, because a parallel OMPI configuration is the most efficient configuration for very high data rate small number transforms. The high efficiency of the parallel configuration arises because only a constant (i.e., fixed value) instrastate multiplier is needed for both the real and the imaginary data. Therefore a PROM can be effectively utilized to perform this constant multiplication. The data flow for the 3 point, 5 point and 8 point transforms is illustrated in the flow graphs of Figures 11A, 11B and 11C respectively. One embodiment of the hardware to implement the 3, 5 and 8 point stages is illustrated in Figures 12A, 12B and 12C respectively. It will be seen that in the illustrated embodiments, the 3 point stage requires 18 adders, 4 inverters, 12 2048x4 PROMs, 9 (1x8) registers, and 1- 9316 counter; the 5 point stage requires 51 adders, 12 inverters, 30 2048x4 PROMs, 18 (1x8) registers, and 1- 9316 counter; the 8 point stage requires 81 adders, 26 inverters, 12 2048x4 PROMs, 24 (1x8) registers, and 1- 9316 counter. a) Three Point Stage Decomposition of the 3 point transform according to the present invention yields the following computational steps: (1) compute and store (2) compute and store a ll + a 2I " S l ll " a 2l " S 1I (3) compute and store _ + a lR + a 2R + a OR ~ S OR OMP y (4) compute and store a.- + a 2 _ + a QI = S QI (5) compute: T = S + (cos 2 -1) IR IR 3 T = S~ (sin 2^) II IR 3 ϋ = S~ (sin 2 ~) IR II 3 (6) compute: A QR = s R A QI = S+ χ A 1R * T 1R + S OR + ϋ IR A 1I * "T 1I + S OR + ϋ ll A 2R - T 1R + S OR " U 1R A 2I - T 1I + S θ " l + ϋ ll The flow graph of Figure 11A illustrates a technique for implementing these six steps. The terms in parentheses in Figure 11A represent the signals that appear at particular nodes in terms of the computational steps. It will be seen that one implementation of this flow graph requires a memory and multiplexer at the nodes just after the multipliers, because the data must be reversed before going through the output adds. With reference to the embodiment of the 3 point stage illustrated in Figures 11A and 12A, the data word a« contains a real component a QR and an imaginary component a QI . Similarly, the data word a. OMP contains a real component a. R and an imaginary cαnponent aiγ, and the data word a 2 contains a real component 2R and an imaginary component 2j . Each component is represented by a multi-bit data word (12 bits in this embodiment). Simultaneously, either all the real or all the imaginary data bits (but not both at the same time) of the data words a Q , - and a 2 are supplied from a data source. The data component of data word a Q is applied to an adder 150 and the component of data word a^ is applied to an adder 152 and an adder 154. The component of the data word a 2 is applied to the second input terminal of the adder 152 and through an inverter 156 to the adder 154. The output signal from the adder 152 is applied to the second input terminal of the adder 150 and the output signal from the adder 150 is applied to a register pair 158 (one for real and one for imaginary components) . The output signal from the adder 152 is also supplied to PROM's 160 and the output signals from the PROM's are provided to a register pair 162 (one for real and one for imaginary components). A constant 1 is supplied to the adder 154 and the output of the adder 154 is then fed to a set-of PROM's 164 and then a register pair 166 (one for real and one for imaginary components). The output signals of the register pair 158 are provided as the A Q output signal and are applied to an adder 168. The output signals from the register pair 162 are supplied to the adder 168 and the output signal from the adder.168 is supplied to an adder 170 and to an adder 172. The output signal from the register pair 166, under the control of a counter 174, is supplied to the adder 170 and through an inverter 176 to the adder 172 (which also receives a constant 1 for addition to the sum). The adder 170 output signal is the A, output signal and the adder 172 output is the A j output signal. With continued reference to Figure 12A, first the real components a QR , a, R and a 2R are processed, then the imaginary components a 0I , a^ j and a 2I are processed. The adders are conventional in operation and sum the applied signals. The PROM's are arranged to multiply the input data by constant multipliers (the sine and cosine functions) and the inverters merely invert the data to change its sign. Therefore the register pair 166, preferably a tri-state register, is controlled by the counter 174 and is required to read out first the real and then the imaginary data. First the real components of the data words are processed and stored in the registers 158, 162, and 166. Then the imaginary components of the data are processed and the imaginary and real data resulting therefrcm stored in the registers 158, 162 and 166. When both the real and the imaginary components have thus been processed and stored in the registers, then the real data is read out of the registers and further processed through the adders as illustrated to provide the real component of the A Q , A, and A 2 signals. Then the imaginary data is read out of the registers 158, 162 and 166 and processed in the same manner to provide the imaginary components of the A Q , A, and A 2 signals. b) Five and Eight Point Stages The 5 point.and 8 point stages illustrated in Figures 11B, 12B and 11C, 12C respectively, process the data in a similar manner as heretofore described in connection with the 3 point mechanization illustrated in Figures 11A, 12A. Since more data is being processed in a parallel mode in the 5 point and 8 point mechanizations than in the 3 point mechanization, more hardware is needed and more additions and multiplications take place. However, the terminology is the same and the processing scheme is the same as that already described with reference to the 3 point mechanization and therefore it will not be described in detail. However, the decomposition equations are provided hereinafter to facilitate an understanding of Figures 11B, 11C, 12B and 12C. Decomposition of the 5 point transform yields the following computational steps: (1) compute and store: a χR + a 4R = S+ R , S~ R = a χR -a 4R a 2R * a 2R +a 3R' S 2R = a 2R~ a 3R S 1I = a lI +a 4I' S 1I = a ll " 4I S 2I = a 2l + a 3l' S 2I β a 2I~ a 3l S OR =a OR +a lR +a 2R +a 3R +a 4R S OI =a OI +a lI +a 2l +a 3I +a 4I (2) compute and store: T =S + (cos2 T -1)+S + IR IR 5 OR S + (cos 4 * ^-1) 2R 5 T =S + (cos 4 _ -1)+S + 2R IR 5 OR S + (cos 2 -1) 2R 5 OMP T = S " sin 2 T + II IR 5 S " sin 4 < V~~ 2R . 5 S~~ sin 2 T 2R 5 U = S~ sin 27" + IR II 5 U =S " sin 4?T - S~ sin 2F 2R II ~~ζ~ 21 ~ ~ U = S (cos 2jT -1) + II II S + (cos 4 _ -1) + S + 21 5 OI ϋ = S + (cos 4 c iT -1) + 21 II ~5~ (3) compute: A QR = S+ R , QI = s* χ 1 1R = T ϋ = — + IR ϋ IR' Λ 1I i ll II A 2R * T 2R + U 2R' A 2I " "T 2I + ϋ 2I A 3R " T 2R ~ ϋ 2R' A 3I " T 2I + ϋ 2l A 4R - T 1R " ϋ lR' A 4I * T 1I + ϋ ll Step 1 of this decomposition can be drawn in flow graph form as a set of butterfly adds like the three point input adds of Figure 11A. However, an observation about the computations in step 2 may be made before proceeding. The equations in step 2 may be rewritten as Step (2 1 ): + + cos 2iT ~ - cos 4TT + (s - s ) ( -5 ~ -g~) II 21 2 + + + cos 2 e \T~ cos - j fϊT U = S + (S + S ) ( 5 * ~T~ - 1) 21 OI II 21 2 τ ι∑ = (S χR + S 2R ) sin 4T - 25T 4 c ϊT T 2I = S 1R + S 2R ) Sin 5 ~ (S 2R } (sin 5 + sin 5 2 σ \V U 1R = (S lτ + S 2I ) sin 5 + (By) (sin 5 4TT TFΫΓ 1T ' U 2R = (S 1I + S 2I ) Sin 5 " S 2I } (8in 5 + sin 5 ) Then steps (1), (2 ) and (3) suggest a flow graph as shown in Figure 11B and an implementation shown schematically in Figure 12B. It will be appreciated that the flow graph of Figure 11B is a special case of the generalized computational stage and additionally it should be clear that there are many other arrangements of this flow graph that can be obtained in accordance with the invention. Decomposition of the 8 point transform yields the following computational steps: (1) compute: S+ OR + S 2R " a OR + a 4R + a 2R + a 6R 'OR - S 2R = a OR a 4R " l 2R - a 6R S OR " a OR ~ a 4R S 2R " a 2R " a 6R '01 + S21 * 0I + a 4I + a 2I + a 6I = a '01 - S 21 OI + a 41 - a 21 - a 61 S OI β a OI " a 4I S 2I " a 2I ~ a 6I S IR + S 3R a lR + a 7R + a 3R + a 5R + + S 1R " S 3R a lR + a 7R " a 3R " a 5R S 1R + S 3R ~ a lR " 7R + a 3R " a 5R S 1R " S 3R = a lR "a 7R " a 3R + a 5R S ll + S 3I * a ll + a 7l + a 3l + a 5I S Il + S Il * a H " a 7l + a 3I ' a 5I S 1I " S 3I = a ll " a 7t ~ a 3l + a 5I (2) computes T OR = SOR ÷ 5 ^ ' T A OR = 'IR + S 3R> ' T A 1R = β OR } - λ + + • 2 * /T T„ IR„ = < S IR " S 3R> COS 8 X2 2R = S OR " S 2R> ' X ■ - S OI> ϋ n = S 3 ) cos 8 'II T X2 1I = S 2R> *f T = X 1I S 1R + S 3R } Sin 8 OMH (3) compute: A QR - T E R + T° R l 3R T TE 1R - T T °1R + + ϋ ϋ °lR - U ϋE lR *a7R = T TE IR - + + T T °1R - U U 1°R •ts A 6R T AE — 2R * 4I U OI - U OI L I.I~ = rf 'II. + o '?II, - τ E II - T * 1I 1 3I - ϋ Iι - ϋ + T II - T II II v. π DE 1I + + U ϋ °ll + T E II + T° II V 5I π ^ 2 I - u U °1I - τ TE 1I + τ° II A = U E - T° A 2I 21 2I A 6I * ϋ 2I + T 2I These three steps can be drawn directly in flow graph form for parallel computation of the 8 point transform as shown in Figure 11C and can be implemented as shown in Figure 12C. The discussion above clearly indicates that the decomposition and computations can be performed with parallel small point transforms. Therefore the present invention may be very effectively used for very high data rate processing problems. D. Timing Operation of the Specific 120 Point Example With reference to Figure 8, certain nodes of the block diagram are labeled A, J, _C, J), E ^t JP, G, and J3. The data flowing through the 120-point processor as a function of time, and thus appearing at the lettered nodes at a particular point in time, are given in Table 1 below. The data a k , A^ . G^ s ^ and Hj* p ' s * are as previously defined; the subscript REAL denotes a real data word in contrast to -an imaginary data word, and OMP the subscripts RCl, RC2, RC3 and RC4 denote the source of the data as range cell 1, range cell 2, range cell 3 and range cell 4, respectively. Time is denoted in units of 100 nano-seconds. TABLE 1 Node A Node B Time Data Time Data 0 zero 480 zero 1 a Q ,RCl, REAL 481 a Q ,RCl,REAL 2 a Q ,RC2, REAL 482 a 15 ,RCl,REAL 3 a 0 ,RC3, REAL 483 a 3Q ,RCl,REAL 4 a Q ,RC4, REAL 484 a 45 ,RCl,REAL 5 zero 485 a 6Q ,RCl,REAL 6 a,,RCl, REAL 486 75 ,RCl,REAL 7 a χ ,RC2, REAL 487 a gQ ,RCl,REAL 8 3. • * t Λ / REAL 488 a 1Q5 ,RCl,REAL 9 a χ »RC4 489 zero 10 zero Node C Node D Time Data Time Data 501 G Q θ) ,RCl,REAL 621 G^ θ) ,RCl,REAL 502 G Q 1 ^,RCl,REAL 622 G^,RCl,REAL 504 (3) G Q ,RCl,REAL 624 G^ θ) ,RCl,REAL " OM E PI TABLE 1 (cont.) 505 GQ 4) , RCl, REAL 625 s|°*, RCl, REAL 507 G Q 6) , RCl, REAL 508 G^ 7) , RCl, REAL Node E Node F Time Data Time Data 631 H 0 °' 0) , RCl, REAL 751 H °'° J , RCL, REAL 632 H Q 1,0J , RCl, REAL 752 HJ 0 ' 0 , RCl, REAL 633 H Q 2 ' 0) , RCl, REAL 753 H^°' 0) , RCl, REAL 634 H Q 3,0) , RCl, REAL 635 Hg , RCl, REAL Node G Node H Time Data Time Data 757 A ft , RCl, REAL 877 A Q , RCl, REAL 758 A 4Q , RCl, REAL 878 A , RCl, REAL 59 *B< RCl, REAL 879 A 2 , RCl, REAL It should be noted that the 877 time value for A Q in Table 1 refers to the time delay from the input of the processor to the output of the processor and not how rapidly the next set of data samples comes to the processor, (i.e. , how long it takes before the input data comes out of the other end of the processor and not how fast the input data is entering the processor) . E. Alternative Hardware Implementations of the 120 Point Example The foregoing example illustrates a parallel form of the present invention for a high data rate problem in a relatively simple, clear manner. However, the 120 point processor may be implemented in various other ways in accordance with the invention. The circuit elements could be further reduced. For example, the internal registers in the computational stages could be implemented as 16x4 RAM's. Similarly, the input/output data registers can be configured using 16x4 RAM's rather than 54L5374(lx8) and so forth. For example. Table 2 below indicates the types and amounts of circuit components employed in the 120 point processor described in connection with Figures 7- 12. TABLE 2 Part Data Memory I/O Registers Comp State Total 8pt 5pt 3pt 8 pt 5pt 3pt βpt 5pt 3ρt I ω I Adders 81 51 18 150 Inverters 27 12 4 52 PROM (512x4) 8 PROM (2048x4) 14 34 13 61 Counters __4 It will be noted that certain memory and register changes noted above with a reduction in integrated circuit elements from the 539 shown above in Table 2 to a total of 490. Moreover, a parallel 120-point processor previously described is capable of operation at up to a 24 MHz real data rate although it need only operate at up to a 16 MHz real data rate in the exemplary radar application. This speed potential is therefore under utilized in the example and other techniques such as the serial techniques previously discussed in connection with Figures 2-6 may be utilized. In this regard, several serial processors capable of operating at the same rate as a conventional FFT (e.g., 12MHz) may be used to process data at the high data rate. Therefore, two such processors operating in parallel would be required. Such a serial implementation would receive the input data serially as shown in Figure 2, for example. The input registers associated with each processor stage would vary according to the form of the input data to the serial computational stages and, in fact, these registers would be quite simple in relation to those previously illustrated since the data is being processed sequentially. Moreover, output registers would not be required because the computational stages themselves multiplex the output data in a form suitable for direct application to the data memories. Thus, the serial implementation would be similar to that shown in Figure 8 but with the serial computational stages of Figures 2-6 and without the output registers 130, 134 and 138. The input registers would be simple buffer registers rather than the serial/parallel data arrangements previously OM described. The total number of components for two of these processors utilizing this approach would thus be : TABLE 3 Part Data Memory I/O Registers Comp State Total 8pt 5ρt 3ρt 8pt 5pt 3pt 8pt 5pt 3pt 1024x4 PROM 54 48 28 130 1x8 Register 80 80 48 220 16x4 RAM 6 12 6 24 2048x4 PROM 20 28 20 68 CTRS 2 2 6 6 4 20 256x4 RAM 24 24 48 512x4 PROM 4 4 8 536 IV. COMPARISON OF THE PRESENT PROCESSOR WITH THE STATE OF THE ART FFT PROCESSOR An FFT processor of nearly the same data point processing capabilities (128 point as opposed to 120) and believed representative of the state of the art and using a real followed by an imaginary sequential configuration to reduce the required hardware is illustrated in Figures 13A-13C. Figure 13A illustrates the FFT processor in block diagram form. Figure 13B illustrates the first and second FFT processor stages and Figure 13C illustrates the subsequent processor stages 3-7 in greater detail. The multipliers shown in Figures 13B-13C can be configured as an array of 2x4 multipliers or a multiplexed pair of 12x12 multipliers if the hardware constraint is MIL-SPEC available TTL parts and a 6MHz data rate. The FFT can operate at a complex data rate of about 6MHz with the illustrated configuration. However, the problem is set up as four range cells each requiring a 4MHz real processor. Since range cell data cannot be conveniently split between processors it is necessary to use one FFT for each pair of range cells. Therefore the amount of hardware required for the 128 point FFT to solve the 7MHz real data rate problem is shown in Table 4. TABLE 4 Part Stages Total 1 & 2 12x12 multiplier 0 96 96 96 96 96 480 256x4 RAM 24 24 24 24 24 24 144 256x4 PROM 0 24 24 24 24' 24 120 1x8 Register 50 64 64 64 64 64 370 4 BIT Counter 14 22 22 22 22 22 124 4 BIT adder 24 18 18 18 18 18 114 2:1 multiplexer 18 18 18 18 18 18 108 Inverters 8 4 4 4 4 4 28 1488 This FFT design is based on the use of a 64 pin 12x12 multiplier chip and a 256x4 RAM chip that is a non-standard width. Both of these represent significant technical risk as well as underlying life cycle cost disadvantages. There are standard parts that can replace them that are 24 pins or less and fit into standard socket configuration. However, these alterations (256x1 RAM, 2x4 multiplier) leads to an increased parts count of about 450 chips. Table 5 below provides a chip area comparison of several processor mechanizations of the present OM invention relative to the 128 point FFT. The comparison is shown with and without the 256x4 RAM and the 12x12 multiplier. TABLE 5 Improvement Improvement Transform Size Swift Over 1488 Over 1940 Chips Chip Chip 117 513 2.90/1 3.78/1 120 536 2.78/1 3.62/1 126 526 2.83/1 3.69/1 130 546 2.73/1 3.55/1 132 566 2.63/1 3.43/1 136 523 2.85/1 3.71/1 When the foregoing table of components for the FFT processor is compared to the table of components required for the processor according to the present invention, it can be readily seen that the present processor requires less than 2/5 of the hardware (in equivalent chips) of the FFT approach. Further, since the FFT approach requires N to be a power of 2, only ten such N-point processors can be implemented by the FFT approach for N up to 1024. However, with the approach of the subject invention, all integer transform lengths are available. Table 5 illustrates several of the most efficient SWIFT choices in the vicinity of 128 points. Modifications and variations of the present invention are possible in light of the above f OπMPiI teachings. It is therefore to be understood that within the scope of the appended claims the invention may be practiced otherwise than as specifically described, and that all the matter contained in the above description and shown in the accompanying drawings shall be construed as illustrative and not in a limiting sense.

Claims: WHAT IS CLAIMED IS; 1. A processor for processing input data comprising N discrete samples a^ (i = 0,1,2,...,N- 1) of a quantized time domain signal having real components a iR and imaginary components a^ j in order to determine the frequency content thereof, CHARACTERIZED IN THAT it comprises a computational stage having:: means connected to receive signals representing the real and imaginary components for calculating respective sums and differences (s iR , S QR , S QR and S iR ) of the real components of the input data and for calculating respective sums and differences ( S il ' S 0I ' S θϊ and S il) of tlle iπιa 9inary components of the input data; first data storage means for storing said sums and differences of the real and imaginary components of the input data and for retrieving the stored sums and differences of the real and imaginary components in a first predetermined order; means connected to receive said retrieved sums and differences of the real and imaginary components, in said first predetermined order, for multiplying the retrieved sums and differences by predetermined constant values and for summing the products with at least some of the retrieved sums and differences to . E .0 E O produce partial suras (τ bR , T feR , U bR , ϋ bR , E O E O. τ i » τ i ' ϋ bl ' T bI' of the respective real and imaginary components; second data storage means for storing the partial sums as they are produced and for retrieving the stored partial sums in accordance with a second predetermined order of retrieval in order to separately retrieve the partial suras of the real and imaginary components, respectively; and means for calculating the sums and differences of the partial sums of the respective real components and the respective imaginary components of the data retrieved from said second storage means to produce real and imaginary output data representing the frequency content of the time domain signal. 2. The processor of claim 1 wherein the N discrete samples are processed by L and M point transforms, where L and M are relatively prime numbers having a product equal to N, said processor including third data storage means for supplying the real and the imaginary components of the quantized time domain signal in a third predetermined order in which the component positions are circularly rotated by a predetermined number of positions, and wherein said sum and difference calculating means is connected to receive the circularly rotated real and imaginary components from said third data storage means. 3. The processor of claim 2 wherein said third data storage means comprises a first selectively addressable memory, and controller means for selectively addressing said first memory to retrieve the real and imaginary components in said third - U E MPI predetermined order wherein the order of the data has been circularly rotated by q positions Where q is a solution to the equation q L-b M+l « 0, where b is representative of the reordering of the real and imaginary output data of the N point transform. 4. The processor of claim 1 wherein said first data storage means comprises a selectively addressable memory, and controller means for selectively addressing said memory to retrieve the sums and differences of the real and imaginary components of the input data in said first predetermined order comprising the sequence — + - + — + — S θt ' S OR ' S iR * S iR ' S 0I * S 0I ' S il ' S il ' 5. The processor of claim 1 wherein said second data storage means comprises a second selectively addressable memory, and controller means for selectively addressing said second memory to separately retrieve the partial sums of the real and imaginary components in said second predetermined order. 6. A processor for processing N discrete samples of a quantized time domain signal to determine • the frequency content thereof CHARACTERIZED IN THAT it comprises: first data memory stage for storing the discrete samples of the quantized time domain .signal and for retrieving said stored samples in a predetermined order in which component positions are circularly rotated by a predetermined number of positions from the order of storage thereof; an L-point computational stage receiving the retrieved samples of the quantized time domain signal from said first data memory stage and calculating real and imaginary output signals representing the solution to an L-point Discrete Fourier Transform; a second data memory stage for storing the real and imaginary output signals from said L- point computational stage; and an M point computational stage, where N = LM and L and M are relatively prime numbers, for receiving the output signals and calculating real and imaginary output signals representing the solution to -an LM point Discrete Fourier Transform.

Inventors: SMITH WINTHROP W JR, SMITH, WINTHROP, W., JR.
Applicants: MARTIN MARIETTA CORP, MARTIN MARIETTA CORPORATION
Application year: 1981
Main classification: G06F15
IPC codes: G06F17