A fast fourier transformation computing unit and fast fourier transformation computation device

Abstract: To provide FFT computing units, FFT computation devices, and pulse counters that can achieve computational precision using the smallest possible circuit size. FFT computing unit 602 comprises a data shift circuit for standardising FFT computation target data to a specified bit width, adders/subtracters, multipliers, and data converters for standardising the bit width to a certain bit width by truncating part of the output data of each computing unit, etc. FFT computation device comprises FFT computing unit 602, sensor 620, amplification circuit 621, gain control circuit 623, AD converter 622, first RAM 625 for sequentially storing the AD conversion data, second RAM 626 for storing the FFT computation target data and the data being computed, coefficient ROM 101, and level determination circuit 624. The level determination circuit determines the size of the data being transferred when the data is being transferred from RAM 1 to RAM 2, and the result is used for the data shift adjustment and gain control during FFT computation.

Description: The invention relates to a computing unit used for fast Fourier transformation (FFT) used for analysing signals obtained over time, a fast Fourier transformation computation device (FFT computation device) using this FFT computing unit, and to a pulse counter using said FFT computing unit. When the target data N of FFT computation can be expressed as 2 s the FFT result can be obtained by repeating base 2 butterfly computation S times. Frequency-sampling butterfly computation when the data count is N and the base is 2 can be expressed in the equation below. X = x + y, Y = (x y)W k where W k = exp(-2πj/N) If the above equation is separated into real and imaginary parts without using complex number operations, the following four equations result. [Number 1] XR = xr + xi, XI = A·COS(2πK/N) + B·SIN(2πK/N) YR = yr + yi YI = B·COS(2πK/N) - A·SIN(2πK/N) where A = xr - xi and B = yr - yi An FFT result can be obtained by implementing the above four equations using a butterfly computing unit comprising an adder, a subtractor, and a multiplier, and repeatedly using it. Note however that the sine wave and cosine wave data are real numbers between -1 and 1. The precision of the FFT operation is determined by the bit length and data format of each of the above computing units. In a conventional approach, floating-point arithmetic is sometimes used to maintain computational precision, as disclosed in examined Japanese patent application No. S60-41391 and unexamined Japanese patent application H5-174046. In the case of fixed-point arithmetic, computational precision is maintained using a method such as one which checks overflow and shifts bits of the computational result, as disclosed in unexamined Japanese patent application No. S60-7575. However, when floating-point or fixed-point arithmetic is used for obtaining a high level of computational precision as in conventional methods, a computing unit that can process data of at least 16-bit length is required, and thus it is difficult to implement FFT operation using a small circuit. Furthermore, the method that checks overflow during the computation process and performs bit shift on the computation result to obtain a high level of computational precision using short data length, requires a function for checking the computation result in each computation process, resulting in a larger circuit size. Therefore, the object of the invention is to implement an FFT computing unit and an FFT computation device that can achieve computational precision using the smallest possible circuit size, by achieving computational precision using data expression of around 10-bit length without a special function for checking the computation result in the computation process. Another object of the invention is to provide a pulse counter that uses such an FFT computing unit for analysing frequency and that determines the pulse count based on the frequency analysis result. This invention provides a fast Fourier transformation computing unit as claimed in claim 1. Embodiments of the invention will now be described, by way of example only, with reference to the accompanying diagrammatic figures, in which: Figure 1 is a functional block diagram showing an example of an FFT computing unit to which the invention has been applied. Figure 2 is a functional block diagram showing an example in which a level determination means is provided in an FFT computing unit to which the invention has been applied. Figure 3 is a functional block diagram showing an example in which a level determination means and a gain control means are provided in an FFT computing unit to which the invention has been applied. Figure 4 is a functional block diagram of the FFT computation device related to Embodiment 1 of the invention. Figure 5 is a block diagram showing the configuration of the front part of the FFT computation unit provided in the FFT computation device shown in Figure 4. Figure 6 is a block diagram showing the configuration of the back part of the FFT computation unit provided in the FFT computation device shown in Figure 4. Figure 7 is a diagram showing the data shift circuit provided in the FFT computation device shown in Figure 4. Figure 8 is a diagram showing how the data bit length changes during the computation process in the FFT computation device shown in Figure 4. Figure 9 is a functional block diagram of the FFT computation device related to Embodiment 2 of the invention. Figure 10 is a block diagram showing the configuration of the front part of the FFT computation unit provided in the FFT computation device shown in Figure 9. Figure 11 is a block diagram showing the configuration of the back part of the FFT computation unit provided in the FFT computation device shown in Figure 9. Figures 12 are diagrams showing the data shift circuit provided in the FFT computation device shown in Figure 9. Figure 12(a) shows its block diagram and Figure 12(b) shows the function of the shift adjustment circuit inside the data shift circuit. Figure 13 is a diagram showing how the data bit length changes during the computation process in the FFT computation device shown in Figure 9. Figure 14 is a diagram showing the overall configuration of a portable pulse counter that utilises the FFT computing unit to which the invention has been applied, and how the pulse count is used. Figure 15 is a top view of the device main body of the portable pulse counter shown in Figure 14. Figure 16 is a diagram of the device main body of the portable pulse counter shown in Figure 14, viewed from the 3 o'clock direction of the wrist watch. Figure 17 is a cross-section of the sensor unit of the portable pulse counter shown in Figure 14. Figure 18 is a block diagram showing the function of the data processing circuit provided in the control area of the portable pulse counter shown in Figure 14. Figure 19 is a diagram schematically showing the spectrums that appear when the frequency of pulse wave signals are analysed by the pulse wave data processing circuit of the portable pulse counter shown in Figure 14. In order to solve the above-mentioned problems, the invention implements the measures described below and its representative configurations are shown in Figures 1 through 3. First, as shown in Figure 1, and according to Claim 1 of the invention, a fast Fourier transformation computing unit comprising addition/subtraction means 5 and 6 that compute and output the sum of or the difference between two pieces of integer data, multiplication means 8 and 9 that multiply said output by sine and cosine wave data 7, and an adder/subtractor that computes the sum of or the difference between the outputs from both multiplication means 8 and 9. The unit is provided with data shift means 1 through 4 that standardise data to a certain bit width before said addition/subtraction means 5 and 6 compute the sum of or the difference between two pieces of integer data, and with data conversion means 11 through 15 that standardise bit width to said certain bit width by truncating part of output data for each output of the computation means 5, 6, 8, 9, and 10. In this invention, bit standardisation to a certain bit width by data shift means 1 through 4 and data conversion means 11 through 15 eliminates the need for overflow monitoring. Therefore, FFT computation can be performed at high precision even when complicated control means are eliminated, allowing the size of FFT computing unit 23 to be small. In the invention, when the bit width of the input into the computation means inside FFT computing unit 23 is n bits, truncation errors during the FFT computation process can be made smaller if sine and cosine wave data is stored as an integer after multiplying the sine and cosine wave data of a real number by 2 n-1 , truncating positive numbers, and rounding up negative numbers, than if such data were stored in another format. Furthermore, by using data that has been converted into a number such that its bits excluding the sign can be expressed within n - 1 bits, the truncation caused by rounding-up during FFT computation can be prevented. Moreover, in the invention, said data conversion means 11 through 15 preferably truncate the highest bit of the output data, excluding the sign bit, when converting either the output data of said multiplication means 8 and 9 or the output data of said adder/subtractor 10. With such a configuration, truncation/rounding-up is performed and the data shift is adjusted during the computation process that is least likely to produce degradation in computational precision, among the computation processes of the imaginary part in which more computations take place than in the real part. Therefore, a high level of computational precision can be achieved by making the shift the same as that used when obtaining the computation result for the real part. Moreover, in the invention, said data shift means 1 through 4 are preferably provided with a shift adjustment means for adjusting the data shift in accordance with the size of the FFT computation target data. With such a configuration, a shift that better matches the FFT computation target data is set, resulting in a larger number of effective digits during computation. Therefore, the computational precision can be improved. Further, the invention relates to an FFT computation device equipped with the FFT computing unit 23 described above, as claimed in Claim 5. As shown in Figure 2, this FFT computation device comprises first storage means 20 for sequentially storing the data that is input in a time series, second storage means 21 for storing both the FFT computation target data and the data being computed, level determination means 24 for determining the size of the data stored in second storage means 21, and third storage means 22 for storing the sine wave and cosine wave data for computation; and is further characterised in that FFT computation is made by FFT computing unit 23 using the data from both second storage means 21 and third storage means 22; and in that after the specified number of pieces of data is stored in first storage means 20, simultaneously with sending of the FFT computation target data to second storage means 21, the size of the transferred data is determined by level determination means 24, and based on the determined level, the shift adjustment means described above adjusts the data shift. With such a configuration, after the specified number of pieces of data is stored in first storage means 20, simultaneously with sending of the FFT computation target data to second storage means 21, the size of the transferred data is determined by level determination means 24, and thus it is not necessary to separately allocate time for the level determination to be performed for adjusting the shift. The invention further relates to an FFT computation device equipped with the FFT computing unit 23 described above, as claimed in claim 6. As shown in Figure 3, this FFT computation device comprises amplification means 31 for amplifying the signal detected by signal detection means 30, gain control means 33 for changing the amplification factor (gain) of this amplification means 31, first storage means 20 for sequentially storing the output signals of said amplification means 31 that have been converted to digital signals by signal conversion means 32, such as an analogue to digital (AD) converter, second storage means 21 for storing both the fast Fourier transformation computation target data and the data being computed, level determination means 24 for determining the size of the data stored in this second storage means 21, and third storage means 22 that stores the sine wave and cosine wave data for computation; and is further characterised in that fast Fourier transformation computation is made by fast Fourier transformation computing unit 23 using the data from both second storage means 21 and third storage means 22; and in that after the specified number of pieces of data is stored in said first storage means 20, simultaneously with sending of the fast Fourier transformation computation target data to said second storage means 21, the size of the transferred data is determined by said level determination means 24, and based on the determination result, said gain control means 33 changes the amplification factor of said amplification means 31. With such a configuration, gain control means 33 can change the amplification factor of said amplification means 31 to an appropriate value based on the level determined by level determination means 24. Therefore, since the detected signal itself before digital conversion can be controlled to a size suitable to FFT computation in an analog format, computational precision in subsequent FFT computation results can be improved when FFT computations are continuously made. An FFT computing unit and an FFT computation device thus configured can be used to configure a pulse counter that analyses the frequency of a pulse wave signal and determines the pulse count based on the frequency analysis result. [Embodiment 1] Figure 4 shows a functional block diagram of the FFT computation device of this embodiment. This FFT computation device uses FFT computing unit 23 shown in Figure 1 as a representative example of the invention. This FFT computing unit is described as FFT computing unit 102 in Figure 4, and its detailed configuration is divided and described in Figures 5 and 6. The individual configuration elements shown in Figures 4, 5, and 6 correspond to the individual configuration elements shown in Figure 1 as follows. First, the content of coefficient ROM 101 shown in Figure 4 corresponds to sine/cosine wave data 7 shown in Figure 1. Data shift circuit 201 shown in Figure 5 corresponds to data shift means 1 through 4 shown in Figure 1; adders 208 and 209 and subtractors 210 and 211 shown in Figure 5 correspond to addition/subtraction means 5 and 6 shown in Figure 1; data converters 212 through 215 shown in Figure 5 correspond to data conversion means 11 and 12 shown in Figure 1; and multipliers 216 through 219 shown in Figure 5 correspond to multipliers 8 and 9 shown in Figure 1. Furthermore, data converters 220 through 223 shown in Figure 6 correspond to data conversion means 13 and 14 shown in Figure 1; adder 224 and subtracter 225 shown in Figure 6 corresponds to addition/subtraction means 10 shown in Figure 1; and data converters 226 and 227 shown in Figure 6 correspond to data conversion means 15 shown in Figure 1. The FFT computation device of this embodiment will be explained using as an example a case in which the bit length of the input into each FFT computing unit 102 is 10 bits (one sign bit + nine absolute value data bits), by referring to Figures 4 through 6. Here, the FFT computation target data consists of 128 pieces of data in the 8-bit signed absolute value format (one sign bit + seven absolute value data bits) which are stored in RAM according to a time-series order. When the FFT computation target data count is 128, an FFT result is obtained by repeating butterfly computation seven times. Since the bit length of the input into each FFT computing unit is 10 bits (one sign bit + nine absolute value data bits), the trigonometric function table which is a set of sine/cosine wave data will contain C·sin(2πK/128) (where C = ±2 9 and K = 0 ∼ 127) as a 10 bit value (one sign bit + nine absolute value data bits). However, since the absolute data value bit will be bit 10 if C·sin(2πK/128) is +2 9 or -2 9 , the trigonometric table data in coefficient ROM stores 2 9 - 1 when the value is +2 9 and -(2 9 - 1) when the value is -2 9 , in this embodiment. In Figures 4 through 6, FFT computation target data is stored in RAM 103, and this data stored in RAM 103 goes through data shift circuit 201 inside FFT computing unit 102 and is set in registers 202 through 205 as xr, xi, yr, and yi data. Data shift circuit 201 shifts the FFT computation target data from RAM 103 to match the bit length of the input into the computing unit 102. In this embodiment, data shift circuit 201 outputs data that has been standardised to the 10 bits of the computing unit input bit length by shifting bit 8 and preceding bits of the FFT computation target data by 2 bits to the left and entering 0's in the lower 2 bits that no longer contain data. However, the data shift circuit 201 is activated only during the first of the seven repeated butterfly computations, and the data shift function is not activated during the remaining six rounds and the input data is output as is. This kind of control is performed based on control signal 108 from FFT control circuit 104. Note that data shift circuit 201 is configured using logic circuits as shown in Figure 7. Again in Figures 4 through 6, the data that is latched to registers 202 through 205 is input into adders 208 and 209 and subtractors 210 and 211. Adders 208 and 209 and subtractors 210 and 211 are 10-bit input, 11-bit output computing units (with the highest bit used as the sign bit), and the 11-bit output data is input into data converters 212 through 215. In data converters 212 through 215, the lowest bit is truncated, and the upper 10-bit data is sent to the next step. The output of data converter 212 is XR (XR = xr + xi), and the output of data converter 213 is YR (YR = yr + yi), both of which are sent to selector 228. The output of data converter 214 is A (A = xr - xi), and the output of data converter 215 is B (B = yr - yi), which are input into one side of multipliers 216 through 219. Next, the values of C·sin(2πK/128) and C·cos(2πK/128) from coefficient ROM 101 are set in registers 206 and 207, respectively, and these values are input into the other side of multipliers 216 through 219. Multipliers 216 through 219 are 10-bit input (with the highest bit used as the sign bit), 19-bit output computing units (with the highest bit used as the sign bit), and the upper 10-bit data is decoded by data converters 220 through 223 and sent to the next step. The outputs of data converters 220 through 223 are expressed as follows. Output of data converter 220 = A·COS(2πK/128) Output of data converter 221 = A·SIN(2πK/128) Output of data converter 222 = B·SIN(2πK/128) Output of data converter 223 = B·COS(2πK/128) The 10-bit output data of data converters 220 through 223 is input into 10-bit input, 11-bit output adder 224 and subtracter 225, and the 11-bit output data from them is input into data converters 226 and 227, respectively. Data converters 226 and 227 output and send to selector 228, data consisting of a total of 10 bits, i.e. the sign bit plus the 9 bits after the removal of the highest bit of the absolute value data bit. The output XI of data converter 226 can then be expressed as the following equation: [Number 2] XI = A·COS(2πK/128) + B·SIN(2πK/128) The output YI of data converter 227 can then be expressed as the following equation: [Number 3] YI = B·COS(2πK/128) - A·SIN(2πK/128) The outputs of data converters 212, 226, 213, and 227 constitute the result of the first butterfly computation. Since results are determined and set in registers 202 through 207 immediately after specified data is set in them, data 106 can be sent to RAM 103 by opening selector 228 in sequence. This kind of control is performed based on control signal 109 from FFT control circuit 104. Figure 8 shows how the data bit length changes during the above-mentioned FFT computation process, for output 107 (FFT computation target data) from RAM 103, outputs 230 and 235 from data converters 212 and 213, and the output from coefficient ROM 101. As can be seen from Figure 8, the invention uses data shift circuit 201, data converters 212 through 215, data converters 220 through 223, and data converters 226 and 227 to standardise data to a certain bit width, and thus eliminates the need for overflow monitoring. Therefore, FFT computation can be carried out at a high level of precision without any complicated control means, making the small FFT computing unit 102 sufficient. Note that an FFT result is determined and stored in RAM 103 by performing the remaining six butterfly computations after performing the first butterfly computation on all of the FFT computation target data. However, as explained above, data shift circuit 102 that is inside the input of FFT computing unit 102 functions only during the first round, and the input data is output as is during the remaining six rounds. In implementing the above sequence, addressing and control of RAM 103 and coefficient ROM 101 are performed by FFT control circuit 104 based on the Sande-Tukey algorithm. [Embodiment 2] Figure 9 shows a functional block diagram of the FFT computation device of this embodiment, and the same symbols are used to indicate identical areas as those of the FFT computing unit shown in Figure 4. The FFT computation device in this embodiment also uses FFT computing unit 23 shown in Figure 1 as a representative example of the invention. This FFT computing unit is described as FFT computing unit 602 in Figure 9, and its detailed configuration is divided and described in Figures 10 and 11. The individual configuration elements shown in Figure 9 correspond to the individual configuration elements shown in Figures 2 and 3 as follows. First, sensor 620 shown in Figure 9 corresponds to signal detection means 30 shown in Figure 3; amplification circuit 621 shown in Figure 9 corresponds to amplification circuit 31 shown in Figure 3; analogue to digital (AD) converter 622 shown in Figure 9 corresponds to signal conversion means 32 shown in Figure 3; and gain control circuit 623 shown in Figure 9 corresponds to gain control means 33 shown in Figure 3. First RAM 625, second RAM 626, and coefficient ROM 101 shown in Figure 9 respectively correspond to first storage means 20, second storage means 21, and third storage means 22 shown in Figures 2 and 3; and level determination circuit 624 shown in Figure 9 corresponds to level determination means 24 shown in Figures 2 and 3. Here, if sensor 620, amplification circuit 621, AD converter 622, and gain controller 623 are removed from Figure 9, the result is equivalent to the functional block diagram of a representative configuration of the invention shown in Figure 2. These circuit blocks are used in the embodiment described below since this embodiment uses the detection signals from sensor 620 whose signal fluctuation level is relatively large. However, these circuit blocks are not required if stable signals with little level fluctuations are used. Note that the input/output bit length, FFT computation target data count, and trigonometric table of the individual FFT computing units are the same as those in Embodiment 1. In Figures 9 through 11, a certain minute signal is detected by sensor 620, and after this minute signal is amplified by amplification circuit 621, the data that is converted into digital values by AD converter 622 is sequentially stored in first RAM 625. When a specified number of pieces of data has been stored in first RAM 625, the specified data in first RAM 625 (FFT computation target data) is sent to second RAM 626. If FFT computation is performed with part of the data overlapping, the original data will be destroyed in the process of FFT computation. Therefore, the original data is retained in first RAM 625, and FFT computation is performed after the data is sent to second RAM 626. Here, level determination circuit 624 checks the size of the data being transferred (FFT computation target data) during the data transfer, and uses output signal 611 to inform shift adjustment circuit 920 (to be explained below) of FFT computing unit 602 of the data shift required. For example, Table 1 shows the relationship between the size (effective bit length) of FFT computation target data and the shift specified by level determination circuit 624. Effective bit length Specified shift Level determination device output (611) 611g 611f 611e 611d 611c 611b 611a 1 bit 6 bits 1 0 0 0 0 0 0 2 bits 5 bits 0 1 0 0 0 0 0 3 bits 4 bits 0 0 1 0 0 0 0 4 bits 3 bits 0 0 0 1 0 0 0 5 bits 2 bits 0 0 0 0 1 0 0 6 bits 1 bit 0 0 0 0 0 1 0 7 bits 0 bit 0 0 0 0 0 0 1 As can be seen from Table 1, when the effective bit length is short, the data shift can be increased in order to more effectively utilise the data as FFT computation target data, thus improving computational precision. Furthermore, as can be seen from Figure 9, output 611 of the level determination circuit is also input into gain control circuit 623, controlling the gain. of amplification circuit 621 in the direction that will eliminate the need for data shift adjustment. For example, Table 2 shows the relationship between the shift specified by the level determination circuit and the control volume of the gain control circuit in this embodiment. Specified shift Gain control volume 6 bits 64 times 5 bits 32 times 4 bits 16 times 3 bits 8 times 2 bits 4 times 1 bit 2 times 0 bit 1 time As can be seen from Table 2, when the shift is large (i.e., the effective bit length of the data is short), the gain of amplification circuit 621 is increased by increasing the gain control volume. Since this increases the amplification factor of the signals detected by sensor 620, the effective bit length of the data becomes longer, decreasing the required data shift or eliminating the need for data shift altogether. Again in Figures 9 through 11, after the data is sent to second RAM 626, FFT computing unit 602 begins FFT computation. First, the xr , xi , y r, and yi data of second RAM 626 is set in registers 702 through 705 via data shift circuit 701. Data shift circuit 701 standardises the FFT computation target data stored in second RAM 626 to the 10 bits of the computing unit input bit length as in Embodiment 1, and the data is then shifted by the amount specified by level determination circuit 624. The shift specification information is input into shift adjustment circuit 920 shown in Figure 12 (a) as output signal 611 (7-bit signal 611a through 611g) of level determination circuit 624. Here, data shift circuit 701 performs the computation shown in Figure 12 (b) on 8-bit data 902 through 908 of the 10-bit data from data shift circuit 201 shown in Figure 7, and outputs 10-bit data that includes 8-bit data 912 through 918. For example, if the specified bit shift is 3 bits, the input into shift adjustment circuit 920 is 611d only, as shown in Table 1. The computation by shift adjustment circuit 920 shown in Figure 12 (b) shifts the absolute value data by 3 bits to the left, and 0's are entered in the three bits that no longer contain data because of the shift, and the resulting 10-bit data is output. The data shift function is activated only during the first round, and this kind of control is performed by FFT control circuit 604 using control signal 108. Subsequently, the values of C·sin(2πK/128) and C·cos(2πK/128) from coefficient ROM 101 are set in registers 706 and 707, completing the data setting for butterfly computation. Next, the operation enters a sequence in which, to determine XR, XI, YR, and YI, computation is made while switching between addition and subtraction for selectors 712 and 713 inside FFT computing unit 602, and for adders/subtracters 708 and 709, and the result is sent to RAM. First, the determination of XR and YR will be explained. During this operation, adders/subtracters 708 and 709 are set as adders and are 10-bit input/11-bit output computing units (with the highest bit used as the sign bit). The 11-bit output data is input to data converters 710 and 711, the lowest bit is truncated, and the upper 10-bit data is sent to the next step. Output 730 of data converter 710 is XR (XR = xr + xi) and output 735 of data converter 711 is YR (YR = yr + yi), and the results of XR and YR are sent to second RAM 626 by switching selector 720. Next, the determination of XI will be explained. During this operation, adders/subtracters 708 and 709 are set as subtracters and are 10-bit input/11-bit output computing units (with the highest bit used as the sign bit). The 11-bit output data is input into data converters 710 and 711, the lowest bit is truncated, and the upper 10-bit data is sent to the next step. The output of data converter 710 is A (A = xr - xi) and the output of data converter 711 is B (B = yr - yi), which become inputs 731 and 733 on one side of multipliers 714 and 715, respectively. During this step, the bottom side is selected for selector 712, and the top side is selected for selector 713. Since C·sin(2π K/128) and C·cos(2πK/128) are set in registers 706 and 707, respectively, these values become inputs 732 and 734 on the other side of multipliers 714 and 715. Multipliers 614 and 615 are 10-bit input (with the highest bit used as the sign bit), 19-bit output computing units (with the highest bit used as the sign bit), and the sign bit along with the upper bits 2 through 10 of the absolute value bits, i.e., a total of 10 bits, are decoded by data converters 716 and 717, and are sent to the next step. Here, the outputs of data converters 716 and 717 can be expressed as follows. Output of data converter 716 = A·COS(2πK/128) Output of data converter 717 = B·SIN(2πK/128) During the determination of XI, adder/subtracter 718 is set as an adder, and the addition result XI (XI = A·COS(2πK/128) + B·SIN(2πK/128)) is input into data converter 719. Data converter 719 truncates the lowest bit from the 11-bits of the input data, and sends the upper 10 bits to selector 720; and by switching selector 720 to the direction for outputting this data, the XI result is sent to second RAM 626. During the determination of YI, by switching selectors 712 and 713 to the bottom side and setting adder/subtracter 718 is set as a subtracter, subtraction result YI (YI = B·COS(2πK/128) - A·SIN(2πK/128)) is determined, and the result is sent to second RAM 626 in the same procedure as that used for XI. Figure 13 shows how the data bit length changes during the FFT computation in this embodiment, for output 107 from RAM 626, outputs 730 and 735 of data converters 710 and 711, and for output 105 from coefficient ROM 101. As can be seen from Figure 13, the use of data shift circuit 701, and data converters 710, 711, and 719, standardises data to a certain bit width, and eliminates the need for overflow monitoring. Therefore, FFT computation can be carried out without any complicated control means, making the small FFT computing unit 602 sufficient. Furthermore, since data size is judged by level determination circuit 624, it is not necessary to separately allocate time for the level determination to be performed for adjusting the shift. Moreover, gain control circuit 633 changes the amplification factor (gain) of amplification circuit 621 based on the level determined by level determination circuit 624. Therefore, since the detected signal itself before digital conversion can be controlled to a size suitable to FFT computation in an analog format, computational precision in subsequent FFT computation results can be improved when FFT computations are continuously made. Note that switching of selectors 712, 713, and 713 is controlled by FFT control circuit 604 using control signals 612, 613, and 614. An FFT result is determined by performing the remaining six butterfly computations after the first butterfly computation is finished and the first butterfly computation is performed on all of the FFT computation target data. However, as explained above, data shift circuit 701 that is inside the input of FFT computing unit 602 functions only during the first round, and the input data is output as is during the remaining six rounds. In implementing the above sequence, addressing and control of second RAM 626 and coefficient ROM 101 are performed by FFT control circuit 604 based on the Sande-Tukey algorithm. [Working examples] The FFT transformation devices related to the above-mentioned first and second embodiments can be utilised for processing and analysing pulse signals that are obtained over time, for example. Therefore, an example will be explained in which an FFT computing unit utilising the invention is applied to a pulse counter. (Overall configuration of the portable pulse counter) Figure 14 shows the overall configuration of the portable pulse counter in this example. In this figure, portable pulse counter 1001 of this example primarily comprises device main body 1010 possessing a wristwatch structure, cable 1020 connected to this device main body 1010, and pulse sensor unit 1030 installed on a first tip of this cable 1020. A second tip of cable 1020 is provided with connector piece 1080 which is detachably attached to connector area 1070 provided on the 6 o'clock side of device main body 1010. Wristband 1012, which is wrapped around the wrist from the 12 o'clock direction of the wristwatch and fastened in the 6 o'clock direction, is installed in device main body 1010; and this wristband 12 allows device main body 1010 to be easily put on or taken off from the wrist. Pulse wave sensor unit 1030 is attached to the area between the base of the index finger and a finger joint and is shielded from light by sensor-fastening strap 1040. Attaching pulse wave sensor unit 1030 to the base of a finger in this way keeps cable 1020 short and prevents it from getting in the way during running. Furthermore, taking into consideration the temperature distribution between the palm and finger tip in cold weather, the temperature at the finger tip falls substantially, while the temperature at the base of the finger falls relatively little. Therefore, attaching pulse wave sensor unit 1030 at the base of the finger enables the pulse count (status value) to be accurately measured even during a run outside on a cold day. (Configuration of the device main body) Figure 15 is a top view showing the main body of the pulse counter of this example, with the wristband and cable removed; Figure 16 is a side view of this pulse counter, obtained from the 3 o'clock direction. In Figure 15, device main body 1010 is provided with plastic watch case 1011 (body case), and the top side of this watch case 11 is provided with liquid crystal display device 1013 with an EL backlight for displaying running time, pitch during walking, and pulse wave information such as pulse count, in addition to current time and date. Liquid crystal display device 1013 is provided with first segment display area 1131 positioned on the upper left side of the display surface, second segment display area 1132 positioned on the upper right side of the display surface, third segment display area 1133 positioned on the lower right side of the display surface, and dot display area 1134 which can graphically display various types of information positioned on the lower left side of the display. Control area 1005, which performs various types of control and data processing in order to determine the change in the pulse count based on the pulse wave signal (status signal) measured by pulse wave sensor unit 1030 and to display the result on liquid crystal display device 1013, is provided inside watch case 1011. Control area 1005 is also provided with a timing circuit and thus can display normal time, lap time, split time, etc. on liquid crystal display device 1013. Button switches 1111 through 1115, which are used for external operations such as time adjustment and display mode switching, are provided on the perimeter of watch case 1011. Additionally, larger button switches 1116 and 1117 are provided on the surface of the watch case. Button-shaped small battery 1059 contained inside watch case 1011 is installed in portable pulse counter 1001, and cable 1020 supplies electrical power from battery 1059 to pulse wave sensor unit 1030 and at the same time inputs the detection result of pulse wave sensor unit 1030 into control area 1005 of watch case 1011. The size of device main body 1010 must be increased as more functions are added to portable pulse counter 1001. However, device main body 1010 cannot be extended in the 6 or 12 o'clock directions of the watch because it must be worn around a wrist. Therefore, device main body 1010 uses watch case 1011 which is longer in the 3 and 9 o'clock directions than in the 6 and 12 o'clock directions. However, wristband 1012 is connected eccentrically toward the 3 o'clock side, leaving extended area 1101 in the 9 o'clock direction, viewed from wristband 12, but no such extended area in the 3 o'clock direction. Consequently, this structure, despite the use of long watch case 1011, allows free wrist movement and eliminates the possibility of the back of the hand striking watch case 1011 even when the wearer falls down. Flat piezoelectric element 1058 for a buzzer is positioned in the 9 o'clock direction, viewed from battery 1059, inside watch case 1011. Because battery 1059 is heavier than piezoelectric element 1058, the centre of gravity of device main body 1010 is positioned eccentrically in the 3 o'clock direction relative to its geometric centre. Because wristband 1012 is also connected eccentrically offset to the side on which the centre of gravity is located, device main body 1010 can be securely attached to the wrist. Furthermore, the positioning of battery 1059 and piezoelectric element 1058 in the planar direction allows device main body 1010 to be thin; battery cover 1118 installed on the back side as shown in Figure 16 allows the user to easily replace battery 1059. (Structure for attaching the device main body to the wrist) In Figure 16, connecting area 1105 for holding stopping pin 1121 installed on the end of wristband 1012 is formed in the 12 o'clock direction of watch case 1011. Receiving area 1106 is provided in the 6 o'clock direction of watch case 1011, and said receiving area 1106 is provided with fastener 1122 through which wrist band 1012 is folded back and which holds in place the middle point of wristband 1012 wound around the wrist, in the long direction of the band. In the 6 o'clock direction of device main body 1010, the area from bottom surface 1119 to receiving area 1106 is formed as an integral part of watch case 1011 and forms rotation stop area 1108 which is positioned at approximately 115° from bottom surface 1119. That is, when wristband 1012 is used to attach device main body 1010 to top area L1 (side of the back of the hand) of left wrist or arm L, bottom surface 1119 of watch case 1011 tightly contacts top area L1 of wrist L while rotation stop area 1108 contacts side area L2 where radius R is located. In this state, bottom surface 1119 of device main body 1010 more or less straddles radius R and ulna U, while rotation stop area 1108 and the area between bent area 1109 of bottom surface 1119 and rotation stop area 1108 contact radius R. Because rotation stop area 1108 and bottom surface 1119 form an anatomically ideal angle of approximately 115° as explained above, device main body 1010 will not turn around arm L even if an attempt is made to turn it in the direction of arrows A or B. Furthermore, because the rotation of device main body 1010 is restricted only in two locations on the side of the arm by bottom surface 1119 and rotation stop area 1108, bottom surface 1119 and rotation stop area 1108 securely contact the arm even if it is thin, and provide a secure rotation stopping effect and comfortable fit even if the arm is thick. (Configuration of the pulse sensor unit) Figure 17 shows a cross-section of the pulse sensor unit of this working example. In this figure, component housing space 1300 is formed between the casing of pulse wave sensor unit 1030 and bottom lid 1302 on the bottom side of sensor frame 1036. Circuit board 1035 is positioned inside component housing space 1300. LED 1031, phototransistor 1032, and other electronic components are mounted on circuit board 1035. The first end of cable 1020 is fastened to pulse wave sensor unit 1030 by bushing 1393, and various wires of cable 1020 are soldered to various patterns on circuit board 1035. Pulse wave sensor unit 1030 is attached to the finger such that cable 1020 is extended from the base of the finger toward device main body 1010. Therefore, LED 1031 and phototransistor 1032 are arranged along the length of the finger, with LED 1031 positioned on the finger tip side and phototransistor 1032 positioned at the base of the finger. This configuration provides the effect of making it difficult for the ambient light to reach phototransistor 1032. In pulse wave sensor unit 1030, a light transmission window is formed by translucent plate 1034 which is made of a glass plate on the upper area of sensor frame 1036, and the light-emitting surface and light-receiving surface of LED 1031 and phototransistor 1032, respectively, are oriented toward said translucent plate 1034. Because of such a configuration, when a finger surface is pressed onto external surface 1341 of translucent plate 1034, LED 1031 emits light toward the finger surface and phototransistor 1032 can receive part of the light emitted by LED 1031 that is reflected by the finger. Note that external surface 1341 of translucent plate 1034 protrudes farther than surrounding area 1361 in order to improve its contact with the finger surface. In this working example, an InGaN (indium-gallium-nitrogen) blue LED is used as LED 1031, and its emission spectrum possesses a peak at 450 nm and its emission wavelength ranges from 350 to 600 nm. To match with LED 1031 possessing such characteristics, a GaAsP (gallium-arsenic-phosphorus) phototransistor is used as phototransistor 1032, and the light-receiving wavelength of the element itself ranges from 300 to 600 nm, with some sensitive areas also at or below 300 nm. When pulse wave sensor unit 1030 thus configured is attached to the base of the finger by sensor-fastening strap 1040 and light is emitted from LED 1031 toward the finger, the light reaches blood vessels, and part of the light is absorbed by haemoglobin in the blood and part of it is reflected. The light reflected by the finger (blood) is received by phototransistor 1032, and the change in the amount of received light corresponds to the change in the blood volume (pulse wave in the blood). That is, because the reflected light becomes weak when the blood volume is high and becomes strong when the blood volume is low, data such as pulse count can be measured by optically detecting the intensity of the reflected light as a pulse wave signal. This working example uses LED 1031 with an emission wavelength range of between 350 and 600 nm and phototransistor 1032 with a light-receiving wavelength range of between 300 and 600 nm, and vital information is displayed based on the results taken in the overlapping wavelengths of between approximately 350 and approximately 600 nm, i.e., all wavelengths used are shorter than approximately 700 nm. When such pulse wave sensor unit 1030 is used, even if the ambient light strikes the exposed part of the finger, lights with wavelengths of 700 nm or shorter contained in the ambient light do not use the finger as a light guide to reach phototransistor 1032 (light-receiving area). The reason for this is as follows. Because lights with wavelengths of 700 nm or shorter contained in the ambient light do not easily penetrate the finger, the ambient light reaching the area of the finger not covered by the sensor fastening strap 1040 will not penetrate the finger to reach phototransistor 1032. In contrast, if an LED possessing an emission peak at around 880 nm and a silicon phototransistor are used, a light-receiving wavelength range of between 350 and 1,200 nm will result. In such a case, changes in the ambient light level tend to cause measurement errors because pulse waves will be detected using a light with 1 µm wavelength which can use the finger as a light guide to easily reach the light receiving area. Furthermore, because pulse wave information is obtained using lights with approximately 700 nm or shorter wavelengths, the S/N ratio of the pulse wave signal based on blood volume change is high. The reason for this is as follows. The absorption coefficient of haemoglobin in the blood for lights with wavelengths of between 300 and 700 nm is several times to approximately one hundred or more times larger than the absorption coefficient for a light with wavelength of 800 nm which has been conventionally used as the detection light. As a result, lights with wavelengths of between 300 and 700 nm change sensitively to blood volume changes, producing higher pulse wave detection rate (S/N ratio) based on blood volume change. (Configuration of the pulse wave data processing area) The control area 1005 is provided with pulse wave data processing area 1050 which determines the pulse count based on the input result from pulse wave sensor unit 1030, and this pulse wave data processing area 1050 outputs a pulse count calculation result, enabling this value to be displayed in liquid crystal display device 1013. Note that part of pulse wave data processing area 1050 comprises a microcomputer that runs based on stored programs, and the functions of this microcomputer are also shown as a block diagram in Figure 18. First, in pulse wave data processing area 1050, the analog signal that is input from pulse wave sensor unit 1030 is amplified by amplification circuit 1551 and is then output to analogue to digital (AD) converter 1553. Pulse wave data storage area 1554 is RAM that stores the pulse wave data that has been converted into a digital signal by AD converter 1553. Frequency analysis area 1052 is provided behind pulse wave data storage area 1554, and performs fast Fourier transformation (FFT processing) for analysing the frequency of the pulse wave data fetched from said pulse wave data storage area 1554, and this frequency analysis area 1052 inputs the frequency analysis result into pulse wave component extraction area 1053. Pulse wave component extraction area 1053 extracts the pulse wave component from the output signal of frequency analysis area 1052 and outputs it to pulse count calculation area 1054, and pulse count calculation area 1054 calculates the pulse count based on the frequency component of the pulse wave that was input. In pulse wave data processing area 1050 thus configured, FFT computing units 23, 102, and 602 explained by referencing Figures 1, 5, 6, 10, and 11 can be used as frequency analysis area 1052. Since the operation of frequency analysis area 1052 (FFT computing units 23, 102, and 602) was explained earlier, its details will be omitted here. In any case, when FFT processing is performed on the pulse wave data fetched from pulse wave data storage area 1554, a spectrum can be obtained in which individual line spectrums discretely appear with intervals corresponding to the resolutions used during frequency analysis, as schematically shown in Figure 19. Therefore, when pulse wave component extraction area 1053 identifies a target spectrum among a group of line spectrums, pulse count calculation area 1054 calculates the pulse count, and pitch, etc. based on the frequency of the target spectrum. For example, if the target spectrum appears at the position of 2 Hz, the result indicating a pulse count of 120/minute is obtained. When determining the pulse count through FFT processing in this way, use of the FFT computing unit based on the invention enables FFT processing to be performed at a high level of computational precision without overflow monitoring, making a small FFT computing unit sufficient. Therefore, the FFT computing unit related to the invention is suitable for installation in portable instruments. As the comparison between pulse wave data processing area 1050 shown in Figure 18 and the FFT computation device shown in Figure 19 indicates, pulse wave sensor unit 1030, amplification circuit 1551, AD converter 1553, pulse wave data storage area 1554, and frequency analysis area 1052 shown in Figure 19 correspond to sensor 620, amplification circuit 621, AD converter 622, first RAM 625, and FFT computing unit 602 shown in Figure 9, respectively. Therefore, if level determination circuit 624 explained with reference to Figure 9 is added to pulse wave data processing area 1050 shown in Figure 18, it would not be necessary to separately allocate time for the level determination to be performed for adjusting the shift. Furthermore, if gain control circuit 623 is added, the detected signal itself before digital conversion can be controlled to a size suitable to FFT computation in an analog format. [Effects of the invention] As explained above, the invention according to Claim 1 is provided with data shift means that standardise data to a certain bit width before the sum or difference of two pieces of integer data is computed and with data conversion means that standardise bit width to a certain bit width by truncating part of output data for each output of computation means, and thus eliminates the need for overflow monitoring. Therefore, FFT computation can be carried out at a high level of computational precision without any complicated control means, making it possible to implement a small FFT computing unit. When the bit width of the input into the computation means inside the FFT computing unit is n bits, the invention according to Claim 2 uses sine and cosine wave data that has been turned into an integer by multiplying the sine and cosine wave data of a real number by 2 n-1 , truncating positive numbers, and rounding up negative numbers, and that has been converted into a number such that its bits excluding the sign can be expressed within n - 1 bits, and thus truncation errors during the FFT computation process can be made smaller than when sine and cosine wave data expressed in another format is used. Therefore, a high level of computational precision can be achieved since the truncation caused by rounding-up during FFT computation can be prevented. In the invention according to Claim 3, the highest bit of the output data, excluding the sign bit, is truncated when converting either the output of the multiplication means or the output of the addition/subtraction means that computes the sum or difference of the multiplication means, and thus the data shift is adjusted by performing truncation/rounding-up during the computation process that is least likely to produce degradation in computational precision, among the computation processes of the imaginary part in which more computations take place than in the real part. Therefore, a high level of computational precision can be achieved by making the shift the same as that used when obtaining the computation result for the real part. The invention according to Claim 4 is provided with a shift adjustment means for adjusting the data shift in accordance with the size of the FFT computation target data, and thus a larger number of effective digits can be obtained during computation, producing a high level of computational precision. In the invention according to Claim 5, after the specified number of pieces of data is stored in the first storage means which sequentially stores the data that is input in a time series, simultaneously with sending of the FFT computation target data to the second storage means which stores both the FFT computation target data and the data being computed, the size of the transferred data is determined by the level determination means, and the shift is adjusted based on the determined level, and thus it is not necessary to separately allocate time for the level determination to be performed for adjusting the shift. The invention according to Claim 6, is provided with the gain control means which, after the specified number of pieces of data is stored in the first storage means which sequentially stores the digitally converted output signal from the amplification means, and simultaneously with sending of the FFT target data to the second storage means, determines the size of the transferred data, and which, based on the determined level, changes the amplification factor of the amplification means for amplifying the signal detected by the signal detection means to an appropriate value, and thus the detected signal itself before digital conversion can be controlled to a size suitable to FFT computation in an analog format. Therefore, computational precision in subsequent FFT computation results can be improved when FFT computations are continuously made. The aforegoing description has been given by way of example only and it will be appreciated by a person skilled in the art that modifications can be made without departing from the scope of the present invention.

Claims: A Fast Fourier transformation computing unit comprising first (5) and second (6) addition/subtraction means to compute and output one of a sum and a difference between a pair of integer data, first (8) and second (9) multiplication means that multiply the outputs of the first and second addition/subtraction means by a sine and cosine wave data signal (7), respectively, and a third addition/subtraction means (10) that computes the sum of and the difference between the outputs from both multiplication means, characterized in that the Fast Fourier transformation computing unit comprises: data shift means (1, 2, 3, 4) that standardise input data to the computing unit to a predetermined bit width by shifting said input data by an amount of data shift which is determined by the size of said input data, so as to form the data of said pair of integer data as input to said first and second addition/subtraction means; data conversion means (11, 12, 13, 14, 15) that standardise the output data supplied by said first (5), second (6) and third (10) addition/subtraction means and said first (8) and second (9) multiplication means to said predetermined bit width by truncating the highest order part of this output data, excluding the sign bit. A fast Fourier transformation computing unit according to Claim 1, further characterised in that when the input bit width of each of said first, second and third addition/substraction means and said first and second multiplication means is n bits, said sine and cosine wave data is converted into an integer by multiplying the sine and cosine wave data of a real number by 2 n-1 , truncating positive numbers, and rounding up negative numbers, whose bits excluding the sign can be expressed within n - 1 bits. A fast Fourier transformation computing unit according to Claim 1 or Claim 2, further characterised in that said data conversion means truncate the highest bit of the output data, excluding the sign bit, when converting the output data of at least one of said first and second multiplication means and said third addition/substraction means (10). A fast Fourier transformation computing unit according to any preceding Claim, further characterised in that said data shift means are provided with a shift adjustment means for adjusting the data shift in accordance with the size of the fast Fourier transformation computation target data. A fast Fourier transformation computation device equipped with a fast Fourier transformation computing unit (23) according to Claim 4, that comprises first storage means (20) for sequentially storing the data that is input in a time series, second storage means (21) for storing both the fast Fourier transformation computation target data and the data being computed, level determination means (24) for determining the size of the data stored in second storage means (21), and third storage means (22) for storing the sine wave and cosine wave data for computation, and is further characterised in that fast Fourier transformation computation is made by said fast Fourier transformation computing unit (23) using the data from both second storage means (21) and third storage means (22); and in that after the specified number of pieces of data is stored in said first storage means (20), simultaneously with sending of the fast Fourier transformation computation target data to said second storage means (21), the size of the transferred data is determined by level determination means (24), and based on the determined level, said shift adjustment means adjusts the data shift. A fast Fourier transformation computation device equipped with a fast Fourier transformation computing unit (23) according to any one of Claims 1 to 4, that comprises amplification means (31) for amplifying the signal detected by signal detection means (30), gain control means (33) for changing the amplification factor of this amplification means (31), first storage means (20) for sequentially storing the output signals of said amplification means (31) that have been converted to digital signals by signal conversion means (32), second storage means (21) for storing both the fast Fourier transformation computation target data and the data being computed, level determination means (24) for determining the size of the data stored in this second storage means (21), and third storage means (22) that stores the sine wave and cosine wave data for computation, and is further characterised in that fast Fourier transformation computation is made by fast Fourier transformation computing unit (23) using the data from both second storage means (21) and third storage means (22); and in that after a specified number of pieces of data is stored in said first storage means (20), simultaneously with sending of the fast Fourier transformation computation target data to said second storage means (21), the size of the transferred data is determined by said level determination means (24), and based on the determination result, said gain control means (33) changes the amplification factor of said amplification means (31). A pulse counter characterised in that it uses the fast Fourier transformation computing unit (23) according to any of Claims 1 to 4 to analyse the frequency of a pulse wave signal measured by a pulse wave sensor and to determine the pulse count based on said frequency analysis result.

Inventors: HAYAKAWA MOTOMU, KOSUDA TSUKASA, NOSAKA NAOKATSU, HAYAKAWA, MOTOMU, KOSUDA, TSUKASA, NOSAKA, NAOKATSU, HAYAKAWA, MOTOMU, C/O SEIKO EPSON CORPORATION, Kosuda, Tsukasa, c/o Seiko Epson Corporation, NOSAKA, NAOKATSU, C/O SEIKO INSTRUMENTS INC.
Applicants: SEIKO EPSON CORP, SEIKO INSTR INC, SEIKO EPSON CORPORATION, SEIKO INSTRUMENTS INC.
Application year: 1996
Main classification: G06F17
IPC codes: G06F17