通信原理实验报告“GMSK调制器”系统实验指导老师韩玉芬学生姓名王宁班级学号2011210624班内序号23联系电话__18810465560______电子邮件2416710008@qq.com报告日期2014年_3_月_30_日信通院实验中心tohyf@bupt.edu.cn一、实验内容1.了解GMSK调制器工作原理,推导GMSK信号相位路径的计算公式,掌握GMSK调制器数字化实现的原理。2.掌握GMSK调制器数字化、实现地址逻辑的工作原理,用可编程逻辑器件实现地址逻辑的设计,并仿真各点波形,分析检验其时序逻辑关系。3.了解GMSK相位路径的编程流程图,并用计算机编出相位路径的余弦及正弦表。4.为了检验所编码表的正确性,可进一步利用计算机软件检验从上述码表得出的GMSK基带波形的眼图与理论计算是否一致,若两者一致,说明所编码表正确,可将它写入EPROM中,并将EPROM片子插在GMSK调制器硬件实验板上。5.在通信实验板上,正确使用测试仪表观看GMSK基带信号眼图。(1)用示波器观看GMSK基带信号眼图;(2)用逻辑分析仪观看地址逻辑电路各点波形及其时序关系;(3)用频谱仪观看GMSK调制器基带波形的功率谱。按上述要求写出实验报告。二、实验原理1、GMSK调制器工作原理及相位路径的计算MSK调制可以看成调制指数h=0.5的2FSK调制器,为了满足移动通信对发送信号功率谱的带外辐射要求,在MSK调制前加入高斯滤波器,因而GMSK具有恒包络,连续相位的特点,其旁瓣衰减比MSK更快,频谱利用率更高。产生GSMK信号的原理图如下GMSK信号为恒包络连续相位调制信号,它的表达式如下所示:tttttttscccsin)(sincos)(cos)](cos[)(相位路径为tnndnTgbht)(2)(其中,g(t)为BT=0.3高斯滤波器矩形脉冲响应,调制指数h=0.5,bn为双极性不归零码序列的第n个码元,bn为+1或-1。高斯低通滤波器的传输函数为)exp()(22fafH式中,a是与高斯滤波器的3dB带宽bB有关的一个常数。由3dB带宽定义有21)(2bBH即1222)2exp(bBa所以5887.02ln21baB由此可见,改变a,bB将随之改变;改变bB,a将随之改变。高斯滤波器的冲激响应)(th为2exp)(taath由式看出,)(th不是时限的,但它随2t按指数规律迅速下降,所以可近似认为它的宽度是有限的。由于它的非时限性,相邻脉冲会产生重叠。矩形脉冲为)]2()2([21)(TtuTtuTtx式中)(tu为单位阶跃函数,其表达式为)0(1)0(0{)(tttu高斯滤波器矩形脉冲响应为)]}2(2[)2(2[{21)(*)()(TtaQTtaQTthtxtg其中dxxtQt)2(exp21)(2当错误!未找到引用源。取不同值时,高斯滤波器的矩形脉冲响应g(t)如下图所示。经计算,BTb=0.3的高斯滤波器的错误!未找到引用源。的积分面积为1/2,21)(dttg且满足以下条件TTdtgTttg5.25.25.0)(5.20)(所以,对于BT=0.3的高斯滤波器,取g(t)的截短长度为5T来计算GMSK信号的相位,就可达到足够精度。由于g(t)在5T时间区间内的积分为1/2,所以BT=0.3的GMSK相位路径计算大为化简。在错误!未找到引用源。时2)2()(22)2(LdTnTgbtkkntTnn3knnbL(取模4)具体计算如下在TktkT)1(错误!未找到引用源。时)()()(tkTt2)2()(22)2(LdTnTgbkTkknkTTnndTnTgbtkkntkTn22)2()(2、数字信号处理方法实现GMSK调制器在算得后,即可算出)(sin)(costt及错误!未找到引用源。错误!未找到引用源。值。在工程上,首先将错误!未找到引用源。离散化,制成表,固化在ROM中。由随机数据{错误!未找到引用源。}形成ROM表的地址,根据地址取出ROM中相应的基带信号离散值,然后利用D/A将其数模变换成模拟基带信号错误!未找到引用源。,再由正交调制器将基带频谱搬移至载频上。本实验的电路原理如图所示。为得到)(t的余弦表和正弦表,必须将基带信号)(sin)(costt及离散化,即采样、量化。根据随机信号功率谱估计仿真方法,对不同采样率、不同量化电平值的GMSK基带信号进行谱估计,最后选用采样速率sf为每比特抽8个样,每个样值量化编码为10比特(Q=10)。在采样速率MHzkHzffbs166664.2833.27088情况下,由于存在着采样造成的副主瓣,影响了功率谱特性,因此必须在D/A后加低通滤波器来抑制此高频分量,选用3dB带宽为330kHz的6阶贝塞尔低通滤波器,数/模变换后的基带信号经低通滤波器后的功率谱满足GSM05.05建议要求。按照上述构思计算)(t并选取bsff8,Q=10所得基带信号仿真眼图与非近似计算的眼图一致。三、系统设计1.软件部分系统软件流程图如下图所示。(1)错误!未找到引用源。函数的产生分析:Matlab是一个强大的计算器,而之前我已经做了充分的理论推导,可以计算出g(t)的表达式,而且可以用matlab内置的函数,用linspace取1000个点作图,可以得到g(t)的图像。具体编程实现如下:T=3.6923*10^-6;B=0.3/T;a=1/B*sqrt(log(2)/2);x=linspace(-2.5*T,2.5*T,1000);Q=@(t)-(7186705221432913*2^(1/2)*pi^(1/2)*(erf((2^(1/2)*t)/2)-1))/36028797018963968;g=@(t)1/(2*T)*(Q(sqrt(2)*pi/a*(t-T/2))-Q(sqrt(2)*pi/a*(t+T/2)));y=g(x);plot(x,y);xlabel('t')ylabel('g(t)')title('高斯滤波器矩形脉冲响应')可以得到图像如下图所示:(2)相位路径与错误!未找到引用源。cosΦ(t)和sinΦ(t)的码表的产生分析:由于我们简化高斯滤波器的矩形脉冲响应,将其限制在了5个周期内,所以{}中的一个每个在5T范围内有值,这样积分的时候就能简化积分区间。每五个组成一个码元决定一个相位路径)(t,根据相位路径产生的公式,借助matlab中的积分quad函数,计算相位路径,因为一共有四个象限,每个象限有32组码元,每码元采样八次,所以最后将得到错误!未找到引用源。的)(sin)(costt及存储在两个8*32*4的矩阵中流程图如下所示:开始输入抽样点数(抽8个比特),量化电平数Q=10,BT=0.3,状态组合数b[32],L[4]GMSK预调制滤波器的矩型脉冲响应g(t)子程序生成b[32]码表状态数n=0,1,...31象限计数器L=0,1,2,3Ф(0)t=T/8i=0,1,2,3,4,5,6,7i=i+1∆Ф(t)计算cosФ(t)和sinФ(t)结束代码:symsxt;b=[-1-1-1-1-1-1-1-1-11-1-1-11-1-1-1-111-1-11-1-1-1-11-11-1-111-1-1-1111-11-1-1-1-11-1-11-11-11-1-11-111-111-1-1-111-11-1111-1-111111-1-1-1-11-1-1-111-1-11-11-1-1111-11-1-11-11-111-111-11-111111-1-1-111-1-1111-11-111-111111-1-1111-111111-111111];c=0;fai0=zeros(4,32);deltfai=zeros(8,32);forn=1:32forL=0:3;form=1:5y=@(t)g(t-(m-3)*T-T/2);c=c+pi*b(n,m)*quad(y,(m-5)*T,0);endfai0(L+1,n)=c+L*pi/2;c=0;endendc=0;forn=1:32fori=1:8form=1:5y=@(t)g(t-(m-3)*T-T/2);c=c+pi*b(n,m)*quad(y,0,(i-1)*T/8);enddeltfai(i,n)=c;c=0;endendfai=zeros(8,32,4);cosfai=zeros(8,32,4);sinfai=zeros(8,32,4);forL=0:3forn=1:32fori=1:8fai(i,n,L+1)=fai0(L+1,n)+deltfai(i,n);cosfai(i,n,L+1)=cos(fai(i,n,L+1));%余弦表sinfai(i,n,L+1)=sin(fai(i,n,L+1));%正弦表endendend(3)眼图的绘制分析:已经的到了)(sin)(costt及表,只要进行查表就可以知道任意一个码元出现时相位路径应该如何改变。利用信号源产生的伪随机序列{错误!未找到引用源。}经预编码后得到{错误!未找到引用源。},经过地址逻辑运算由ROM中顺序取出错误!未找到引用源。)(sin)(costt及的离散值,然后画出一组随机序列(取十个码元)产生的)(sin)(costt或的图像,保持,继续画一幅图,多次画图并保持后就可以得到眼图。得到基带波形的输出,观察仿真眼图。流程图如下:开始设置取样点数(每比特8个抽样点),每样值量化电平数Q=10产生2^32-1m序列伪随机序列起始地址为0000000000先取四位随机码作为初始值TIMES=1000M=0取下一位信息码形成7位地址逻辑(含2位象限数及5位信息随机码)I=0,1,2,3,4,5,6,7取ROM中的值转换为实际值将此值转化为屏幕上一点清屏结束说明:(1)开辟空间存入ROM表以及伪随机序列。(2)根据所用的ROM表确定采样频率错误!未找到引用源。,即一个码元时间内有8个抽样值,每样值的量化电平是10,并设初始相位是0,即起始地址是0000000000。(3)确定读取信号的数目为10*TIMES,即每十个码元时间的波形显示于同一屏幕。共显示TIMES次。(4)由bk-2,bk-1,bk,bk+1,bk+25个码元及象限L形成地址逻辑获得ROM表中的7位地址;(5)再取三位地址码,顺序取出i=0,1,2,3,4,5,6,7个抽样量化值,由10位地址逻辑找到ROM中基带波形的位置,将其转换成实际值,存入一个数据文件用于眼图仿真,共有10*TIMES*n个值(n=8);(5)根据产生眼图的原理,将每次扫描结果叠加而成,删除程序中清屏幕命令,即可看到眼图;产生伪随机序列m序列的代码:function[out]=mgen(g,state,N)%输入g:m序列产生多项式%state:寄存器初始状态%N:输入序列%g=11;%state=3;%N=15;gen=dec2bin(g)-48;M=length(gen);curState=dec2bin(state,M-1)-48;fork=1:Nout(k)=curState(M-1);a=rem(sum(gen(2:end).*curState),2);curState=[acurState(1:M-2)];endend眼图代码g=2^23+2^18+1;state=23;L=1000;mq=mgen(g,state,L);%m序列。01序列mqDianping=zeros(1,1000);%将m序列进行电平转换,-1+1序列forn=2:1000mq(n)=mod(mq(n-1)+mq(n),2);%异或,即取模2endforn=1:1000mqDianping(