5G - PHY Candidate Home : www.sharetechnote.com |
FBMC(Filter-bank based multi-carrier)
In this scheme, a filter is applied per sub carrier and can be modeled as shown below.
The process illustrated above can be represented in more intuitive way as shown below. As you see, each of sub channel goes through a bandpass filter.
The critical steps for FBMC is to implement filters for each sub channels and align the multiple filters into a filter bank. The way to build the filter bank is .. we design a basic form (template) of a filter called prototype filter. Once we finish the design of the prototype filter, the next step is simple. Just make a copy of the prototype filter and shift it to neighbouring sub channels step by step. (Following illustration is based on Ref [4])
Example 01 >
Following is an example of generating FBMC signal. The generation part came from Michel TERRE's Matlab code (Refer to Ref [5] for original code and Copyright Info). I added plotting parts and I will describe on each of the steps.
clear all; close all; clc; N=16;
% Prototype Filter (cf M. Bellanger, Phydyas project) H1=0.971960; H2=sqrt(2)/2; H3=0.235147; factech=1+2*(H1+H2+H3); hef(1:4*N)=0; for i=1:4*N-1 hef(1+i)=1-2*H1*cos(pi*i/(2*N))+2*H2*cos(pi*i/N)-2*H3*cos(pi*i*3/(2*N)); end hef=hef/factech; % % Prototype filter impulse response h=hef;
% Initialization for transmission Frame=1; y=zeros(1,4*N+(Frame-1)*N/2);
s=zeros(N,Frame); for ntrame=1:Frame
% OQAM Modulator if rem(ntrame,2)==1 s(1:2:N,ntrame)=sign(randn(N/2,1)); s(2:2:N,ntrame)=j*sign(randn(N/2,1)); else s(1:2:N,ntrame)=j*sign(randn(N/2,1)); s(2:2:N,ntrame)=sign(randn(N/2,1)); end
x=ifft(s(:,ntrame));
% Duplication of the signal x4=[x.' x.' x.' x.'];
% We apply the filter on the duplicated signal signal=x4.*h; %signal=x4;
% Transmitted signal y(1+(ntrame-1)*N/2:(ntrame-1)*N/2+4*N)=y(1+(ntrame-1)*N/2:(ntrame-1)*N/2+4*N)+signal;
end
yfft = [zeros(1,length(y)/2) fft(y) zeros(1,length(y)/2)] yTx = ifft(yfft); yTxFreq = fft(yTx,8192); yTxFreqAbs = abs(yTxFreq); yTxFreqAbs = yTxFreqAbs/max(yTxFreqAbs); yTxFreqAbsPwr = 20*log(yTxFreqAbs);
subplot(6,4,1); plot(h);xlim([0 length(h)]);set(gca,'yticklabel',[]); subplot(6,4,2); plot(s);xlim([-1.2 1.2]);ylim([-1.2 1.2]);set(gca,'yticklabel',[]); subplot(6,4,3); stem(real(s));xlim([1 length(s)]);ylim([-1.2 1.2]);set(gca,'yticklabel',[]); subplot(6,4,4); stem(imag(s));xlim([1 length(s)]);ylim([-1.2 1.2]);set(gca,'yticklabel',[]); subplot(6,4,5); plot(real(x));xlim([1 length(x)]);set(gca,'yticklabel',[]); subplot(6,4,6); plot(imag(x));xlim([1 length(x)]);set(gca,'yticklabel',[]); subplot(6,4,7); plot(real(x4));xlim([0 length(x4)]);ylim([-0.5 0.5]);set(gca,'yticklabel',[]); subplot(6,4,8); plot(imag(x4));xlim([0 length(x4)]);ylim([-0.5 0.5]);set(gca,'yticklabel',[]); subplot(6,4,9); plot(real(signal));xlim([0 length(signal)]);ylim([-0.5 0.5]);set(gca,'yticklabel',[]); subplot(6,4,10); plot(imag(signal));xlim([0 length(signal)]);ylim([-0.5 0.5]);set(gca,'yticklabel',[]); subplot(6,4,11); plot(real(y));xlim([0 length(y)]);ylim([-0.5 0.5]);set(gca,'yticklabel',[]); subplot(6,4,12); plot(imag(y));xlim([0 length(y)]);ylim([-0.5 0.5]);set(gca,'yticklabel',[]); subplot(6,4,13); plot(real(yfft));xlim([0 length(yfft)]);set(gca,'yticklabel',[]);%ylim([-0.5 0.5]); subplot(6,4,14); plot(imag(yfft));xlim([0 length(yfft)]);set(gca,'yticklabel',[]);%ylim([-0.5 0.5]); subplot(6,4,15); plot(abs(yfft)/max(abs(yfft)));xlim([0 length(yfft)]);set(gca,'yticklabel',[]);%ylim([0 1]); subplot(6,4,16); plot(20*log(abs(yfft)/max(abs(yfft))));xlim([0 length(yfft)]);set(gca,'yticklabel',[]);%ylim([-10 0]); subplot(6,4,17); plot(real(yTx));xlim([0 length(yTx)]);set(gca,'yticklabel',[]);%ylim([-0.5 0.5]); subplot(6,4,18); plot(imag(yTx));xlim([0 length(yTx)]);set(gca,'yticklabel',[]);%ylim([-0.5 0.5]); subplot(6,4,19); plot(abs(yTx)/max(abs(yTx)));xlim([0 length(yTx)]);ylim([0 1]);set(gca,'yticklabel',[]); subplot(6,4,20); plot(20*log(abs(yTx)/max(abs(yTx))));xlim([0 length(yTx)]);ylim([-100 0]);set(gca,'yticklabel',[]); subplot(6,4,21); plot(real(yTxFreq));xlim([0 length(yTxFreq)]);set(gca,'yticklabel',[]);%ylim([-0.5 0.5]); subplot(6,4,22); plot(imag(yTxFreq));xlim([0 length(yTxFreq)]);set(gca,'yticklabel',[]);%ylim([-0.5 0.5]); subplot(6,4,23); plot(yTxFreqAbs);xlim([0 length(yTxFreqAbs)]);ylim([0 1]);set(gca,'yticklabel',[]); subplot(6,4,24);plot(yTxFreqAbsPwr); xlim([0 length(yTxFreqAbsPwr)]);ylim([-100 0]);set(gca,'yticklabel',[]);
Following is the output of this code. The 'X' of subplot(6,4,X) corresponds to the number in following graphs. First, try to understand on your own the meaning of each of these plots based on the source code and then follow through my description.
Following shows how each of the plots are produced along the each steps of FBMC waveform generation. I hope this would be clearer than any verbal (written description).
Just putting the important milestone points, (2) is the bit stream mapped to a sequence of complex data and represnted in constallation. (1) is Pulse Shaping Filter. (19) is the time domain physical signal being transmitted through the antenna after upconversion. (21) is the time domain physical signal being transmitted through the antenna after upconversion.
Reference
[1] GFDM Interference Cancellation for Flexible Cognitive Radio PHY Design R. Datta, N. Michailow, M. Lentmaier and G. Fettweis Vodafone Chair Mobile Communications Systems, Dresden University of Technology, 01069 Dresden, Germany Email:[rohit.datta, nicola.michailow, michael.lentmaier, fettweis]@ifn.et.tu-dresden.de
[2] 5G NOW. D3.1 5G Waveform Candidate Selection
[3] Waveform Contenders for 5G - suitability for short packet and low latency transmissions. Frank Schaich, Thorsten Wild, Yegian Chen Alcatel-Lucent AG Bell Labs Stuttgart, Germany
[4] FBMC Physical Layer : a Primer PHYDYAS
[5] Matlab Centeral : FBMC Modulation / Demodulation (with BSD Copyright) Copyright (c) 2014, Michel TERRE All rights reserved.
|