基于IEEE8024611a链路仿真专业课程设计精品Word文件下载.docx
《基于IEEE8024611a链路仿真专业课程设计精品Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于IEEE8024611a链路仿真专业课程设计精品Word文件下载.docx(16页珍藏版)》请在冰豆网上搜索。
信号段的速度位(RATE)、长度位(LENGTH)、保留比特、奇偶查验比特和效劳(SERVICE)字段。
从调制角度看,长度、速度、预留比特和奇偶比特(加上6个‘0’尾比特)组成了一个独立的OFDM符号,记为信号(SIGNAL)字段,该字段以靠得住的BPSK调制及1/2编码率发送。
PLCP报头的SERVICE字段与PSDU(加上6个‘0’尾比特和填充比特)一路,标记为DATA字段,以RATE字段中指示的数据速度进行发送,而且可能组成多个OFDM符号。
在接收SIGNAL字段内的尾比特后可当即解码出RATE和LENGTH字段,这二者关于解码出该分组中的DATA是必需的。
另外,即便接收方不支持接收的分组中的数据速度,通过从分组中的DATA和LENGTH的内容中推测出分组的持续时刻。
图1PPDU帧结构
2.OFDM的符号结构
如下图,OFDM的前导训练序列包括10个短训练序列、2个长训练序列。
前导训练序列用来做系统的同步、信道估量、频偏估量、自适应操纵(AGC)等。
前导训练序列后面是Signal段,再后面是Data区。
图2OFDM的符号结构
其中t1-t10表示短训练符号,T1和T2表示长训练符号,总的训练时刻为16us。
图中的虚线表示边界代表傅里叶逆变换的周期性引发的循环。
3.OFDM技术简介
OFDM(OrthogonalFrequencyDivisionMultiplexing,正交频分复用)是一种特殊的多载波调制技术,它利用载波间的正交性进一步提高频谱利用率,而且能够抗窄带干扰和抗多径衰落。
OFDM通过量个正交的子载波将串行数据并行传输,能够增大码元的宽度,减少单个码元占用的频带,抗击多径引发的频率选择性衰落,能够有效克服码间串扰,降低系统对均衡技术的要求,超级适合移动场合中的高速传输。
图3OFDM系统原理图
三、设计内容:
802.11a链路设计总流程:
一、802.11a前导生成原理
产生PLCP前导码字段,本字段由10个重复的‘段训练序列’(用于自动增益集中操纵、分集选择、按时捕捉和接收机粗略频率捕捉)和两个重复的‘长训练序列’(用于信道估量和接收机精准频率捕捉)组成,前面为爱惜距离(GI)。
OFDM短训练序列由调制过的12个子载波组成。
调制因子s=sqrt(13/6)*[0,0,1+j,0,0,0,-1-j,0,0,0,i+j,0,0,0,-1-j,0,0,0,-1-j,0,0,0,1+j,0,0,0,0,0,0,-1-j,0,0,0,-1-j,0,0,0,1+j,0,0,0,1+j,0,0,01+j,0,0,0,1+j,0,0,0];
将52个子载波中的12个子载波的能量归一化,并进行IFFT傅里叶逆变换,最后进行0.8微秒的矩形时刻加窗。
OFDM长训练序列由调制过的53个子载波组成。
调制因子L=[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,-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];
一样进行IFFT傅里叶逆变换,最后进行0.8微秒、幅度为1的矩形时刻加窗。
二、扰码及解扰码
帧同步加扰器利用以下的生成多项式:
S(X)=X7+X4+1。
为了进行正确有效的解扰,加扰发送数据和解扰接收数据利用同一个扰码器。
发送时,加扰器初始状态设置为伪随机非0态。
在加扰前,SERVICE字段的7个低有效比特置0,如此在接收端解扰时就能够够以7个0被扰后的结果作为收端扰码器的初始状态,从而进行有效正确的解扰。
将移位寄放器4和7中的数据进行异或,再进行左移数据后送给移位寄放器,一样咱们默许产生的比特序列大于127,因此对大于127的比特序列和127进行取整且循环取整的次数,这时取得比特序列再和输入的序列进行异或。
3、卷积编码和解卷积
卷积编码器利用工业标准的生成多项式,g0=133(8),g1=171(8),R=1/2,即都用8进制表示。
标记为“A”的比特在从编码器输出时位于比特“B”之前。
随机产生一组1行n列的二进制数,利用卷积编码器进行卷积编码。
3、交织及解交织
交织器中进行两次置换:
第一次置换将相邻的编码比特映射到不相邻的子载波上,第二次置换确保相邻编码比特被交替映射到星座的高有效位和低有效位比特,因此幸免了靠得住性比特的长期存在。
实现逆进程的交织器也由两步置换完成。
当交织的程度越深,突发性错误越强,信道译码器的性能将由此取得提升。
五、星座映射及逆映射
BPSK利用数字信号来操纵载波的相位,具有较好的抗噪性能和较高的频谱利用率。
BPSK解调时,必需有与此同频同相的同步载波。
调制方式
输入比特
I路输出
Q路输出
BPSK
输入比特b0
0
-1
1
四、设计流程:
前导生成流程
扰码生成流程
卷积编码生成流程
NN
YY
交织生成流程
星座映射生成流程
五、设计总结:
Matlab学习心得:
第一是对matlab有了一个全新的熟悉,第二是对matlab的更多操作和命令的利用有了更高的把握。
完全把握了相关的命令操作和处置方式和命令窗口和.m文件的不同成效的运用。
对同一模块的相关功能和技术指标分析和性能分析超级重要,真正的分析和了解原理是超级重要的。
Matlab真的是个超级壮大和有效的工具,真正把它学懂学透的话仍是需要下超级大的功夫和尽力的。
前导设计心得:
前导码的设计都具有低峰值到平均功率比,如此就能够最小化剪辑信号或信号分辨率的问题。
在程序设计的时候,对长短序列的加窗明白得的不够到位,使得实验一开始就落下了进度。
扰码:
其实扰码的作用要紧确实是对随机产生的错误进行纠正,刚开始编写程序的时候咱们考虑了小于127的比特序列,其实在实际中咱们用到的都是大于127的比特序列。
卷积码:
卷积码的纠错能力随着N的增大而增大,在编码器复杂程度相同的情形下卷积码的性能优于分组码,卷积编码当前的输出不仅与当前的输入有关,而且与它之前的(V-1)个输入有关。
在程序的设计进程中,我较好的利用了matlab中的卷积函数,算是在几个程序设计中效率较高。
交织:
交织是对突发性的错误进行纠正,交织的程序重点确实是对两次比特位位置的置换的正确明白得和应用。
BPSK调制:
通过本次练习,我进一步了解了BPSK调制的进程,明白得了无码间串扰的意义。
是把模拟信号转换成数据值的方式之一,表现信息键控相移方式的一种。
我坦诚的说自己把握的仍是十分有限,可是教师给咱们讲解的相关原理方式是十分有成效的,对自己以后的要求需要更高,此刻真正把握的知识皮毛,想取得更大的成绩就得不断地去尽力学习。
参考文献:
附件:
(要紧程序)
总程序
function[signal,data,code,data_in]=communication()
%SIGNAL序列
signal=randint(1,24,2),%随机产生24个二进制数
code=convolutional(signal);
%卷积编码
RE=interweave(code);
%交织
mod_out=BPSK_t(RE);
%BPSK调制
mod_ofdm_syms=Add_Pilot(mod_out);
%插入导频
time_syms=IFFT64(mod_ofdm_syms);
%傅里叶变换
time_signal=Add_CP(time_syms);
%增加CP
%DATA序列
data=randint(1,24,2),
data_out=scramble(data);
%加扰
data_out=data_out*1;
code=convolutional(data_out);
time_data=Add_CP(time_syms);
preamble=qd();
%生成前导
ppdu=[preambletime_signaltime_data];
%PPDU帧
[freq_tr_syms,freq_data_syms,freq_pilot_syms]=FFT64(ppdu);
e=freq_data_syms;
signal=e(1:
48);
data=e(49:
96);
%SIGNAL
mod_in=BPSK_jt(signal);
record_in=deinterleaver(mod_in);
code=deconvolution(record_in),
%DATA
mod_in=BPSK_jt(data);
%BPSK解调
%解交织
code=deconvolution(record_in);
%解卷积
data_in=descramble(code),%解扰
前导
functionpreamble=qd()
b=[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,-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];
s=sqrt(13/6)*[0,0,1+j,0,0,0,-1-j,0,0,0,i+j,0,0,0,-1-j,0,0,0,-1-j,0,0,0,1+j,0,0,0,0,0,0,-1-j,0,0,0,-1-j,0,0,0,1+j,0,0,0,1+j,0,0,01+j,0,0,0,1+j,0,0,0];
time_syms=IFFT64(s);
g=1;
forw=1:
16
x(g)=time_syms(w);
g=g+1;
end
short=[x,x,x,x,x,x,x,x,x,x];
%short
(1)=short
(1)*0.5;
short(160)=short(160)*0.5;
time_syms=IFFT64(b);
forw=33:
64
y(g)=time_syms(w);
long=[y,time_syms,time_syms];
%long
(1)=long
(1)*0.5;
long(160)=long(160)*0.5;
%short(160)=short(160)+long
(1);
%long
(1)=[];
preamble=[short,long];
扰码
functiondata_out=scramble(data_in)
D_init=[1,1,1,1,1,1,1];
fork=1:
127
EX=xor(D_init(4),D_init(7));
D_init=circshift(D_init,[1,1]);
D_init
(1)=EX;
data(k)=EX;
len=length(data_in);
n=mod(len,127);
ifn==0
data=repmat(data,1,floor(len/127));
data_out=xor(data_in,data);
else
form=1:
n
d(m)=data(m);
data=repmat(data,1,floor(len/127));
r=[data,d];
data_out=xor(data_in,r);
解扰
functiondata_in=descramble(data_out)
len=length(data_out);
data_in=xor(data_out,data);
data_in=xor(data_out,r);
卷积
functioncode=convolutional(msg)
t=poly2trellis(7,[133171]);
%概念trellis(产生码字的卷积编码器)
code=convenc(msg,t);
%卷积编码
解卷积
functionmsg=deconvolution(code)
msg=vitdec(code,t,1,'
trunc'
'
hard'
);
交织
functionRE=interweave(record_in)
NB=1;
NC=48;
s=max(NB/2,1);
fork=0:
NC-1
zz(k+1)=(NC/16)*mod(k,16)+floor(k/16);
T_zz(k+1)=s*floor(zz(k+1)/s)+mod(zz(k+1)+NC-floor(16*zz(k+1)/NC),s);
forn=1:
48
RE(T_zz(n)+1)=record_in(n);
End
解交织
functionrecord_in=deinterleaver(RE)
zz(k+1)=s*floor(k/s)+mod(k+floor(16*k/NC),s);
t_zz(k+1)=16*zz(k+1)-(NC-1)*floor(16*zz(k+1)/NC);
record_in(t_zz(n)+1)=RE(n);
BPSK调制
functionmod_out=BPSK_t(mod_in)
fori=1:
length(mod_in)
ifmod_in(i)==0
mod_out(i)=-1;
mod_out(i)=1;
BPSK解调
functionmod_in=BPSK_jt(mod_out)
length(mod_out)
ifmod_out(i)<
mod_in(i)=0;
mod_in(i)=1;
——————————————————————————装订线—————————————————————————————————
指导教师评语:
设计成绩:
指导(辅导)教师: