I'm trying to implement an sound card-based OFDM modem. A paper says:

...A serial to parallel converter is applied and the IFFT operation is performed on the parallel complex data.

Say I have a stream $S$ of complex numbers, then after serial-to-parallel (S/P) conversion, it becomes $S_1$ and $S_2$. But as far as I'm concerned, OFDM requires the sub-carriers to be orthogonal to each other. So can I just perform IFFT twice directly on the streams without defining the frequencies of sub-carriers? I'm quite puzzled. Any help on this will be greatly appreciated. Thanks.


1 Answer 1


The serial/parallel converter shown in most OFDM transmitter block diagrams is required in a hardware implementation but not very meaningful for software implementation. Because in software there is no IFFT block that actually works with parallel inputs, it's all serial processing in reality.

Let $S(k)$ be your input stream of complex numbers and $N$ be the number of subcarriers, i.e. the IFFT size. Then you have to calculate the IFFT of every $N$ samples in $S(k)$, i.e. of the vectors $[S(iN),\ldots,S((i+1)N - 1)]$, with symbol index $i=0,1,2,\ldots$. The result is the OFDM modulated time domain signal. If I understand your example correctly you have to apply the IFFT to both $S_1$ and $S_2$, yes.

The output of the IFFT operation is also complex, in general. Unless you use two audio channels followed by an Inphase/quadrature mixer that shifts the signal to a carrier frequency the vectors defined above have to exhibit a complex conjugate symmetry in order to obtain a real-valued time domain signal. (So-called discrete multitone (DMT))

The allocation of data to subcarriers happens through the IFFT algorithm you're using. The FFTW library, for example, allocates $S(0)$ to frequency zero and $S(N-1)$ to "frequency" $-N/2$. What physical frequency this corresponds to in turn depends on the sampling frequency of the digital-to-analog converter you're using. Orthogonality is inherent to the (I)FFT algorithm, you don't have to apply any further processing to obtain it.

  • $\begingroup$ This is an awesome answer! Thanks a lot. But there is still one thing I don't quite understand. What does the IFFT size mean here? Why is it the same thing as the number of sub-carriers? In my understanding, I want 4 sub-carriers so I collect 256 complexes from the stream, then divide them into 4 groups and perform IFFT four times. Thus I have 4 carriers and an IFFT size of 64. Could you tell me where am I wrong? $\endgroup$
    – babel92
    Jan 16, 2014 at 15:15
  • $\begingroup$ The IFFT size is always equal to the number of subcarriers. If you do a 64-IFFT, you're modulating 64 subcarriers. Note that, due to guard interval insertion, OFDM using a small number of subcarriers (like 4) is highly inefficient. $\endgroup$
    – Deve
    Jan 16, 2014 at 16:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.