1、通信系统仿真作业设计五设计七设计五 2FSK调制解调系统一、设计目的1掌握2FSK信号的调制解调原理及MATLAB编程实现方法。2利用Simulink设计2FSK信号的调制解调系统。3画出2FSK信号的时域波形和频谱图。二、设计原理12FSK信号的调制解调原理数字移频键控是用载波的频率来传送数字消息,或者说用所传送的数字消息控制载波的频率。2FSK信号便是符号“1”对应于载频,而符号“0”对应于载频(与不同的另一载频)的已调波形,而且与之间的改变是瞬间完成的。从原理上讲,数字调频可用模拟调频法来实现,也可用键控法来实现,如图5.1所示。 图5.1 2FSK信号的调制根据以上对2FSK信号的调制
2、原理的分析,已调信号的数字表达式可以表示为 (5.1)其中,是单个矩形脉冲,脉宽为,且 2FSK信号的常用解调方法采用如图5.2所示的非相干检测法和相干检测法。这里的取样判决器是判定哪一个输入样值大,此时可以不专门设置门限电平。 (a) 非相干方式 (b) 相干方式图5.2 2FSK信号的解调2FSK调制属于非线性调制,其频谱特性的研究常用把2FSK信号看成是两个2ASK信号相叠加的方法。2FSK信号的功率谱密度为: (5.2)传输2FSK信号所需频带约为 (5.3)【例5-1】用MATLAB产生独立等概的二进制信源,画出2FSK信号的波形及其功率谱。解 首先产生随机的二进制数字基带信号,然后
3、根据2FSK信号的表达式产生二进制数字调制信号,最后通过FFT变换求解调制信号的功率谱。源程序如下:A=1; % 调制信号幅度fc=2; % 载波频率N_sample=8; % 每码元的采样点数N=500; % 码元数目Ts=1; % 采样间隔dt=Ts/fc/N_sample; % 波形采样间隔t=0:dt:N*Ts-dt; % 定义时间序列L=length(t); % 计算时间序列长度% 产生二进制信源d=sign(randn(1,N);dd=sigexpand(d+1)/2,fc*N_sample);gt=ones(1,fc*N_sample);d_NRZ=conv(dd,gt); f,
4、d_NRZf=T2F(t,d_NRZ(1:L); % 数字基带信号的傅里叶变换sd_2fsk=2*d_NRZ-1; % 双极性基带信号s_2fsk=A*cos(2*pi*fc*t+2*pi*sd_2fsk(1:L).*t); % 产生2FSK信号f,s_2fskf=T2F(t,s_2fsk); % 2FSK信号的傅里叶变换figure(1)subplot(2,2,1); plot(t,d_NRZ(1:L);axis(0,10,0,1.2); xlabel(a) 输入信号);subplot(2,2,2); plot(f,10*log10(abs(d_NRZf).2/Ts);axis(-2,2,-
5、40,40); xlabel(b) 输入信号功率谱密度);subplot(2,2,3); plot(t,s_2fsk);axis(0,10,-1.2,1.2); xlabel(c) 2FSK信号);subplot(2,2,4); plot(f,10*log10(abs(s_2fskf).2/Ts);axis(-fc-4,fc+4,-40,40); xlabel(d) 2FSK信号功率谱密度);%-function out=sigexpand(d,M)% 将输入的序列扩展成间隔为N-1个0的序列N=length(d);out=zeros(M,N);out(1,:)=d;out=reshape(o
6、ut,1,M*N);%-function f,sf=T2F(t,st)% 利用FFT对信号进行傅里叶变换% t,st分别为输入时间和信号% f,sf分别为输出频率和信号频谱dt=t(2)-t(1);T=t(end);df=1/T;N=length(st);f=-N/2*df:df:N/2*df-df;sf=fft(st);sf=T/N*fftshift(sf);程序运行结果如图5.3所示。图5.3 2FSK信号的波形及其频谱2MATLAB函数在MATLAB中,fskmod函数和fskdemod函数分别实现FSK信号的调制和FSK信号的非相干解调,awgn函数实现在信号中加入高斯白噪声,syme
7、rr函数实现错误符号数的统计和误符号率的计算。(1) fskmod函数格式:y=fskmod(x,M,freq_sep,nsamp) y=fskmod(x,M,freq_sep,nsamp,Fs)其中,x是消息信号;M是消息的符号数,必须是2的整数次幂,消息信号是0M-1之间的整数;freq_sep是两载波频率之间的频率间隔,单位为Hz;nsamp是输出信号y中每符号的采样数,必须是大于1的正整数;Fs是采样频率,freq_sep和M必须满足(M-1)*freq_sep=Fs。(2) fskdemod函数格式:z=fskdemod(y,M,freq_sep,nsamp) z=fskdemod(
8、y,M,freq_sep,nsamp,Fs)其中,y是已调信号;其余参数与fskmod函数中的一样。(3) awgn函数格式:y=awgn(x,snr) y=awgn(x,snr,sigpower)y=awgn(,powertype)其中,x是信号;snr是信噪比,单位为dB;sigpower是信号功率;powertype指定信噪比snr的单位。 (4) symerr函数格式:number,ratio=synerr(x,y)其中,x、y是待比较信号,二元序列;number是x、y对应元素比较后不相同的符号个数;ratio是误符号率。3Simulink模块在Simulink模块库中,用于实现FS
9、K信号调制解调的模块分别是“M-FSK Modulator Baseband”和“M-FSK Demodulator Baseband”,图形及参数设置如图5.4所示。图5.4 FSK信号调制解调模块及参数设置三、设计内容利用Simulink中的“M-FSK Modulator Baseband”模块和“M-FSK Demodulator Baseband”模块建立2FSK调制解调系统模型,并观察调制、解调前后的波形,计算差错率。解: 仿真模块为:仿真结果:上图中第一张图是调制前原始基带信号的波形,第二张图是调制后通带信号的波形,第三张是解调信号的波形图。设计六 2PSK和2DPSK调制解调系
10、统一、设计目的1掌握2PSK和2DPSK调制解调原理及MATLAB编程实现方法。2利用Simulink设计2PSK和2DPSK信号的调制解调系统。3画出2PSK和2DPSK信号的时域波形和频谱图。二、设计原理12PSK和2DPSK调制解调原理2PSK(二进制绝对移相键控)信号是利用载波相位直接表示数字信号,2DPSK(相对移相键控)信号是利用前后相邻载波的相位差来表示数字信号,2DPSK信号可以看作是将绝对码变成相对码后再进行绝对移相而得到的。2PSK和2DPSK信号的产生方法如图6.1所示。(a) 模拟调相法产生2DPSK信号(b) 相位选择法产生2PSK信号图6.1 2PSK和2DPSK调
11、制2PSK和2DPSK信号的解调方法如图6.2所示。 图6.2 2PSK和2DPSK信号的解调当0、1等概出现时,2PSK信号和2DPSK信号的功率谱密度为 (6.1)2PSK信号的带宽为 (6.2)【例6-1】用MATLAB产生独立等概的二进制信源,画出2PSK信号的波形及其功率谱。解 首先产生随机的二进制数字基带信号,然后根据2PSK信号的表达式产生二进制数字调制信号,最后通过FFT变换求解各种调制信号的功率谱。源程序如下,用到的子函数sigexpand.m和T2F.m见例5-1。A=1; fc=2; N_sample=8; N=500;Ts=1; dt=Ts/fc/N_sample; t
12、=0:dt:N*Ts-dt; L=length(t); % 产生二进制信源d=sign(randn(1,N);dd=sigexpand(d+1)/2,fc*N_sample);gt=ones(1,fc*N_sample);d_NRZ=conv(dd,gt); f,d_NRZf=T2F(t,d_NRZ(1:L); % 数字基带信号的傅里叶变换ht=A*cos(2*pi*fc*t); % 调制信号d_2psk=2*d_NRZ-1; % 双极性基带信号s_2psk=d_2psk(1:L).*ht; % 产生2PSK信号f,s_2pskf=T2F(t,s_2psk); % 2PSK信号的傅里叶变换fi
13、gure(1)subplot(2,2,1); plot(t,d_NRZ(1:L);axis(0,10,0,1.2); xlabel(a) 输入信号);subplot(2,2,2); plot(f,10*log10(abs(d_NRZf).2/Ts);axis(-2,2,-40,40); xlabel(b) 输入信号功率谱密度);subplot(2,2,3); plot(t,s_2psk);axis(0,10,-1.2,1.2); xlabel(c) 2PSK信号);subplot(2,2,4); plot(f,10*log10(abs(s_2pskf).2/Ts);axis(-fc-4,fc+
14、4,-40,40); xlabel(d) 2PSK信号功率谱密度);程序运行结果如图6.3所示。图6.3 2PSK调制波形及其频谱2MATLAB函数在MATLAB中,pskmod函数和pskdemod函数分别实现PSK信号的调制和解调,scatterplot函数用于画数字调制信号的星座图。(1) pskmod函数格式:y=pskmod(x,M) y=pskmod(x,M,ini_phase)其中,x是消息信号;M是消息的符号数,必须是2的整数次幂,消息信号是0M-1之间的整数;ini_phase是初始相位,单位为rad。(2) pskdemod函数格式:z=pskdemod(y,M) z=ps
15、kdemod(y,M,ini_phase)其中,y是已调信号;z是还原信号,其余参数与pskmod函数中的一样。(3) scatterplot函数scatterplot函数是画信号散点图函数,常用于画数字调制信号星座图,其调用格式如下:scatterplot(x)x是信号,如果x是一个两列的实矩阵,该矩阵的第一列作为同相分量(习惯用二维空间的X轴表示),第二列作为正交分量(习惯用二维空间的Y轴表示);如果x是一个复矢量,该复矢量的实部作为同相分量,虚部作为正交分量;信号x在X-Y平面(同相-正交平面)的位置就是星座图。星座图可以在信号空间展示信号所处的位置,为系统的传输特性分析提供直观、具体的
16、显示结果。利用scatterplot函数画已调信号星座图需执行以下几步: 如果调制中使用的符号数是M,那么创建信号0:M-1。该信号表示对调制器所有可能的输入。 使用适当的调制函数完成对信号的调制。 对上步产生的输出信号使用scatterplot函数画图。【例6-2】用scatterplot函数画2PSK和8PSK信号的星座图。解 源程序如下:M1=2; x1=0:M1-1;M2=8; x2=0:M2-1;scatterplot(pskmod(x1,M1)scatterplot(pskmod(x2,M2)程序运行结果如图6.4所示。 图6.4 2PSK和8PSK信号的星座图3Simulink模
17、块在Simulink模块库中,用于实现2PSK信号调制解调的模块分别是“BPSK Modulator Baseband”和“BPSK Demodulator Baseband”,用于实现2DPSK信号调制解调的模块分别是“DBPSK Modulator Baseband”和“DBPSK Demodulator Baseband”,如图6.5所示。图6.5 2PSK和2DPSK信号调制解调模块三、设计内容根据图6.2分别建立2PSK和2DPSK信号的解调系统模型,观察解调前后的信号波形。解:2PSK解调系统模型如下图所示:仿真结果:2DPSK解调系统模型如下图所示:仿真结果:2DPSK差分相干解
18、调输出波形a、b、c、d、e各点输出波形图设计七 数字通信系统的抗噪性能分析一、设计目的1了解蒙特卡罗仿真算法的思想。2利用蒙特卡罗仿真分析数字通信系统的抗噪性能。二、设计原理蒙特卡罗仿真算法又称随机性模拟算法,是通过计算机仿真来解决问题的算法,同时可以通过模拟来检验自己模型的正确性。它的基本思想是,为了求解数学、物理、工程技术以及管理等方面的问题,首先建立一个概率模型或随机过程,使它们的参数,如概率分布或数学期望等是所求问题的解;然后通过对模型或过程的观察或抽样试验来计算所求参数的统计特征,并用算术平均值作为所求解的近似值。对于随机性问题,有时还可以根据实际物理背景的概率法则,用电子计算机直
19、接进行抽样试验,从而对问题解答。在通信系统误码率计算中,由于计算公式复杂,甚至在很多情况下无法得到解析解,因此通过蒙特卡罗方法模拟实际的通信过程,得到仿真的通信系统误码率就成为一种方便的手段。为了用蒙特卡罗方法估计通信系统的误比特率,让个符号通过系统(实际上是系统的计算机仿真模型),并计算发送差错的个数。如果在次的符号发送中有次差错,则比特差错率为 (7.1)下面给出通信系统的蒙特卡罗仿真模型,如图7.1所示。首先作以下假设:图7.1 通信系统的蒙特卡罗仿真模型 在发射机中没有进行脉冲成形; 假设信道是加性高斯白噪声信道AWGN; 信源输出端的数据符号是相互独立和等概率的; 在系统中没有滤波处
20、理,因此不存在码间串扰。有了这些假设,该系统模型的分析和方针都及其简单。由于没有滤波,系统的时延为零,但在图7.1中仍然用虚线表示出时延模块,因为几乎所有的仿真都需要这个重要部分。下面通过举例说明蒙特卡罗仿真估计数字通信系统差错率的过程。【例7-1】对一个使用相关器或匹配滤波器的二进制通信系统,用蒙特卡罗仿真估计,并画出误码率对信噪比SNR的图。该系统模型如图7.2所示。图7.2 例7-1的仿真模型解 误码率计算公式如下: (7.2)比值称为信号噪声比(SNR)。先仿真产生随机变量和,它们构成了检测器的输入。首先产生一个等概率出现且互为统计独立的二进制0和1的序列。为了实现这一点,使用一个产生
21、范围在(0,1)内的均匀随机数的随机数发生器,如果产生的随机数在(0,0.5)范围以内,二进制信源的输出就是0;否则输出是1。如果产生一个0,那么,;如果产生1,。利用两个高斯噪声发生器产生加性噪声分量和,它们的均值是零,方差是。为了方便,可以将信号能量归一化到1而改变。应该注意,这样SNR(定义为)就等于。检测器的输出与二进制发送序列进行比较,差错计数器用来对比特差错数计数。源程序如下:SNRindB1=0:1:12;SNRindB2=0:0.1:12;for i=1:length(SNRindB1) smld_err_prb(i)=smldPe(SNRindB1(i); % 仿真误码率en
22、dfor i=1:length(SNRindB2) SNR=exp(SNRindB2(i)*log(10)/10); theo_err_prb(i)=Qfunct(sqrt(SNR); % 理论误码率end% 以下为绘图命令semilogy(SNRindB1,smld_err_prb,*);holdsemilogy(SNRindB2,theo_err_prb);xlabel( 信噪比/dB);ylabel( 误码率);legend(仿真值,理论值);%-function p=smldPe(snr_in_dB)% 计算以dB为单位的给定信噪比的误码率E=1;SNR=exp(snr_in_dB*l
23、og(10)/10); % 计算信噪比的数值sgma=E/sqrt(2*SNR); % 噪声的方差N=10000; % 符号数% 产生二进制数据源for i=1:N temp=rand; % 产生一个区间在(0,1)的均匀随机变量 if (tempr1) decis=0; % 判决为“0” else decis=1; % 判决为“1” end if (decis=dsource(i) numoferr=numoferr+1; % 误比特数加1 endendp=numoferr/N; % 误码率%-function grsv=gngauss(m,sgma)% 函数生成两个统计独立的高斯分布随机数
24、,以m为均值,sgma为方差if(nargin=0) m=0; sgma=1;else if nargin=1 sgma=m;m=0; endendu=rand; % 产生一个(0,1)间均匀分布的随机数uz=sgma*(sqrt(2*log(1/(1-u); % 利用上面的u产生一个瑞利分布的随机数u=rand; % 重新产生(0,1)间均匀分布的随机数ugrsv(1)=m+z*cos(2*pi*u);grsv(2)=m+z*sin(2*pi*u);%-function y=Qfunct(x)% Q函数的计算y=(1/2)*erfc(x/sqrt(2);在几个不同的SNR值下,传输个比特时的
25、仿真结果如图7.3所示。可以看出,仿真结果与式(7.2)给出的理论值之间的一致性。也应该注意到,个数据比特的仿真可以可靠地对差错概率估计在以下,也就是说,用的数据比特,在对可靠的估计下应该至少有10个差错。图7.3 例7-1的运行结果三、设计内容观察仿真图7.3,说明仿真结果和理论计算结果在低信噪比下为什么情况完全一致,而在高信噪比下一致性稍差?思考应该如何改变仿真过程以使在高信噪比下也能得到更好的一致性?答:蒙特卡罗法应用于精度分析的优点是算法简单、直接方便,但缺点是运算量大。在仿真实验中得出的数据样本往往既有确定的规律性,又含有随机扰动。这些随机扰动可能是由多种因素引起的,如测量误差、噪声以及系统中的其他因素等。因此在底信噪比的仿真环境下,实验等到的样本具有确定的规律性,随机扰动小。仿真结果和理论结果完全一致。但是在高信噪比的环境下,随机扰动加大,因此与理论结果有偏差。可以通过大量的重复实验来得到多个样本,再进行平均以减少随机扰动。使仿真结果与理论结果在高信噪比下也能得到更好的一致性。