# DFT-Low-Latency Bit-Slice Design of Discrete Fourier Transform
## 7 Experimental Evaluation and Results  
Several experimental evaluations have been performed to verify the proper operation of the designed circuit. For accuracy evaluation, Matlab calculation result of double precision fixed point FFT number is used as the reference value as a comparison term. In this study, the data type used to code twiddle factors is a 17-bit fixed-point number, including one sign bit, one integer bit, and fifteen decimal bits (as twiddle factors are complex number with unitary modulus, all the sixteen bits have been used to code them). Furthermore, to allow proper description of the computed \(X_{k}\) output values, a 32-bit word length is used, so that the 1024 sums needed to compute each BFT and the 4 subsequent sums for the composition of the BFT into the transformed coefficients allow to obtain output values without incurring in overflows. A 32-bit fixed-point number has the advantages of high data accuracy, simpler circuital design and shorter processing delays with respect to a single-precision floating point number [14]. As the representation range of a fixed-point number is limited, the overflow condition that may occur during additions is avoided with the proper choice number of bits of the output word. The word length increases during output computation. In common fixed point implementations truncations are necessary at the end of sums to restore the selected word length. In our implementation, instead, these truncations are avoided by the proper choice of the processing word length, so that no quantization noise is added above the limit introduced in the twiddle factors coding. The computed DFT accuracy is not affected by this truncation approximation, so that full precision word length is obtained. Figure 17: Timing of processing operations. For signal-to-quantization noise-ratio (SQNR) evaluation, a sine wave with a relative frequency of 0.2 is considered. The following expression is used:  
\[SQNR=\frac{\sum_{k=0}^{N-1}|\ X_{k}|^{2}}{\sum_{k=0}^{N-1}(|\ X_{k}^{m}|-|\ X_{k}|)^{2}} \tag{11}\]  
where \(X_{k}\) is the FFT evaluated by the proposed system, and \(X_{k}^{m}\) is the FFT obtained with Matlab, which implements a floating-point arithmetic with 64-bit precision. It is well known that expected results may be affected by an SQNR of 6 dB/bit. As our implementation uses twiddle factors coded with 16-bit fixed-point numbers instead, Matlab adopts 52 bits for mantissa representation, and a difference of 36 bits is evaluated for each sample. It follows that the smallest number that can be represented in HW is \(2^{-16}\) for our implementation so that any SQNR above 96 dB can be considered satisfying. Pleasing results have been reached with our FPGA system in calculating the BFT. A value of 109 dB of SQNR is achieved for the BFT of a real-sampled sinusoid coded with 4 bits. This result is obtained as no approximation in the computation is performed until the complete computation of the BFT is obtained. Several other simulations with single sinusoids of different frequencies and coded with the same number of bits have been carried out, obtaining the same performance. To complete the discussion, a four-bit encoded real low-pass sequence with a 0.2 relative bandwidth has also been tested. In this case, the obtained SQNR is 120 dB. To verify that there is no intrinsic limitation in the precision of the proposed approach using different word lengths, several computer simulations have been carried out to compare the Matlab implementation of FFT and the proposed approach. Input sequences have been simulated by a real low-pass random sequence, quantized with a variable number of bits between 1 and 52. Figure 18 shows the comparison between Matlab FFT and the proposed method in terms of spectra and absolute difference between spectra at a level of about \(-270\) dB which represents the Matlab precision level. The input sequence in Figure 18 is a low pass signal quantized with 16 bits.