基于IEEE802.11a链路仿真专业课程设计.doc

上传人:聆听****声音 文档编号:4150 上传时间:2023-04-28 格式:DOC 页数:14 大小:419.04KB
下载 相关 举报
基于IEEE802.11a链路仿真专业课程设计.doc_第1页
第1页 / 共14页
基于IEEE802.11a链路仿真专业课程设计.doc_第2页
第2页 / 共14页
基于IEEE802.11a链路仿真专业课程设计.doc_第3页
第3页 / 共14页
基于IEEE802.11a链路仿真专业课程设计.doc_第4页
第4页 / 共14页
基于IEEE802.11a链路仿真专业课程设计.doc_第5页
第5页 / 共14页
基于IEEE802.11a链路仿真专业课程设计.doc_第6页
第6页 / 共14页
基于IEEE802.11a链路仿真专业课程设计.doc_第7页
第7页 / 共14页
基于IEEE802.11a链路仿真专业课程设计.doc_第8页
第8页 / 共14页
基于IEEE802.11a链路仿真专业课程设计.doc_第9页
第9页 / 共14页
基于IEEE802.11a链路仿真专业课程设计.doc_第10页
第10页 / 共14页
基于IEEE802.11a链路仿真专业课程设计.doc_第11页
第11页 / 共14页
基于IEEE802.11a链路仿真专业课程设计.doc_第12页
第12页 / 共14页
基于IEEE802.11a链路仿真专业课程设计.doc_第13页
第13页 / 共14页
基于IEEE802.11a链路仿真专业课程设计.doc_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于IEEE802.11a链路仿真专业课程设计.doc

《基于IEEE802.11a链路仿真专业课程设计.doc》由会员分享,可在线阅读,更多相关《基于IEEE802.11a链路仿真专业课程设计.doc(14页珍藏版)》请在冰点文库上搜索。

基于IEEE802.11a链路仿真专业课程设计.doc

设计总成绩:

——————————————————————————装订线—————————————————————————————————

报告份数:

1

西安邮电大学

通信与信息工程学院

专业课程设计B报告

专业班级:

学生姓名:

学号(班内序号):

2014年04月11日

题目:

基于IEEE802.11a链路仿真

一、设计目的:

1、熟练掌握通信原理的基本知识;

2、熟练运用数字信号处理课程的基本知识;

3、熟练掌握无线编码与调制过程;

4、了解OFDM技术原理;

5、熟练运用matlab工具;

二、设计原理:

802.11a物理层标准及OFDM技术

1.PPDU帧结构

图1为PPDU的帧格式,包括OFDMPLCP前导码、OFDMPLCP头、PSDU、尾比特和填充比特。

PLCP报头包括:

