[[TracNav(WARPLab/TOC)]] = WARPLab 7 Example: SISO OFDM = File: [source:/ResearchApps/PHY/WARPLAB/WARPLab7/M_Code_Examples/wl_example_siso_ofdm_txrx.m wl_example_siso_ofdm_txrx.m] This WARPLab example implements a SISO OFDM transmitter and receiver. == Transmitter == [[Image(wl_ofdm_blkDiag_Tx.png, nolink)]] The OFDM transmitter code implements the following functions: * Random data generation * Modulation of random data to complex constellation symbols * Mapping of symbols to data-bearing subcarriers * Insertion of pilot tones in pilot subcarriers * Inverse fast Fourier transform (IFFT) * Cyclic prefix insertion * Preamble construction and insertion * Interpolation by 2x == Receiver == [[Image(wl_ofdm_blkDiag_Rx.png, nolink)]] The OFDM receiver code implements the following functions: * LTS correlation for synchronization * CFO estimation and correcting use time-domain estimation from LTS * Cyclic prefix removal * Fast Fourier transform (FFT) * Channel estimation from frequency-domain LTS * Residual phase error estimation from frequency-domain pilot tones * Equalization of data-bearing subcarriers using channel estimates and phase error estimates * Demodulation of complex symbols to data values == Running the Example == The WARPLab OFDM example can be used in simulation only mode and in hardware-in-the-loop mode. === Simulation === To use the example in simulation mode set the top-level param {{{USE_WARPLAB_TXRX = 0;}}}, then run the m-script. When the script finishes 6 plots will show: || [[Image(wl_ofdm_plots_sim_txIQ.png,nolink)]][[BR]]Transmitted waveform || [[Image(wl_ofdm_plots_sim_rxIQ.png,nolink)]] [[BR]]Received waveform || [[Image(wl_ofdm_plots_sim_ltsCorr.png,nolink)]] [[BR]]Preamble correlation results (peaks indicate locations of preamble LTS) || || [[Image(wl_ofdm_plots_sim_chanEst.png,nolink)]] [[BR]]Channel estimate per subcarrier (I/Q components and complex magnitude) || [[Image(wl_ofdm_plots_sim_phaseError.png,nolink)]] [[BR]]Phase error per OFDM symbol based on pilot tones || [[Image(wl_ofdm_plots_sim_constellations.png,nolink)]] [[BR]]Tx and Rx constellations || == Limitations == This example is intended as a staring point for researchers wishing to use WARPLab to prototype a wireless communications link. This examples does not implement some some blocks common in deployed OFDM systems, such as scrambling, interleaving and error correcting coding. For an example of a real-time OFDM implementation that implements all of these subsystems, please see the PHY in the [wiki:802.11 802.11 Reference Design].