|
def | __init__ (self) |
|
def | bpsk_mod (self, val) |
|
def | qpsk_mod (self, val) |
|
def | qam16_mod (self, val) |
|
def | qam64_mod (self, val) |
|
def | bpsk_dem (self, iq) |
|
def | qpsk_dem (self, iq) |
|
def | qam16_dem (self, iq) |
|
def | qam64_dem (self, iq) |
|
def | generate_data (self, n_ofdm_syms=100, mod_order=4, cp_length=16, datastream=[]) |
|
def | modulation (self, in_data, mod_order) |
|
def | demodulation (self, in_data, mod_order) |
|
def | cfo_correction (self, rxSignal, lts_start, lts_syms_len, fft_offset) |
|
def | sfo_correction (self, rxSig_freq_eq, pilot_sc, pilots_matrix, n_ofdm_syms) |
|
def | phase_correction (self, rxSig_freq_eq, pilot_sc, pilots_matrix) |
|
def | demult (self, csi, data, noise=None, method='zf') |
|
def | calcBW (self, csi, noise=None, method='zf') |
|
◆ __init__()
def ofdmtxrx.ofdmTxRx.__init__ |
( |
|
self | ) |
|
◆ bpsk_dem()
def ofdmtxrx.ofdmTxRx.bpsk_dem |
( |
|
self, |
|
|
|
iq |
|
) |
| |
BPSK Demodulation
ARGS
- iq: Complex data symbol
RETURNS:
- val: Integer value (data symbol) between 0 and 1
◆ bpsk_mod()
def ofdmtxrx.ofdmTxRx.bpsk_mod |
( |
|
self, |
|
|
|
val |
|
) |
| |
BPSK Modulation
ARGS
- val: Integer value (data symbol) between 0 and 1
RETURNS:
- iq: Complex data symbol
◆ calcBW()
def ofdmtxrx.ofdmTxRx.calcBW |
( |
|
self, |
|
|
|
csi, |
|
|
|
noise = None , |
|
|
|
method = 'zf' |
|
) |
| |
◆ cfo_correction()
def ofdmtxrx.ofdmTxRx.cfo_correction |
( |
|
self, |
|
|
|
rxSignal, |
|
|
|
lts_start, |
|
|
|
lts_syms_len, |
|
|
|
fft_offset |
|
) |
| |
Apply Carrier Frequency Offset
Input:
rxSignal - Received IQ Signal
lts_start - Sample where LTS begins
lts_syms_len - Length of LTS Symbol
fft_offset - Number of CP samples for FFT
Output:
coarse_cfo_est - CFO estimate
◆ demodulation()
def ofdmtxrx.ofdmTxRx.demodulation |
( |
|
self, |
|
|
|
in_data, |
|
|
|
mod_order |
|
) |
| |
Demodulate data stream of n_ofdm_syms number of symbols, according to mod_order.
◆ demult()
def ofdmtxrx.ofdmTxRx.demult |
( |
|
self, |
|
|
|
csi, |
|
|
|
data, |
|
|
|
noise = None , |
|
|
|
method = 'zf' |
|
) |
| |
csi: Frame, User, Antenna, Subcarrier
data: Frame, Uplink Syms, Antenna, Subcarrier
◆ generate_data()
def ofdmtxrx.ofdmTxRx.generate_data |
( |
|
self, |
|
|
|
n_ofdm_syms = 100 , |
|
|
|
mod_order = 4 , |
|
|
|
cp_length = 16 , |
|
|
|
datastream = [] |
|
) |
| |
Generate random data stream of n_ofdm_syms number of symbols,
and modulate according to mod_order.
ARGS:
- n_ofdm_syms: Number of OFDM symbols
- mod_order: Modulation Order
2 - BPSK
4 - QPSK
16 - 16QAM
64 - 64QAM
- cp_length: Length of cyclic prefix
RETURNS:
- signal: Time domain signal after IFFT and added Cyclic Prefix
- data: Modulated data stream (Constellation)
- data_i: Random data to be transmitted
- sc_idx_all: Indexes for both data and pilot subcarriers
◆ modulation()
def ofdmtxrx.ofdmTxRx.modulation |
( |
|
self, |
|
|
|
in_data, |
|
|
|
mod_order |
|
) |
| |
Demodulate data stream of n_ofdm_syms number of symbols, according to mod_order.
◆ phase_correction()
def ofdmtxrx.ofdmTxRx.phase_correction |
( |
|
self, |
|
|
|
rxSig_freq_eq, |
|
|
|
pilot_sc, |
|
|
|
pilots_matrix |
|
) |
| |
Apply Phase Correction
Input:
rxSig_freq_eq - Equalized, time domain received signal
pilot_sc - Pilot subcarriers (indexes)
pilots_matrix - Pilots in matrix form
Output:
phase_error - Computed phase error
◆ qam16_dem()
def ofdmtxrx.ofdmTxRx.qam16_dem |
( |
|
self, |
|
|
|
iq |
|
) |
| |
16QAM Demodulation
ARGS
- iq: Complex data symbol
RETURNS:
- val: Integer value (data symbol) between 0 and 15 (i.e., 0:1:15)
◆ qam16_mod()
def ofdmtxrx.ofdmTxRx.qam16_mod |
( |
|
self, |
|
|
|
val |
|
) |
| |
16QAM Modulation
ARGS
- val: Integer value (data symbol) between 0 and 15 (i.e., 0:1:15)
RETURNS:
- iq: Complex data symbol
◆ qam64_dem()
def ofdmtxrx.ofdmTxRx.qam64_dem |
( |
|
self, |
|
|
|
iq |
|
) |
| |
64QAM Demodulation
ARGS
- iq: Complex data symbol
RETURNS:
- val: Integer value (data symbol) between 0 and 63 (i.e., 0:1:63)
◆ qam64_mod()
def ofdmtxrx.ofdmTxRx.qam64_mod |
( |
|
self, |
|
|
|
val |
|
) |
| |
64QAM Modulation
ARGS
- val: Integer value (data symbol) between 0 and 63 (i.e., 0:1:63)
RETURNS:
- iq: Complex data symbol
◆ qpsk_dem()
def ofdmtxrx.ofdmTxRx.qpsk_dem |
( |
|
self, |
|
|
|
iq |
|
) |
| |
QPSK Demodulation
ARGS
- iq: Complex data symbol
RETURNS:
- val: Integer value (data symbol) between 0 and 3 (i.e., 0:1:3)
◆ qpsk_mod()
def ofdmtxrx.ofdmTxRx.qpsk_mod |
( |
|
self, |
|
|
|
val |
|
) |
| |
QPSK Modulation
ARGS
- val: Integer value (data symbol) between 0 and 3 (i.e., 0:1:3)
RETURNS:
- iq: Complex data symbol
◆ sfo_correction()
def ofdmtxrx.ofdmTxRx.sfo_correction |
( |
|
self, |
|
|
|
rxSig_freq_eq, |
|
|
|
pilot_sc, |
|
|
|
pilots_matrix, |
|
|
|
n_ofdm_syms |
|
) |
| |
Apply Sample Frequency Offset
Input:
rxSig_freq_eq - Equalized, frequency domain received signal
pilot_sc - Pilot subcarriers (indexes)
pilots_matrix - Pilots in matrix form
n_ofdm_syms - Number of OFDM symbols
Output:
rxSig_freq_eq - Frequency domain signal after SFO correction
◆ cp_length
ofdmtxrx.ofdmTxRx.cp_length |
◆ mod_order
ofdmtxrx.ofdmTxRx.mod_order |
◆ n_ofdm_syms
ofdmtxrx.ofdmTxRx.n_ofdm_syms |
The documentation for this class was generated from the following file: