Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronic Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Register Log in

Filter bank Multicarrier FBMC with QPSK Modulation instead of QAM

Status
Not open for further replies.

Ernte1893

Newbie level 3
Joined
Jul 16, 2014
Messages
4
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
43
Hey,

I am trying to implement a polyphase filter bank for a multicarrier transceiver. I want to
realize it with QPSK modulation. I managed to get it work with QAM with a input structure
for the IFFT as followed:
\[\begin{bmatrix} 1 & i & -1 & -i \\ -i & 1 & i & -1 & \end{bmatrix} \]
It means that each subcarrier is orthogonal to the adjacent one and each frame symbol is orthogonal
to the adjacent frame.
For the QPSK it is just sufficient that adjacent frame is adjacent to each other (WHY??):

Here is my code for the working version, where I put each subsequent frame has a phase difference of \[\pi / 2\].
I can't realize that, because the input will be random. Do you have any idea for that ?

Code:
% FBMC Modulator
% Frame, Number of "FBMC symbols"
clear all;
close all;
clc;
N=128;
Frame=10;

% Prototype Filter For FBMC 
M=N;% number of sub-channels
K=4; % overlapping factor 
lp=K*M;% prototype filter length
yyy=[1 sqrt(2)/2];% coefficient of filter when K=2
s=2*pi/(K*M);
p1 = zeros(1,lp);
p2 = zeros(1,lp);
p3 = zeros(1,lp);
for  r = 1:lp
p3(r)=yyy(1,1)-2*yyy(1,2)*cos(r*s); % prototype filter equation K=2
end
[v2,~]=max(p3);
p3 = p3/v2;
h = p3;

figure(1);
plot(h);
title ('Filter Impulse response');

%% Transmitter
% Initialization for transmission
y=zeros(1,4*N+(Frame-1)*N);
x=zeros(N,Frame+6);
s = zeros(N,Frame);
% s(:,1) = sign(randn(N,1)) + 1i.* sign(randn(N,1));

for ttx = 1:Frame
%     % OQPSK Modulator: adjacent subcarriers are orthogonal to each other
%     rxI = sign(randn(N/2,1));
%     rxQ = 1i.*sign(randn(N/2,1));
%     s(1:2:end,ttx) = rxI(1:end) + [1i ; rxQ(1:end-1)];
%     s(2:2:end,ttx) = rxI(1:end) + rxQ(1:end);
%     % adjacent frames are orthogonal to each other
%     s(:,ttx) = exp(1i.*(ttx-1).*pi./2).*s(:,1);
%     %  QPSK
      s(:,ttx) = (sign(randn(N,1)) +  1i.* sign(randn(N,1)));

xtime=ifft(s(:,ttx)); % [ 0 0 0 x1 x2 .. x10 0 0 0 ]
x(:,3+ttx)=xtime./sqrt(N);%4:Frame+3
end
rxx = reshape(x,1,[]);
for ntrametx=1:(Frame+3)
xf = rxx(1,1+(ntrametx-1)*N:(3+ntrametx)*N);
txmult = xf .* h;
y(1+(ntrametx-1)*N:ntrametx*N) = txmult(1:N)+txmult((N+1):(2*N))+txmult((2*N+1):(3*N))+txmult((3*N+1):(4*N));
end

signal = y;

%% Receiver
rx=zeros(N,Frame);
hrx = [fliplr(h(1:N)) fliplr(h(1+N:2*N)) fliplr(h(1+2*N:3*N)) fliplr(h(1+3*N:4*N)) ];
sdemod = zeros(N,Frame);
for RxN=1:(Frame-1) 
% Transmitted signal
rxmult = signal(1+(RxN-1)*N:(3+RxN)*N) .* hrx ;
sestn=fft(rxmult(1:N)+rxmult((N+1):(2*N))+rxmult((2*N+1):(3*N))+rxmult((3*N+1):(4*N)));  
 
% QPSK equalizing
[v,i] = max(real(sestn));
sest=sestn/v;%/0.6863;    

sdemod(:,RxN) = sest;
end

figure(2)
plot(s,'or');
hold on
plot(sdemod(:,2:end-1),'xk');
title('FBMC QPSK, o transmitted, x received');
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Top