Word版可编辑-基于IEEE80246;a链路仿真专业课程设计精品精心整理.doc_第1页
Word版可编辑-基于IEEE80246;a链路仿真专业课程设计精品精心整理.doc_第2页
Word版可编辑-基于IEEE80246;a链路仿真专业课程设计精品精心整理.doc_第3页
Word版可编辑-基于IEEE80246;a链路仿真专业课程设计精品精心整理.doc_第4页
Word版可编辑-基于IEEE80246;a链路仿真专业课程设计精品精心整理.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

设计总成绩: 装 订 线报告份数: 1 通信与信息工程学院 专业课程设计B报告专业班级: 学生姓名: 学号(班内序号): 2014 年 04 月 11 日题目:基于IEEE802.11a链路仿真一、 设计目的:1、 熟练掌握通信原理的基本知识;2、 熟练运用数字信号处理课程的基本知识;3、 熟练掌握无线编码与调制过程;4、 了解OFDM技术原理;5、 熟练运用matlab工具;二、 设计原理:802.11a物理层标准及OFDM技术1.PPDU帧结构图1为PPDU的帧格式,包括OFDM PLCP前导码、OFDM PLCP头、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的内容中推测出分组的持续时间。图1 PPDU帧结构2.OFDM的符号结构如图所示,OFDM的前导训练序列包括10个短训练序列、2个长训练序列。前导训练序列用来做系统的同步、信道估计、频偏估计、自适应控制(AGC)等。前导训练序列后面是Signal段,再后面是Data区。图2 OFDM的符号结构其中t1-t10表示短训练符号,T1和T2表示长训练符号,总的训练时间为16us。图中的虚线表示边界代表傅里叶逆变换的周期性引起的循环。3.OFDM技术简介OFDM(Orthogonal Frequency Division Multiplexing,正交频分复用)是一种特殊的多载波调制技术,它利用载波间的正交性进一步提高频谱利用率,而且可以抗窄带干扰和抗多径衰落。OFDM通过多个正交的子载波将串行数据并行传输,可以增大码元的宽度,减少单个码元占用的频带,抵抗多径引起的频率选择性衰落,可以有效克服码间串扰,降低系统对均衡技术的要求,非常适合移动场合中的高速传输。输入数据信道编码交织串/并变换信号映射插入导频载波解调输出数据信道解码解交织串/并变换载波调制信道估计串/并变换串/并变换定时和频率同步插保护间隔信道逆映射FFT去保护间隔IFFT信道图3 OFDM系统原理图三、 设计内容: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态。在加扰前,SERVI CE字段的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次再加窗得到shortstrpreamble=【short_str,long_str】取long中64个点的3364个,再将64个点重复2次,之后加窗得到longstr将调制因子L进行傅里叶变换得到长训练序列long去掉子载波序列中唯一1个0得到调制因子L前导生成流程扰码生成流程开始初始化加扰器,设置为全1状态将移位寄存器4和7中的数据进行异或,结果送给移位寄存器1左移数据,即X7=X6,X6=X5,输出移位寄存器1中的数据将移位寄存器1的数据重复到和输入的随机序列长度再和输入的随机序列异或结束卷积编码生成流程开始g0 = 1 0 1 1 0 1 1g1 = 1 1 1 1 0 0 1将扰码输出的结果和g0卷积后在对2取余得到X1;将扰码输出的结果和g1卷积后在对2取余得到X2;将X1,X2按照X11,X21,X12,X22的方式读出存放在行矩阵X中Rate=2/3Rate=3/4 N N将X中的数据后补0后重排成一个4列的矩阵并去掉第4列将X中的数据后补0后重排成一个6列的矩阵并去掉第4,5列Y Y将X按行输出结束交织生成流程将卷积结果中的数据后面补0,重拍成一个48行的矩阵用k表示其行数,k=1:48将k代入公式进行两次置换 将矩阵中的数据按照置换后对应的位置重新排列后按行输出开始结束用k表示交织后序列行数,k=1:48将k代入公式进行两次置换将矩阵中的数据按照置换后对应的位置重新排列后按行输出开始结束星座映射生成流程 开始输入交织后的数据 mod_ini=1mod_inmod_out(i)=-1mod_out(i)=0i=length(mod_in)输出BPSK调试后的数据mod_out结束YN五、 设计总结: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=preamble time_signal time_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);%SIGNALmod_in=BPSK_jt(signal);record_in=deinterleaver(mod_in);code=deconvolution(record_in),%DATAmod_in=BPSK_jt(data);%BPSK解调record_in=deinterleaver(mod_in);%解交织code=deconvolution(record_in);%解卷积data_in=descramble(code),%解扰前导function preamble=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;for w=1:16x(g)=time_syms(w);g=g+1;endshort=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;for w=33:64y(g)=time_syms(w);g=g+1;endlong=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;扰码function data_out=scramble(data_in)D_init=1,1,1,1,1,1,1;for k=1:127EX=xor(D_init(4),D_init(7);D_init=circshift(D_init,1,1);D_init(1)=EX;data(k)=EX;endlen=length(data_in);n=mod(len,127);if n=0 data=repmat(data,1,floor(len/127); data_out=xor(data_in,data);elsefor m=1:nd(m)=data(m);enddata=repmat(data,1,floor(len/127);r=data,d;data_out=xor(data_in,r);end解扰function data_in=descramble(data_out)D_init=1,1,1,1,1,1,1;for k=1:127EX=xor(D_init(4),D_init(7);D_init=circshift(D_init,1,1);D_init(1)=EX;data(k)=EX;endlen=length(data_out);n=mod(len,127);if n=0data=repmat(data,1,floor(len/127);data_in=xor(data_out,data);elsefor m=1:nd(m)=data(m);enddata=repmat(data,1,floor(len/127);r=data,d;data_in=xor(data_out,r);end卷积function code=convolutional(msg)t=poly2trellis(7,133 171); %定义trellis(产生码字的卷积编码器)code = convenc(msg,t); %卷积编码解卷积function msg=deconvolution(code)t=poly2trellis(7,133 171); %定义trellis(产生码字的卷积编码器)msg = vitdec(code,t,1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论