<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Accelerate the Discrete Fourier Transform with NXP SPT in MBDT for RADAR</title>
    <link>https://community.nxp.com/t5/MBDT-for-RADAR/Accelerate-the-Discrete-Fourier-Transform-with-NXP-SPT/m-p/727648#M6</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;TABLE class="j-table jiveBorder" style="border: 1px solid #c6c6c6; border-width: 1px; border-color: #ffffff;" width="100%"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD style="text-align: center;"&gt;&lt;SPAN class="lia-inline-image-display-wrapper" image-alt="pastedImage_1.png"&gt;&lt;IMG alt="pastedImage_1.png" src="https://community.nxp.com/t5/image/serverpage/image-id/12022iFF194762D098214B/image-size/large?v=v2&amp;amp;px=999" title="pastedImage_1.png" /&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P style="text-align: center;"&gt;&lt;/P&gt;&lt;P style="text-align: center;"&gt;Theoretical background&lt;/P&gt;&lt;P style="text-align: center;"&gt;&lt;/P&gt;&lt;P style="text-align: justify;"&gt;A &lt;A href="https://en.wikipedia.org/wiki/Discrete_Fourier_transform" rel="nofollow noopener noreferrer noopener noreferrer" target="_blank"&gt;Discrete Fourier Transform&lt;/A&gt; (DFT) converts a&amp;nbsp;signal from time domain (left) into frequency domain (right). Every signal is made of one or multiple frequencies. If you consider a sound wave, then any sample of that sound wave has a set of frequencies with corresponding amplitudes that describe the overall sound wave.&lt;/P&gt;&lt;P style="text-align: justify;"&gt;&lt;/P&gt;&lt;P style="text-align: justify;"&gt;Fourier demonstrated that you can take a set of sinusoids&amp;nbsp;of different amplitudes and frequencies and by adding them together you can build up any signal - including a square one if needed.&amp;nbsp; A plot of frequency versus amplitude on an x-y graph of these&amp;nbsp;sinusoids&amp;nbsp;represents a frequency spectrum, or frequency domain plot.&lt;/P&gt;&lt;P style="text-align: justify;"&gt;&lt;/P&gt;&lt;H1 id="toc-hId-1986301887"&gt;&lt;/H1&gt;&lt;H1 id="toc-hId--565855074"&gt;&lt;SPAN style="color: #000080;"&gt;INTRODUCTION&lt;/SPAN&gt;&lt;/H1&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="text-align: justify;"&gt;In this article we are going to discuss about how to compute the DFT&amp;nbsp;of real signals using the FFT (&lt;A href="https://en.wikipedia.org/wiki/Fast_Fourier_transform" rel="nofollow noopener noreferrer noopener noreferrer" target="_blank"&gt;Fast Fourier Transform&lt;/A&gt;) algorithm. The FFT algorithm is implemented using the instructions &lt;STRONG&gt;RDX2&lt;/STRONG&gt; and &lt;STRONG&gt;RDX4&lt;/STRONG&gt;.&lt;/P&gt;&lt;P style="text-align: justify;"&gt;To explain why we need to compute the DFT in RADAR, let us take the simplest scenario. Suppose that we have only one object in front of the RADAR, then the demodulated signal from a chirp is a &lt;SPAN&gt;sinusoid&lt;/SPAN&gt;. The frequency of the &lt;SPAN&gt;sinusoid&lt;/SPAN&gt; is proportional to the range between the RADAR and the object. To find the frequency of the &lt;SPAN&gt;sinusoid&lt;/SPAN&gt; we compute its DFT. For positive frequencies the DFT will have only one peak. The peak is at the frequency of the &lt;SPAN&gt;sinusoid&lt;/SPAN&gt;.&lt;/P&gt;&lt;P style="text-align: justify;"&gt;&lt;/P&gt;&lt;H1 id="toc-hId-1176955261"&gt;&lt;/H1&gt;&lt;H1 id="toc-hId--1375201700"&gt;&lt;SPAN style="color: #000080;"&gt;SPT&amp;nbsp;INPUT DATA&lt;/SPAN&gt;&lt;/H1&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="text-align: justify;"&gt;Data received by the SPT is made of demodulated signal and can be organized as a 3-dimensional array in the following way: there is a page for each antenna, and each page contains a matrix where each column contains the samples of a chirp.&lt;/P&gt;&lt;PRE __default_attr="info" __jive_macro_name="alert" alert="info" class="jive_text_macro jive_macro_alert"&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier, monospace;"&gt;In MATLAB we refer to the third dimension as pages. For example v(:,:,1) is the first page of v.&lt;/SPAN&gt;&lt;/P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/PRE&gt;&lt;TABLE class="j-table jiveBorder" style="border: 1px solid #c6c6c6; border-width: 1px; border-color: #ffffff;" width="100%"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD style="text-align: center;"&gt;&lt;SPAN class="lia-inline-image-display-wrapper" image-alt="pastedImage_31.png"&gt;&lt;IMG alt="pastedImage_31.png" src="https://community.nxp.com/t5/image/serverpage/image-id/12029iB7673774FB97B6A6/image-size/large?v=v2&amp;amp;px=999" title="pastedImage_31.png" /&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="text-align: center;"&gt;&lt;SPAN style="font-size: 13px;"&gt;Fig. 1:&amp;nbsp;SPT input data representation&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Number of bits used to retain the operands&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;NBITS = 16;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Number of samples per chirp&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;M = 512;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Number of chirps&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;N = 256;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Number of antennas&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;P = 4;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% We take a input a 3D sine wave. This is the case when there is only one &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% object in front of the radar.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% The frequency in the first dimension or the frequency of each chirp&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;fs = 50.5 / M;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% The frequency in the second dimension or the Doppler frequency&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;fc = -99.5 / N;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% The frequency in the third dimension&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;fa = 1.5 / P;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;ts = (0:M-1)';&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;tc = 0:N-1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;ta(1, 1, : )= 0:P-1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;ts = repmat(ts, [1, N, P]);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;tc = repmat(tc, [M, 1, P]);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;ta = repmat(ta, [M, N, 1]);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Input data&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;input_data = sin(2*pi*(fs*ts + fc*tc + fa*ta));&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Input data as 16 bits fixed-point data&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;input_data_rs = round_and_saturate(input_data, NBITS) * 2^(NBITS-1);&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;H1 id="toc-hId-367608635"&gt;&lt;SPAN style="color: #000080;"&gt;RANGE FFT&lt;/SPAN&gt;&lt;/H1&gt;&lt;P style="text-align: justify;"&gt;&lt;/P&gt;&lt;P style="text-align: justify;"&gt;The output array of the range FFT is obtained by replacing each column of the input array with its DFT. As described in the introduction, from each such DFT one can find the ranges of all objects found in front of the RADAR.&lt;/P&gt;&lt;P style="text-align: justify;"&gt;&lt;/P&gt;&lt;TABLE class="j-table jiveBorder" style="border: 1px solid #c6c6c6; border-width: 1px; border-color: #ffffff;" width="100%"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD style="text-align: center;"&gt;&lt;SPAN class="lia-inline-image-display-wrapper" image-alt="pastedImage_8.png"&gt;&lt;IMG alt="pastedImage_8.png" src="https://community.nxp.com/t5/image/serverpage/image-id/12158iE40FF0678B9586EC/image-size/large?v=v2&amp;amp;px=999" title="pastedImage_8.png" /&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="text-align: center;"&gt;&lt;SPAN style="font-size: 13px;"&gt;Fig. 2: Range FFT input data processing&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;H1 id="toc-hId-2110418970"&gt;&lt;SPAN style="color: #000080;"&gt;DATA PROCESSING&amp;nbsp;FLOWCHART&lt;/SPAN&gt;&lt;/H1&gt;&lt;P style="text-align: justify;"&gt;Because the demodulated signal is real, the range FFT can be sped-up by computing the DFTs of two real signals at once. This is done by computing the DFT of the complex signal which has on the real part the first signal and on the imaginary part the second one, and then split the resulted DFT.&lt;/P&gt;&lt;TABLE class="j-table jiveBorder" style="border: 1px solid #c6c6c6; border-width: 1px; border-color: #ffffff;" width="100%"&gt;&lt;TBODY&gt;&lt;TR style="height: 24px;"&gt;&lt;TD style="height: 24px; text-align: center;"&gt;&lt;SPAN class="lia-inline-image-display-wrapper" image-alt="pastedImage_17.png"&gt;&lt;IMG alt="pastedImage_17.png" src="https://community.nxp.com/t5/image/serverpage/image-id/12238i16F393269B96ABD7/image-size/large?v=v2&amp;amp;px=999" title="pastedImage_17.png" /&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="height: 24px;"&gt;&lt;TD style="height: 24px; text-align: center;"&gt;&lt;SPAN style="font-size: 13px;"&gt;Fig. 3: FFT algorithm data processing flowchart&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000080; font-size: 22px;"&gt;&lt;STRONG&gt;FFT&amp;nbsp;INPUT DATA&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-align: justify;"&gt;The FFT input data is made of the second chirp of the first two antennas.&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% First real input is the second chirp from first antenna&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;input0 = input_data_rs(:, 2, 1);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Second real input is the second chirp from second antenna&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;input1 = input_data_rs(:, 2, 2);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;input = input0 + 1i * input1;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P style="text-align: justify;"&gt;Below are the two real inputs. It can be observed that the two inputs are sinusoids with the same frequency, but different phase.&lt;/P&gt;&lt;TABLE class="j-table jiveBorder" style="border: 1px solid #c6c6c6; border-width: 1px; border-color: #ffffff;" width="100%"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD style="text-align: center;"&gt;&lt;SPAN class="lia-inline-image-display-wrapper" image-alt="pastedImage_36.png"&gt;&lt;IMG alt="pastedImage_36.png" src="https://community.nxp.com/t5/image/serverpage/image-id/12317iCCAB083212C11186/image-size/large?v=v2&amp;amp;px=999" title="pastedImage_36.png" /&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="text-align: center;"&gt;&lt;SPAN style="font-size: 13px;"&gt;Fig. 4: FFT input data&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 22px; color: #000080;"&gt;&lt;STRONG&gt;FFT PROCESSING&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="text-align: justify;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;One radix-4 is done using the instruction RDX4, and one radix-2 round is done using the instruction RDX2. The first round of the FFT is a radix-4 round. In this round, because there is no need of twiddle factors, the instruction RDX4 lets you apply a window function on the input sequence. After we apply the remaining radix-4 rounds, if needed, we apply one radix-2 round. The last step is to find the DFTs of the real signals. This is done using the instruction RDX2.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Deduce the number of radix-4 rounds and if there is a radix-2 round&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;input_length = numel(input);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;log2_input_length = log2(input_length);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;num_rdx4_rounds = floor(log2_input_length / 2);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;num_rdx2_rounds = mod(log2_input_length, 2);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;num_rounds = num_rdx4_rounds + num_rdx2_rounds;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Twiddle factors&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;t = (1:input_length/8)/input_length;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;M_Tw_real = round_and_saturate(cos(-2*pi*t), NBITS) * 2^(NBITS-1);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;M_Tw_imag = round_and_saturate(sin(-2*pi*t), NBITS) * 2^(NBITS-1);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;M_Tw = M_Tw_real + 1i * M_Tw_imag;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Results&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;M_Out = zeros(num_rounds + 1, input_length);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Windowing operation - Indicates whether or not is the window multiplication&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% enabled&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;win_type = &lt;/SPAN&gt;&lt;SPAN style="color: #a020f0;"&gt;'WIN_DISABLED'&lt;/SPAN&gt;&lt;SPAN style="color: black;"&gt;;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Win coefficient type - Indicates the type of window coefficients&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;win_coeff_type = &lt;/SPAN&gt;&lt;SPAN style="color: #a020f0;"&gt;'MULTIPLE_COEFF'&lt;/SPAN&gt;&lt;SPAN style="color: black;"&gt;; &lt;/SPAN&gt;&lt;SPAN style="color: forestgreen;"&gt;% do not care&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Quadrature Extension&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;quad_ext = &lt;/SPAN&gt;&lt;SPAN style="color: #a020f0;"&gt;'QUAD_EXT'&lt;/SPAN&gt;&lt;SPAN style="color: black;"&gt;;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Repeat - Decides whether combined fft operation is enabled or not&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;repeat = &lt;/SPAN&gt;&lt;SPAN style="color: #a020f0;"&gt;'NO_COMBINED_FFT'&lt;/SPAN&gt;&lt;SPAN style="color: black;"&gt;;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Pre-scaling left shift value&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;shft_val = 0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% FFT Round&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;fft_rnd = 0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Window function&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;M_Wc = 0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Operands&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;M_Op = input;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Result&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;M_Out(1, : )= rdx4_mex(complex(M_Wc), complex(M_Op), win_type, win_coeff_type, fft_rnd, quad_ext, repeat, shft_val);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: blue;"&gt;for&lt;/SPAN&gt;&lt;SPAN style="color: black;"&gt; i = 1:num_rdx4_rounds-1&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: forestgreen;"&gt;% FFT Round&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fft_rnd = i;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: forestgreen;"&gt;% Operands values&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; M_Op = M_Out(i, :);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: forestgreen;"&gt;% Result&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; M_Out(i+1, : )= rdx4_mex(M_Tw, M_Op, win_type, win_coeff_type, fft_rnd, quad_ext, repeat, shft_val);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: blue;"&gt;end&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% rdx2 round&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: blue;"&gt;if&lt;/SPAN&gt;&lt;SPAN style="color: black;"&gt; num_rdx2_rounds ~= 0&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: forestgreen;"&gt;% FFT Round&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fft_rnd = num_rounds - 1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: forestgreen;"&gt;% Real FFT&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; real_fft = &lt;/SPAN&gt;&lt;SPAN style="color: #a020f0;"&gt;'NO_OPERANDS_SPLIT'&lt;/SPAN&gt;&lt;SPAN style="color: black;"&gt;;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: forestgreen;"&gt;% Quadrature Extension&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; quad_ext = &lt;/SPAN&gt;&lt;SPAN style="color: #a020f0;"&gt;'QUAD_EXT'&lt;/SPAN&gt;&lt;SPAN style="color: black;"&gt;;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: forestgreen;"&gt;% Repeat&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; repeat = &lt;/SPAN&gt;&lt;SPAN style="color: #a020f0;"&gt;'NO_COMBINED_FFT'&lt;/SPAN&gt;&lt;SPAN style="color: black;"&gt;;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: forestgreen;"&gt;% Pre-scaling left shift value&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; shft_val = 0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: forestgreen;"&gt;% Operands values&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; M_Op = M_Out(num_rounds - 1, :);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: forestgreen;"&gt;% Result&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; M_Out(num_rounds, : )= rdx2_mex(M_Tw, M_Op, fft_rnd, real_fft, quad_ext, repeat, shft_val);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: blue;"&gt;end&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% DFT split&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% FFT Round&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;fft_rnd = num_rounds - 1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Real FFT&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;real_fft = &lt;/SPAN&gt;&lt;SPAN style="color: #a020f0;"&gt;'OPERANDS_SPLIT'&lt;/SPAN&gt;&lt;SPAN style="color: black;"&gt;;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Quadrature Extension&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;quad_ext = &lt;/SPAN&gt;&lt;SPAN style="color: #a020f0;"&gt;'QUAD_EXT'&lt;/SPAN&gt;&lt;SPAN style="color: black;"&gt;;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Repeat&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;repeat = &lt;/SPAN&gt;&lt;SPAN style="color: #a020f0;"&gt;'NO_COMBINED_FFT'&lt;/SPAN&gt;&lt;SPAN style="color: black;"&gt;;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Pre-scaling left shift value&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;shft_val = 0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Operands values&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;M_Op = M_Out(num_rounds, :);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Result&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;M_Out(end, : )= rdx2_mex(M_Tw, M_Op, fft_rnd, real_fft, quad_ext, repeat, shft_val);&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000080; font-size: 22px;"&gt;&lt;STRONG&gt;RESULTS&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-align: justify;"&gt;&lt;/P&gt;&lt;P style="text-align: justify;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;We verify the results using the FFT MATLAB function. In the image below the first column displays the magnitude of the two DFTs, and the second column displays their phases.&lt;/SPAN&gt;&lt;/P&gt;&lt;TABLE class="j-table jiveBorder" style="border: 1px solid #c6c6c6; border-width: 1px; border-color: #FFFFFF;" width="100%"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD style="text-align: center;"&gt;&lt;SPAN class="lia-inline-image-display-wrapper" image-alt="pastedImage_20.png"&gt;&lt;IMG alt="pastedImage_20.png" src="https://community.nxp.com/t5/image/serverpage/image-id/12350i48921F2D403B24EF/image-size/large?v=v2&amp;amp;px=999" title="pastedImage_20.png" /&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="text-align: center;"&gt;&lt;SPAN style="font-size: 13px;"&gt;Fig. 5: Magnitude and Phase DFT of the real input signals&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The script used in this example is attached below.&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #333333; background-color: #ffffff;"&gt;We hope you find this information useful. Feel free to LIKE this article and comment below.&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 02 Nov 2020 14:03:01 GMT</pubDate>
    <dc:creator>iulianbulancea</dc:creator>
    <dc:date>2020-11-02T14:03:01Z</dc:date>
    <item>
      <title>Accelerate the Discrete Fourier Transform with NXP SPT</title>
      <link>https://community.nxp.com/t5/MBDT-for-RADAR/Accelerate-the-Discrete-Fourier-Transform-with-NXP-SPT/m-p/727648#M6</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;TABLE class="j-table jiveBorder" style="border: 1px solid #c6c6c6; border-width: 1px; border-color: #ffffff;" width="100%"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD style="text-align: center;"&gt;&lt;SPAN class="lia-inline-image-display-wrapper" image-alt="pastedImage_1.png"&gt;&lt;IMG alt="pastedImage_1.png" src="https://community.nxp.com/t5/image/serverpage/image-id/12022iFF194762D098214B/image-size/large?v=v2&amp;amp;px=999" title="pastedImage_1.png" /&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P style="text-align: center;"&gt;&lt;/P&gt;&lt;P style="text-align: center;"&gt;Theoretical background&lt;/P&gt;&lt;P style="text-align: center;"&gt;&lt;/P&gt;&lt;P style="text-align: justify;"&gt;A &lt;A href="https://en.wikipedia.org/wiki/Discrete_Fourier_transform" rel="nofollow noopener noreferrer noopener noreferrer" target="_blank"&gt;Discrete Fourier Transform&lt;/A&gt; (DFT) converts a&amp;nbsp;signal from time domain (left) into frequency domain (right). Every signal is made of one or multiple frequencies. If you consider a sound wave, then any sample of that sound wave has a set of frequencies with corresponding amplitudes that describe the overall sound wave.&lt;/P&gt;&lt;P style="text-align: justify;"&gt;&lt;/P&gt;&lt;P style="text-align: justify;"&gt;Fourier demonstrated that you can take a set of sinusoids&amp;nbsp;of different amplitudes and frequencies and by adding them together you can build up any signal - including a square one if needed.&amp;nbsp; A plot of frequency versus amplitude on an x-y graph of these&amp;nbsp;sinusoids&amp;nbsp;represents a frequency spectrum, or frequency domain plot.&lt;/P&gt;&lt;P style="text-align: justify;"&gt;&lt;/P&gt;&lt;H1 id="toc-hId-1986301887"&gt;&lt;/H1&gt;&lt;H1 id="toc-hId--565855074"&gt;&lt;SPAN style="color: #000080;"&gt;INTRODUCTION&lt;/SPAN&gt;&lt;/H1&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="text-align: justify;"&gt;In this article we are going to discuss about how to compute the DFT&amp;nbsp;of real signals using the FFT (&lt;A href="https://en.wikipedia.org/wiki/Fast_Fourier_transform" rel="nofollow noopener noreferrer noopener noreferrer" target="_blank"&gt;Fast Fourier Transform&lt;/A&gt;) algorithm. The FFT algorithm is implemented using the instructions &lt;STRONG&gt;RDX2&lt;/STRONG&gt; and &lt;STRONG&gt;RDX4&lt;/STRONG&gt;.&lt;/P&gt;&lt;P style="text-align: justify;"&gt;To explain why we need to compute the DFT in RADAR, let us take the simplest scenario. Suppose that we have only one object in front of the RADAR, then the demodulated signal from a chirp is a &lt;SPAN&gt;sinusoid&lt;/SPAN&gt;. The frequency of the &lt;SPAN&gt;sinusoid&lt;/SPAN&gt; is proportional to the range between the RADAR and the object. To find the frequency of the &lt;SPAN&gt;sinusoid&lt;/SPAN&gt; we compute its DFT. For positive frequencies the DFT will have only one peak. The peak is at the frequency of the &lt;SPAN&gt;sinusoid&lt;/SPAN&gt;.&lt;/P&gt;&lt;P style="text-align: justify;"&gt;&lt;/P&gt;&lt;H1 id="toc-hId-1176955261"&gt;&lt;/H1&gt;&lt;H1 id="toc-hId--1375201700"&gt;&lt;SPAN style="color: #000080;"&gt;SPT&amp;nbsp;INPUT DATA&lt;/SPAN&gt;&lt;/H1&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="text-align: justify;"&gt;Data received by the SPT is made of demodulated signal and can be organized as a 3-dimensional array in the following way: there is a page for each antenna, and each page contains a matrix where each column contains the samples of a chirp.&lt;/P&gt;&lt;PRE __default_attr="info" __jive_macro_name="alert" alert="info" class="jive_text_macro jive_macro_alert"&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier, monospace;"&gt;In MATLAB we refer to the third dimension as pages. For example v(:,:,1) is the first page of v.&lt;/SPAN&gt;&lt;/P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/PRE&gt;&lt;TABLE class="j-table jiveBorder" style="border: 1px solid #c6c6c6; border-width: 1px; border-color: #ffffff;" width="100%"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD style="text-align: center;"&gt;&lt;SPAN class="lia-inline-image-display-wrapper" image-alt="pastedImage_31.png"&gt;&lt;IMG alt="pastedImage_31.png" src="https://community.nxp.com/t5/image/serverpage/image-id/12029iB7673774FB97B6A6/image-size/large?v=v2&amp;amp;px=999" title="pastedImage_31.png" /&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="text-align: center;"&gt;&lt;SPAN style="font-size: 13px;"&gt;Fig. 1:&amp;nbsp;SPT input data representation&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Number of bits used to retain the operands&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;NBITS = 16;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Number of samples per chirp&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;M = 512;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Number of chirps&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;N = 256;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Number of antennas&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;P = 4;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% We take a input a 3D sine wave. This is the case when there is only one &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% object in front of the radar.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% The frequency in the first dimension or the frequency of each chirp&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;fs = 50.5 / M;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% The frequency in the second dimension or the Doppler frequency&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;fc = -99.5 / N;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% The frequency in the third dimension&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;fa = 1.5 / P;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;ts = (0:M-1)';&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;tc = 0:N-1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;ta(1, 1, : )= 0:P-1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;ts = repmat(ts, [1, N, P]);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;tc = repmat(tc, [M, 1, P]);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;ta = repmat(ta, [M, N, 1]);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Input data&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;input_data = sin(2*pi*(fs*ts + fc*tc + fa*ta));&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Input data as 16 bits fixed-point data&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;input_data_rs = round_and_saturate(input_data, NBITS) * 2^(NBITS-1);&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;H1 id="toc-hId-367608635"&gt;&lt;SPAN style="color: #000080;"&gt;RANGE FFT&lt;/SPAN&gt;&lt;/H1&gt;&lt;P style="text-align: justify;"&gt;&lt;/P&gt;&lt;P style="text-align: justify;"&gt;The output array of the range FFT is obtained by replacing each column of the input array with its DFT. As described in the introduction, from each such DFT one can find the ranges of all objects found in front of the RADAR.&lt;/P&gt;&lt;P style="text-align: justify;"&gt;&lt;/P&gt;&lt;TABLE class="j-table jiveBorder" style="border: 1px solid #c6c6c6; border-width: 1px; border-color: #ffffff;" width="100%"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD style="text-align: center;"&gt;&lt;SPAN class="lia-inline-image-display-wrapper" image-alt="pastedImage_8.png"&gt;&lt;IMG alt="pastedImage_8.png" src="https://community.nxp.com/t5/image/serverpage/image-id/12158iE40FF0678B9586EC/image-size/large?v=v2&amp;amp;px=999" title="pastedImage_8.png" /&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="text-align: center;"&gt;&lt;SPAN style="font-size: 13px;"&gt;Fig. 2: Range FFT input data processing&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;H1 id="toc-hId-2110418970"&gt;&lt;SPAN style="color: #000080;"&gt;DATA PROCESSING&amp;nbsp;FLOWCHART&lt;/SPAN&gt;&lt;/H1&gt;&lt;P style="text-align: justify;"&gt;Because the demodulated signal is real, the range FFT can be sped-up by computing the DFTs of two real signals at once. This is done by computing the DFT of the complex signal which has on the real part the first signal and on the imaginary part the second one, and then split the resulted DFT.&lt;/P&gt;&lt;TABLE class="j-table jiveBorder" style="border: 1px solid #c6c6c6; border-width: 1px; border-color: #ffffff;" width="100%"&gt;&lt;TBODY&gt;&lt;TR style="height: 24px;"&gt;&lt;TD style="height: 24px; text-align: center;"&gt;&lt;SPAN class="lia-inline-image-display-wrapper" image-alt="pastedImage_17.png"&gt;&lt;IMG alt="pastedImage_17.png" src="https://community.nxp.com/t5/image/serverpage/image-id/12238i16F393269B96ABD7/image-size/large?v=v2&amp;amp;px=999" title="pastedImage_17.png" /&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="height: 24px;"&gt;&lt;TD style="height: 24px; text-align: center;"&gt;&lt;SPAN style="font-size: 13px;"&gt;Fig. 3: FFT algorithm data processing flowchart&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000080; font-size: 22px;"&gt;&lt;STRONG&gt;FFT&amp;nbsp;INPUT DATA&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-align: justify;"&gt;The FFT input data is made of the second chirp of the first two antennas.&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% First real input is the second chirp from first antenna&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;input0 = input_data_rs(:, 2, 1);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Second real input is the second chirp from second antenna&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;input1 = input_data_rs(:, 2, 2);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;input = input0 + 1i * input1;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P style="text-align: justify;"&gt;Below are the two real inputs. It can be observed that the two inputs are sinusoids with the same frequency, but different phase.&lt;/P&gt;&lt;TABLE class="j-table jiveBorder" style="border: 1px solid #c6c6c6; border-width: 1px; border-color: #ffffff;" width="100%"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD style="text-align: center;"&gt;&lt;SPAN class="lia-inline-image-display-wrapper" image-alt="pastedImage_36.png"&gt;&lt;IMG alt="pastedImage_36.png" src="https://community.nxp.com/t5/image/serverpage/image-id/12317iCCAB083212C11186/image-size/large?v=v2&amp;amp;px=999" title="pastedImage_36.png" /&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="text-align: center;"&gt;&lt;SPAN style="font-size: 13px;"&gt;Fig. 4: FFT input data&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 22px; color: #000080;"&gt;&lt;STRONG&gt;FFT PROCESSING&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="text-align: justify;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;One radix-4 is done using the instruction RDX4, and one radix-2 round is done using the instruction RDX2. The first round of the FFT is a radix-4 round. In this round, because there is no need of twiddle factors, the instruction RDX4 lets you apply a window function on the input sequence. After we apply the remaining radix-4 rounds, if needed, we apply one radix-2 round. The last step is to find the DFTs of the real signals. This is done using the instruction RDX2.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Deduce the number of radix-4 rounds and if there is a radix-2 round&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;input_length = numel(input);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;log2_input_length = log2(input_length);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;num_rdx4_rounds = floor(log2_input_length / 2);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;num_rdx2_rounds = mod(log2_input_length, 2);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;num_rounds = num_rdx4_rounds + num_rdx2_rounds;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Twiddle factors&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;t = (1:input_length/8)/input_length;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;M_Tw_real = round_and_saturate(cos(-2*pi*t), NBITS) * 2^(NBITS-1);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;M_Tw_imag = round_and_saturate(sin(-2*pi*t), NBITS) * 2^(NBITS-1);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;M_Tw = M_Tw_real + 1i * M_Tw_imag;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Results&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;M_Out = zeros(num_rounds + 1, input_length);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Windowing operation - Indicates whether or not is the window multiplication&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% enabled&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;win_type = &lt;/SPAN&gt;&lt;SPAN style="color: #a020f0;"&gt;'WIN_DISABLED'&lt;/SPAN&gt;&lt;SPAN style="color: black;"&gt;;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Win coefficient type - Indicates the type of window coefficients&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;win_coeff_type = &lt;/SPAN&gt;&lt;SPAN style="color: #a020f0;"&gt;'MULTIPLE_COEFF'&lt;/SPAN&gt;&lt;SPAN style="color: black;"&gt;; &lt;/SPAN&gt;&lt;SPAN style="color: forestgreen;"&gt;% do not care&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Quadrature Extension&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;quad_ext = &lt;/SPAN&gt;&lt;SPAN style="color: #a020f0;"&gt;'QUAD_EXT'&lt;/SPAN&gt;&lt;SPAN style="color: black;"&gt;;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Repeat - Decides whether combined fft operation is enabled or not&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;repeat = &lt;/SPAN&gt;&lt;SPAN style="color: #a020f0;"&gt;'NO_COMBINED_FFT'&lt;/SPAN&gt;&lt;SPAN style="color: black;"&gt;;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Pre-scaling left shift value&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;shft_val = 0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% FFT Round&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;fft_rnd = 0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Window function&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;M_Wc = 0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Operands&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;M_Op = input;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Result&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;M_Out(1, : )= rdx4_mex(complex(M_Wc), complex(M_Op), win_type, win_coeff_type, fft_rnd, quad_ext, repeat, shft_val);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: blue;"&gt;for&lt;/SPAN&gt;&lt;SPAN style="color: black;"&gt; i = 1:num_rdx4_rounds-1&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: forestgreen;"&gt;% FFT Round&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fft_rnd = i;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: forestgreen;"&gt;% Operands values&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; M_Op = M_Out(i, :);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: forestgreen;"&gt;% Result&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; M_Out(i+1, : )= rdx4_mex(M_Tw, M_Op, win_type, win_coeff_type, fft_rnd, quad_ext, repeat, shft_val);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: blue;"&gt;end&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% rdx2 round&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: blue;"&gt;if&lt;/SPAN&gt;&lt;SPAN style="color: black;"&gt; num_rdx2_rounds ~= 0&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: forestgreen;"&gt;% FFT Round&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fft_rnd = num_rounds - 1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: forestgreen;"&gt;% Real FFT&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; real_fft = &lt;/SPAN&gt;&lt;SPAN style="color: #a020f0;"&gt;'NO_OPERANDS_SPLIT'&lt;/SPAN&gt;&lt;SPAN style="color: black;"&gt;;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: forestgreen;"&gt;% Quadrature Extension&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; quad_ext = &lt;/SPAN&gt;&lt;SPAN style="color: #a020f0;"&gt;'QUAD_EXT'&lt;/SPAN&gt;&lt;SPAN style="color: black;"&gt;;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: forestgreen;"&gt;% Repeat&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; repeat = &lt;/SPAN&gt;&lt;SPAN style="color: #a020f0;"&gt;'NO_COMBINED_FFT'&lt;/SPAN&gt;&lt;SPAN style="color: black;"&gt;;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: forestgreen;"&gt;% Pre-scaling left shift value&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; shft_val = 0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: forestgreen;"&gt;% Operands values&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; M_Op = M_Out(num_rounds - 1, :);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: forestgreen;"&gt;% Result&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; M_Out(num_rounds, : )= rdx2_mex(M_Tw, M_Op, fft_rnd, real_fft, quad_ext, repeat, shft_val);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: blue;"&gt;end&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% DFT split&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% FFT Round&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;fft_rnd = num_rounds - 1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Real FFT&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;real_fft = &lt;/SPAN&gt;&lt;SPAN style="color: #a020f0;"&gt;'OPERANDS_SPLIT'&lt;/SPAN&gt;&lt;SPAN style="color: black;"&gt;;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Quadrature Extension&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;quad_ext = &lt;/SPAN&gt;&lt;SPAN style="color: #a020f0;"&gt;'QUAD_EXT'&lt;/SPAN&gt;&lt;SPAN style="color: black;"&gt;;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Repeat&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;SPAN style="color: black;"&gt;repeat = &lt;/SPAN&gt;&lt;SPAN style="color: #a020f0;"&gt;'NO_COMBINED_FFT'&lt;/SPAN&gt;&lt;SPAN style="color: black;"&gt;;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Pre-scaling left shift value&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;shft_val = 0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Operands values&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;M_Op = M_Out(num_rounds, :);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: forestgreen;"&gt;% Result&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px; color: black;"&gt;M_Out(end, : )= rdx2_mex(M_Tw, M_Op, fft_rnd, real_fft, quad_ext, repeat, shft_val);&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000080; font-size: 22px;"&gt;&lt;STRONG&gt;RESULTS&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-align: justify;"&gt;&lt;/P&gt;&lt;P style="text-align: justify;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;We verify the results using the FFT MATLAB function. In the image below the first column displays the magnitude of the two DFTs, and the second column displays their phases.&lt;/SPAN&gt;&lt;/P&gt;&lt;TABLE class="j-table jiveBorder" style="border: 1px solid #c6c6c6; border-width: 1px; border-color: #FFFFFF;" width="100%"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD style="text-align: center;"&gt;&lt;SPAN class="lia-inline-image-display-wrapper" image-alt="pastedImage_20.png"&gt;&lt;IMG alt="pastedImage_20.png" src="https://community.nxp.com/t5/image/serverpage/image-id/12350i48921F2D403B24EF/image-size/large?v=v2&amp;amp;px=999" title="pastedImage_20.png" /&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="text-align: center;"&gt;&lt;SPAN style="font-size: 13px;"&gt;Fig. 5: Magnitude and Phase DFT of the real input signals&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The script used in this example is attached below.&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #333333; background-color: #ffffff;"&gt;We hope you find this information useful. Feel free to LIKE this article and comment below.&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 02 Nov 2020 14:03:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MBDT-for-RADAR/Accelerate-the-Discrete-Fourier-Transform-with-NXP-SPT/m-p/727648#M6</guid>
      <dc:creator>iulianbulancea</dc:creator>
      <dc:date>2020-11-02T14:03:01Z</dc:date>
    </item>
    <item>
      <title>Re: Accelerate the Discrete Fourier Transform with NXP SPT</title>
      <link>https://community.nxp.com/t5/MBDT-for-RADAR/Accelerate-the-Discrete-Fourier-Transform-with-NXP-SPT/m-p/1774442#M215</link>
      <description>&lt;P&gt;In Doppler FFT , it need to apply on result of Range FFT .&lt;/P&gt;&lt;P&gt;For this how to consider input signal&amp;nbsp; combination&amp;nbsp; to FFT.&lt;/P&gt;</description>
      <pubDate>Thu, 14 Dec 2023 06:19:45 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MBDT-for-RADAR/Accelerate-the-Discrete-Fourier-Transform-with-NXP-SPT/m-p/1774442#M215</guid>
      <dc:creator>Vamsi_Sirigina</dc:creator>
      <dc:date>2023-12-14T06:19:45Z</dc:date>
    </item>
  </channel>
</rss>