信号段的速率位(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通过多个正交的子载波将串行数据并行传输,可以增大码元的宽度,减少单个码元占用的频带,抵抗多径引起的频率选择性衰落,可以有效克服码间串扰,降低系统对均衡技术的要求,非常适合移动场合中的高速传输。

输入数据

信道

编码

交织

串/并变换

信号映射

插入导频

载波解调

输出数据

信道解码

解交织

串/并变换

载波调制

信道

估计

串/并变换

串/并变换

定时和

频率同步

插保护间隔

信道逆映射

FFT

去保护间隔

IFFT

信道

图3OFDM系统原理图

三、设计内容:

802.11a链路设计总流程:

1、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的矩形时间加窗。

2、扰码及解扰码

帧同步加扰器使用以下的生成多项式:

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列的二进制数,利用卷积编码器进行卷积编码。

4、交织及解交织

交织器中进行两次置换:

第一次置换将相邻的编码比特映射到不相邻的子载波上,第二次置换确保相邻编码比特被交替映射到星座的高有效位和低有效位比特,因而避免了可靠性比特的长期存在。

实现逆过程的交织器也由两步置换完成。

当交织的程度越深,突发性错误越强,信道译码器的性能将由此得到提升。

5、星座映射及逆映射

BPSK利用数字信号来控制载波的相位,具有较好的抗噪性能和较高的频谱利用率。

BPSK解调时,必须有与此同频同相的同步载波。

调制方式

输入比特

I路输出

Q路输出

BPSK

输入比特b0

0

-1

0

1

1

0

四、设计流程:

开始

结束

去掉子载波序列7连0中的1个

将52个子载波中的12个子载波能量归一化得到调制因子S

将调制因子S进行傅里叶逆变换得到短训练序列short

将short重复10次再加窗得到short——str

preamble=【short_str,long_str】

取long中64个点的33—64个,再将64个点重复2次,之后加窗得到long——str

将调制因子L进行傅里叶变换得到长训练序列long

去掉子载波序列中唯一1个0得到调制因子L

前导生成流程

扰码生成流程

开始

初始化加扰器,设置为全1状态

将移位寄存器4和7中的数据进行异或,结果送给移位寄存器1

左移数据,即

=,=,…

输出移位寄存器1中的数据

将移位寄存器1的数据重复到和输入的随机序列长度再和输入的随机序列异或

结束

卷积编码生成流程

开始

g0=[1011011]

g1=[1111001]

将扰码输出的结果和g0卷积后在对2取余得到X1;

将扰码输出的结果和g1卷积后在对2取余得到X2;

将X1,X2按照X11,X21,X12,X22…的方式读出存放在行矩阵X中

Rate=2/3

Rate=3/4

NN

将X中的数据后补0后重排成一个4列的矩阵并去掉第4列

将X中的数据后补0后重排成一个6列的矩阵并去掉第4,5列

YY

将X按行输出

结束

交织生成流程

将卷积结果中的数据后面补0,

重拍成一个48行的矩阵

用k表示其行数,k=1:

48

将k代入公式进行两次置换

将矩阵中的数据按照置换后对应的位置重新排列后按行输出

开始

结束

用k表示交织后序列行数,k=1:

48

将k代入公式进行两次置换

将矩阵中的数据按照置换后对应的位置重新排列后按行输出

开始

结束

星座映射生成流程

开始

输入交织后的数据mod__in

i=1

mod__in

mod_out(i)=-1

mod_out(i)=0

i=length(mod__in)

输出BPSK调试后的数据mod_out

结束

Y

N

五、设计总结:

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);

RE=interweave(code);

mod_out=BPSK_t(RE);

mod_ofdm_syms=Add_Pilot(mod_out);

time_syms=IFFT64(mod_ofdm_syms);

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解调

record_in=deinterleaver(mod_in);%解交织

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);

g=1;

forw=33:

64

y(g)=time_syms(w);

g=g+1;

end

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;

end

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);

end

data=repmat(data,1,floor(len/127));

r=[data,d];

data_out=xor(data_in,r);

end

解扰

functiondata_in=descramble(data_out)

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;

end

len=length(data_out);

n=mod(len,127);

ifn==0

data=repmat(data,1,floor(len/127));

data_in=xor(data_out,data);

else

form=1:

n

d(m)=data(m);

end

data=repmat(data,1,floor(len/127));

r=[data,d];

data_in=xor(data_out,r);

end

卷积

functioncode=convolutional(msg)

t=poly2trellis(7,[133171]);%定义trellis(产生码字的卷积编码器)

code=convenc(msg,t);%卷积编码

解卷积

functionmsg=deconvolution(code)

t=poly2trellis(7,[133171]);%定义trellis(产生码字的卷积编码器)

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);

end

forn=1:

48

RE(T_zz(n)+1)=record_in(n);

End

解交织

functionrecord_in=deinterleaver(RE)

NB=1;NC=48;s=max(NB/2,1);

fork=0:

NC-1

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);

end

forn=1:

48

record_in(t_zz(n)+1)=RE(n);

end

BPSK调制

functionmod_out=BPSK_t(mod_in)

fori=1:

length(mod_in)

ifmod_in(i)==0

mod_out(i)=-1;

else

mod_out(i)=1;

end

end

BPSK解调

functionmod_in=BPSK_jt(mod_out)

fori=1:

length(mod_out)

ifmod_out(i)<0

mod_in(i)=0;

else

mod_in(i)=1;

end

end

——————————————————————————装订线—————————————————————————————————

指导教师评语:

设计成绩:

指导(辅导)教师:

-13-

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 临时分类 > 批量上传

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2