Frequency division duplex simulation - Am I correct?

2 views (last 30 days)
en2
en2 on 22 Mar 2016
Answered: en2 on 23 Mar 2016
Greetings community,
Im working on full FDD simulation based on OFDM. Here's the situation.
Assume that given OFDM band is divided into 2 subbands (blue band - 20 carriers - right side from DC, red band - 20 carriers - left side from DC, DC is set to NULL). User #1 is sending via blue band, and User #2 via red band. Receiving procedure are flipped (User #1 is receiving on red, and User #2 receiving on blue).
Now assume, that both of them wants to transmit almost simultaneously (with 20 samples delay).
My question is simple:
Will User #2 receive only signal from User #1 ? Or a mixed signal from User #1 and his own transmission?
Im asking because I read about self transmission cancellation techniques etc. in real world (ie. software defined radio).
Without cancellation, received signal is damaged, probably by ICI (inter channel interferences). Linking code:
clc;
clear all;
close all;
%%simulation parameters
nfft = 128; % fft size
band_size = 20; % band size in carrier's
%%transmission indices
carrier_indices = -nfft/2:1:(nfft/2-1);
blue_band_indices = carrier_indices(nfft/2+2:nfft/2+band_size+1) + nfft/2 + 1;
red_band_indices = carrier_indices(nfft/2+1-band_size:nfft/2) + nfft/2 + 1;
%%data modulation
modulator = comm.BPSKModulator;
data = randi([0 1], band_size, 1);
complex_data = step(modulator, data);
%%ofdm modulation
% user_1 sending at blue band
user_1_send_frame = zeros(1,nfft); % empty frame
user_1_send_frame(blue_band_indices) = complex_data; % carrier mapping at blue band
user_1_send_frame = ifft(fftshift(user_1_send_frame)); % time domain signal
% user_2 sending at red band
user_2_send_frame = zeros(1,nfft); % empty frame
user_2_send_frame(red_band_indices) = complex_data; % carrier mapping at red band
user_2_send_frame = ifft(fftshift(user_2_send_frame)); % time domain signal
%%adding delay between user_1 and user_2 sending procedures
delay = zeros(1,20);
user_1_send_frame = [user_1_send_frame delay];
user_2_send_frame = [delay user_2_send_frame];
%%combining signals
user_2_received_signal = user_1_send_frame + user_2_send_frame;
%%user_2 trying to receive on blue band (signal send by user_1)
user_2_receive_frame = fftshift(fft(user_2_received_signal(1:nfft))); % user_2 computing fft
user_2_receive_frame = user_2_receive_frame(blue_band_indices);
%%plots
plot_frame = zeros(2,nfft);
plot_frame(1,blue_band_indices) = 1;
plot_frame(2,red_band_indices) = 1;
figure(1);
bar(plot_frame(1,:),'b');
hold on;
bar(plot_frame(2,:),'r');
scatterplot(user_2_receive_frame);

Answers (1)

en2
en2 on 23 Mar 2016
bump

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!