Frequency division duplex simulation - Am I correct?
2 views (last 30 days)
Show older comments
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);
0 Comments
Answers (1)
See Also
Categories
Find more on Modulation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!