WARP Project Forums - Wireless Open-Access Research Platform

You are not logged in.

#1 2018-Aug-23 01:54:09

shriramtej
Member
Registered: 2018-Aug-23
Posts: 6

SC-FDMA implementation in WARPLab

We modified the code in wl_example_siso_ofdm_txrx.m as given below

1) transmitter side
% Insert the data and pilot values; other subcarriers will remain at 0
ifft_in_mat(SC_IND_DATA, :)   = tx_syms_mat;
ifft_in_mat(SC_IND_PILOTS, :) = pilots_mat;

totalSubcarriers = 256 ;% M.
numSymbols = N_SC;% N.
Q = totalSubcarriers/numSymbols;
subcarrierMapping = 'LFDMA';% Subcarrier mapping scheme.

X=fft(ifft_in_mat, N_SC, 1);

Y = zeros(totalSubcarriers,N_OFDM_SYMS);
%%%%%%%%%%%%%%%% Mapping%%%%%%%%%%%%%%%%.
if subcarrierMapping == 'IFDMA'
Y(1:Q:totalSubcarriers,:) = X;
elseif subcarrierMapping == 'LFDMA'
Y(1:numSymbols,:) = X;
end
M=totalSubcarriers;
%Perform the IFFT
tx_payload_mat = ifft(Y, M, 1);


2) at receiver side

% Take the FFT
syms = fft(payload_mat_noCP, M, 1);

% Equalize (zero-forcing, just divide by complex chan estimates)
syms_f_mat = syms(1:N_SC,:) ./ repmat(rx_H_est.', 1, N_OFDM_SYMS);

if subcarrierMapping == 'IFDMA'
Demap = syms_f_mat(1:Q:M,:);
elseif subcarrierMapping == 'LFDMA'
Demap = syms_f_mat(1:N_SC,:);
end

syms_eq_mat = ifft(Demap);


The problem is that rx_H_est value is 0 at indices 1, 28 to 38. In case of OFDM as there is no IFFT block after FDE there is no problem but in SC-FDMA as we need to perform IFFT after FDE the infinity values in syms_f_mat, Demap cause NaN values in syms_eq_mat. Can anybody help me with this problem?

Last edited by shriramtej (2018-Aug-23 02:01:03)

Offline

 

#2 2018-Aug-23 09:44:26

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

Re: SC-FDMA implementation in WARPLab

The problem is that rx_H_est value is 0 at indices 1, 28 to 38

The WARPLab OFDM example code uses a preamble similar to 802.11a. This preamble only defines non-zero training symbols in subcarriers which carry data/pilot symbols. The DC subcarrier (MATLAB index 1) and the higher-frequency subcarriers (indexes 28:38) are all zero in the training symbols and payload. If you modify the payload to use these subcarriers you must also modify the training symbols to have non-zero values so your Rx code can estimate the corresponding channel coefficients.

Offline

 

#3 2018-Aug-24 03:40:37

shriramtej
Member
Registered: 2018-Aug-23
Posts: 6

Re: SC-FDMA implementation in WARPLab

If you modify the payload to use these subcarriers you must also modify the training symbols to have non-zero values so your Rx code can estimate the corresponding channel coefficients.

Thank you for the reply. I did modified lts_f values so that it has all non zero values like
lts_f = [1 1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 1 1 (1) 1 1 -1 -1 1 1 -1 1 -1 1 -1 (1) 1 -1 -1 1 1 -1 1 -1 1 1 1 1 1 1 -1 -1 1 1 -1 1 -1 1 1 1 1];

but the results are very bad. Is there any condition for lts_f to satisfy while modifying it?

Offline

 

#4 2018-Aug-24 08:39:16

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

Re: SC-FDMA implementation in WARPLab

The DC (zero frequency) term should be 0. Does your signal actually occupy all 64 subcarriers? This would be unusual- the higher subcarriers are typically reserved to allow better spectral mask compliance.

Offline

 

#5 2018-Aug-28 04:48:18

shriramtej
Member
Registered: 2018-Aug-23
Posts: 6

Re: SC-FDMA implementation in WARPLab

Actually we need more subcarriers than 64. As shown in the image if N=64 then M would be greater than 64 say 256. As the code is for 64 subcarriers lets assume N=16 and M=64. So in this case we need 64 subcarriers
https://en.wikipedia.org/wiki/File:Scfdma.jpg

Last edited by shriramtej (2018-Aug-28 04:48:35)

Offline

 

#6 2018-Aug-28 08:31:37

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

Re: SC-FDMA implementation in WARPLab

I'm not familiar with SC-FMDA. In general you must provide training symbols with the same frequency content as the data symbols. In OFDM this means using a training symbol (LTS in 802.11) with known values in the same subcarriers as the data/pilot symbols. You will need to build something similar for your custom waveform.

Offline

 

Board footer