Optimized discrete fourier transform method and apparatus using prime factor algorithm
Claim Score by NHIP
Abstract
An apparatus and method for DFT processing using prime factor algorithm (PFA) on a selected number P of midamble chip values received by a CDMA receiver, where P has a plurality M of relatively prime factors F, and the DFT process is divided into M successive F-point DFT processes. The P data values are retrieved from a single input port memory and selectively permuted by a controller into parallel caches to optimize factoring with associated twiddle factors stored in parallel registers. The permuted inputs are factored in two or more parallel PFA circuits that comprise adders and multipliers arranged to accommodate any size F-point DFT. The outputs of the PFA circuits are processed by consolidation circuitry in preparation for output permutation of the values which are sent to memory for subsequent DFT cycles.

Term
Term ended
Projected expiry passed 11 May 2022, 4.4 years ago.
- Priority and filed
- Published
- Projected expiry
- Today
11 claims: 1 independent, 10 dependent
- 1Broadest claimClaim Score 36, narrow(NHIP)An apparatus for DFT processing of a selected number P of data values where P has a plurality of relatively prime factors N i , for i=1 to M, where ∏ i = 1 M N i = P , comprising:a memory for storing P data values;selectively controlled DFT processing circuitry for processing data values in groups of a selected number K;said processing circuitry having a plurality of associated input devices for receiving successive groups of K data values from said memory for DFT processing;and a control circuit for inputting P data values from said memory for M consecutive iterations, one for each factor N i , such that K=N i and P/N i groups of data values are processed for each iteration.
65 paragraphs in 4 sections, as filed
BACKGROUND
P-0001[0001] The invention generally relates to discrete Fourier transforms (DFT). In particular, the invention relates to an apparatus and method using a prime factor algorithm (PFA) implementation of DFT components.
P-0002[0002] In CDMA wireless communications between a base station and a user equipment (UE), channel estimation is performed on the midamble section of the CDMA time slot. Depending on the system burst type, the period length Lm for a typical CDMA midamble is either 256 or 512 chips. However, a portion P of the midamble that is digitally processed for channel estimation is trimmed, such as to 192 or 456 chips respectively, to eliminate the potential bleeding of the adjacent data burst data into the midamble that would corrupt the channel estimation.
P-0003[0003] The Discrete Fourier Transform (DFT) is a popular mathematical tool that converts the input signal from the discrete time domain to the discrete frequency domain, defined by Equation 1: <maths id="MATH-US-00001" num="1"><math overflow="scroll"><mtable><mtr><mtd><mrow><mrow><mi>X</mi><mo></mo><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow><mo>=</mo><mrow><munderover><mo>∑</mo><mrow><mi>K</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>N</mi><mo>-</mo><mn>1</mn></mrow></munderover><mo></mo><mstyle><mtext> </mtext></mstyle><mo></mo><mrow><mrow><mi>x</mi><mo></mo><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mrow><mo>·</mo><msup><mi>W</mi><mi>nk</mi></msup></mrow></mrow></mrow></mtd><mtd><mrow><mi>Equation</mi><mo></mo><mstyle><mtext> </mtext></mstyle><mo></mo><mn>1</mn></mrow></mtd></mtr></mtable></math><img file="US20030195911A1-20031016-M00001.TIF" id="EMI-M00001" he="24.97635" wi="216.027" img-format="tif" img-content="mf" /><attachments><attachment idref="MATHEMATICA-00001" attachment-type="nb" file="US20030195911A1-20031016-M00001.NB" /></attachments></maths>
P-0004[0004] where W<sup>nk</sup>=e<sup>−j2πnk/N </sup>represents a twiddle factor, with real and imaginary portions cos(2πnk/N) and sin(2πnk/N), respectively.
P-0005[0005] When N points are processed using DFT, the number of operations needed to complete the processing are of the order N<sup>2</sup>. Using a radix 2 Fast Fourier Transform (FFT) to process a digital signal with N points, the number of operations is considerably less at an order of N log (N). However, there is a drawback in taking advantage of the faster radix 2 FFT method, since the input must be padded with zeros for cases where the number N points to be processed is not of the order 2<sup>N </sup>(radix 2), such as for P=192 or 456. By artificially adding zeros to the input signal, the channel estimation becomes more of an approximation since the processing is then performed in a set of values that do not truly represent the signal.
P-0006[0006] A solution is to decompose the digital signal processing by using smaller matrices of sizes based on the prime factors of P, which results in a method with the accuracy of DFT and with significantly less operations closer to that of FFT method.
P-0007[0007] Minimizing memory hardware space is a primary concern within a CDMA receiver. Rather then gaining the benefit of operation efficiency through multiple parallel input/output ports, memory with a reduced number of ports such as single or dual port memory are commonly used instead. When data points are stored across a multitude of addresses, with limited input/output (I/O) ports, the hardware becomes the limiting factor for the data processing and retrieving the data to perform computations may require repeated memory accesses, which is inefficient. Thus, during the DFT process, it is desirable to perform as many operations as possible on a piece of data in order to retrieve it less often, with minimal hardware under the limited access constraints.
SUMMARY
P-0008[0008] An apparatus and method for DFT processing that uses prime factor algorithm (PFA) on a selected number P of midamble chip values received by a CDMA receiver, where P has a plurality M of relatively prime factors F, and the DFT process is divided into M successive F-point DFT processes. During each F-point DFT, the P data values are retrieved from a single port memory and selectively permuted by a controller into parallel caches to optimize factoring with associated twiddle factors stored in parallel registers. The permuted inputs are factored in two or more parallel PFA circuits that comprise adders and multipliers arranged to accommodate any size F-point DFT. The outputs of the PFA circuits are processed by consolidation circuitry in preparation for output permutation of the values which are sent to memory. Once all of the P values are processed for the first of M DFT cycles, the process is repeated for the remaining M cycles using the remaining F values. Operations and hardware are minimized by the input permutation which takes advantage of the inherent symmetries of twiddle factors.
BRIEF DESCRIPTION OF THE DRAWINGS
P-0009[0009]FIG. 1 shows a block diagram of a channel estimation process that includes DFT.
P-0010[0010]FIG. 2A shows the angular division for an 8-point DFT for points N<b>0</b>-N<b>7</b>.
P-0011[0011]FIG. 2B shows a real and imaginary twiddle factors for an 8-point DFT for twiddle sets <b>0</b>-<b>7</b> and points N<b>0</b>-N<b>7</b>.
P-0012[0012]FIG. 2C shows the optimized factoring equations for real and imaginary portions of an 8-point DFT process.
P-0013[0013]FIG. 3A shows the angular division for a 19-point DFT with points N<b>0</b>-N<b>18</b>.
P-0014[0014]FIG. 3B shows the real twiddle factors for twiddle sets <b>0</b>-<b>18</b> and points N<b>0</b>-N<b>18</b>.
P-0015[0015]FIG. 3C shows the imaginary twiddle factors for twiddle sets <b>0</b>-<b>18</b> and points N<b>0</b>-N<b>18</b>.
P-0016[0016]FIG. 3D shows the optimized factoring equations for real and imaginary portions of a 19-point DFT process.
P-0017[0017]FIG. 4A shows the process flow diagram for a 456-point DFT process using PFA.
P-0018[0018]FIG. 4B shows a process flow diagram for a 192-point DFT process using PFA.
P-0019[0019]FIG. 5 shows a block diagram of the circuit used to perform the modified DFT process in accordance with the present invention.
P-0020[0020]FIG. 6A shows a block diagram of a circuit used to perform a PFA function within the circuit shown in FIG. 5.
P-0021[0021]FIG. 6B shows an alternative embodiment of the circuit shown in FIG. 6A.
P-0022[0022]FIG. 7 shows the timing of data flow for an 8-point DFT through the various stages of the circuit shown in FIG. 5.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
P-0023[0023] The optimized DFT process described herein can be utilized by any apparatus, system or process suitable for signal processing. Although the preferred application uses optimized DFTs for channel estimation in a communication system base station or UE, it may be applied to other DFT applications, including, but not limited to, multi-user detection at either a base station or UE.
P-0024[0024]FIG. 1 shows a block diagram of a channel estimation process as found in a CDMA receiver, such as for a base station or UE, and using a multiuser detector (MUD). The MUD is used to estimate data for multiple users' communications. Initialization software <b>10</b> is executed in every handoff of a UE from one base station to another. During initialization, the discrete Fourier transform (DFT) of each complex basic midamble code is computed and saved. A complex basic midamble code <b>101</b> represents an ideal predetermined midamble used as the reference for comparison of the received signal when performing channel estimation. The midamble <b>101</b> values are passed through reverse order block <b>102</b>, a DFT block <b>103</b> stored in memory, multiplied by a value P that represents the number of points to be processed, and then the reciprocal <b>105</b> of the output is calculated to complete the initialization process.
P-0025[0025] The received communication burst <b>106</b> is processed by algorithm <b>20</b> as shown in FIG. 1. As shown in FIG. 1, the number of values in the received signal's midamble, represented by a length Lm, is reduced to a portion P of values that are operated on during the estimation process. Portion P of the midamble is received by block <b>110</b> which performs the function (P×IDFT), where IDFT represents the inverse DFT process. The complex conjugate operations <b>107</b>, <b>108</b> are performed on the DFT of the midamble values prior to the DFT <b>109</b> and following the DFT <b>109</b>, respectively, to create the inverse DFT <b>110</b>. A DFT <b>112</b> is performed on the product of the initialization <b>10</b> results and the midamble processing <b>20</b> results to produce a joint channel response <b>113</b>. This entire process can be shown as Equation 2. <maths id="MATH-US-00002" num="2"><math overflow="scroll"><mtable><mtr><mtd><mrow><mrow><mrow><mo>[</mo><mrow><msub><mi>h</mi><mrow><mn>0</mn><mo></mo><mstyle><mtext> </mtext></mstyle></mrow></msub><mo></mo><msub><mi>h</mi><mn>1</mn></msub><mo></mo><mstyle><mtext> </mtext></mstyle><mo></mo><mi>…</mi><mo></mo><mstyle><mtext> </mtext></mstyle><mo></mo><msub><mi>h</mi><mrow><mi>p</mi><mo>-</mo><mn>1</mn></mrow></msub></mrow><mo>]</mo></mrow><mo>=</mo><mrow><mi>DFT</mi><mo></mo><mrow><mo>(</mo><mrow><mo>[</mo><mrow><mfrac><msub><mi>b</mi><mn>0</mn></msub><mrow><mi>P</mi><mo>·</mo><msub><mi>a</mi><mn>0</mn></msub></mrow></mfrac><mo></mo><mstyle><mtext> </mtext></mstyle><mo></mo><mfrac><msub><mi>b</mi><mn>1</mn></msub><mrow><mi>P</mi><mo>·</mo><msub><mi>a</mi><mn>1</mn></msub></mrow></mfrac><mo></mo><mstyle><mtext> </mtext></mstyle><mo></mo><mi>…</mi><mo></mo><mstyle><mtext> </mtext></mstyle><mo></mo><mfrac><msub><mi>b</mi><mrow><mi>P</mi><mo>-</mo><mn>1</mn></mrow></msub><mrow><mi>P</mi><mo>·</mo><msub><mi>a</mi><mrow><mi>P</mi><mo>-</mo><mn>1</mn></mrow></msub></mrow></mfrac></mrow><mo>]</mo></mrow><mo>)</mo></mrow></mrow></mrow><mo>,</mo></mrow></mtd><mtd><mrow><mi>Equation</mi><mo></mo><mstyle><mtext> </mtext></mstyle><mo></mo><mn>2</mn></mrow></mtd></mtr></mtable></math><img file="US20030195911A1-20031016-M00002.TIF" id="EMI-M00002" he="18.96615" wi="216.027" img-format="tif" img-content="mf" /><attachments><attachment idref="MATHEMATICA-00002" attachment-type="nb" file="US20030195911A1-20031016-M00002.NB" /></attachments></maths>
P-0026[0026] where [b<sub>i</sub>]<sub>i=0</sub><sup>P−1 </sup>is the DFT of the complex conjugated received midamble signal R<sub>i</sub>,
[<i>b</i><sub>0</sub><i>b</i><sub>1 </sub><i>. . . b</i><sub>P−1</sub><i>]=DFT</i>([<i>r</i><sub>i</sub>]<sub>i=0</sub><sup>P−1</sup>) Equation 3
P-0027[0027] and [a<sub>i</sub>]<sub>i=0</sub><sup>P−1 </sup>is the DFT of the complex basic midamble code m<sub>i </sub>
[<i>a</i><sub>0</sub><i>a</i><sub>1 </sub><i>. . . a</i><sub>P−1</sub><i>]=DFT</i>([<i>m</i><sub>P</sub><i>m</i><sub>P−1 </sub><i>. . . m</i><sub>1</sub>]) Equation 4
P-0028[0028] The DFT optimizations presented hereafter pertain to DFT blocks <b>109</b>, <b>112</b> as shown in FIG. 1. The first form of optimization to the DFT in accordance with the present invention is to accelerate the processing by taking advantage of quicker prime number computations using a prime factor algorithm (PFA). A PFA can be used when the number of processed values P is divisible by factors F that are prime relative to one another. The algorithm can be divided into separate modules for separate permutations repeated P/F times. For example, for P=456, three possible prime factors are F<b>1</b>=3, F<b>2</b>=8 and F<b>3</b>=19, where 3×8×19=456. At a first module M<b>1</b>, a 3-point DFT is repeated 8×9=152 times; at a second module M<b>2</b>, an 8-point DFT is repeated 3×19=57 times; and at a third module M<b>3</b>, a 19-point DFT is repeated 3×8=24 times. Accordingly, for a value P=456, using a PFA optimizes the DFT process by reducing the number of operations, since (3*152)+(8*57)+(19*24)=1368, which is significantly less than P<sup>2</sup>=207,936.
P-0029[0029] A second form of DFT optimization is achieved by aligning the N points of the DFT that have common twiddle factors and twiddle sets. As shown in FIG. 2A, the angular division for an 8-point DFT has a notable angular symmetry between points N<b>1</b> and N<b>7</b>, N<b>2</b> and N<b>6</b>, and N<b>3</b> and N<b>5</b>. Each DFT output can be considered an input row vector multiplied by the twiddle factor set column vector. These twiddle vectors have both an inter-twiddle set and an intra-twiddle set symmetry that optimize the DFT by requiring fewer multiplications. The intra twiddle factor set symmetry can be seen in FIG. 2B where the columns for points N<b>3</b> and N<b>5</b>, N<b>2</b> and N<b>6</b>, and N<b>1</b> and N<b>7</b> have symmetry due to their angular relationship. Similarly, there is symmetry for the imaginary twiddle factors except that the values in the columns for points N<b>5</b>, N<b>6</b> and N<b>7</b> are the negative of the values in columns for points N<b>3</b>, N<b>2</b> and N<b>1</b>, respectively. Inter-twiddle factor set symmetry is shown for the real twiddle factors in FIG. 2B for twiddle sets <b>3</b> and <b>5</b>, <b>2</b> and <b>6</b>, and <b>1</b> and <b>7</b>. For the imaginary twiddle factors, the same sets are symmetrical except that sets <b>5</b>, <b>6</b>, <b>7</b> are the opposite sign of sets <b>3</b>, <b>2</b>, <b>1</b>. Using these symmetries, FIG. 2C shows the reduced number of DFT calculations for the real and imaginary portions of the signal, where cos(k<sub>i</sub>) and sin(k<sub>i</sub>) represent the real and imaginary twiddle factors respectively, X<sub>R</sub>(<b>0</b> . . . <b>7</b>) represent the real values for points N<b>0</b> to N<b>7</b> of the 8 point DFT and X<sub>I</sub>(<b>0</b> . . . <b>7</b>) represent the imaginary values. As shown in FIG. 2C, there are five twiddle factors cos(k<sub>0</sub>) through cos(k<sub>4</sub>) and four twiddle factors sin(k<sub>1</sub>) through sin(k<sub>4</sub>). By aligning the values X<sub>R</sub>, X<sub>I </sub>with common twiddle factors in this way, about half as many operations need to be performed since otherwise there would be processing of twiddle sets for k<sub>0 </sub>through k<sub>7</sub>. Thus, a 4× speed improvement can be realized by taking advantage of both inter-twiddle set and intra-twiddle set optimizations.
P-0030[0030]FIGS. 3A, 3B, <b>3</b>C and <b>3</b>D pertain to a 19 point DFT, which is similar to the 8-point DFT shown in FIGS. 2A, 2B and <b>2</b>C. It is worth noting that the odd-size 19-point DFT in which only the point N<b>0</b> is not symmetrical with any of the remaining 18 points. This means that unlike the even size 8-point DFT, which has two asymmetrical points, N<b>0</b> and N<b>4</b>, an odd size DFT provides added efficiency with only one asymmetrical point and one less extra calculation set to be performed. As shown in FIGS. 3B and 3C, twiddle sets <b>1</b>-<b>9</b> are representative for the remaining twiddle sets <b>10</b>-<b>18</b>. Also, the nine columns for DFT points N<b>1</b>-N<b>9</b> are symmetric to the columns for points N<b>10</b>-N<b>18</b>, rendering the latter set as redundant and unnecessary for storage as coefficients for the calculation. Turning to FIG. 3D, the optimized set for the input of the 19 point DFT is shown where the real twiddle factors cos(k<sub>i</sub>) are a reduced set of 10 from an un-optimized set of 19 and the imaginary twiddle factors sin(k<sub>i</sub>) are reduced to a set of 9. Since sin(k<sub>0</sub>)=0, this twiddle factor is omitted, leaving nine imaginary twiddle factors.
P-0031[0031] The efficient grouping of operations as shown for 8-point and 19-point DFTs in FIGS. 2C and 3D is generally described as: <maths id="MATH-US-00003" num="3"><math overflow="scroll"><mtable><mtr><mtd><mtable><mtr><mtd><mrow><mi>real</mi><mo>=</mo><mi /><mo></mo><mrow><mrow><mrow><msub><mi>X</mi><mi>R</mi></msub><mo></mo><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow></mrow><mo></mo><mi>cos</mi><mo></mo><mstyle><mtext> </mtext></mstyle><mo></mo><mrow><mo>(</mo><msub><mi>k</mi><mn>0</mn></msub><mo>)</mo></mrow></mrow><mo>+</mo><mrow><munderover><mo>∑</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mrow><mo>⌈</mo><mfrac><mi>F</mi><mn>2</mn></mfrac><mo>⌉</mo></mrow></munderover><mo></mo><mstyle><mtext> </mtext></mstyle><mo></mo><mrow><mrow><mo>(</mo><mrow><mrow><msub><mi>X</mi><mi>R</mi></msub><mo></mo><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow></mrow><mo>+</mo><mrow><msub><mi>X</mi><mi>R</mi></msub><mo></mo><mrow><mo>(</mo><mrow><mi>F</mi><mo>-</mo><mi>i</mi></mrow><mo>)</mo></mrow></mrow></mrow><mo>)</mo></mrow><mo></mo><mi>cos</mi><mo></mo><mstyle><mtext> </mtext></mstyle><mo></mo><mrow><mo>(</mo><msub><mi>k</mi><mi>i</mi></msub><mo>)</mo></mrow></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mrow><msub><mi>X</mi><mi>I</mi></msub><mo></mo><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow></mrow><mo>+</mo><mrow><msub><mi>X</mi><mi>I</mi></msub><mo></mo><mrow><mo>(</mo><mrow><mi>F</mi><mo>-</mo><mi>i</mi></mrow><mo>)</mo></mrow></mrow></mrow><mo>)</mo></mrow><mo></mo><mi>sin</mi><mo></mo><mstyle><mtext> </mtext></mstyle><mo></mo><mrow><mo>(</mo><msub><mi>k</mi><mi>i</mi></msub><mo>)</mo></mrow></mrow></mrow></mrow></mtd></mtr><mtr><mtd><mrow><mi>imag</mi><mo>=</mo><mi /><mo></mo><mrow><mrow><mrow><msub><mi>X</mi><mi>R</mi></msub><mo></mo><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow></mrow><mo></mo><mi>sin</mi><mo></mo><mstyle><mtext> </mtext></mstyle><mo></mo><mrow><mo>(</mo><msub><mi>k</mi><mn>0</mn></msub><mo>)</mo></mrow></mrow><mo>+</mo><mrow><munderover><mo>∑</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mrow><mo>⌈</mo><mfrac><mi>F</mi><mn>2</mn></mfrac><mo>⌉</mo></mrow></munderover><mo></mo><mstyle><mtext> </mtext></mstyle><mo></mo><mrow><mrow><mo>(</mo><mrow><mrow><msub><mi>X</mi><mi>I</mi></msub><mo></mo><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow></mrow><mo>+</mo><mrow><msub><mi>X</mi><mi>I</mi></msub><mo></mo><mrow><mo>(</mo><mrow><mi>F</mi><mo>-</mo><mi>i</mi></mrow><mo>)</mo></mrow></mrow></mrow><mo>)</mo></mrow><mo></mo><mrow><mi>sin</mi><mo></mo><mrow><mo>(</mo><msub><mi>k</mi><mi>i</mi></msub><mo>)</mo></mrow></mrow></mrow></mrow><mo>-</mo><mrow><mrow><mo>(</mo><mrow><mrow><msub><mi>X</mi><mi>R</mi></msub><mo></mo><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow></mrow><mo>-</mo><mrow><msub><mi>X</mi><mi>R</mi></msub><mo></mo><mrow><mo>(</mo><mrow><mi>F</mi><mo>-</mo><mi>i</mi></mrow><mo>)</mo></mrow></mrow></mrow><mo>)</mo></mrow><mo></mo><mrow><mi>cos</mi><mo></mo><mrow><mo>(</mo><msub><mi>k</mi><mi>i</mi></msub><mo>)</mo></mrow></mrow></mrow></mrow></mrow></mtd></mtr><mtr><mtd><mrow><mi /><mo></mo><mrow><mi>for</mi><mo></mo><mstyle><mtext> </mtext></mstyle><mo></mo><mi>add</mi><mo></mo><mstyle><mtext> </mtext></mstyle><mo></mo><mi>P</mi><mo></mo><mstyle><mtext> </mtext></mstyle><mo></mo><mrow><mi>and</mi><mo>:</mo></mrow></mrow></mrow></mtd></mtr></mtable></mtd><mtd><mrow><mrow><mi>Eq</mi><mo>.</mo><mstyle><mtext> </mtext></mstyle><mo></mo><mn>5</mn></mrow><mo>,</mo><mn>6</mn></mrow></mtd></mtr><mtr><mtd><mtable><mtr><mtd><mrow><mi>real</mi><mo>=</mo><mi /><mo></mo><mrow><mrow><mrow><msub><mi>X</mi><mi>R</mi></msub><mo></mo><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow></mrow><mo></mo><mi>cos</mi><mo></mo><mstyle><mtext> </mtext></mstyle><mo></mo><mrow><mo>(</mo><msub><mi>k</mi><mn>0</mn></msub><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mrow><msub><mi>X</mi><mi>R</mi></msub><mo></mo><mrow><mo>(</mo><mfrac><mi>F</mi><mn>2</mn></mfrac><mo>)</mo></mrow></mrow><mo></mo><mi>cos</mi><mo></mo><mstyle><mtext> </mtext></mstyle><mo></mo><mrow><mo>(</mo><msub><mi>k</mi><mfrac><mi>F</mi><mn>2</mn></mfrac></msub><mo>)</mo></mrow></mrow><mo>+</mo><mrow><munderover><mo>∑</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mrow><mfrac><mi>F</mi><mn>2</mn></mfrac><mo>-</mo><mn>1</mn></mrow></munderover><mo></mo><mrow><mrow><mo>(</mo><mstyle><mtext> </mtext></mstyle><mo></mo><mrow><mrow><msub><mi>X</mi><mi>R</mi></msub><mo></mo><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow></mrow><mo>+</mo><mrow><msub><mi>X</mi><mi>R</mi></msub><mo></mo><mrow><mo>(</mo><mrow><mi>F</mi><mo>-</mo><mi>i</mi></mrow><mo>)</mo></mrow></mrow></mrow><mo>)</mo></mrow><mo></mo><mi>cos</mi><mo></mo><mstyle><mtext> </mtext></mstyle><mo></mo><mrow><mo>(</mo><msub><mi>k</mi><mi>i</mi></msub><mo>)</mo></mrow></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mrow><msub><mi>X</mi><mi>I</mi></msub><mo></mo><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow></mrow><mo>-</mo><mrow><msub><mi>X</mi><mi>I</mi></msub><mo></mo><mrow><mo>(</mo><mrow><mi>F</mi><mo>-</mo><mi>i</mi></mrow><mo>)</mo></mrow></mrow></mrow><mo>)</mo></mrow><mo></mo><mi>sin</mi><mo></mo><mstyle><mtext> </mtext></mstyle><mo></mo><mrow><mo>(</mo><msub><mi>k</mi><mi>i</mi></msub><mo>)</mo></mrow></mrow></mrow></mrow></mtd></mtr><mtr><mtd><mrow><mi>imag</mi><mo>=</mo><mi /><mo></mo><mrow><mrow><mrow><msub><mi>X</mi><mi>R</mi></msub><mo></mo><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow></mrow><mo></mo><mi>sin</mi><mo></mo><mstyle><mtext> </mtext></mstyle><mo></mo><mrow><mo>(</mo><msub><mi>k</mi><mn>0</mn></msub><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mrow><msub><mi>X</mi><mi>R</mi></msub><mo></mo><mrow><mo>(</mo><mfrac><mi>F</mi><mn>2</mn></mfrac><mo>)</mo></mrow></mrow><mo></mo><mi>sin</mi><mo></mo><mstyle><mtext> </mtext></mstyle><mo></mo><mrow><mo>(</mo><msub><mi>k</mi><mfrac><mi>F</mi><mn>2</mn></mfrac></msub><mo>)</mo></mrow></mrow><mo>+</mo><mrow><munderover><mo>∑</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mrow><mfrac><mi>F</mi><mn>2</mn></mfrac><mo>-</mo><mn>1</mn></mrow></munderover><mo></mo><mrow><mrow><mo>(</mo><mstyle><mtext> </mtext></mstyle><mo></mo><mrow><mrow><msub><mi>X</mi><mi>I</mi></msub><mo></mo><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow></mrow><mo>+</mo><mrow><msub><mi>X</mi><mi>I</mi></msub><mo></mo><mrow><mo>(</mo><mrow><mi>F</mi><mo>-</mo><mi>i</mi></mrow><mo>)</mo></mrow></mrow></mrow><mo>)</mo></mrow><mo></mo><mi>sin</mi><mo></mo><mstyle><mtext> </mtext></mstyle><mo></mo><mrow><mo>(</mo><msub><mi>k</mi><mi>i</mi></msub><mo>)</mo></mrow></mrow></mrow><mo>-</mo><mrow><mrow><mo>(</mo><mrow><mrow><msub><mi>X</mi><mi>R</mi></msub><mo></mo><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow></mrow><mo>-</mo><mrow><msub><mi>X</mi><mi>R</mi></msub><mo></mo><mrow><mo>(</mo><mrow><mi>F</mi><mo>-</mo><mi>i</mi></mrow><mo>)</mo></mrow></mrow></mrow><mo>)</mo></mrow><mo></mo><mi>cos</mi><mo></mo><mstyle><mtext> </mtext></mstyle><mo></mo><mrow><mo>(</mo><msub><mi>k</mi><mi>i</mi></msub><mo>)</mo></mrow></mrow></mrow></mrow></mtd></mtr></mtable></mtd><mtd><mrow><mrow><mi>Eq</mi><mo>.</mo><mstyle><mtext> </mtext></mstyle><mo></mo><mn>7</mn></mrow><mo>,</mo><mn>8</mn></mrow></mtd></mtr></mtable></math><img file="US20030195911A1-20031016-M00003.TIF" id="EMI-M00003" he="137.0439" wi="332.2053" img-format="tif" img-content="mf" /><attachments><attachment idref="MATHEMATICA-00003" attachment-type="nb" file="US20030195911A1-20031016-M00003.NB" /></attachments></maths>
P-0032[0032] for even P.
P-0033[0033]FIG. 5 shows a block diagram of a circuit for the modified DFT process. Block <b>501</b> represents memory used to store the portion P of midamble chips. A controller <b>560</b>, preferably a memory enable, selectively processes the set of P values according to which F-point DFT module is currently in use. This occurs by way of MUX <b>561</b> which retrieves the P values from memory <b>501</b>, and distributes the P values to the next stage. Between stages <b>1</b> and <b>2</b>, the set of P values are processed in groups of N, where N=F, and subsequently transmitted through ports <b>562</b>, <b>563</b> to memory caches <b>502</b> and <b>503</b>, preferably RAM. Caches <b>502</b>, <b>503</b> retrieve the chip values into input registers <b>572</b>, <b>573</b> and distribute them as an input permutation at stage <b>3</b> from output registers <b>582</b>, <b>583</b> simultaneously with predetermined twiddle factors stored in memory <b>504</b> and <b>505</b>, preferably ROM, to produce the optimized DFT function using the aforementioned parallel efficiencies. The twiddle values are distributed at stage <b>3</b> from output registers <b>574</b>,<b>575</b>.
P-0034[0034] This permutation for the modified DFT can be expressed by general equations 9 and 10.
Input Address=(<i>n</i>1*<i>T</i>1*<i>F+n</i>2*<i>F′)Mod(Input Data Size)</i> Equation 9
Output Address=(<i>n</i>1*<i>T</i>1*<i>F+n</i>2*<i>T</i>2*<i>F′)Mod(Input Data Size)</i> Equation 10
P-0035[0035] where
P-0036[0036] F=The factor used as the DFT size.
P-0037[0037] F′=Number of DFT repetitions (Input Data Size/DFT Size)
P-0038[0038] T1 is solved for F*T1 Mod F′=1
P-0039[0039] T2 is solved for F′*T2 Mod F=1
P-0040[0040] n1=1 to F′, incrementing for each new DFT
P-0041[0041] n2=1 to F, incrementing through the points in each DFT
P-0042[0042] This calculation is done separately for each factor F of the data size. For the 456 input data size process divided into three modules of 3, 8 and 19 point DFTs, the above variables are:
P-0043[0043] F=3, 8, or 19
P-0044[0044] F′=456/3, 456/8, or 456/19
P-0045[0045] n1=1 to 152, 1 to 57, or 1 to 24
P-0046[0046] n2=1 to 3, 1 to 8, or 1 to 19
P-0047[0047] Returning to FIG. 5, input registers <b>506</b>-<b>511</b> receive the input permutation at stage <b>4</b> in order for the PFA circuits <b>520</b>, <b>521</b> to perform the F-point DFT processing. By using two parallel PFA circuits <b>520</b>,<b>521</b>, in tandem with two twiddle registers <b>504</b>, <b>505</b>, this modified DFT process has double the capacity of a normal DFT process. Adders <b>531</b>-<b>538</b> work in conjunction with registers <b>541</b>-<b>548</b> to perform a running summation of PFA circuit <b>520</b>, <b>521</b> outputs for a single twiddle set. Once the sum associated with operations for a single twiddle set is completed at stage <b>5</b>, the result is sent at stage <b>6</b> to a corresponding output register <b>551</b>-<b>558</b>. A register <b>565</b> at stage <b>7</b> temporarily stores the PFA outputs <b>599</b> to be sent through the single port to memory <b>501</b>.
P-0048[0048]FIG. 4A shows the flow diagram for the entire process of a <b>456</b> point DFT using PFA as performed by DFT blocks <b>109</b>, <b>112</b> of FIG. 1. In process <b>401</b>, the received midamble chip values begin to be retrieved from memory one value at a time and loaded into temporary memory output register <b>561</b> and then to two single port data cache input registers <b>572</b>, <b>573</b>. Next in process <b>402</b>, the input permutation for the 8-point DFT is performed by retrieving the predetermined twiddle factors stored in registers <b>574</b>, <b>575</b> into input ports <b>508</b>, <b>511</b>, in a sequence that achieves the optimized factoring as shown in FIG. 2C. Simultaneously, the chip values are passed from the data cache output registers <b>582</b>, <b>583</b> to PFA circuit input port registers <b>506</b>, <b>507</b>, <b>509</b>, <b>510</b> of PFA circuits <b>520</b>, <b>521</b>, which are parallel to the twiddle factor input port registers <b>506</b>, <b>511</b>.
P-0049[0049] In process <b>403</b>, each PFA circuit <b>520</b>, <b>521</b> performs a set of subsequent operations associated with asymmetrical points of the DFT (e.g., NO for an 8-point DFT) and for pairs of symmetrical points (e.g., N<b>1</b> and N<b>7</b> for an 8-point DFT). For an 8-point DFT using two PFA circuits, the first 8 of 456 values N<b>0</b>-N<b>7</b> are processed by three sets of operations. In the first operation set, PFA circuit <b>520</b> operates on twiddle set <b>0</b> for points N<b>0</b>-N<b>7</b> simultaneously with PFA circuit <b>521</b> which operates on twiddle set <b>1</b> for points N<b>0</b>-N<b>7</b>. Once the sums are completed and sent to output registers <b>551</b>-<b>558</b>, the next set of operations is performed on twiddle sets <b>2</b> and <b>3</b> by PFA circuits <b>520</b>, <b>521</b>, respectively, and the results are subsequently summed and further processed by processes <b>404</b> and <b>405</b>. The final operation set is performed on twiddle set <b>4</b> by PFA circuit <b>520</b>. These three operation sets together form the first of 57 repeated DFT operations by the PFA circuit on the first 8 of 456 points.
P-0050[0050] Process <b>404</b> performs the output permutation for the outputs stored in stage <b>6</b> of FIG. 5 to allow the memory input register <b>565</b> to receive the output values in the proper sequence for the 8-point DFT. In process <b>405</b>, the permuted output is temporarily stored in register <b>565</b> and the <b>456</b> locations in memory are updated with the new set of PFA output values <b>599</b> produced by the 8-point DFT.
P-0051[0051] It should be noted that processes <b>402</b>-<b>405</b> occur simultaneously for the respective operation sets within one cycle of the F-point DFT.
P-0052[0052] Processes <b>406</b>-<b>410</b> repeat processes <b>401</b>-<b>405</b> for a 19-point DFT, and likewise, processes <b>411</b>-<b>415</b> repeat the same set of processes for a 3-point DFT. The final output permutation stored in memory at process <b>415</b> represents the result produced by the three separate F-point DFTs and is identical to the result that a single 456-point DFT would achieve. It should be noted that the same results are obtained by altering the sequence in which the three F-point DFTs are performed.
P-0053[0053] Similarly, a 192-point DFT using PFA can be performed by 64 cycles of the 3-point DFT followed by 3 cycles of the 64-point DFT, as shown by processes <b>451</b>-<b>460</b> in FIG. 4B. Alternately, the 64-point DFT in processes <b>456</b>-<b>460</b> can be performed prior to the 3-point DFT shown in processes <b>451</b>-<b>455</b> to achieve the same results.
P-0054[0054]FIG. 6A shows the detail for PFA circuits <b>520</b>, <b>521</b>, including the real and imaginary data signal processing. The real twiddle values <b>601</b> and imaginary twiddle values <b>604</b> are extracted from register <b>508</b>. Similarly, the real and imaginary portions of F-point values from registers <b>506</b>, <b>507</b> are split into two input paths for processing by the PFA engine <b>520</b>. Multiplexers <b>607</b>, <b>608</b>, <b>609</b> and <b>610</b> are used to control the sequence of real and imaginary values to the PFA engine, which allows the complex conjugate function <b>107</b> to be performed.
P-0055[0055] Returning to FIG. 2C, columns A and B contain expressions for the real portion of the DFT process, whereby adder <b>611</b> and multiplier <b>615</b> produce the expressions in column A, and subtractor <b>612</b> and multiplier <b>616</b> produce the expressions for column B. For an 8-point DFT, only adder <b>621</b> is required to perform the addition operation for each row of columns A and B. Adder <b>531</b> and register <b>541</b> are used to subsequently add each row of columns A and B. A controller <b>560</b> preferably performs a write enable for the output register <b>551</b> once all of the expressions for columns A and B have been summed. A MUX <b>632</b> is present for the purpose of controlling the output from registers <b>551</b> and <b>553</b> to memory register <b>565</b>, allowing complex conjugate <b>108</b> to be performed. Output register <b>552</b> stores the result from an optional parallel processing of DFT expressions produced by subtractor <b>622</b>, adder <b>532</b>, and registers <b>542</b>, <b>552</b> for other F-point DFT calculations, where subtraction between columns A and B may be required due to variations in positive and negative twiddle factors. The imaginary expressions shown in column C and D of FIG. 2C are calculated similarly by subtractor <b>613</b>, adder <b>614</b>, multiplier <b>617</b> and <b>618</b>, subtractor <b>623</b>, adder <b>533</b>, and registers <b>543</b>, <b>553</b>. For this particular F-point DFT calculation of the imaginary portion, adders <b>624</b> and <b>534</b>, and registers <b>544</b>, <b>554</b> are not required, but could be used for some other value of F.
P-0056[0056]FIG. 6B shows an alternative embodiment for the PFA circuit shown in FIG. 6A in which additional parallel adders are used downstream of multiplier <b>615</b>-<b>618</b> to optionally allow further simultaneous operations where required by positive and negative twiddle value variations. Operators <b>651</b>-<b>654</b> are used in place of operators <b>621</b>, <b>622</b> for the real portion of the DFT. Operators <b>731</b>-<b>734</b> correspond with adders <b>531</b>, <b>532</b>, while allowing either addition or subtraction operations. Adding registers <b>741</b>-<b>744</b> and output registers <b>751</b>-<b>754</b> are similarly controlled by controller <b>560</b> to send the DFT result to real output MUX <b>632</b>. Likewise, for the imaginary portion of the DFT operation, four parallel sets of adder components as shown in FIG. 6B are used in place of two parallel sets of adders shown in FIG. 6A. Adder components <b>655</b>-<b>658</b> and <b>735</b>-<b>738</b> can perform either addition or subtraction on the DFT factors output from multipliers <b>617</b>, <b>618</b>. Adding registers <b>745</b>-<b>748</b> and output register <b>755</b>-<b>758</b> perform the same functions as adder registers <b>543</b>, <b>544</b> and output registers <b>553</b>, <b>554</b> for sending DFT results to imaginary output MUX <b>634</b>.
P-0057[0057]FIG. 7 shows the timing sequence for the processing of values for an 8-point DFT through stages <b>1</b>-<b>7</b> in FIG. 5. At stage <b>1</b>, the first 8 values are retrieved from memory <b>501</b> through the single port to register <b>561</b>, one value per clock pulse. At stage <b>2</b>, data cache input register <b>572</b> receives the first five values for points N<b>0</b>-N<b>4</b> delayed by one clock pulse from stage <b>1</b>. Cache input register <b>573</b> receives the last three values for points N<b>5</b>-N<b>7</b> also delayed by one clock pulse with respect to stage <b>1</b>. At stages <b>3</b> and <b>4</b> from clock pulses <b>10</b>-<b>15</b>, the input permutation is shown for points N<b>0</b>-N<b>7</b> with twiddle sets <b>0</b> and <b>1</b>, between the data cache output registers <b>582</b>,<b>583</b>, twiddle registers <b>574</b>, <b>575</b>, and the PFA circuit input ports <b>506</b>-<b>511</b>. As shown by FIG. 7, each DFT point value is sent with its corresponding twiddle factor within the twiddle set. It is also evident that by using two twiddle registers <b>574</b> and <b>575</b>, two twiddle sets can be permuted during each clock pulse. For the symmetrical DFT points, such as N<b>1</b> and N<b>7</b>, the earlier described optimization is shown for each clock pulse as each symmetrical pair of values is permuted with their common twiddle point.
P-0058[0058] At stage <b>5</b>, one clock pulse behind stage <b>4</b>, the output of the PFA circuits <b>520</b>, <b>521</b> are received by add registers <b>541</b>, <b>545</b> and <b>546</b>. With each subsequent pulse, the adders <b>531</b>, <b>535</b> and <b>536</b> perform the sum of the PFA circuit output to the prior PFA circuit output stored by the add registers <b>541</b>, <b>545</b>, <b>546</b>, until the fifth pulse (clock pulse <b>16</b>), when the final DFT operation for the cycle is received (from stage <b>4</b>, clock pulse <b>15</b>) and summed. Next in stage <b>6</b>, each of the summed values from add registers <b>541</b>, <b>545</b> and <b>546</b> are sent in a single clock pulse to the output registers <b>551</b>, <b>555</b>, <b>556</b> where these values are kept until memory input register <b>565</b> sends each value, one per clock pulse, to the memory <b>501</b>.
P-0059[0059] Thus, at clock pulse <b>21</b>, the first set of <b>8</b> DFT points N<b>0</b>-N<b>7</b> are processed with the first <b>2</b> twiddle sets <b>0</b> and <b>1</b>. Meanwhile, at each stage, the points N<b>0</b>-N<b>7</b> are processed with the next two twiddle sets with each set of 5 clock pulses. For example, at stage <b>3</b>, twiddle sets <b>0</b> and <b>1</b> are processed during clock pulses <b>10</b>-<b>14</b>; twiddle sets <b>2</b> and <b>3</b> are processed during pulses <b>15</b>-<b>19</b>; and twiddle set <b>4</b> is processed during pulses <b>20</b>-<b>24</b>. The first full DFT cycle is completed by clock pulse <b>31</b>.
P-0060[0060] The shaded areas of FIG. 7 indicate the second DFT cycle process timing, beginning with the second set of 8 DFT points N<b>8</b>-N<b>15</b> being retrieved from memory <b>501</b>. The 8-point DFT process is completed for 57 cycles in a fashion similar to that described for the first cycle.
P-0061[0061] The timing of the DFT process shown in FIG. 7 is generally representative for any F-point DFT process.
Contents4
18 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16 Sheet 17 Sheet 18
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US2010158164A1 | Cited by | United States of America | Pre-grant |
| US2006010189A1 | Cited by | United States of America | Pre-grant |
| US9767074B2 | Cited by | United States of America | Search report |
| US2016239463A1 | Cited by | United States of America | Pre-grant |
| US4156920A | Cites | United States of America | Pre-grant |
| US4604721A | Cites | United States of America | Pre-grant |
| US6351759B1 | Cites | United States of America | Pre-grant |
22 members in 9 offices; this record represents the family
Members22
| Document | Office | Kind | |
|---|---|---|---|
| US2003195911A1 | United States of America | A1 | |
| WO03102809A1 | World Intellectual Property Organization (WIPO) | A1 | |
| AU2003237804A1 | Australia | A1 | |
| US6704760B2 | United States of America | B2 | |
| US2004162867A1 | United States of America | A1 | |
| KR20040097339A | Republic of Korea | A | |
| NO20044880L | Norway | L | |
| EP1493098A1 | European Patent Office (EPO) | A1 | |
| CN1647066A | China | A | |
| JP2005522804A | Japan | A | |
| KR20050098967A | Republic of Korea | A | |
| HK1074269A1 | Hong Kong, China | A1 | |
| US7028064B2 | United States of America | B2 | |
| US2006184598A1 | United States of America | A1 | |
| KR100686992B1 | Republic of Korea | B1 | |
| CN100346336C | China | C | |
| CN101149730A | China | A | |
| CN101149730A | China | A | |
| JP4163178B2 | Japan | B2 | |
| EP1493098A4 | European Patent Office (EPO) | A4 | |
| US7720897B2 | United States of America | B2 | |
| CN101149730B | China | B |
27 transactions on the USPTO file
Allowed after 1 non-final rejection.
- Non-final rejections
- 1
- Final rejections
- 0
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Expire PatentEXP. | EXP. | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Receipt into PubsR1021 | R1021 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Receipt into PubsR1021 | R1021 | |
| Workflow - File Sent to ContractorSENT | SENT | |
| Receipt into PubsR1021 | R1021 | |
| Dispatch to PublicationsD1220 | D1220 | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Application Is Now CompleteCOMP | COMP | |
| IFW Scan & PACR Auto Security Review | – | |
| Workflow - Drawings FinishedDRWF | DRWF | |
| Workflow - Drawings Matched with File at ContractorDRWM | DRWM | |
| New or Additional Drawing FiledC614 | C614 | |
| Initial Exam Team nnIEXX | IEXX |
8 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Lapsed due to failure to pay maintenance feeLapsedFP | FP | |
| Information on status: patent discontinuationPATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362STCH | STCH | |
| Information on status: patent discontinuationPATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362STCH | STCH | |
| Lapse for failure to pay maintenance feesLapsedLAPS | LAPS | |
| Maintenance fee reminder mailedREMI | REMI | |
| Fee paymentFPAY | FPAY | |
| Fee paymentFPAY | FPAY | |
| AssignmentAS | AS |
Numbers
- Application
- 12097102
Titles
- English
- Optimized discrete fourier transform method and apparatus using prime factor algorithm
Patent term adjustment
- A delay
- +30 daysthe office missed an examination deadline
- Net adjustment
- 30 days
Classification
- CPC, 2
- G06F17/144
- G06F17/14
- IPC, 1
- G06F17 14