Fast Fourier Transform apparatus, digital filter apparatus, fast Fourier transform method, and program
The FFT apparatus optimizes data processing order through sorting and twist multiplication to reduce power consumption in FFT/IFFT circuits, addressing high power consumption issues in existing methods.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- NEC CORP
- Filing Date
- 2022-03-10
- Publication Date
- 2026-04-21
AI Technical Summary
Existing FFT/IFFT processing methods, particularly those using the Cooley-Tukey algorithm for large numbers of points, result in high power consumption due to inefficient execution order of iterative processes, which is not optimized for reducing power consumption.
A Fast Fourier Transform (FFT) apparatus that rearranges data processing order through first and second data sorting units and twist multiplication, optimizing the execution order of FFT/IFFT processes to reduce power consumption by interleaving processing cycles.
The optimized processing order reduces power consumption in FFT/IFFT circuits, achieving lower energy usage in digital signal processing applications.
Smart Images

Figure 0007848522000001 
Figure 0007848522000002 
Figure 0007848522000003
Abstract
Description
Technical Field
[0001] The present disclosure relates to a digital filter device that performs digital signal processing, and particularly to a fast Fourier transform device, a fast Fourier transform method, and a program.
Background Art
[0002] One of the important processes in digital signal processing is the fast Fourier transform (hereinafter referred to as "FFT") process. For example, as a technique for compensating waveform distortion during signal transmission in wireless communication and wired communication, the frequency domain equalization (FDE) technique is known. In frequency domain equalization, first, signal data in the time domain is converted into data in the frequency domain by fast Fourier transform, and then filter processing for equalization is performed. Then, the data after the filter processing is reconverted into signal data in the time domain by inverse fast Fourier transform (hereinafter referred to as "IFFT"), thereby compensating for the waveform distortion of the original signal in the time domain. Hereinafter, when FFT and IFFT are not distinguished, they are denoted as "FFT / IFFT".
[0003] Generally, in FFT / IFFT processing, "butterfly operation" is used. An FFT device using the butterfly operation is described, for example, in Patent Document 1. Patent Document 1 also describes the "twist multiplication" described later, that is, multiplication using a twist coefficient.
[0004] As an efficient FFT / IFFT processing method, for example, the butterfly operation by Cooley-Tukey described in Non-Patent Document 1 is well-known. However, FFT / IFFT by Cooley-Tukey with a large number of points makes the circuit complex. Therefore, for example, it is decomposed into two small FFT / IFFTs using the Prime Factor method described in Non-Patent Document 2, and FFT / IFFT processing is performed.
[0005] Figure 14 shows the data flow 500 of a 64-point FFT, which has been decomposed into two base-8 butterfly operations using, for example, the Prime Factor method. The data flow 500 includes a data sorting operation 501, a total of eight base-8 butterfly operations in butterfly operations 502 and 503, and a twist multiplication operation 504.
[0006] In the data flow shown in Figure 14, the input time-domain data x(n) (n=0,1,···,63) is Fourier transformed into a frequency-domain signal X(k) (k=0,1,···,63) by FFT processing. Some parts of the data flow are omitted in Figure 14. Note that the basic configuration of the data flow in Figure 14 is the same even when IFFT processing is performed.
[0007] To implement the entire data flow shown in Figure 14 using circuitry would require an enormous amount of circuitry. Therefore, it is common practice to implement the entire FFT process by repeatedly using circuits that process only a portion of the data flow, depending on the required processing performance.
[0008] For example, in the data flow shown in Figure 14, if an FFT device is created as a physical circuit that performs FFT processing on eight data points in parallel (hereinafter simply referred to as "in parallel with eight data points"), a 64-point FFT processing can be achieved through a total of eight iterations.
[0009] The eight iterations of processing involve sequentially performing the processes corresponding to partial data flows 505a to 505h, which are applied to eight data points. Specifically, the process is as follows: In the first iteration, the process corresponding to partial data flow 505a is performed; in the second iteration, the process corresponding to partial data flow 505b is performed; and in the third iteration, the process corresponding to partial data flow 505c (not shown) is performed. This process continues sequentially until the eighth iteration, which corresponds to partial data flow 505h. Through these processes, a 64-point FFT is achieved.
[0010] In butterfly operations, data arranged in a sequential order is read and processed in an order according to a predetermined rule. Therefore, butterfly operations require data reordering, and RAM (Random Access Memory) circuits are mainly used to implement this. For example, Patent Document 2 describes an FFT device that performs data reordering using RAM circuits in butterfly operations. Furthermore, for example, Patent Document 3 describes a technique for speeding up butterfly operations by parallel processing in an FFT device that reduces memory usage. In addition, Patent Document 4 describes a technique for optimizing the output timing and output order of FFT processing results, with the aim of speeding up and reducing power consumption of the subsequent processing of the FFT device. [Prior art documents] [Patent Documents]
[0011] [Patent Document 1] Japanese Patent Application Publication No. 8-137832 [Patent Document 2] Japanese Patent Publication No. 2001-56806 [Patent Document 3] Japanese Patent Publication No. 2012-22500 [Patent Document 4] Patent No. 6358096 [Non-patent literature]
[0012] [Non-Patent Document 1] JWCooley, JWTukey, “An Algorithm for the Machine Calculation of Complex Fourier Series”, Mathematics of Computation, US, American Mathematical Society, Apr. 1965, Vol. 19, No. 90, pp. 297-301 [Non-Patent Document 2] DPKolba, “A Prime Factor FFT Algorithm Using High-Speed Convolution”, IEEE Trans. on Acoustics, US, IEEE Signal Processing Society, Aug. 1977, Vol. 29, No. 4, pp. 281-294. [Overview of the Initiative] [Problems that the invention aims to solve]
[0013] In the FFT processing data flow shown in Figure 14, the order in which the eight iterative processes of partial data flows 505a to 505h, performed on eight data points, are executed is arbitrary. This order determines the output order of the frequency domain signal X(k) (k=0,1,···,N-1) that has been Fourier transformed by the FFT process, as well as the order of the internal operations that realize the FFT process. On the other hand, a portion of the power consumption related to operations such as filtering performed on the signal X(k) and the internal operations that realize the FFT process is determined by the output order of the signal X(k) and the order of the internal operations that realize the FFT process. In other words, in FFT processing, there exists a specific execution order of the iterative processes of partial data flows that can reduce the power consumption related to the FFT process, and optimizing the execution order is effective in reducing power consumption.
[0014] However, the FFT circuits described in Non-Patent Documents 1, 2, and 3 have the problem of high power consumption because they do not take into account optimization for reducing power consumption regarding the order of iterative processing of partial data flows.
[0015] Patent Document 4 describes an FFT device that can input data to be processed and output processing results in any order, and can output outputs X(k) and X(Nk) with a time difference of at most one cycle to speed up the processing in the subsequent stages of the FFT process. However, Patent Document 4 does not clarify the optimal configuration for reducing power consumption, and has the problem of high power consumption.
[0016] The purpose of this disclosure is to provide a fast Fourier transform device, a digital filter device, a fast Fourier transform method, and a program that have low power consumption for circuits that realize digital signal processing using the fast Fourier transform. [Means for solving the problem]
[0017] The Fast Fourier Transform apparatus according to this disclosure is a Fast Fourier Transform apparatus that performs a Fast Fourier Transform or an Inverse Fast Fourier Transform in M cycles (M is a positive integer of 2 or more) for each N consecutive input data (N is a positive integer of 2 or more) in the input time domain, The fast Fourier transform device processes F fast Fourier transforms or inverse fast Fourier transforms (where F is a positive integer greater than or equal to 2) in succession. A first data sorting processing means that sorts F × N first input data entered in a first order and outputs first output data in a second order, Butterfly arithmetic processing means that performs butterfly arithmetic processing on the first output data and outputs the second output data in the first order, A second data sorting processing means sorts the second output data and outputs the third output data in a third order, The system includes a torsion multiplication processing means that multiplies the third output data by a torsion coefficient to perform a torsion multiplication process and outputs a fourth output data in the third order, The third order is the order in which the processing of the C-th cycle (where C is an integer between 0 and M-1) in each of the F fast Fourier transforms or inverse fast Fourier transforms that are processed consecutively is processed in consecutive cycles.
[0018] The Fast Fourier Transform method relating to this disclosure is a Fast Fourier Transform device that performs a Fast Fourier Transform or inverse Fast Fourier Transform in M cycles (M is a positive integer of 2 or more) for each N consecutive input data (N is a positive integer of 2 or more) in the input time domain. In F (where F is a positive integer of 2 or more) consecutive fast Fourier transforms or inverse fast Fourier transforms, rearrange F×N first input data input in the first order and output the first output data in the second order, perform butterfly operation processing on the first output data and output the second output data in the first order, rearrange the second output data and output the third output data in the third order, perform twisting multiplication processing by multiplying a twisting coefficient on the third output data and output the fourth output data in the third order, where the third order is the order of processing the C-th cycle (where C is an integer of 0≦C≦M - 1) in each of F consecutive fast Fourier transforms or inverse fast Fourier transforms in consecutive cycles.
[0019] The program according to the present disclosure is for a fast Fourier transform device that performs a fast Fourier transform or an inverse fast Fourier transform in M cycles (where M is a positive integer of 2 or more) for each of N consecutive (where N is a positive integer of 2 or more) input data in the input time domain input data, In F (where F is a positive integer of 2 or more) consecutive fast Fourier transforms or inverse fast Fourier transforms, a process of rearranging F×N first input data input in the first order and outputting the first output data in the second order, a process of performing butterfly operation processing on the first output data and outputting the second output data in the first order, a process of rearranging the second output data and outputting the third output data in the third order, a process of performing twisting multiplication processing by multiplying a twisting coefficient on the third output data and outputting the fourth output data in the third order, and causing it to execute, The third order is the order in which the processing of the C-th cycle (where C is an integer between 0 and M-1) in each of the F fast Fourier transforms or inverse fast Fourier transforms that are processed consecutively is processed in consecutive cycles. [Effects of the Invention]
[0020] This invention provides a fast Fourier transform device, a digital filter device, a fast Fourier transform method, and a program that enable digital signal processing using the fast Fourier transform and have low power consumption. [Brief explanation of the drawing]
[0021] [Figure 1] This is a block diagram showing the configuration of the fast Fourier transform device 10 according to the first embodiment. [Figure 2] This is a block diagram showing the configuration of a digital filter device 400 according to the second embodiment. [Figure 3] This figure shows an array of data sets following a sequential order according to the second embodiment. [Figure 4] This figure shows an array of data sets following a bit reverse order according to the second embodiment. [Figure 5] This figure shows the order of operations for the radix-8 butterfly arithmetic processing according to the second embodiment. [Figure 6] This figure shows an array of data sets following the FFT frame mutual arrangement bit reverse order according to the second embodiment. [Figure 7] This figure shows the array of torsion coefficients according to the FFT frame mutual arrangement bit reverse order according to the second embodiment. [Figure 8] This figure shows the order of operations for the radix-8 butterfly arithmetic processing according to the second embodiment. [Figure 9] This is a block diagram showing an example configuration 100 of the first data sorting processing unit 11 according to the second embodiment. [Figure 10] This is a block diagram showing an example configuration 200 of the second data sorting processing unit 12 according to the second embodiment. [Figure 11] This figure shows the array of filter coefficients according to the FFT frame arrangement bit reverse order according to the second embodiment. [Figure 12] This figure shows an array of data sets following the FFT frame interconnection power optimization bit reverse order according to the third embodiment. [Figure 13] This figure shows the array of torsion coefficients according to the FFT frame mutual arrangement bit reverse order according to the third embodiment. [Figure 14] This figure shows the dataflow 500 for a 64-point FFT process using a two-stage butterfly operation. [Modes for carrying out the invention]
[0022] Embodiments of this disclosure will be described below with reference to the drawings. (First embodiment) Figure 1 is a block diagram showing an example of a Fast Fourier Transform (FFT) device according to the first embodiment. The FFT device 10 according to this embodiment is used for Fast Fourier Transform processing or inverse Fast Fourier Transform processing in a digital filter device. Specifically, the FFT device 10 performs Fast Fourier Transform or inverse Fast Fourier Transform on input time-domain input data in M cycles (M is a positive integer of 2 or more) for each N consecutive input data (N is a positive integer of 2 or more). As shown in Figure 1, the FFT device 10 includes a first data sorting processing unit 11 as a first data sorting processing means, a first butterfly arithmetic processing unit 21 as a butterfly arithmetic processing means, a second data sorting processing unit 12 as a second data sorting processing means, and a twist multiplication processing means Multiplication The FFT device 10 includes a processing unit 31. The FFT device 10 then performs F (where F is a positive integer of 2 or more) fast Fourier transform or inverse fast Fourier transform processes in succession.
[0023] The first data sorting processing unit 11 sorts F × N first input data, which are input in a first order, and outputs the first output data in a second order.
[0024] The first butterfly arithmetic processing unit 21 performs butterfly arithmetic processing on the first output data and outputs the second output data in the first order.
[0025] The second data sorting processing unit 12 sorts the second output data and outputs the third output data in a third order.
[0026] twist Multiplication The processing unit 31 performs a torsion multiplication process by multiplying the third output data by a torsion coefficient and outputs the fourth output data in the third order.
[0027] In the first embodiment, the third order is the order in which the processing of the C-th cycle (where C is an integer between 0 and M-1) in each of the F fast Fourier transforms or inverse fast Fourier transforms that are processed consecutively is processed in consecutive cycles.
[0028] According to the FFT apparatus 10 of the first embodiment described above, Multiplication The processing order (third order) of the data input to the processing unit 31 can be set so that the processing of the Cth cycle is performed in consecutive cycles. In other words, by alternating the processing order (interleaving) of multiple FFT processes that are performed consecutively, the power consumption related to the twisting operation and the filtering operation can be reduced. As a result, the power consumption of the entire digital filtering process can be reduced.
[0029] Furthermore, although this embodiment describes the FFT process as an example, the same applies to IFFT. In other words, by applying the control method of this embodiment to an IFFT processing device and optimizing the processing order within the IFFT process and in the subsequent stages of the IFFT process, power consumption within the IFFT process and in the subsequent stages of the IFFT process can be reduced.
[0030] (Second embodiment) FIG. 2 is a block diagram showing the configuration of a digital filter device (also referred to as a "digital filter circuit") 400 according to a second embodiment of the present invention. The digital filter circuit 400 includes an FFT device (also referred to as an "FFT circuit") 10 and a filter processing unit 420 as filter processing means.
[0031] The digital filter circuit 400 inputs a complex number signal x(n)=r(n)+js(n) ···(1) in the time domain.
[0032] The FFT circuit 10 converts the input complex number signal x(n) into a complex number signal 431 X(k)=A(k)+jB(k) ···(2) in the frequency domain by FFT.
[0033] Here, n is an integer of 0≦n≦N - 1 indicating a signal sample number in the time domain, N is an integer of 0 < N indicating the number of conversion samples of FFT, and k is an integer of 0≦k≦N - 1 indicating a frequency number in the frequency domain.
[0034] Next, the filter processing unit 420 performs complex number filter processing by complex number multiplication on X(k) (Equation (2)) output by the FFT circuit 10 to the complex number signal 431 using the filter coefficient C(k). Specifically, for each frequency number k of 0≦k≦N - 1, the filter processing unit 420 calculates a complex number signal X‘(k)=X(k)×C(k) ···(3) and outputs it as the complex number signal 434. The digital filter circuit 400 repeats the above processing for every N complex number signals with respect to the complex number signals continuously input in the time domain.
[0035] Next, the details of the FFT circuit 10 according to the second embodiment of the present invention will be described. The FFT device 10 processes a 64-point FFT, which is decomposed into two stages of radix 8 butterfly processing, using a pipeline circuit configuration, according to the data flow 500 shown in Figure 14. The FFT device 10 takes time-domain data x(n) (n=0,1,···,N-1) as input, performs a Fourier transform on x(n) using FFT processing to generate a frequency-domain signal X(k) (k=0,1,···,N-1), and outputs it. Here, N is a positive integer representing the FFT block size.
[0036] The FFT device 10 includes a first data sorting processing unit 11 as a first data sorting processing means, a first butterfly arithmetic processing unit 21 as a butterfly arithmetic processing means, a second data sorting processing unit 12 as a second data sorting processing means and storage means, a twist multiplication processing unit 31 as a twist multiplication processing means, a second butterfly arithmetic processing unit 22, and a read address generation unit 41 as a read address generation means. The FFT device 10 pipelines the first data sorting process, the first butterfly arithmetic process, the second data sorting process, the twist multiplication process, and the second butterfly arithmetic process.
[0037] The first data sorting processing unit 11 and the second data sorting processing unit 12 are buffer circuits for data sorting. The first data sorting processing unit 11 sorts the data sequence based on the data dependencies in the FFT processing algorithm before the first butterfly arithmetic processing unit 21. Similarly, the second data sorting processing unit 12 sorts the data sequence based on the data dependencies in the FFT processing algorithm after the first butterfly arithmetic processing unit 21 by inputting the read address 51. Furthermore, in addition to the sorting described above, the second data sorting processing unit 12 performs sorting processing to alternately execute multiple FFT processes that are processed sequentially.
[0038] The FFT device 10 performs 64-point FFT processing in parallel with 8 data points. In this case, the FFT circuit 10 takes time-domain data x(n) as input, generates a frequency-domain signal X(k) by performing a Fourier transform on the FFT process, and outputs it. At this time, 8 data points are input as input data x(n) for each FFT process, over a period of 8 cycles, in the order shown in Figure 3, for a total of 64 data points to be input for each FFT process. Figure 3 shows the order of input data x(n) for the first to fourth FFT processes (F1 to F4) that are processed consecutively, and the numbers from 0 to 63 shown in the table in Figure 3 represent the subscript n of x(n). Specifically, for the first FFT process (F1), in the 0th cycle, 8 data points x(0), x(1), ..., x(7) that constitute the data set P0 are input. Then, in the first cycle, eight data points, x(8), x(9), ..., x(15), which constitute data set P1, are input. Similarly, from the second to the seventh cycle, data that constitutes data sets P2 to P7 are input. Likewise, from the eighth to the fifteenth cycle, data related to the second FFT process (F2) is input, from the sixteenth to the twenty-third cycle, data related to the third FFT process (F3) is input, and from the twenty-fourth to the thirty-first cycle, data related to the fourth FFT process (F4) is input.
[0039] Next, the first data sorting unit 11 sorts the input data x(n) in the "sequential order" shown in Figure 3, which is the input order, into the "bit reverse order" shown in Figure 4, which is the order in which it is input to the first butterfly arithmetic unit 21.
[0040] Figure 4 shows the bit reverse order for the four FFT processes (F1 to F4) that are performed sequentially, and corresponds to the input data set to the first-stage radix 8 butterfly process 502 in the data flow diagram shown in Figure 14. Specifically, the first data sorting processing unit 11 outputs the 8 data x(0), x(8), ..., x(56) that constitute data set Q0 in the 0th cycle for the first FFT process (F1). Then, in the 1st cycle, it outputs the 8 data x(1), x(9), ..., x(57) that constitute data set Q1. Thereafter, the same process is carried out for the 2nd to 7th cycles, and the data sets Q2 ~Outputs the data that makes up Q7. Similarly, data related to the second FFT process (F2) is output from cycle 8 to 15, data related to the third FFT process (F3) is output from cycle 16 to 23, and data related to the fourth FFT process (F4) is output from cycle 24 to 31.
[0041] Here, we will explain "sequential order" and "bit reverse order" in detail. "Sequential order" refers to the order of the eight data sets P0 to P7 shown in Figure 3. Each data set Ps(s=0,1,...,7) consists of eight data points arranged sequentially from ps(0) to ps(7), where ps(i) is... ps(i) = 8s + i Therefore, sequential ordering is the process of arranging i·s data items in order, starting with the first data item, to create s data sets, and then arranging them in that order.
[0042] "Bit reverse order" refers to the order of the eight data sets Q0 to Q7 shown in Figure 4. Each data set Qs(s=0,1,...,7) consists of eight data points from qs(0) to qs(7), where qs(i) is...
[0043] qs(i) = s + 8i In other words, bit reverse order is created by taking i·s data and arranging them in sets of i data at a time, with every 8 data points starting from the first data point, to create s data sets, and then arranging them in this way.
[0044] As described above, the i-th data item of each data set Qs (s=0,1,..,7) in bit-reverse order is the s-th data item of the data set Pi in sequential order. That is, Qs(i)=Pi(s) Thus, Qs(i) and Pi(s) are related in such a way that the order of the data sets and the order of the data positions within each data set are swapped. Therefore, when data input in bit-reverse order is rearranged according to bit-reverse order, it becomes sequential order.
[0045] In Figure 3, each row ps(i), and in Figure 4, each row qs(i), represent the data to be input to the i-th data point of the next stage. The eight numbers included in each data set are identifiers that identify one of the points in the FFT, specifically the value of the subscript n in x(n).
[0046] Note that the sequential order and bit reverse order are not limited to those illustrated in Figures 3 and 4. That is, each data set in the sequential order can be created by arranging the data in order according to the number of points in the FFT, the number of cycles, and the number of data to be processed in parallel, as described above. And each data set in the bit reverse order can be created by swapping the order of the sequentially input data with respect to the progression of the cycles and the order with respect to the data positions, as described above.
[0047] The first butterfly arithmetic processing unit 21 is a butterfly circuit that processes the first butterfly arithmetic processing 502 (the first butterfly arithmetic processing) of the radix 8 butterfly arithmetic processing that is performed in two stages in the data flow 500 of Figure 14. The first butterfly arithmetic processing unit 21 consists of a radix 8 butterfly arithmetic processing unit 21a and performs radix 8 butterfly arithmetic processing. Figure 5 shows the processing order of the first butterfly arithmetic processing unit 21 for the four FFT processes (F1 to F4) that are processed consecutively. Specifically, from cycle 0 to cycle 7, the first butterfly arithmetic processing unit 21 processes the eight radix 8 butterfly arithmetic processing steps #0 to #7 that constitute the butterfly arithmetic processing 502 with respect to the first FFT process (F1) in the order shown in Figure 5.
[0048] In other words, in cycle 0, the radix 8 butterfly arithmetic processing unit 21a receives a data set Q0 in bit reverse order corresponding to radix 8 butterfly arithmetic processing #0, which is output by the first data sorting processing unit 11, and performs radix 8 butterfly arithmetic processing #0. In cycle 1, the radix 8 butterfly arithmetic processing unit 21a receives a data set Q1 in bit reverse order corresponding to radix 8 butterfly arithmetic processing #1, which is output by the first data sorting processing unit 11, and performs radix 8 butterfly arithmetic processing #1. In cycle 2, the radix 8 butterfly arithmetic processing unit 21a receives a data set Q2 in bit reverse order corresponding to radix 8 butterfly arithmetic processing #2, which is output by the first data sorting processing unit 11, and performs radix 8 butterfly arithmetic processing #2. In cycle 3, the radix 8 butterfly arithmetic processing unit 21a receives a data set Q3 in bit reverse order corresponding to radix 8 butterfly arithmetic processing #3, output by the first data sorting processing unit 11, and performs radix 8 butterfly arithmetic processing #3. In the following cycles, the same procedure is followed, and in cycles 4 through 7, the radix 8 butterfly arithmetic processing unit 21a receives data sets Q4 through Q7 in bit reverse order corresponding to radix 8 butterfly arithmetic processing #4 through #7, respectively, output by the first data sorting processing unit 11, and performs radix 8 butterfly arithmetic processing #4 through #7. Similarly, the first butterfly arithmetic processing unit 21 performs processing related to the second FFT process (F2) from the 8th to the 15th cycle, processing related to the third FFT process (F3) from the 16th to the 23rd cycle, and processing related to the fourth FFT process (F4) from the 24th to the 31st cycle.
[0049] The first butterfly arithmetic processing unit 21 outputs the results of the butterfly arithmetic processing as data y(n) (n=0,1,···,63) in the sequential order shown in Figure 3.
[0050] The second data sorting processing unit 12 sorts the data y(n) output sequentially by the first butterfly arithmetic processing unit 21 in the order shown in Figure 6 (hereinafter referred to as the "FFT frame mutual arrangement bit reverse order"). The "FFT frame mutual arrangement bit reverse order" relates to the order in which s data sets Qs per FFT process, created in bit reverse order, are output as the cycle progresses for multiple FFT processes that are processed consecutively, and can be specified by the output order specification 52. In this embodiment, the FFT frame mutual arrangement bit reverse order is specified as a sequence in which Q0 of the first to fourth FFT processes are consecutive, then Q1 of the first to fourth FFT processes are consecutive, then Q2 of the first to fourth FFT processes are consecutive, then Q3 of the first to fourth FFT processes are consecutive, then Q4 of the first to fourth FFT processes are consecutive, then Q5 of the first to fourth FFT processes are consecutive, then Q6 of the first to fourth FFT processes are consecutive, and then Q7 of the first to fourth FFT processes are consecutive. The second data sorting processing unit 12 takes the read address 51 output by the read address generation unit 41 as input and determines the output order. The read address generation unit 41 refers to the output order setting 52 provided by a higher-level circuit (not shown), such as the CPU (Central Processing Unit), Second A read address 51 to be output to the data sorting processing unit 12 is generated.
[0051] Specifically, the second data sorting processing unit 12 outputs Q0 of the first FFT process in the 0th cycle, Q0 of the second FFT process in the 1st cycle, Q0 of the third FFT process in the 2nd cycle, and Q0 of the fourth FFT process in the 3rd cycle. Similarly, it outputs Q1 of the first FFT process in the 4th cycle, Q1 of the second FFT process in the 5th cycle, and Q1 of the third FFT process in the 6th cycle. 7 In the fourth cycle, output Q1 of the fourth FFT process. Continue similarly for subsequent steps. From cycles 8 to 11, Q2 of the 1st to 4th FFT processing, From cycles 12 to 15, Q3 of the 1st to 4th FFT processes, From cycles 16 to 19, Q4 of the 1st to 4th FFT processing, From cycles 20 to 23, Q5 of the 1st to 4th FFT processing, From cycles 24 to 27, Q6 of the 1st to 4th FFT processing, From cycles 28 to 31, output Q7 of the first to fourth FFT processes.
[0052] In other words, the "FFT frame inter-arrangement bit reverse order" can be described as an order in which the processing order of multiple FFT processes is interleaved so that the processing of the Cth cycle (C is an integer between 0 and 7) of each of the F F FFT processes (F is a positive integer greater than or equal to 2) that are processed consecutively is processed in consecutive cycles.
[0053] The twist multiplication processing unit 31 is a circuit that processes the complex rotation on the complex plane in the FFT operation after the first butterfly operation, and corresponds to the twist multiplication process 504 in the data flow 500 of Figure 14. Note that no data reordering is performed in the twist multiplication process. The twist multiplication processing unit 31 consists of a twist coefficient table 31a and a twist multiplication unit 31b. The twist coefficient table 31a outputs twist coefficients W(n) (n=0,1,···,63) corresponding to the data y(n) (n=0,1,···,63) in each FFT process output by the second data sorting processing unit 12 in the "FFT frame mutual arrangement bit reverse order". W(n) is the twist coefficient corresponding to the data y(n). Therefore, the order in which the twist multiplication processing unit 31 outputs the twist coefficients W(n) is uniquely determined by the "FFT frame mutual arrangement bit reverse order", which is the order in which the second data sorting processing unit 12 outputs the sorted data. Specifically, when the second data sorting processing unit 12 outputs in the "FFT frame mutual arrangement bit reverse order" shown in Figure 6, the twist coefficient table 31a outputs the twist coefficients in the order shown in Figure 7. As is clear from Figures 6 and 7, the torsion coefficient W(n) (n=0,1,···,63) output by the torsion multiplication processing unit 31 corresponds to y(n) output by the second data sorting processing unit 12. The twist multiplication unit 31b performs the twist multiplication process by multiplying y(n) output by the second data sorting unit 12 by the twist coefficient W(n) output by the twist multiplication unit 31, and outputs the result to the second butterfly arithmetic unit 22.
[0054] The second butterfly arithmetic processing unit 22 is a butterfly circuit that processes the second butterfly arithmetic processing 503 (second butterfly arithmetic processing) of the radix 8 butterfly arithmetic processing that is performed in two stages in the data flow 500 of Figure 14. The second butterfly arithmetic processing unit 22 consists of a radix 8 butterfly arithmetic processing unit 22a and performs radix 8 butterfly arithmetic processing.
[0055] Figure 8 shows the four FFT processes (F1 to F4) that are performed sequentially. 2 Butterfly arithmetic processing unit 22 This indicates the processing order, specifically the first 2 The butterfly arithmetic processing unit 22 performs the first to fourth FFT processing (F1~ F4Regarding this, in cycles 0 through 3, the radix 8 butterfly arithmetic operation of #0 which constitutes the butterfly arithmetic operation 503 is performed. Similarly, 2 The butterfly arithmetic processing unit 22 performs the first to fourth FFT processing (F1~ F4 Regarding ) From the 4th to the 7th cycle, #1, which constitutes the butterfly arithmetic process 503, From the 8th to the 11th cycle, #2, which constitutes the butterfly arithmetic process 503, From the 12th to the 15th cycle, #3, which constitutes the butterfly arithmetic process 503, From the 16th to the 19th cycle, #4, which constitutes the butterfly arithmetic process 503, From the 20th to the 23rd cycle, #5, which constitutes the butterfly arithmetic process 503, From the 24th to the 27th cycle, #6, which constitutes the butterfly arithmetic process 503, From cycle 28 to cycle 31, #7, which constitutes the butterfly arithmetic process 503, Performs radix 8 butterfly arithmetic.
[0056] In other words, in cycle 0, the radix 8 butterfly arithmetic processing unit 22a receives a data set Q0 in bit reverse order corresponding to the radix 8 butterfly arithmetic processing #0 output by the second data sorting processing unit 12 for the first FFT processing (F1), and performs the radix 8 butterfly arithmetic processing #0. In cycle 1, the radix 8 butterfly arithmetic processing unit 22a receives a data set Q0 in bit reverse order corresponding to the radix 8 butterfly arithmetic processing #0 output by the second data sorting processing unit 12 for the second FFT processing (F2), and performs the radix 8 butterfly arithmetic processing #0. In cycle 2, the radix 8 butterfly arithmetic processing unit 22a receives a data set Q0 in bit reverse order corresponding to the radix 8 butterfly arithmetic processing #0 output by the second data sorting processing unit 12 for the third FFT processing (F3), and performs the radix 8 butterfly arithmetic processing #0. In cycle 3, the radix 8 butterfly arithmetic processing unit 22a receives the bit-reverse-ordered data set Q0, which corresponds to the radix 8 butterfly arithmetic processing #0 output by the second data sorting processing unit 12, for the fourth FFT processing (F4), and performs the radix 8 butterfly arithmetic processing #0.
[0057] In subsequent cycles, In cycles 4 through 7, the radix 8 butterfly arithmetic processing unit 22a receives the bit-reverse-ordered data set Q1 corresponding to the radix 8 butterfly arithmetic processing #1 output by the second data sorting processing unit 12 for the four FFT processes from the first to the fourth (F1 to F4), and performs the radix 8 butterfly arithmetic processing #1. In cycles 8 through 11, the radix-8 butterfly arithmetic processing unit 22a receives the bit-reverse-ordered data set Q2, which corresponds to the radix-8 butterfly arithmetic processing #2 output by the second data sorting processing unit 12, for the four FFT processes (F1 to F4) from the first to the fourth, and performs the radix-8 butterfly arithmetic processing #2. In cycles 12 to 15, the radix 8 butterfly arithmetic processing unit 22a receives the bit-reverse-ordered data set Q3 corresponding to the radix 8 butterfly arithmetic processing #3 output by the second data sorting processing unit 12 for the four FFT processes from the first to the fourth (F1 to F4), and performs the radix 8 butterfly arithmetic processing #3. In cycles 16 to 19, the radix 8 butterfly arithmetic processing unit 22a receives the bit-reverse-ordered data set Q4 corresponding to the radix 8 butterfly arithmetic processing #4 output by the second data sorting processing unit 12 for the four FFT processes from the first to the fourth (F1 to F4), and performs the radix 8 butterfly arithmetic processing #4. In cycles 20 to 23, the radix 8 butterfly arithmetic processing unit 22a receives the bit-reverse-ordered data set Q5, which corresponds to the radix 8 butterfly arithmetic processing #5 output by the second data sorting processing unit 12, for the four FFT processes (F1 to F4) from the first to the fourth, and performs the radix 8 butterfly arithmetic processing #5. In cycles 24 to 27, the radix 8 butterfly arithmetic processing unit 22a receives the bit-reverse-ordered data set Q6 corresponding to the radix 8 butterfly arithmetic processing #6 output by the second data sorting processing unit 12 for the four FFT processes from the first to the fourth (F1 to F4), and performs the radix 8 butterfly arithmetic processing #6. In cycles 28 to 31, the radix 8 butterfly arithmetic processing unit 22a receives the bit-reverse-ordered data set Q7, which corresponds to the radix 8 butterfly arithmetic processing #7 output by the second data sorting processing unit 12, for the first to fourth FFT processes (F1 to F4), and performs the radix 8 butterfly arithmetic processing #7.
[0058] The second butterfly arithmetic processing unit 22 outputs the results of the butterfly arithmetic processing X(k) (n=0,1,···,63) for the first to fourth FFT processes (F1 to F4) in the same FFT frame mutual arrangement bit reverse order.
[0059] The first data sorting processing unit 11 and the second data sorting processing unit 12 temporarily store the input data and control the selection and output of the stored data, thereby realizing data sorting according to the bit reverse order in Figure 4 and the FFT frame mutual arrangement bit reverse order in Figure 6, respectively. A specific example of the data sorting processing unit is shown below.
[0060] The first data sorting processing unit 11 can be implemented, for example, by the data sorting processing unit 100 shown in Figure 9.
[0061] The data sorting processing unit 100 takes data sets A to H, consisting of eight data points input as input information 103, and inputs them in a first-in, first-out order in a FIFO buffer (FIFO buffer), writes them to data storage locations 101a to 101h, and stores them. Specifically, data sets A to H are stored in each of the data storage locations 101a to 101h.
[0062] Next, the data sorting processing unit 100 outputs the stored data in the first-to-use order in the FIFO buffer, two data sets at a time. Specifically, the data sorting processing unit 100 reads eight data from each of the data reading positions 102a to 102h to form one data set, and outputs the eight data sets a to h as output information 104. In this way, data sets a to h are formed by rearranging the data contained in data sets A to H, which are arranged in cycle order, in the order of their data positions.
[0063] On the other hand, Figure 10 is a diagram of the data sorting processing unit 200, which shows an example of the implementation of the second data sorting processing unit 12. The data sorting processing unit 200 is composed of four partial data sorting processing units 206a, 206b, 206c, and 206d, each corresponding to the first to fourth FFT processing (F1 to F4).
[0064] First, regarding the first FFT process (F1), the partial data sorting processing unit 206a takes the data sets A to H, consisting of eight data points input as input data 203, into the FIFO buffer in first-in-place order and writes them to data storage positions 201a to 201h for storage. That is, data sets A to H are stored sequentially in each of the data storage positions 201a to 201h, which correspond to the cycle order. When the stored data is viewed in the order of the data positions, i.e., in the order of data storage positions 201a to 201h, data sets a to h are stored in each of the data storage positions 201a to 201h.
[0065] Similarly, with respect to the second FFT process (F2), the partial data sorting processing unit 206b inputs data sets A to H, consisting of eight data points input as input data 203, into the FIFO buffer in first-in-order, writes them to data storage locations 201a to 201h, and stores them. With respect to the third FFT process (F3), the partial data sorting processing unit 206c inputs data sets A to H, consisting of eight data points input as input data 203, into the FIFO buffer in first-in-order, writes them to data storage locations 201a to 201h, and stores them. With respect to the fourth FFT process (F4), the partial data sorting processing unit 206d inputs data sets A to H, consisting of eight data points input as input data 203, into the FIFO buffer in first-in-order, writes them to data storage locations 201a to 201h, and stores them.
[0066] Next, the data sorting processing unit 200 reads the stored data one data set at a time using the read circuit 205 and outputs it as output data 204. At this time, the read circuit 205 refers to the read address 51 and selects one of the partial data sorting processing units 206a to 206d, and then selects one of the data storage locations 201a to 201h of the selected partial data sorting processing unit, and reads one of the eight data stored in data storage locations 201a to 201h in a single read operation. In this way, by assigning read addresses in any desired combination and order to the read address 51, data can be read in any combination and order. For example, the read address 51 could be set to address 0 of partial data sorting processing unit 206a, address 0 of partial data sorting processing unit 206b, address 0 of partial data sorting processing unit 206c, address 0 of partial data sorting processing unit 206d, Address 1 of partial data sorting processing unit 206a, address 1 of partial data sorting processing unit 206b, address 1 of partial data sorting processing unit 206c, address 1 of partial data sorting processing unit 206d, Address 2 of partial data sorting processing unit 206a, address 2 of partial data sorting processing unit 206b, address 2 of partial data sorting processing unit 206c, address 2 of partial data sorting processing unit 206d, Address 3 of partial data sorting processing unit 206a, address 3 of partial data sorting processing unit 206b, address 3 of partial data sorting processing unit 206c, address 3 of partial data sorting processing unit 206d, Address 4 of partial data sorting processing unit 206a, address 4 of partial data sorting processing unit 206b, address 4 of partial data sorting processing unit 206c, address 4 of partial data sorting processing unit 206d, Address 5 of partial data sorting processing unit 206a, address 5 of partial data sorting processing unit 206b, address 5 of partial data sorting processing unit 206c, address 5 of partial data sorting processing unit 206d, Address 6 of partial data sorting processing unit 206a, address 6 of partial data sorting processing unit 206b, address 6 of partial data sorting processing unit 206c, address 6 of partial data sorting processing unit 206d, Address 7 of partial data sorting processing unit 206a, address 7 of partial data sorting processing unit 206b, address 7 of partial data sorting processing unit 206c, address 7 of partial data sorting processing unit 206d, If the read addresses are provided in that order, the data sorting processing unit 200 will output the stored data in the following order: data set a of the first FFT process (F1), data set a of the second FFT process (F2), data set a of the third FFT process (F3), data set a of the fourth FFT process (F4), and so on thereafter. Four data sets b, corresponding to the first to fourth FFT processes (F1 to F4), Four data sets c, corresponding to the first to fourth FFT processes (F1 to F4), Four data sets d, corresponding to the first to fourth FFT processes (F1 to F4), Four data sets e, corresponding to the first to fourth FFT processes (F1 to F4), Four data sets f, corresponding to the first to fourth FFT processes (F1 to F4), Four data sets g, corresponding to the first to fourth FFT processes (F1 to F4), Four data sets h corresponding to the first to fourth FFT processes (F1 to F4), The stored data is output in the order shown above. That is, the data is output in the FFT frame arrangement bit reverse order shown in Figure 6. Here, data sets a to h are formed by rearranging the data contained in data sets A to H, which are arranged in cycle order, in order of data position.
[0067] As described above, in the FFT device 10, the first data sorting processing unit 11 and the second data sorting processing unit 12 perform two sorting processes according to the sequential order in Figure 3, the bit reverse order in Figure 4, and the FFT frame mutual arrangement bit reverse order in Figure 6, respectively.
[0068] Next, the details of the filter processing unit 420 according to the second embodiment of the present invention will be described.
[0069] The filter processing unit 420 is a circuit that performs complex number filtering by complex number multiplication after processing by the FFT circuit 10. The filter processing unit 420 consists of a filter coefficient table 421 and a filter multiplication unit 422. The filter coefficient table 421 outputs filter coefficients C(k) (k=0,1,···,63) corresponding to the data X(k) (k=0,1,···,63) that the FFT circuit 10 outputs to the complex number signal 431 in the "FFT frame mutual arrangement bit reverse order". C(k) is the filter coefficient corresponding to the data X(k). Therefore, the order in which the filter coefficient table 421 outputs the filter coefficients C(k) is uniquely determined by the "FFT frame mutual arrangement bit reverse order", which is the order in which the FFT circuit 10 outputs X(k).
[0070] Specifically, when the FFT circuit 10 outputs in the "FFT frame mutual arrangement bit reverse order" shown in Figure 6, the filter coefficient table 421 outputs the filter coefficients in the order shown in Figure 11. As is clear from Figures 6 and 11, the filter coefficients C(k) (k=0,1,···,63) correspond to the data X(k) output by the FFT circuit 10.
[0071] The filter multiplication unit 422 performs a filter multiplication process by multiplying the data X(k) output by the FFT circuit 10 with the filter coefficients C(k) output by the filter coefficient table 421, and outputs the result to the complex number signal 434. Here, we will explain the difference between the "FFT frame mutual arrangement bit reverse order," which is the data order adopted by this embodiment after the output of the second data sorting processing unit 12, and the "bit reverse order," which is adopted before the input of the second data sorting processing unit 12.
[0072] In this embodiment, the order in which the twist multiplication processing unit 31 outputs the twist coefficient W(n) is determined by the FFT frame mutual arrangement bit reverse order, which is the output order of the second data sorting processing unit 12, and specifically outputs in the order shown in Figure 7.
[0073] As is clear from Figure 7, the values of ws(0) to ws(7) in the torsion coefficient W(n) are the same from cycle 0 to cycle 3, and the same from cycle 4 to cycle 7, and the same for subsequent cycles as well. F4 ) is the same every four cycles corresponding to this.
[0074] Here, focusing on the power consumption of the twist multiplication processing unit 31, the magnitude of the change in the values of the eight data points from ws(0) to ws(7) greatly affects the power consumption. Specifically, in the binary values obtained by representing the twist coefficient W(n) in binary, the bit-level operation rate (toggle rate) of the eight data points from ws(0) to ws(7) greatly affects the power consumption. This is because the dynamic power consumption P of a digital signal processing circuit realized by a CMOS (Complementary Metal Oxide Semiconductor) circuit can be expressed by the equation (4) shown below,
[0075] P = (1 / 2) * a * C * V² * f ... (4)
[0076] Here, a: circuit operation rate, C: Load capacity, V: voltage, f: Operating frequency This is because the bit-level operating rate of the eight data points from ws(0) to ws(7) greatly affects the circuit operating rate a. In other words, selecting an output order that reduces the bit-level operating rate of the eight data points from ws(0) to ws(7) is effective in reducing the power consumption of the twist multiplication processing unit 31.
[0077] The "FFT frame mutual arrangement bit reverse order" of this embodiment is the first to fourth FFT processing (F1~ F4 Within the four cycles corresponding to this sequence, the value of the torsion coefficient W(n) does not change, so compared to, for example, the "bit reverse sequence," the operating rate related to the torsion coefficient W(n) can be reduced. As a result, this sequence can be said to reduce the power consumption related to the torsion multiplication processing unit 31.
[0078] Similarly, the order in which the filter processing unit 420 of this embodiment outputs the filter coefficients C(k) is determined by the FFT frame mutual arrangement bit reverse order, which is the output order of the second data sorting processing unit 12, and specifically outputs in the order shown in Figure 11.
[0079] As is clear from Figure 11, the values of cs(0) to cs(7) in the filter coefficient C(k) are the same from cycle 0 to cycle 3, and the same from cycle 4 to cycle 7, and in subsequent cycles as well, the first to fourth FFT processing (F1~ F4 ) is the same every four cycles corresponding to this.
[0080] The "FFT frame mutual arrangement bit reverse order" of this embodiment is the first to fourth FFT processing (F1~ F4 Within the four cycles corresponding to this sequence, the value of the filter coefficient C(k) does not change, so compared to, for example, the "bit reverse sequence," the operating rate related to the filter coefficient C(k) can be reduced. As a result, this sequence can be said to reduce the power consumption related to the filter processing unit 420.
[0081] As described above, in this embodiment, the FFT device 10 can output data in any order by specifying the order using the output order setting 52. For example, by alternating the processing order (interleaving) of multiple FFT processes that are processed consecutively, the power consumption related to the twist calculation and filter calculation can be reduced. As a result, the power consumption of the entire digital filter process can be reduced.
[0082] In this embodiment, we have described a case where a 64-point FFT process (N=64) is processed in 8 parallel data (P=8) over 8 cycles (M=N / P=8), but the number of points in the FFT process is not limited to 64. This embodiment may be similarly applied to any integer N of 2 or more. Also, the number of parallel data is not limited to 8; it may be processed in P parallel data for any integer P less than or equal to N. In this case, one N-point FFT process is processed in C=N / P cycles.
[0083] Furthermore, although this embodiment describes the case where the processing order of four consecutively processed FFT operations is alternated (interleaved) as an example, the number of alternately processed FFT operations is not limited to four. For any two or more integers F, the processing order of F consecutively processed FFT operations may be alternated. In this case, it is possible to reduce the operating rate related to the torsion coefficient W(n) and the filter coefficient C(k) to 1 / F, and accordingly, the power consumption related to the torsion calculation and the filter calculation can be reduced.
[0084] Furthermore, although this embodiment describes the FFT process as an example, the same applies to IFFT. In other words, by applying the control method of this embodiment to an IFFT processing device and optimizing the processing order within the IFFT process and in the subsequent stages of the IFFT process, power consumption within the IFFT process and in the subsequent stages of the IFFT process can be reduced.
[0085] (Third embodiment) The digital filter circuit according to the third embodiment of the present invention is an embodiment in which the output order specification 52 is specified in a different order from that of the second embodiment, while having the same circuit configuration as the digital filter circuit 400 according to the second embodiment.
[0086] The second data sorting processing unit 12 according to the third embodiment sorts the data y(n) output sequentially by the first butterfly arithmetic processing unit 21 in the order shown in Figure 12 (hereinafter referred to as the "FFT frame interconnection power optimization bit reverse order"). The "FFT frame interconnection power optimization bit reverse order" relates to the order in which s data sets Qs per FFT process, created in bit reverse order, are output as the cycle progresses for multiple FFT processes that are processed consecutively, and can be specified by the output order specification 52. In this embodiment, the FFT frame mutual arrangement power optimization bit reverse order is specified as a sequence in which Q3 of the first to fourth FFT processes are performed consecutively, then Q5 of the first to fourth FFT processes, then Q1 of the first to fourth FFT processes, then Q7 of the first to fourth FFT processes, then Q0 of the first to fourth FFT processes, then Q2 of the first to fourth FFT processes, then Q6 of the first to fourth FFT processes, and then Q4 of the first to fourth FFT processes.
[0087] The second data sorting processing unit 12 receives the read addresses 51 output by the read address generation unit 41 and determines the output order. The read address generation unit 41 generates the read addresses 51 to output to the data sorting processing unit 12 by referring to the output order setting 52 provided by a higher-level circuit (not shown), such as the CPU (Central Processing Unit).
[0088] Specifically, the second data sorting processing unit 12 outputs Q3 of the first FFT process in the 0th cycle, Q3 of the second FFT process in the 1st cycle, Q3 of the third FFT process in the 2nd cycle, and Q3 of the fourth FFT process in the 3rd cycle. Similarly, it outputs Q5 of the first FFT process in the 4th cycle, Q5 of the second FFT process in the 5th cycle, and Q5 of the third FFT process in the 6th cycle. 7 In the fourth cycle, output Q5 of the fourth FFT process. Similarly, From cycles 8 to 11, the Q1 of the first to fourth FFT processes are performed in order. From cycles 12 to 15, Q7 of the first to fourth FFT processes is performed in order. From cycles 16 to 19, the Q0 of the first to fourth FFT processes are performed in order. From cycles 20 to 23, Q2 of the first to fourth FFT processes is performed in order. From cycles 24 to 27, Q6 of the first to fourth FFT processes is performed in order. From cycles 28 to 31, the Q4 values of the first to fourth FFT processes are output sequentially. In other words, the "FFT frame inter-arrangement power optimization bit reverse order" is similar to the "FFT frame inter-arrangement bit reverse order" in the second embodiment, and can be described as an order in which the processing order of multiple FFT processes is interleaved so that the processing of the Cth cycle (C is an integer between 0 and 7) of each of the F FFT processes (F is a positive integer of 2 or more) that are processed consecutively is processed in consecutive cycles.
[0089] The twist multiplication processing unit 31 according to the third embodiment is a circuit that processes complex rotation on the complex plane in the FFT operation after the first butterfly operation, and corresponds to the twist multiplication process 504 in the data flow 500 of Figure 14. Note that no data reordering is performed in the twist multiplication process.
[0090] The twist multiplication processing unit 31 consists of a twist coefficient table 31a and a twist multiplication unit 31b. The twist coefficient table 31a outputs twist coefficients W(n) (n=0,1,···,63) corresponding to the data y(n) (n=0,1,···,63) in each FFT process output by the second data sorting processing unit 12 in the "FFT frame mutual arrangement power optimization bit reverse order". W(n) is the twist coefficient corresponding to the data y(n). Therefore, the order in which the twist multiplication processing unit 31 outputs the twist coefficients W(n) is uniquely determined by the "FFT frame mutual arrangement power optimization bit reverse order", which is the order in which the second data sorting processing unit 12 outputs the sorted data. Specifically, when the second data sorting processing unit 12 outputs in the "FFT frame mutual arrangement power optimization bit reverse order" shown in Figure 12, the twist coefficient table 31a outputs the twist coefficients in the order shown in Figure 13. As is clear from Figures 12 and 13, the torsion coefficient W(n) (n=0,1,···,63) output by the torsion multiplication processing unit 31 corresponds to y(n) output by the second data sorting processing unit 12.
[0091] Here, we will explain the difference between the "FFT frame mutual arrangement bit reverse order," which is the data order adopted by the second embodiment after the output of the second data sorting processing unit 12, and the "FFT frame mutual arrangement power-optimized bit reverse order," which is the data order adopted by this embodiment after the output of the second data sorting processing unit 12.
[0092] Similar to the second embodiment, in this embodiment as well, the output order of the FFT device 10 is determined by the output order of the second data sorting processing unit 12. Accordingly, the order in which the twist multiplication processing unit 31 outputs the twist coefficients W(n) in this embodiment is determined by the output order of the second data sorting processing unit 12.
[0093] In the "FFT frame mutual arrangement bit reverse order" shown in Figure 6 and the "FFT frame mutual arrangement power optimization bit reverse order" shown in Figure 12, the data set Qs is the same from cycle 0 to cycle 3, and the same from cycle 4 to cycle 7, and in subsequent cycles as well, the first to fourth FFT processing (F1~ F4 ) is the same every four cycles corresponding to ). On the other hand, the data set Qs changes from cycle 3 to cycle 4, from cycle 7 to cycle 8, from cycle 11 to cycle 12, from cycle 15 to cycle 16, from cycle 19 to cycle 20, from cycle 23 to cycle 24, and from cycle 27 to cycle 28, but the order in which it changes is different between the "FFT frame mutual arrangement bit reverse order" and the "FFT frame mutual arrangement power optimization bit reverse order".
[0094] Specifically, in the "FFT frame mutual arrangement bit reverse order," the order of change is Q0, Q1, Q2, Q3, Q4, Q5, Q6, Q7, whereas in the "FFT frame mutual arrangement power optimization bit reverse order," the order of change is Q3, Q5, Q1, Q7, Q0, Q2, Q6, Q4. Therefore, the torsion coefficient W(n) also changes according to the "FFT frame mutual arrangement power optimization bit reverse order," as shown in Figure 13.
[0095] The value of the torsion coefficient W(n) is specific to the FFT process and does not depend on the values of the data input to the FFT device 10. In Figure 13, data sets W0 to W7 each consist of eight data points from ws(0) to ws(7), and the values of ws(0) to ws(7) change from cycle 0 to cycle 7 according to the FFT frame mutual arrangement bit reverse order, which is W3, W5, W1, W7, W0, W2, W6, W4.
[0096] Here, focusing on the power consumption of the twist multiplication processing unit 31, the magnitude of the change in the values of the eight data points from ws(0) to ws(7) greatly affects the power consumption. Specifically, in the binary values obtained by representing the twist coefficient W(n) in binary, the bit-level operation rate (toggle rate) of the eight data points from ws(0) to ws(7) greatly affects the power consumption. This is because the dynamic power consumption P of a digital signal processing circuit realized by a CMOS (Complementary Metal Oxide Semiconductor) circuit can be expressed by the equation (4) shown below,
[0097] P = (1 / 2) * a * C * V² * f ... (4)
[0098] Here, a: circuit operation rate, C: Load capacity, V: voltage, f: Operating frequency This is because the bit-level operating rate of the eight data points from ws(0) to ws(7) greatly affects the circuit operating rate a. In other words, selecting an output order that reduces the bit-level operating rate of the eight data points from ws(0) to ws(7) is effective in reducing the power consumption of the twist multiplication processing unit 31.
[0099] One specific method for selecting the output order that minimizes the bit-level operation rate of the eight data points from ws(0) to ws(7) is to use the Hamming distance as an indicator. The Hamming distance is the distance between two data points, and in the case of binary data, it is equal to the number of bits that differ between the two binary data points. That is, when a torsion coefficient data point changes, the operation rate is equal to the Hamming distance between the coefficient data value before the change and the coefficient data value after the change. Therefore, the operation rate with respect to the torsion coefficient W(n) can be calculated by summing the Hamming distances with respect to the torsion coefficient W(n) during the FFT process.
[0100] For example, the operating rate for the torsion coefficient W(n) due to the bit reverse order of the FFT frame arrangement shown in Figure 13 is given by denoting the Hamming distance between the torsion coefficients W(i) and W(j) as Hamming(i,j) and the Hamming distance with respect to the data ws(i) as H(i), Since the data ws(0) is W(3) in cycle 0, W(5) in cycle 1, W(1) in cycle 2, W(7) in cycle 3, W(0) in cycle 4, W(2) in cycle 5, W(6) in cycle 6, and W(4) in cycle 7, H(0)=Hamming(3,5)+Hamming(5,1)+Hamming(1,7)+Hamming(7,0)+Hamming(0,2)+Hamming(2,6)+Hamming(6,4) It can be calculated by [method]. Similarly, for H(1) to H(7), H(1)=Hamming(11,13)+Hamming(13,9)+Hamming(9,15)+Hamming(15,8)+Hamming(8,10)+Hamming(10,14)+Hamming(14,12) H(2)=Hamming(19,21)+Hamming(21,17)+Hamming(17,23)+Hamming(23,16)+Hamming(16,18)+Hamming(18,22)+Hamming(22,20) H(3)=Hamming(27,29)+Hamming(29,25)+Hamming(25,31)+Hamming(31,24)+Hamming(24,26)+Hamming(26,30)+Hamming(30,28) H(4)=Hamming(35,37)+Hamming(37,33)+Hamming(33,39)+Hamming(39,32)+Hamming(32,34)+Hamming(34,38)+Hamming(38,36) H(5)=Hamming(43,45)+Hamming(45,41)+Hamming(41,47)+Hamming(47,40)+Hamming(40,42)+Hamming(42,46)+Hamming(46,44) H(6)=Hamming(51,53)+Hamming(53,49)+Hamming(49,55)+Hamming(55,48)+Hamming(48,50)+Hamming(50,54)+Hamming(54,52) H(7)=Hamming(59,61)+Hamming(61,57)+Hamming(57,63)+Hamming(63,56)+Hamming(56,58)+Hamming(58,62)+Hamming(62,60) It can be calculated by [method]. Therefore, the rate of action A with respect to the torsion coefficient W(n) is calculated from the sum of the Hamming distances P with respect to the torsion coefficient W(n). A=P=H(0)+H(1)+H(2)+H(3)+H(4)+H(5)+H(6)+H(7) It can be calculated using this method.
[0101] The "FFT frame mutual arrangement power optimization bit reverse order" of this embodiment is selected from among multiple candidates for the "FFT frame mutual arrangement bit reverse order" in which the operating rate A with respect to the torsion coefficient W(n) is smallest. In other words, the "FFT frame mutual arrangement power optimization bit reverse order" of this embodiment is the order in which the power consumption related to the torsion coefficient table 31a that outputs the torsion coefficient W(n) is smallest among multiple candidates for the "FFT frame mutual arrangement bit reverse order".
[0102] On the other hand, the twist multiplication unit 31b, which constitutes the twist multiplication processing unit 31, is affected not only by the operating rate of the twist coefficient W(n) but also by the operating rate of y(n) output by the second data sorting processing unit 12. However, since the FFT device 10 accepts arbitrary data as input, the operating rate of y(n) is considered to be constant in the long term, regardless of the order in which y(n) is output. Similarly, for the data sorting processing unit and butterfly arithmetic processing unit that constitute the FFT device 10, since the FFT device 10 accepts arbitrary data as input, the operating rates of these processing units are considered to be constant in the long term, regardless of the order of processing. Therefore, the "FFT frame mutual arrangement power-optimized bit reverse order" of this embodiment can be said to be the order in which the power consumption of the FFT device 10 is smallest among multiple candidates for the "FFT frame mutual arrangement bit reverse order".
[0103] As described above, in this embodiment as well, the FFT device 10 can output data in any order by specifying the order using the output order setting 52. For example, by alternating the processing order (interleaving) of multiple FFT processes that are processed consecutively, the power consumption related to the twist calculation and filter calculation can be reduced. As a result, the power consumption of the entire digital filter process can be reduced.
[0104] In this embodiment, we have described a case where a 64-point FFT process (N=64) is processed in 8 parallel data (P=8) over 8 cycles (M=N / P=8), but the number of points in the FFT process is not limited to 64. This embodiment may be similarly applied to any integer N of 2 or more. Also, the number of parallel data is not limited to 8; it may be processed in P parallel data for any integer P less than or equal to N. In this case, one N-point FFT process is processed in C=N / P cycles.
[0105] Furthermore, although this embodiment describes the case where the processing order of four consecutively processed FFT operations is alternated (interleaved) as an example, the number of alternately processed FFT operations is not limited to four. For any two or more integers F, the processing order of F consecutively processed FFT operations may be alternated. In this case, it is possible to reduce the operating rate related to the torsion coefficient W(n) and the filter coefficient C(k) to 1 / F, and accordingly, the power consumption related to the torsion calculation and the filter calculation can be reduced.
[0106] Furthermore, this embodiment processes the operations in an order that minimizes the power consumption associated with the twist multiplication process. As a result, the overall power consumption of the FFT process can be reduced.
[0107] Furthermore, although this embodiment describes the FFT process as an example, the same applies to IFFT. In other words, by applying the control method of this embodiment to an IFFT processing device and optimizing the processing order within the IFFT process and in the subsequent stages of the IFFT process, power consumption within the IFFT process and in the subsequent stages of the IFFT process can be reduced.
[0108] In the embodiments described above, the disclosure was explained as a hardware configuration, but the disclosure is not limited thereto. The disclosure can also be implemented by having a CPU (Central Processing Unit) execute a computer program to perform the processing steps described in the flowchart and other embodiments.
[0109] In the above example, the program can be stored and supplied to the computer using various types of non-transitory computer-readable medium. Non-transitory computer-readable medium includes various types of tangible storage medium. Examples of non-transitory computer-readable medium include magnetic recording media, magneto-optical recording media, CD-ROMs (Read Only Memory), CD-Rs, CD-R / Ws, and semiconductor memory. Examples of semiconductor memory include mask ROMs, PROMs (Programmable ROMs), EPROMs (Erasable PROMs), flash ROMs, and RAMs (Random Access Memory). Alternatively, the program may be supplied to the computer using various types of transient computer-readable medium. Examples of transient computer-readable medium include electrical signals, optical signals, and electromagnetic waves. Transitory computer-readable medium can be supplied to the computer via wired communication channels such as electric wires and optical fibers, or via wireless communication channels.
[0110] This disclosure is not limited to the embodiments described above, and may be modified as appropriate without departing from its spirit. [Explanation of symbols]
[0111] 10. FFT (Fast Fourier Transform) device 11. First data sorting processing unit (first data sorting processing means) 12. Second data sorting processing unit (second data sorting processing means, storage means) 21 First butterfly arithmetic processing unit (butterfly arithmetic processing means) 22 Second butterfly arithmetic processing unit 21a, 22a Base 8 butterfly arithmetic processing unit 31. Twist Multiplication Processing Unit (Twist Multiplication Processing Means) 41 Read address generation unit (read address generation means) 51 Read address 52 Output Order Setting 100, 200 Data Sorting Processing Unit 101a~101h Data storage location 102a~102h Data readout positions 201a~201h Data storage location 202a~202h Data readout positions 400 Digital Filtering Device 420 Filter Processing Unit (Filter Processing Means) 421 Filter Coefficient Table 422 Filter Multiplication Section 431, 434 complex number signals 500 data flows 501 Data sorting process 502, 503 Butterfly arithmetic processing 504 Twist Multiplication Process 505a~505h Partial Data Flow
Claims
1. A Fast Fourier Transform (FFT) device that performs a Fast Fourier Transform or Inverse Fast Fourier Transform in M cycles (M is a positive integer of 2 or more) for each N consecutive input data (N is a positive integer of 2 or more) in the input time domain, The fast Fourier transform device processes F fast Fourier transforms or inverse fast Fourier transforms (where F is a positive integer of 2 or more) in succession. A first data sorting processing means that sorts F × N first input data entered in a first order and outputs first output data in a second order, Butterfly arithmetic processing means that performs butterfly arithmetic processing on the first output data and outputs the second output data in the first order, A second data sorting processing means sorts the second output data and outputs the third output data in a third order, The system includes a torsion multiplication processing means that multiplies the third output data by a torsion coefficient to perform a torsion multiplication process and outputs a fourth output data in the third order, The third order is the order in which the processing of the C-th cycle (where C is an integer between 0 and M-1) in each of the F fast Fourier transforms or inverse fast Fourier transforms that are processed consecutively is processed in consecutive cycles. The twist multiplication processing means performs a twist multiplication process on the third output data by outputting twist coefficients in the third order, wherein the third order is an order in which the bit transition rate between consecutive cycles of the twist coefficients is small. This is a fast Fourier transform device.
2. The second data sorting processing means described above is: A storage means for storing M × N of the second output data, The system includes a read address generation means that generates F × N read addresses of the third output data from the storage means based on the output order setting, The fast Fourier transform apparatus according to claim 1, characterized in that it stores a plurality of the second output data in the second order and reads them out in the third order.
3. A fast Fourier transform apparatus according to claim 1 or 2, With respect to the output data output by the Fast Fourier Transform device in the third order, A filtering means that outputs filter coefficients in the third order described above and performs a filter multiplication process, A digital filter device equipped with the following features.
4. A Fast Fourier Transform (FFT) device performs a Fast Fourier Transform or Inverse Fast Fourier Transform for every N consecutive input data points (where N is a positive integer greater than or equal to 2) in M cycles (where M is a positive integer greater than or equal to 2) on input data in the time domain. In a series of F fast Fourier transforms or inverse fast Fourier transforms (where F is a positive integer greater than or equal to 2), The F × N first input data points, which are input in a first order, are rearranged, and the first output data is output in a second order. Butterfly arithmetic processing is performed on the first output data, and the second output data is output in the first order. The second output data is rearranged, and the third output data is output in a third order. The third output data is multiplied by a torsion coefficient to perform a torsion multiplication process, and the fourth output data is output in the third order. The third order is the order in which the processing of the C-th cycle (where C is an integer between 0 and M-1) in each of the F fast Fourier transforms or inverse fast Fourier transforms that are processed consecutively is processed in consecutive cycles. A fast Fourier transform method characterized in that, in the twist multiplication process, the fast Fourier transform device outputs twist coefficients in the third order to the third output data and performs the twist multiplication process, wherein the third order is an order in which the bit transition rate between consecutive cycles of the twist coefficients is small.
5. In the second data sorting process described above, the Fast Fourier Transform device is Store M × N of the second output data, Based on the output order setting, read addresses for F × N third output data are generated from M × N second output data. The Fast Fourier Transform method according to claim 4, characterized in that a plurality of the second output data are stored in a second order and read out in a third order.
6. A Fast Fourier Transform (FFT) device performs a Fast Fourier Transform or Inverse Fast Fourier Transform in M cycles (M is a positive integer greater than or equal to 2) for every N consecutive input data points (where N is a positive integer greater than or equal to 2) in the input time domain. In a series of F fast Fourier transforms or inverse fast Fourier transforms (where F is a positive integer greater than or equal to 2), A process that rearranges F × N first input data points, which are input in a first order, and outputs the first output data in a second order, The process involves performing a butterfly operation on the first output data and outputting the second output data in the first order, The second output data is rearranged, and the third output data is output in a third order. The process involves multiplying the third output data by a torsion coefficient to perform a torsion multiplication process, and outputting the fourth output data in the third order, Make it run, The third order is the order in which the processing of the C-th cycle (where C is an integer between 0 and M-1) in each of the F fast Fourier transforms or inverse fast Fourier transforms that are processed consecutively is processed in consecutive cycles. A program characterized in that, in the twist multiplication process, the Fast Fourier Transform device is instructed to output twist coefficients to the third output data in the third order and perform the twist multiplication process, wherein the third order is an order in which the bit transition rate between consecutive cycles of the twist coefficients is small.
7. In the second data sorting process described above, the Fast Fourier Transform device is used. A process for storing M × N of the second output data, A process to generate read addresses for F × N third output data from M × N second output data based on the output order setting, The program according to claim 6, characterized in that it performs a process of storing a plurality of the second output data in a second order and reading them in a third order.
Citation Information
Patent Citations
Fluidized bed heat recovery device
JP1988058096A
Butterfly arithmetic circuit and fast fourier transforming device using same
JP1996137832A
Fast fourier transform device
JP2001056806A
Frequency division multiplex transmission and reception apparatus and wavenumber division multiplex transmission and reception apparatus, and method thereof
JP2007251451A
FFT operation device
JP2012022500A