function [crs] = gen_crs(CellID,ns,NRBDL);
% =========================================================================
% ===== generování CRS
% CellID - èíslo buòky,ns - èíslo slotu,
% NRBDL - šíøka pásma (v RB), NRBDL - šíøka pásma (v RB)
% =========================================================================
% vstupní promìnné
NCP=1; %normal CP    % NCP=0; %extended CP
NRBmaxDL=110; %nejvìtší nastavení BW dìlitelné RB


% =========================================================================
% pevnì danné promìnné
PBCH=1; % 1 2 nebo 4 (poèet antén)
p=0;   %port antény
vshift=mod(CellID,6);
Nc=1600;
MPN=Nc+62;


% posloupnost x1
x1=[1 zeros(1,30)];
for n=1:2009
    x1(n+31)=mod((x1(n+3)+x1(n)),2);
end

% m_carka (QPSK symboly ktere budou mapovany v ramci jednoho symbolu)
for m=0:2*NRBDL-1
    m_carka(m+1)=(m)+NRBmaxDL-NRBDL;
end

% =========================================================================
% generovani QPSK symbolu PRS
a=zeros(12*NRBDL,7);

% vybrání symbolù, ve kterých bude PRS signál
if p==0
    l1=[0 4];
elseif p==1
    l1=[0 4];
elseif p==2
    l1=1;
elseif p==3
    l1=1;
end

for la=1:length(l1)
    l=l1(la);
    % inicializace pro posloupnost x2
    cinit=de2bi(2^10*(7*(ns+1)+l+1)*(2*CellID+1)+2*CellID+NCP);
    x2=[cinit zeros(1,(31-length(cinit)))];
    for n=1:2009
        x2(n+31)=mod((x2(n+3)+x2(n+2)+x2(n+1)+x2(n)),2);
    end

    for n=1:4*NRBmaxDL
        c(n)=mod((x1(n+Nc)+x2(n+Nc)),2);
    end

    for m=1:2*NRBmaxDL
        r(m)=(1/(sqrt(2)))*(1-2*c(2*m))+1j*(1/(sqrt(2)))*(1-2*c(2*m-1));
    end

% mapování QPSK symbolu PRS do OFDM symbolu
if p==0
    if l==0
        v=0;
    else
        v=3;
    end
elseif p==1
    if l==0
        v=3;
    else
        v=0;
    end
elseif p==2
    v=3*(mod(ns,2));
elseif p==3
    v=3+3*(mod(ns,2));
end

    for m=0:2*NRBDL-1
    k(m+1)=6*m+mod((v+vshift),6);
    end

    for i=1:length(k)
        a(k(i)+1,(l+1))=r(m_carka(i));
    end

end
crs=a;

% a=flip(a,1)
% figure
% subplot 121
% [r,c] = size(~abs(a));                           %# Get the matrix size
% imagesc((1:c)+0.5,(1:r)+0.5,~abs(a));            %# Plot the image
% colormap(gray);                              %# Use a gray colormap
% axis equal                                   %# Make axes grid sizes equal
% set(gca,'XTick',0:(c),'YTick',0:(r),...  %# Change some axes properties 
%     'XLim',[1 c],'YLim',[1 12*6],...   
%     'GridLineStyle','-','XGrid','on','YGrid','on');
% 
% title('slot 0')



end
