题目:基于IEEE802.11a链路仿真一、设计目的:1.熟练掌握通信原理的基本知识;2.熟练运用数字信号处理课程的基本知识;3.熟练掌握无限编码与调制过程;4.了解OFDM技术原理;5.熟练运用MATLAB工具。二、设计原理:802.11a物理层标准及OFDM技术1.PPDU帧结构IEEE802.11关于无线局域网的规定中,其物理层汇聚协议(PLCP)采用的是OFDM调制的技术标准。如图1,PLCP协议数据单元(PPDU)包括OFDMPLCP包头(Header)、PSDU、尾(Tail)比特以及填充(Pad)比特。信号段采用的是BPSK调制,1/2的编码速率。信号段的速率位(RATE)以及长度位(LENGTH)决定着数据的比特率,进而决定其调制方式、编码速率等一系列参数值。图1PPDU帧结构表1Rate决定的参数-1-2.OFDM基本原理一个完整的OFDM系统原理如图3所示,OFDM的基本思想是将串行数据并行地调制在多个正交的子载波上,这样可以降低每个子载波的码元速率,增大码元的符号周期,提高系统的抗衰落和抗干扰能力,同时由于每个子载波的正交性,大大提高了频谱的利用率,所以非常适合移动场合中的高速传输。IFFT信道编码交织信号映射插入导频串/并变换输入数据并/串变换插保护间隔载波调制信道载波解调定时和频率同步去保护间隔串/并变换并/串变换FFT信道估计信号逆映射解交织信道解码输出数据图2OFDM系统原理图802.11a前导生成原理-2-802.11a中OFDM的前导训练序列包括10个短训练序列和2个长训练序列。10个短训练序列用来进行收端的AGC、定时捕获以及完成频率的粗同步,2个长训练序列的作用是在接收端进行信道估计以及进行系统的细同步。训练序列结构如图3所示。图3OFDM训练符号结构每个OFDM符号有64个子载波,其中用到的子载波个数为52,包括4个Pilot子载波,48个数据子载波,其余未用到的补0。每个OFDM符号之间需加保护间隔,其保护间隔持续时间为0.8微秒,实际实现时使用0.8微秒的循环前缀来代替保护间隔。OFDM短训练序列由调制过的12个子载波组成,调制因子S–26,26=(13/6)^1/2×{0,0,1+j,0,0,0,–1–j,0,0,0,1+j,0,0,0,0,0,0,0,–1–j,0,0,0,1+j,0,0,0,0,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,0,1+j,0,0}OFDM长训练序列由调制过的53个子载波组成,调制因子L–26,26={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,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}扰码及解扰码扰码的作用就是对输入的信号进行随机化处理,以减少数据的连0或连1数目,确保接收端的位同步提取,并同时扩展基带信号频率,起到加密效果。扰码产生是通过循环移位寄存器来实现的,而扰码生成多项式决定循环-3-移位寄存器的结构。802.11a协议规定需对DATA信息部分进行扰码。DATA域包括Service、PSDU、尾比特以及填充比特,在卷积编码之前首先需经一长度为127bit的帧同步扰码器对DATA域进行扰码。帧同步加扰器使用以下的生成多项式:1S47xxx扰码器的结构如图4所示。当初始状态为全1时,加扰器循环产生的127比特序列为:0000111011110010110010010000001000100110001011101011011000001100110101001110011110110100001010101111101001010001101110001111111图4扰码器结构图卷积编码和解卷积由SERVICE、PSDU、尾比特以及填充比特组成的DATA字段按照要求的数据速率,以R=1/2、2/3或3/4的编码率进行卷积编码。卷积编码器使用工业标准的生成多项式,g0=133(8),g1=171(8),R=1/2。解码时使用维特比(Viterbi)算法。-4-图5802.11a卷积编码器交织及解交织所有编码后的数据比特以单个OFDM符号中的比特数cbpsN作为块的大小,使用块交织器进行交织。交织器中进行两次置换:第一次置换将相邻的编码比特映射到不相邻的子载波上,第二次置换确保相邻编码比特被交替映射到星座的高有效位和低有效位比特,因而避免了可靠性比特的长期存在。实现逆过程的交织器也由两步置换完成。另第一次置换前的每一个比特位位置用K表示,第一次置换后的每一个比特位的位置用i表示,第二次置换后的每一个比特位的位置用j表示。交织过程:1BPSCN48CBPSN第一次置换:)16/()16/mod()16/(kfloorkNiCBPS11,0CBPSNk第二次置换:sNifloorNisifloorsjCBPSCBPSmod))/16(()/(11,0CBPSNi解交织过程:第一次置换:sNjfloorjsjfloorsiCBPSmod))/16(()/(11,0CBPSNj第二次置换:)/16()1(16CBPSCBPSNifloorNii11,0CBPSNi-5-星座映射及逆映射表2调制方式与二进制数据流的对应关系BPSKQPSK16QAM64QAM1位一组2位一组4位一组6位一组表3调制方式与归一化因子的对应关系ModulationMODKBPSK1QPSK2116—QAM10164—QAM4211.16QAM调制原理16QAM是用两路独立的正交4ASK信号叠加而成,4ASK是用多电平信号去键控载波而得到的信号。正交幅度调制是利用多进制振幅键控(MASK)和正交载波调制相结合产生的。16进制的正交振幅调制是一种振幅相位联合键控信号。16QAM正交调制的原理如图6所示:图616QAM正交调制的原理图2.16QAM解调原理16QAM信号采取正交相干解调,解调器首先对收到的16QAM信号进行正交-6-相干解调,一路与tccos相乘,一路与tcsin相乘。然后经低通滤波器,LPF滤除乘法器产生的高频分量,获得有用信号,低通滤波器输出经抽样判决可恢复出电平信号。16QAM正交相干解调如图7所示:图716QAM正交相干解调三、设计内容:(1)完成802.11a链路各个模块的MATLAB仿真;(2)根据下图实现简单的802.11a链路。信源扰码卷积编码交织星座映射增加CP前导OFDM调制D/AA/D信道同步删除CPOFDM解调并串变换星座逆映射解交织卷积译码解扰计算误比特数串并变换增加导频-7-四、设计流程:主流程:初始化PPDU帧结构调用“scrambling()”函数对PSDU、尾比特进行加扰调用“convolutional”函数对PPDU帧中Signal段、DATA段进行卷积编码调用“intertexture”函数对PPDU帧中Signal段、DATA段进行交织调用“bpskmod”函数对PPDU帧中Signal段、DATA段进行星座映射调用“Add_pilot”函数为PPDU帧加入导频调用“IFFT64”函数对PPDU帧中Signal段、DATA段进行OFDM调制调用“Add_CP”函数增加循环前缀调用“preambling”函数生成前导将前导训练序列加到PPDU帧中Signal段和DATA段之前调用“FFT64”函数对PPDU帧进行OFDM解调、删除循环前缀调用“bpskdemod”函数对PPDU帧中Signal段、DATA段进行星座逆映射调用“deintertexture”函数对PPDU帧中Signal段、DATA段进行解交织调用“deconvolution”函数对PPDU帧中Signal段、DATA段进行卷积译码调用“scrambling()”函数对PSDU、尾比特进行解扰,提取PSDU统计误比特数-8-子流程(1)前导生成流程去掉调制因子S中7连0中的一个开始去掉调制因子L中唯一一个0将调制因子S进行IFFT得到短训练序列short将调制因子L进行IFFT得到长训练序列long将short中的周期性的16个点重复10次加窗得到short_str取long中64个点的后32个点(GI2),再将64个点重复2次(T1,T2),再加窗得到long_strPreamble==[shortstr,longstr]结束(2)扰码实现流程-9-开始初始化加扰器,设置为全1状态将移位寄存器4和7中的数据进行异或,结果送给移位寄存器1左移数据,即=,=,…输出移位寄存器1中的数据将移位寄存器1输出的数据截取或延拓到输入的随机序列长度后再和输入的随机序列异或结束(3)卷积编码与解卷积流程开始g0=[1011011]g1=[1111001]将扰码输出的结果和g0卷积后在对2取余得到X1;将扰码输出的结果和g1卷积后在对2取余得到X2;将X1,X2按照X11,X21,X12,X22…的方式读出存放在行矩阵X中将X按行输出-10-(4)交织与解交织流程开始将卷积结果X中的数据后补0重排成一个48行的矩阵将矩阵中的数据按照置换后对应的位置重新排列后按行输出用K表示其行数,K=1:48将K代入公式进行两次置换结束开始用K表示交织后序列的行数,K=1:48将矩阵中的数据按照置换后对应的位置重新排列后按行输出将K代入公式进行两次置换结束(5)BPSK星座映射及逆映射开始将X按行输出结束将X进行vitdec译码-11-开始输入交织后的数据mod__ini=1mod__inmod_out(i)=-1mod_out(i)=0i=length(mod__in)输出BPSK调试后的数据mod_out结束YN开始I=1:length(demond)demond(i)=-1bits(i)=1bits(i)=0将bits按行输出结束YN-12-五、设计总结:通过这次课程设计,使我的Matlab编程能力有了进一步的提高。但更重要的是,通过802.11a链路各个模块的Matlab仿真,使我对通信工程中的一些关键技术有了更深层次的理解,比如OFDM技术、卷积编码、交织等等。最后,通过调用各个模块可以完成简单的802.11a链路,让我进一步熟悉了802.11a链路原理。由于对基本原理掌握的不是很透彻,对Matlab也不是很熟悉,在各个模块仿真的过程中遇到很多的困难。但通过不断地请教老师,和与同学的相互交流,这些问题也逐渐地得到了解决。总之,通过这次课程设计,使我学到了很多知识与技能!参考文献:[1]802.11a中文官方标准GB15629.1101-2006.[2]周炯槃、庞沁华等编著《通信原理》(第3版)北京邮电大学出版社2008.-13-附件:(主要程序)(1)主函数function[S_PSDU_Tail,x,inter,mod_out,mod_syms,mod_ofdm_sym,time_sym,timesignal,freq_data_syms,bits,de_inter,signal_data,psdu_tail,psdu,e]=communicationlink()PSDU=[11];Tail=zeros(1,6);Pad_Bits=[];PSDU_Tail=[PSDUTail];S_PSDU_Tail=scrambling(PSDU_Tail);RATE=[1101];Reserved=0;LENGTH=[000000000010];Parity=0;Tail=zeros(1,6);SERVICE=zeros(1,16);PLCP_Header=[RATEReservedLENGTHParityTailSERVICE];SIGNAL=[RATEReservedLENGTHParityTail];DATA=[SERVICES_PSDU_TailPad_Bits]