WARP Project Forums - Wireless Open-Access Research Platform

You are not logged in.

#1 2018-Nov-24 22:15:36

sun
Member
Registered: 2018-Jul-03
Posts: 13

question of transmitter side in wl_example_mimo_ofdm_txrx.m

I try to learn wl_example_mimo_ofdm_txrx.m.

I do not understand some piece of codes in wl_example_mimo_ofdm_txrx.m.


hope someone  to explain it.



%% Define a half-band 2x interpolation filter response
120    interp_filt2 = zeros(1,43);
121    interp_filt2([1 3 5 7 9 11 13 15 17 19 21]) = [12 -32 72 -140 252 -422 682 -1086 1778 -3284 10364];
122    interp_filt2([23 25 27 29 31 33 35 37 39 41 43]) = interp_filt2(fliplr([1 3 5 7 9 11 13 15 17 19 21]));
123    interp_filt2(22) = 16384;
124    interp_filt2 = interp_filt2./max(abs(interp_filt2));
125   

1. why do we need this interpolation part? why do we design FIR filter like this?


130    sts_f = zeros(1,64);
131    sts_f(1:27) = [0 0 0 0 -1-1i 0 0 0 -1-1i 0 0 0 1+1i 0 0 0 1+1i 0 0 0 1+1i 0 0 0 1+1i 0 0];
132    sts_f(39:64) = [0 0 1+1i 0 0 0 -1-1i 0 0 0 1+1i 0 0 0 -1-1i 0 0 0 -1-1i 0 0 0 1+1i 0 0 0];
133    sts_t = ifft(sqrt(13/6).*sts_f, 64);
134    sts_t = sts_t(1:16);


2. why do we design the STS like this?

sts_t_rep = repmat(sts_t, 1, 30);
154   
155    preamble_legacy_A = [sts_t_rep, lts_t(33:64), lts_t, lts_t];
156    preamble_legacy_B = [circshift(sts_t_rep, [0, TX_SPATIAL_STREAM_SHIFT]), zeros(1, 160)];
157   
163   
164    preamble_mimo_A = [lts_t(33:64), lts_t, zeros(1,96)];
165    preamble_mimo_B = [zeros(1,96), lts_t(33:64), lts_t];


3. why do we design preamble legacy and preamble mimo like this?  is this the standard design in ofdm mimo transmission?

Offline

 

#2 2018-Nov-25 00:45:59

sun
Member
Registered: 2018-Jul-03
Posts: 13

Re: question of transmitter side in wl_example_mimo_ofdm_txrx.m

another question:
mimo_training_ind = lts_peaks(max(lts_last_peak_index)) + 32;

why do we plus 32? the explanation  on code's comment is    % The "+32" here corresponds to the 32-sample cyclic prefix on the preamble LTS

I am confused about that the cp length is 16, so we need plus 16 rather than 32?

Offline

 

#3 2018-Nov-26 11:01:52

murphpo
Administrator
From: Mango Communications
Registered: 2006-Jul-03
Posts: 5159

Re: question of transmitter side in wl_example_mimo_ofdm_txrx.m

1. why do we need this interpolation part? why do we design FIR filter like this?

By default the WARPLab Reference Design operates Tx/Rx at 40MSps. The OFDM examples use 20MHz bandwidth, so 2x interpolation (Tx) and 1/2x decimation (Rx) is required.

2. why do we design the STS like this?

This is the 802.11 STS definition. Its periodicity aids in CFO estimation, its low PAPR aids AGC settling.

3. why do we design preamble legacy and preamble mimo like this?  is this the standard design in ofdm mimo transmission?

This is a custom preamble for our MIMO example. The legacy portion transmits the STF from both antennas with a circular shift between antennas (similar to 802.11 MIMO), then transmits the LTF from just one antenna. The MIMO portion transmits the LTF from both antennas, one at a time. This orthogonal-in-time scheme makes it easy to estimate the MIMO channels at the Rx.

why do we plus 32? the explanation  on code's comment is    % The "+32" here corresponds to the 32-sample cyclic prefix on the preamble LTS. I am confused about that the cp length is 16, so we need plus 16 rather than 32?

The LTF in the preamble uses a 32-sample cyclic prefix. The data symbols use a 16-sample cyclic prefix.

Offline

 

Board footer