Changes between Version 24 and Version 25 of WARPLab/Examples/OFDM
- Timestamp:
- Nov 3, 2015, 10:40:21 AM (9 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
WARPLab/Examples/OFDM
v24 v25 90 90 91 91 * [https://en.wikipedia.org/wiki/Carrier_frequency_offset Carrier Frequency Offset (CFO)] - The center frequency of the transmitter will not perfectly match the center frequency of the receiver. Unless corrected, this will de-orthogonalize the OFDM subcarriers and cause inter-carrier interference (ICI). CFO is typically corrected in the time domain via multiplication with a digital carrier whose frequency negates the CFO estimate. This example uses a technique that compares two sequential preamble training symbols to estimate the CFO [#cite1 [1]]. 92 * Phase Error - Even after CFO is corrected in the time domain, there is typically a residual phase error component that must be corrected in the frequency domain and tracked over time. OFDM systems employ multiple pilot subcarriers to enable this recoverysystem. All data subcarriers in each OFDM symbol are phase-rotated to match any residual rotation observed in the known pilots.92 * Phase Error - Even after CFO is corrected in the time domain, there is typically a residual phase error component that must be corrected in the frequency domain and tracked over time. OFDM systems employ multiple pilot subcarriers to enable this correction system. All data subcarriers in each OFDM symbol are phase-rotated to match any residual rotation observed in the known pilots. 93 93 * Sampling Frequency Offset (SFO) - The temporal duration of a sample is slightly different at the receiver and transmitter due to different sampling clocks. Over the course of a reception, the relative sample periods will drift apart from one another. This manifests as larger phase error for the outer subcarriers [#cite2 [2]]. Each data subcarrier in each OFDM symbol is phase-rotated differently according to its subcarrier index. 94 94 95 At the [https://warpproject.org/trac/browser/ResearchApps/PHY/WARPLAB/WARPLab7/M_Code_Examples/wl_example_siso_ofdm_txrx.m#L27 top of the script], there are three control variables that toggle three different recovery systems: {{{DO_APPLY_CFO_CORRECTION}}}, {{{DO_APPLY_PHASE_ERR_CORRECTION}}}, {{{DO_APPLY_SFO_CORRECTION}}}. In this section, we will explore what happens when different combinations of these recoverysystems are enabled or disabled.95 At the [https://warpproject.org/trac/browser/ResearchApps/PHY/WARPLAB/WARPLab7/M_Code_Examples/wl_example_siso_ofdm_txrx.m#L27 top of the script], there are three control variables that toggle three different correction systems: {{{DO_APPLY_CFO_CORRECTION}}}, {{{DO_APPLY_PHASE_ERR_CORRECTION}}}, {{{DO_APPLY_SFO_CORRECTION}}}. In this section, we will explore what happens when different combinations of these correction systems are enabled or disabled. 96 96 97 === CFO Recovery: Enabled, Phase Error Recovery: Enabled, SFO Recovery: Enabled === 97 === Scenario A === #scenA 98 {{{ 99 CFO Correction: Enabled 100 Phase Error Correction: Enabled 101 SFO Correction: Enabled 102 }}} 98 103 99 || [[Image(Cy_PEy_Sy_phaseError.png,width=400)]][[BR]]1. Phase Error Estimates and SFO RecoveryMatrix || [[Image(Cy_PEy_Sy_constellations.png,width=400)]] [[BR]]2. Rx Constellation || [[Image(Cy_PEy_Sy_evm.png,width=400)]] [[BR]]3. Error Vector Magnitude (EVM)[[BR]] and effective SNR ||104 || [[Image(Cy_PEy_Sy_phaseError.png,width=400)]][[BR]]1. Phase Error Estimates and SFO Correction Matrix || [[Image(Cy_PEy_Sy_constellations.png,width=400)]] [[BR]]2. Rx Constellation || [[Image(Cy_PEy_Sy_evm.png,width=400)]] [[BR]]3. Error Vector Magnitude (EVM)[[BR]] and effective SNR || 100 105 101 The above plots are provided for reference. They show an example of how the receiver performs when all three recoverysystems are enabled.106 The above plots are provided for reference. They show an example of how the receiver performs when all three correction systems are enabled. 102 107 103 1. The "Phase Error Estimates" plot shows a nominal phase twist for each OFDM symbol over the course of the reception. The "SFO RecoveryMatrix" shows a phase correction that increases for outer subcarriers over the course of the reception.108 1. The "Phase Error Estimates" plot shows a nominal phase twist for each OFDM symbol over the course of the reception. The "SFO Correction Matrix" shows a phase correction that increases for outer subcarriers over the course of the reception. 104 109 2. The "Rx Constellation" plot shows each received symbol overlaid on each transmitted symbol. 105 110 3. The "EVM and SNR" plot shows that EVM is small and has little dependence on OFDM symbol index or subcarrier index. Furthermore, the red line shows the effective SNR of the reception (calculated from the EVM values themselves). 106 111 107 === CFO Recovery: Disabled, Phase Error Recovery: Enabled, SFO Recovery: Enabled === 112 === Scenario B === #scenB 113 {{{ 114 CFO Correction: Disabled 115 Phase Error Correction: Enabled 116 SFO Correction: Enabled 117 }}} 108 118 109 || [[Image(Cn_PEy_Sy_phaseError.png,width=400)]][[BR]]1. Phase Error Estimates and SFO RecoveryMatrix || [[Image(Cn_PEy_Sy_constellations.png,width=400)]] [[BR]]2. Rx Constellation || [[Image(Cn_PEy_Sy_evm.png,width=400)]] [[BR]]3. Error Vector Magnitude (EVM)[[BR]] and effective SNR ||119 || [[Image(Cn_PEy_Sy_phaseError.png,width=400)]][[BR]]1. Phase Error Estimates and SFO Correction Matrix || [[Image(Cn_PEy_Sy_constellations.png,width=400)]] [[BR]]2. Rx Constellation || [[Image(Cn_PEy_Sy_evm.png,width=400)]] [[BR]]3. Error Vector Magnitude (EVM)[[BR]] and effective SNR || 110 120 111 By disabling time-domain CFO correction, we have increased the burden on the phase error recovery system. In effect, the residual CFO to be corrected is now considerably larger. This can be observed in the "Phase Error Estimates" plot in the first figure above. The number of 2π wraps is considerably larger than the previous scenario where time-domain CFO correction was enabled. Ultimately, however, phase error recovery can only go so far. By the time the system is applying phase corrections in the frequency domain, ICI has already occurred. This can be observed in the "EVM and SNR" plots where the effective SNR is a couple of dB worse than the previous case.121 By disabling time-domain CFO correction, we have increased the burden on the phase error correction system. In effect, the residual CFO to be corrected is now considerably larger. This can be observed by comparing "Phase Error Estimates" plot in this section with the equivalent plot presented in [#scenA Scenario A]. The number of 2π wraps is considerably larger than the previous scenario where time-domain CFO correction was enabled. Ultimately, however, phase error recovery can only go so far. By the time the system is applying phase corrections in the frequency domain, ICI has already occurred because the transmitter's IFFT operation is not aligned to the receiver's FFT operation. This can be observed in the "EVM and SNR" plots where the effective SNR is a couple of dB worse than the previous case. 112 122 113 === CFO Recovery: Disabled, Phase Error Recovery: Enabled, SFO Recovery: Enabled === 123 === Scenario C === #scenC 124 {{{ 125 CFO Correction: Disabled 126 Phase Error Correction: Disabled 127 SFO Correction: Enabled 128 }}} 114 129 115 || [[Image(Cn_PEn_Sy_phaseError.png,width=400)]][[BR]]1. Phase Error Estimates and SFO RecoveryMatrix || [[Image(Cn_PEn_Sy_constellations.png,width=400)]] [[BR]]2. Rx Constellation || [[Image(Cn_PEn_Sy_evm.png,width=400)]] [[BR]]3. Error Vector Magnitude (EVM)[[BR]] and effective SNR ||130 || [[Image(Cn_PEn_Sy_phaseError.png,width=400)]][[BR]]1. Phase Error Estimates and SFO Correction Matrix || [[Image(Cn_PEn_Sy_constellations.png,width=400)]] [[BR]]2. Rx Constellation || [[Image(Cn_PEn_Sy_evm.png,width=400)]] [[BR]]3. Error Vector Magnitude (EVM)[[BR]] and effective SNR || 116 131 117 When both CFO recovery and Phase Error Recovery are disabled, there is nothing to counteract the differing center frequencies of the transmitter and receiver. The result is a received constellation that "spins" around the complex plane. The speed of this spin is CFO. The "beat patterns" of high and low EVM are caused by receive constellation to periodically alignto the transmitted constellation as it rotates around the complex plane.132 When both CFO recovery and Phase Error Recovery are disabled, there is nothing to counteract the differing center frequencies of the transmitter and receiver. The result is a received constellation that "spins" around the complex plane. The speed of this spin is CFO. The "beat patterns" of high and low EVM are caused by the receive constellation periodically aligning to the transmitted constellation as it rotates around the complex plane. 118 133 119 === CFO Recovery: Enabled, Phase Error Recovery: Enabled, SFO Recovery: Disabled === 134 === Scenario D === #scenD 135 {{{ 136 CFO Correction: Enabled 137 Phase Error Correction: Enabled 138 SFO Correction: Disabled 139 }}} 120 140 121 || [[Image(Cy_PEy_Sn_phaseError.png,width=400)]][[BR]]1. Phase Error Estimates and SFO RecoveryMatrix || [[Image(Cy_PEy_Sn_constellations.png,width=400)]] [[BR]]2. Rx Constellation || [[Image(Cy_PEy_Sn_evm.png,width=400)]] [[BR]]3. Error Vector Magnitude (EVM)[[BR]] and effective SNR ||141 || [[Image(Cy_PEy_Sn_phaseError.png,width=400)]][[BR]]1. Phase Error Estimates and SFO Correction Matrix || [[Image(Cy_PEy_Sn_constellations.png,width=400)]] [[BR]]2. Rx Constellation || [[Image(Cy_PEy_Sn_evm.png,width=400)]] [[BR]]3. Error Vector Magnitude (EVM)[[BR]] and effective SNR || 122 142 123 143 Finally, we have re-enabled both time-domain CFO recovery and phase error recovery. We have disabled SFO recovery. As the sample clocks drift over the duration of the reception, EVM begins to increase on the outer subcarriers.