⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main1.m

📁 802.11a phy layer protocol by myself
💻 M
字号:
%-----------------Wireless LAN 5GHz------------------------%
%*************** input ****************%
%% data for test
data=[04 02 00 46 00 96 08 205 55 166 00 32 214 01 60 241 0 96 8 173 59 175 0 0 74 111 121 44 32 98 114 105 103 104 116 32 115 112 97 114 107 32 111 102 32 100 105 118 105 110 105 116 121 44 10 68 97 117 103 104 116 101 114 32 111 102 32 69 108 121 115 105 117 109 44 10 70 105 114 101 45 105 110 115 105 114 101 100 32 119 101 32 116 114 101 97 218 87 153 237];
%% Input rate
Rate=36;  %Mbits/s
%% Input Seed
Seed=[1 0 1 1 1 0 1];
Service=[zeros(1,16)];
%**************************************%
%--------------------------------------%
%**** Function 'main' to Packeting data according to data(in dec) & Rate(Mbits/s) & Seed(pseudo random beginning metrix) ****%
%function Packet=main(data,Rate,Seed,Service)
%***********  get parameter ***********%
%% modu=1:BPSK   2:QPSK   3:16-QAM   4:64-QAM
LEN=length(DatatoBit(data))/8;
LENGTH=DectoBi(LEN);%octets/message in binary
switch Rate
case 6
    RateBit=[1 1 0 1];Modu=1;R=0.5;Nbpsc=1;Ncbps=48;Ndbps=24;
case 9
    RateBit=[1 1 1 1];Modu=1;R=0.75;Nbpsc=1;Ncbps=48;Ndbps=36;
case 12
    RateBit=[0 1 0 1];Modu=2;R=0.5;Nbpsc=2;Ncbps=96;Ndbps=48;
case 18
    RateBit=[0 1 1 1];Modu=2;R=0.75;Nbpsc=2;Ncbps=96;Ndbps=72;
case 24
    RateBit=[1 0 0 1];Modu=3;R=0.5;Nbpsc=4;Ncbps=192;Ndbps=96;
case 36
    RateBit=[1 0 1 1];Modu=3;R=0.75;Nbpsc=4;Ncbps=192;Ndbps=144;
case 48
    RateBit=[0 0 0 1];Modu=4;R=2/3;Nbpsc=6;Ncbps=288;Ndbps=192;
case 54
    RateBit=[0 0 1 1];Modu=4;R=0.75;Nbpsc=6;Ncbps=288;Ndbps=216;
end
Nsym=ceil((16+8*LEN+6)/Ndbps);
Ndata=Nsym*Ndbps;
Npad=Ndata-(16+8*LEN+6);
DataDealed=DatatoBit(data);
Datain=[Service DataDealed zeros(1,Npad+6)];
SignalTail=[zeros(1,6)];
SIGNAL=[RateBit 0 LENGTH 0 SignalTail];
%********************************************************************%
%--------------------------------------------------------------------%
%************** Generation of the preamble **************************%
Sk=[zeros(1,4) -1.472-1.472j zeros(1,3) -1.472-1.472j zeros(1,3) 1.472+1.472j zeros(1,3) 1.472+1.472j zeros(1,3) 1.472+1.472j zeros(1,3) 1.472+1.472j zeros(1,7) zeros(1,8) 1.472+1.472j 0+0j 0+0j 0+0j -1.472-1.472j zeros(1,3) 1.472+1.472j zeros(1,3) -1.472-1.472j zeros(1,3) -1.472-1.472j zeros(1,3) 1.472+1.472j zeros(1,3) ];
Lk=[0 1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 1 1 1 zeros(5,1)' zeros(6,1)' 1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 1 1 -1 -1 1 1 -1 1 -1 1 1 1 1];
Rst=ifft(Sk);
Rs=[Rst Rst Rst(1:33)];
Rs(1)=0.5*Rs(1);
Rs(161)=0.5*Rs(161);
Rlt=ifft(Lk);
Rl=[Rlt(33:64) Rlt Rlt Rlt(1)];
Rl(1)=0.5*Rl(1);
Rl(161)=0.5*Rl(161);
%***********************************************************************%
%-----------------------------------------------------------------------%
%***************** Generation of the SIGNAL field **********************%
SignalCon=pun(SIGNAL,6);%% argument is 6 only means to get 1/2 convolution mode
SignalInt=SigInt(1,48,SignalCon);%% Interleaving
Pk=getPk([1 1 1 1 1 1 1]);
SignalbyBPSK=Insert(Sigmap(SignalInt,1),Pk(1)*[1 1 1 -1]);
Signaltemp=ifft([SignalbyBPSK(33:64) SignalbyBPSK(1:32)]);
SignalTfield=[Signaltemp(49:64) Signaltemp Signaltemp(1)];
SignalTfield(1)=SignalTfield(1)*0.5;
SignalTfield(81)=SignalTfield(81)*0.5;
%***********************************************************************%
%-----------------------------------------------------------------------%
%*********************** Scrambling with Seed **************************%
DataScr=pseudo(Datain,Seed);
if length(DataScr)>822
    DataScr(817:822)=[zeros(1,6)];
end
%********************************************************************%
%--------------------------------------------------------------------%
%********************* Convolution with Puncture*********************%
DataCon=pun(DataScr,Rate);
%********************************************************************%
%--------------------------------------------------------------------%
%************************* Dealing Data field ***********************%
for N=1:length(DataCon)/Ncbps
%********************** Interleaving ********************************%
DataInt(((N-1)*Ncbps+1):N*Ncbps)=interleaving(Nbpsc,Ncbps,DataCon(((N-1)*Ncbps+1):N*Ncbps));
%**********************************************************************%
%----------------------------------------------------------------------%
%************************ Mapping *************************************%
DataMapped=map(DataInt(((N-1)*Ncbps+1):N*Ncbps),Modu);
DataFfield(((N-1)*64+1):N*64)=Insert(DataMapped,Pk(N+1)*[1 1 1 -1]);
DataT(((N-1)*64+1):N*64)=ifft(DataFfield(((N-1)*64+1):N*64));
DataTfield(((N-1)*80+1):N*80+1)=[DataT((N-1)*64+49:(N-1)*64+64) DataT((N-1)*64+1:N*64) DataT((N-1)*64+1)];
DataTfield((N-1)*80+1)=0.5*DataTfield((N-1)*80+1);
DataTfield(N*80+1)=0.5*DataTfield(N*80+1);
%**********************************************************************%
%----------------------------------------------------------------------%
end
%***************************** Packeting ******************************%
Packet=[Rs(1:length(Rs)-1) Rl(1:length(Rl)-1) SignalTfield(1:length(SignalTfield)-1) DataTfield];
%**********************************************************************%
%----------------------- End of Packeting data ------------------------%

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -