📄 downlink_scrambling.m
字号:
function d=downlink_scrambling(numbits,channelname,Nid,Ns,Nidmbsf,nRNTI,q,b) %加扰
% numbits 输入符号数;
% channelname 信道类型:1 PDSCH,2 PMCH,3 PBCH,4 PCFICH,5 PDCCH;
% Nid 小区号:0到503;Nid = 3 * Nid1 + Nid2; Nid1从1到167,Nid2从0到2;
% Ns 时隙号:0到19;
% Nidmbsf MBSFN(多播广播单频网络)的号,用于PMCH;
% nRNTI 无线网络临时指示号,用于PDSCH;
% q 使用的码字,q=0或1;
% where the nRNTI,Ns,Nid Nidmbsf and q are given by high layer;
% b=randint(1,numbits); %随机输入序列,只有0或1;
Nc=1600; %见协议36.211第75页规定;
x1(1)=1; % sequence x1 initializition;
for i=2:31 % x1(0)=1,x1(n)=0,n=1,2,...,30;
x1(i)=0;
end
for i=1:(Nc+numbits-31) % generate sequence x1,x1(n+31) = (x1(n + 3) + x1(n)) mod 2
x1(i+31)=mod((x1(i+3)+x1(i)),2);
end
% x2(n+31)=(x2(n+3)+x2(n+2)+x(n+1)+x2(n))mod2,shall be initialized with
% Cinit=nRNTI*2^14+q*2^13+floor(Ns/2)*2^9+Nid PDSCH
% Cinit=floor(Ns/2)*2^9+N_idmbsf PMCH
% Cinit=Nid PBCH
% Cinit=(floor(Ns/2)+1)*(2*N_id+1)*2^9+Nid PCFICH
% Cinit=floor(Ns/2)*2^14+Nid PDCCH
% where the channelname is given by high layer.
switch channelname %choose the channel ,initialize x2
case 1 % PDSCH
Cinit=nRNTI*2^14+q*2^13+floor(Ns/2)*2^9+Nid;
x2=de2bi (Cinit,31); % de2bi 把十进制数转换成二进制向量
case 2 % PMCH
Cinit=floor(Ns/2)*2^9+Nidmbsf;
x2=de2bi (Cinit,31);
case 3 % PBCH
Cinit=Nid ;
x2=de2bi (Cinit,31);
case 4 % PCFICH
Cinit=(floor(Ns/2)+1)*(2*N_id+1)*2^9+Nid;
x2=de2bi (Cinit,31);
case 5 % PDCCH
Cinit=(floor(Ns/2)+1)*(2*Nid+1)*2^9+Nid;
x2=de2bi (Cinit,31);
end
for i=1:(Nc+numbits-31) % generate sequence x2 ,x2(n + 31) = (x2(n + 3) + x2(n + 2) + x2(n + 1) + x2(n)) mod 2;
x2(i+31)=mod((x2(i+3)+x2(i+2)+x2(i+1)+x2(i)),2);
end
for i=1:numbits % generate pseudo-random sequence c(n);c(n)=(x1(n+Nc)+x2(n+Nc))mod 2 ;
c(i)=mod((x1(i+Nc)+x2(i+Nc)),2);
end
for i=1:numbits % scrambling ;
d(i)=mod((b(i)+c(i)),2);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -