通信原理的MATLAB实验 QPSK的调制解调报告
四相移相键控(QPSK)调制及解调实验
通信对抗原理实验报告实验名称:四相移相键控(QPSK)调制及解调实验学生姓名:学生学号:学生班级:所学专业:实验日期:1. 实验目的1. 掌握QPSK 调制解调原理及特性.2。
. 熟悉Matlab 仿真软件的使用。
2. 实验内容1、 编写Matlab 程序仿真QPSK 调制及相干解调。
2、 观察IQ 两路基带信号的特征及与输入NRZ 码的关系。
3、 观察IQ 调制解调过程中各信号变化。
4、 观察功率谱的变化。
5、 分析仿真中观察的数据,撰写实验报告。
3. 实验原理1、QPSK 调制原理QPSK 又叫四相绝对相移调制,它是一种正交相移键控。
QPSK 利用载波的四种不同相位来表征数字信息。
由于每一种载波相位代表两个比特信息,因此,对于输入的二进制数字序列应该先进行分组,将每两个比特编为一组,然后用四种不同的载波相位来表征。
我们把组成双比特码元的前一信息比特用a 代表,后一信息比特用b 代表。
双比特码元中两个信息比特ab 通常是按格雷码排列的,它与载波相位的关系如表1-1所示,矢量关系如图1—1所示。
图1-1(a)表示A 方式时QPSK 信号矢量图,图1—1(b)表示B 方式时QPSK 信号的矢量图。
由于正弦和余弦的互补特性,对于载波相位的四种取值,在A 方式中:45°、135°、225°、315°,则数据k I、k Q 通过处理后输出的成形波形幅度有两种取值±2/2;B 方式中:0°、90°、180°、270°,则数据k I、k Q 通过处理后输出的成形波形幅度有三种取值±1、0。
表(0,1)(1,1)(0,0)参考相位参考相位(a)(b)图1-1 QPSK 信号的矢量图下面以A 方式的QPSK 为例说明QPSK 信号相位的合成方法。
串/并变换器将输入的二进制序列依次分为两个并行序列,然后通过基带成形得到的双极性序列(从D/A 转换器输出,幅度为±2/2)。
QPSK调制和2DPSK的Simulink仿真(通信原理实验报告)
实验报告信息学院(院、系)电子信息工程专业班通信原理教程课QPSK调制和2DPSK的Simulink仿真一、编写QPSK调制程序,任意给定一组二进制数,计算经过这种调制方式的输出信号。
1、实验目的(1)熟悉QPSK调制原理。
(2)学会运用Matlab编写QPSK调制程序。
(3)会画出原信号和QPSK调制信号的波形图。
(4)掌握数字通信的QPSK的调制方式。
2、实验原理QPSK(四相移相键控)是一种常用的多进制调制方式。
QPSK信号的正弦载波有四个可能的离散相位状态,每个载波相位携带2个二进制符号。
QPSK信号有00、01、10、11四种状态。
所以,对输入的二进制序列,首先必须分组,每两位码元一组。
QPSK信号实际上是两路正交双边带信号。
首先产生两种不同相位的载波信号f1和f2,直接用输入双比特去选择载波的相位,得到同相支路和正交支路,再将这两路信号叠加,就可以得到QPSK信号。
最后通过信道发送到接收端。
之间的关系通常都按格雷码的规律变化,如表1所QPSK信号四种状态和相位θk示。
表1 QPSK编码规则表中给出的A和B两种编码方式,其矢量图画在图1中。
(a) 方式(b) 方式 图1 QPSK 信号的矢量图QPSK 调制的电路原理图如图2所示。
3、程序设计思想和流程图根据QPSK 信号原理,输入基带信号按A 方式编码表示不同的相位。
结合以前实验的基础,先输入二进制序列作为基带信号,进行QPSK 调制,然后输出调制后的信号。
实验流程图如图3所示。
4、仿真源程序和代码a=[0,0,1,1,0,1,1,0];subplot(2,1,1);stem(a);title('随机信号'); for i=1:length(a)/2 m=a(2*i-1); n=a(2*i); t=i-1:0.01:i; if (m==0)&&(n==0)s=sin(2*pi*(t+fix(t+0.999))); endif (m==1)&&(n==0)s=sin(2*pi*(t+fix(t+0.999))+pi/2); endif (m==1)&&(n==1)s=sin(2*pi*(t+fix(t+0.999))+3*pi/2); endif (m==0)&&(n==1)s=sin(2*pi*(t+fix(t+0.999))+pi);图3 QPSK 流程图endhold on ;subplot(2,1,2);plot(t,s);title('QDPSK 调制后的信号'); end5、仿真结果6、实验总结通过实验,对MATLAB 的基本功能和使用方法更加熟悉了,对数字基带传输系统有了一定的了解,加深了对QPSK 信号的调制原理的认识,理解了如何对他们进行调制,通过使用MATLAB 仿真,对个调制和解调电路中各元件的特性有了较为全面的理解。
通信原理的MATLAB实验 QPSK的调制解调报告
通信原理实验项目名称:QPSK的调制解调一、实验任务任意输入长度为64比特的二进制信息,采用QPSK系统传输。
码元速率为1Bps,载波频率为10Hz,采样频率为40 Hz,利用Matlab画出:(1)调制后的信号波形;(2)经信道传输后的信号波形(假设加性高斯白噪声,其功率为信号功率1/10);(3)(3)任意解调方法解调后的信号波形。
二、流程图三、完整程序Fd=1; %码元速率Fc=10; %载波频率Fs=40; %采样频率N=Fs/Fd;df=10;x=[ 1 1 0 1 1 0];%任意输入64比特的二进制信息M=2; %进制数SNRpBit=10;%加性高斯白噪声,其功率为信号功率的1/10,即信噪比为10 SNR=SNRpBit/log2(M); %转换为码元速率seed=[12345 54321];numPlot=length(x);figure(1)%画出输入二进制序列subplot(211);stem([0:numPlot-1],x(1:numPlot),'bx');title('输入波形’)%调制y=dmod(x,Fc,Fd,Fs,'fsk',M,df);numModPlot=numPlot*Fs;t=[0:numModPlot-1]./Fs;subplot(212);%画出调制后的信号plot(t,y(1:length(t)),'b-');axis([min(t) max(t) -1.5 1.5]);title('调制后的信号')%在已调信号中加入高斯白噪声randn('state',seed(2));y=awgn(y,SNR-10*log10(0.5)-10*log10(N),'measured',[],'dB');%相干解调figure(2)subplot(211);plot(t,y(1:length(t)),'b-');%画出经过信道的实际信号axis([min(t) max(t) -1.5 1.5]);title('加入高斯白噪声后的已调信号')%带输出波形的相干M元频移键控解调subplot(212);stem([0:numPlot-1],x(1:numPlot),'bx');hold on;stem([0:numPlot-1],z1(1:numPlot),'ro');hold off;axis([0 numPlot -0.5 1.5]);title('相干解调后的信号')四、波形。
MATLAB_QPSK调制与解调-(4820)
实验名称: QPSK仿真系统一、实验目的:1、学会 QPSK 调制与解调系统的构成2、学会 QPSK 调制与解调系统的各模块的构建3、学会误码率与误符号率的统计方法以及Matlab 算法二、实验原理:1、QPSK:四进制绝对相移键控,也称为多进制数字相位调制,利用载波的四种不同相位状态来表征数字信息的调制方式。
2、QPSK 的调制方法有正交调制方式(双路二相调制合成法或直接调相法)、相位选择法、插入脉冲法。
调制与解调系统的构成:AWGN产生器ncs rI Ib?b0,1序列QPSKr QPSKs判决器产生器映射Q反映射QnsAWGN产生器比较器误比特统计误符号统计3、各模块的实现方法:(1)、信源的产生:使用randint(m,n,2)函数产生一个 m 行 n 列的随机二进制数列(2)、QPSK 符号映射:将产生的 0, 1 比特流按照 QPSK 调制方式进行映射,本实验采用π/4 QPSK 的调制方式,图为:10000111(3)、AWGN 信号产生: AWGN 产生器就是产生满足均值为 0,方差为 1 的高斯白噪声。
实验中使用 randn(m,n)函数产生一个 m 行 n 列的高斯噪声序列。
(4)、信号幅度控制:根据 AWGN 信道模型,接收信号可以分别表示为r Q s Q n Qα 就是当噪声功率归一化为r I s I n I1(0均值,方差为 1)时,根据信噪比关系而计算出来的信号平均幅度SNR 10log v s2vs2SNR v2sqrt v n10 ^10 nv s( 5)、QPSK 反映射及判决:对接收到的信号在 4 种可能的四种信号向量 [(1,0), (0,1), (-1,0), (0,-1)] 上投影 (即进行点积 )。
投影最大的值所对应的信号向量就是所发送信号的符号值,然后恢复出比特流(6)、误码率及误符号率统计:误码率:将检测出来的比特流和发送的原始比特流进行比较,统计出出现错误的比特数误符号率:将检测出来的比特流变成两组,构成符号,和发送端符号映射后的符号流进行比较,只要符号中任错一 bit,就算该符号出错。
QPSK调制解调实验报告
QPSK调制解调实验报告一、实验目的1.把握QPSK调制解调原理。
2.明白得QPSK的优缺点。
二、实验内容1.观看QPSK调制进程各信号波形。
2.观看QPSK解调进程各信号波形。
三、预备知识1.QPSK调制解调的大体原理。
2. QPSK调制解调模块的工作原理及电路说明。
四、实验器材1. 移动通信原理实验箱。
2.20M数字双踪示波器。
五、实验原理1.QPSK调制原理QPSK又叫四相绝对相移调制,QPSK利用载波的四种不同相位来表征数字信息。
由于每一种载波相位代表两个比特信息,故每一个四进制码元又被称为双比特吗元。
咱们把组成双比特码元的前一信息比特用a代表,后一信息比特用b代表。
双比特码元中两个信息比特ab一般是依照格雷码排列的,它与载波相位的关系如表3-1所示,矢量关系如图3-1所示。
图(a)表示A方式的QPSK信号矢量图,图(b)表示B方式的QPSK信号矢量图。
用调相发产生QPSK调制原理框图如下图:解调原理由于QPSK能够看做诗两个正交2PSK信号的合成,故它能够采纳与2PSK信号类似的解调方式进行解调,即由两个2PSK信号相干解调器组成,其原理框图如下图:六.实验步骤方式的QPSK调制实验(1)将“调制类型选择”拨码开关拨为00010000、0001,那么调制类型选择为A方式的QPSK 调制。
(2)别离观看并说明NRZ码经串并转换取得的‘DI’、‘DQ’两路的一个周期的数据波形。
CH1:NRZ CH2:DI CH1:NRZ CH2:DQ(3)双踪观看并分析说明‘DI’与‘I路成型’信号波形;‘DQ’与‘Q路成型’信号波形;CH1:DI CH2:I路成形 CH1:DQ CH2:Q路成形(4)双踪观看并分析说明‘I路成形’信号波形与‘I路调制’同相调制信号波形;‘Q路成形’信号与‘Q路调制’正交调制信号波形。
CH1: I路成形 CH2: I路调制CH1: Q路成形 CH2: Q路调制(5)用示波器观看并说明‘I路成形’信号与‘Q路成形信号的X-Y波形。
实验九QPSK调制与解调实验报告完整版
实验九QPSK调制与解调实验报告完整版实验九Q P S K调制与解调实验报告HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】实验九Q P S K/O Q P S K调制与解调实验⼀、实验⽬的1、了解⽤CPLD进⾏电路设计的基本⽅法。
2、掌握QPSK调制与解调的原理。
3、通过本实验掌握星座图的概念、星座图的产⽣原理及⽅法,了解星座图的作⽤及⼯程上的作⽤。
⼆、实验内容1、观察QPSK调制的各种波形。
2、观察QPSK解调的各种波形。
三、实验器材1、信号源模块⼀块2、⑤号模块⼀块3、20M双踪⽰波器⼀台4、连接线若⼲四、实验原理(⼀)QPSK调制解调原理1、QPSK调制QPSK信号的产⽣⽅法可分为调相法和相位选择法。
⽤调相法产⽣QPSK信号的组成⽅框图如图12-1(a)所⽰。
图中,串/并变换器将输⼊的⼆进制序列依次分为两个并⾏的双极性序列。
设两个序列中的⼆进制数字分别为a和b,每⼀对ab称为⼀个双⽐特码元。
双极性的a和b脉冲通过两个平衡调制器分别对同相载波及正交载波进⾏⼆相调制,得到图12-1(b)中虚线⽮量。
将两路输出叠加,即得如图12-1(b)中实线所⽰的四相移相信号,其相位编码逻辑关系如表12-1所⽰。
(a)(b)图12-1 QPSK调制进⾏串/并变换。
2、QPSK解调图12-2 QPSK相⼲解调器由于四相绝对移相信号可以看作是两个正交2PSK信号的合成,故它可以采⽤与2PSK信号类似的解调⽅法进⾏解调,即由两个2PSK信号相⼲解调器构成,其组成⽅框图如图12-2所⽰。
图中的并/串变换器的作⽤与调制器中的串/并变换器相反,它是⽤来将上、下⽀路所得到的并⾏数据恢复成串⾏数据的。
(⼆)OQPSK调制解调原理OQPSK ⼜叫偏移四相相移键控,它是基于QPSK 的改进型,为了克服QPSK 中过零点的相位跃变特性,以及由此带来的幅度起伏不恒定和频带的展宽(通过带限系统后)等⼀系列问题。
QPSK调制解调实验
实验一QPSK 调制实验一、实验目的1、掌握QPSK 的调制解调原理。
2、掌握QPSK 的软件仿真方法。
3、掌握QPSK 的硬件设计方法。
二、预习要求1、掌握QPSK 的编解码原理和方法。
2、熟悉matlab 的应用和仿真方法。
3、熟悉DSP 和FPGA 的开发方法。
三、实验原理1、QPSK 调制的工作原理多相相移键控(MPSK ),特别是四相相移键控(QPSK )是目前移动通信、微波通信和卫星通信中最常用的载波传输方式。
四相相移键控(QPSK )信号的正弦载波有4个可能的离散相位状态,每个载波相位携带2个二进制符号,其信号表达式为:)cos()(i c i t A t S θω+= i =1,2,3,4 0≤t ≤TsTs 为四进制符号间隔,{i θ:i=1,2,3,4}为正弦波载波的相位,有四种可能状态。
如以下矢量图所示:如图为QPSK 的相位图,QPSK 的相位为(-3π/4,-π/4,π/4,3π/4)。
对于QPSK :)sin cos cos (sin )sin()(i c i c i c i t t A t A t S θωθωθω+=+= 0≤t ≤Ts由于21cos ±=i θ 21s i n ±=i θ所以:)cos )(sin )((2)(t t Q t t I A t S c c i ωω+=21cos )(±==i t I θ21s i n )(±==i t Q θQPSK 正交调制器方框图如图所示:I图QPSK 正交调制器方框图在kTs ≤t ≤(k+1) Ts(Ts=2Tb)的区间,QPSK 产生器的输出为:⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧--=-+-=--+=+++=+=----11),43cos(11),4cos(11),43cos(11),4cos()(1111n n c n n c n n c n n c a a t A a a t A a a t A a a t A t s πωπωπωπω2、QPSK 的相干解调的基本工作原理 QPSK 的相干解调方框图如图所示:图QPSK 的相干解调方框图当调制信号为I =1,Q =1时,由调制原理,调制输出信号为t t t S c c i ωωcos sin )(+=,在没有噪声和延时的理想状态时,解调器的输入t t t S t r c c i ωωcos sin )()(+==,则I 检测器的输出为:t t t t t t r c c c c c ωωωωωsin cos sin sin sin )(+=t t t t c c c c ωωωω2sin 212cos 21212sin 21)2cos 1(21+-=+-=则Q 检测器的输出为:t t t t t t r c c c c c ωωωωωcos cos cos sin cos )(+=t t t t c c c c ωωωω2sin 212cos 21212sin 21)2cos 1(21++=++=用截止频率小于2c ω的低通滤波器对I 检测器的输出滤波后得到1/2,即为逻辑1;对Q 检测器的输出滤波后得到1/2,即为逻辑1。
QPSK调制与解调在MATLAB平台上的实现(word文档良心出品)
QPSK调制与解调在MATLAB平台上的实现QPSK即四进制移向键控(Quaternary Phase Shift Keying),它利用载波的四种不同相位来表示数字信息,由于每一种载波相位代表两个比特信息,因此每个四进制码元可以用两个二进制码元的组合来表示。
两个二进制码元中的前一个码元用a表示,后一个码元用b表示。
QPSK信号可以看作两个载波正交2PSK信号的合成,下图表示QPSK正交调制器。
由QPSK信号的调制可知,对它的解调可以采用与2PSK信号类似的解调方法进行解调。
解调原理图如下所示,同相支路和正交支路分别采用相干解调方式解调,得到()Q t,经过抽样判决和并/串交换器,将上下支路得到的并行I t和()数据恢复成串行数据。
% 调相法clear allclose allt=[-1:0.01:7-0.01];tt=length(t);x1=ones(1,800);for i=1:ttif (t(i)>=-1 & t(i)<=1) | (t(i)>=5& t(i)<=7);x1(i)=1;else x1(i)=-1;endendt1=[0:0.01:8-0.01];t2=0:0.01:7-0.01;t3=-1:0.01:7.1-0.01;t4=0:0.01:8.1-0.01;tt1=length(t1);x2=ones(1,800);for i=1:tt1if (t1(i)>=0 & t1(i)<=2) | (t1(i)>=4& t1(i)<=8);x2(i)=1;else x2(i)=-1;endendf=0:0.1:1;xrc=0.5+0.5*cos(pi*f);y1=conv(x1,xrc)/5.5;y2=conv(x2,xrc)/5.5;n0=randn(size(t2));f1=1;i=x1.*cos(2*pi*f1*t);q=x2.*sin(2*pi*f1*t1);I=i(101:800);Q=q(1:700);QPSK=sqrt(1/2).*I+sqrt(1/2).*Q;QPSK_n=(sqrt(1/2).*I+sqrt(1/2).*Q)+n0;n1=randn(size(t2));i_rc=y1.*cos(2*pi*f1*t3);q_rc=y2.*sin(2*pi*f1*t4);I_rc=i_rc(101:800);Q_rc=q_rc(1:700);QPSK_rc=(sqrt(1/2).*I_rc+sqrt(1/2).*Q_rc);QPSK_rc_n1=QPSK_rc+n1;figure(1)subplot(4,1,1);plot(t3,i_rc);axis([-1 8 -1 1]);ylabel('a序列');subplot(4,1,2);plot(t4,q_rc);axis([-1 8 -1 1]);ylabel('b序列');subplot(4,1,3);plot(t2,QPSK_rc);axis([-1 8 -1 1]);ylabel('合成序列'); subplot(4,1,4);plot(t2,QPSK_rc_n1);axis([-1 8 -1 1]);ylabel('加入噪声');效果图:% 设定T=1,加入高斯噪声clear allclose all% 调制bit_in = randint(1e3, 1, [0 1]);bit_I = bit_in(1:2:1e3);bit_Q = bit_in(2:2:1e3);data_I = -2*bit_I+1;data_Q = -2*bit_Q+1;data_I1=repmat(data_I',20,1);data_Q1=repmat(data_Q',20,1);for i=1:1e4data_I2(i)=data_I1(i);data_Q2(i)=data_Q1(i);end;f=0:0.1:1;xrc=0.5+0.5*cos(pi*f);data_I2_rc=conv(data_I2,xrc)/5.5;data_Q2_rc=conv(data_Q2,xrc)/5.5;f1=1;t1=0:0.1:1e3+0.9;n0=rand(size(t1));I_rc=data_I2_rc.*cos(2*pi*f1*t1);Q_rc=data_Q2_rc.*sin(2*pi*f1*t1); QPSK_rc=(sqrt(1/2).*I_rc+sqrt(1/2).*Q_rc); QPSK_rc_n0=QPSK_rc+n0;% 解调I_demo=QPSK_rc_n0.*cos(2*pi*f1*t1);Q_demo=QPSK_rc_n0.*sin(2*pi*f1*t1);% 低通滤波I_recover=conv(I_demo,xrc);Q_recover=conv(Q_demo,xrc);I=I_recover(11:10010);Q=Q_recover(11:10010);t2=0:0.05:1e3-0.05;t3=0:0.1:1e3-0.1;% 抽样判决data_recover=[];for i=1:20:10000data_recover=[data_recover I(i:1:i+19) Q(i:1:i+19)];end;bit_recover=[];for i=1:20:20000if sum(data_recover(i:i+19))>0data_recover_a(i:i+19)=1;bit_recover=[bit_recover 1];elsedata_recover_a(i:i+19)=-1;bit_recover=[bit_recover -1];endenderror=0;dd = -2*bit_in+1;ddd=[dd'];ddd1=repmat(ddd,20,1);for i=1:2e4ddd2(i)=ddd1(i);endfor i=1:1e3if bit_recover(i)~=ddd(i)error=error+1;endendp=error/1000;figure(1)subplot(2,1,1);plot(t2,ddd2);axis([0 100 -2 2]);title('原序列');subplot(2,1,2);plot(t2,data_recover_a);axis([0 100 -2 2]);title('解调后序列'); 效果图:% 设定T=1, 不加噪声clear allclose all% 调制bit_in = randint(1e3, 1, [0 1]);bit_I = bit_in(1:2:1e3);bit_Q = bit_in(2:2:1e3);data_I = -2*bit_I+1;data_Q = -2*bit_Q+1;data_I1=repmat(data_I',20,1);data_Q1=repmat(data_Q',20,1);for i=1:1e4data_I2(i)=data_I1(i);data_Q2(i)=data_Q1(i);end;t=0:0.1:1e3-0.1;f=0:0.1:1;xrc=0.5+0.5*cos(pi*f);data_I2_rc=conv(data_I2,xrc)/5.5;data_Q2_rc=conv(data_Q2,xrc)/5.5;f1=1;t1=0:0.1:1e3+0.9;I_rc=data_I2_rc.*cos(2*pi*f1*t1);Q_rc=data_Q2_rc.*sin(2*pi*f1*t1); QPSK_rc=(sqrt(1/2).*I_rc+sqrt(1/2).*Q_rc);% 解调I_demo=QPSK_rc.*cos(2*pi*f1*t1);Q_demo=QPSK_rc.*sin(2*pi*f1*t1);I_recover=conv(I_demo,xrc);Q_recover=conv(Q_demo,xrc);I=I_recover(11:10010);Q=Q_recover(11:10010);t2=0:0.05:1e3-0.05;t3=0:0.1:1e3-0.1;data_recover=[];for i=1:20:10000data_recover=[data_recover I(i:1:i+19) Q(i:1:i+19)]; end;ddd = -2*bit_in+1;ddd1=repmat(ddd',10,1);for i=1:1e4ddd2(i)=ddd1(i);endfigure(1)subplot(4,1,1);plot(t3,I);axis([0 20 -6 6]);subplot(4,1,2);plot(t3,Q);axis([0 20 -6 6]);subplot(4,1,3);plot(t2,data_recover);axis([0 20 -6 6]); subplot(4,1,4);plot(t,ddd2);axis([0 20 -6 6]);效果图:% QPSK误码率分析SNRindB1=0:2:10;SNRindB2=0:0.1:10;for i=1:length(SNRindB1)[pb,ps]=cm_sm32(SNRindB1(i));smld_bit_err_prb(i)=pb;smld_symbol_err_prb(i)=ps;end;for i=1:length(SNRindB2)SNR=exp(SNRindB2(i)*log(10)/10);theo_err_prb(i)=Qfunct(sqrt(2*SNR)); end;title('QPSK误码率分析');semilogy(SNRindB1,smld_bit_err_prb,'*');axis([0 10 10e-8 1]);hold on;% semilogy(SNRindB1,smld_symbol_err_prb,'o'); semilogy(SNRindB2,theo_err_prb);legend('仿真比特误码率','理论比特误码率'); hold off;function[y]=Qfunct(x)y=(1/2)*erfc(x/sqrt(2));function[pb,ps]=cm_sm32(SNRindB)N=10000;E=1;SNR=10^(SNRindB/10);sgma=sqrt(E/SNR)/2;s00=[1 0];s01=[0 1];s11=[-1 0];s10=[0 -1];for i=1:Ntemp=rand;if (temp<0.25)dsource1(i)=0;dsource2(i)=0;elseif (temp<0.5)dsource1(i)=0;dsource2(i)=1;elseif (temp<0.75)dsource1(i)=1;dsource2(i)=0;elsedsource1(i)=1;dsource2(i)=1;end;end;numofsymbolerror=0;numofbiterror=0;for i=1:Nn=sgma*randn(size(s00));if((dsource1(i)==0)&(dsource2(i)==0))r=s00+n;elseif((dsource1(i)==0)&(dsource2(i)==1)) r=s01+n;elseif((dsource1(i)==1)&(dsource2(i)==0)) r=s10+n;elser=s11+n;end;c00=dot(r,s00);c01=dot(r,s01);c10=dot(r,s10);c11=dot(r,s11);c_max=max([c00 c01 c10 c11]);if (c00==c_max)decis1=0;decis2=0;elseif(c01==c_max)decis1=0;decis2=1;elseif(c10==c_max)decis1=1;decis2=0;elsedecis1=1;decis2=1;end;symbolerror=0;if(decis1~=dsource1(i))numofbiterror=numofbiterror+1;symbolerror=1;end;if(decis2~=dsource2(i))numofbiterror=numofbiterror+1;symbolerror=1;end;if(symbolerror==1)numofsymbolerror=numofsymbolerror+1;end;end;ps=numofsymbolerror/N;pb=numofbiterror/(2*N);效果图:11。
MATLAB_QPSK调制与解调
实验名称:QPSK仿真系统一、实验目的:1、学会QPSK调制与解调系统的构成2、学会QPSK调制与解调系统的各模块的构建3、学会误码率与误符号率的统计方法以及Matlab算法二、实验原理:1、QPSK:四进制绝对相移键控,也称为多进制数字相位调制,利用载波的四种不同相位状态来表征数字信息的调制方式。
2、QPSK的调制方法有正交调制方式(双路二相调制合成法或直接调相法)、相位选择法、插入脉冲法。
调制与解调系统的构成:3、各模块的实现方法:(1)、信源的产生:使用randint(m,n,2)函数产生一个m行n列的随机二进制数列(2)、QPSK符号映射:将产生的0,1比特流按照QPSK调制方式进行映射,本实验采用π/4 QPSK的调制方式,图为:(3)、AWGN 信号产生:AWGN 产生器就是产生满足均值为0,方差为1的高斯白噪声。
实验中使用randn(m,n)函数产生一个m 行n 列的高斯噪声序列。
(4)、信号幅度控制:根据AWGN 信道模型,接收信号可以分别表示为α就是当噪声功率归一化为1(0均值,方差为1)时,根据信噪比关系而计算出来的信号平均幅度(5)、QPSK 反映射及判决 :对接收到的信号在4种可能的四种信号向量[(1,0), (0,1), (-1,0), (0,-1)]上投影(即进行点积)。
投影最大的值所对应的信号向量就是所发送信号的符号值,然后恢复出比特流(6)、误码率及误符号率统计:误码率:将检测出来的比特流和发送的原始比特流进行比较,统计出出现错误的比特数误符号率:将检测出来的比特流变成两组,构成符号,和发送端符号映射后的符号流进行比较,只要符号中任错一bit ,就算该符号出错。
统计出现错误的符号数 三、 实验内容:1、调制与解调I I Ir s n α=+Q Q Qr s n α=+22210log 10^10s s n n v SNR SNR v sqrt v v ⎛⎫⎛⎫⎛⎫=⇒=* ⎪ ⎪ ⎪⎝⎭⎝⎭⎝⎭s v α=clear allclose all% 调制bit_in = randint(1e3, 1, [0 1]);bit_I = bit_in(1:2:1e3);bit_Q = bit_in(2:2:1e3);data_I = -2*bit_I+1;data_Q = -2*bit_Q+1;data_I1=repmat(data_I',20,1);data_Q1=repmat(data_Q',20,1);for i=1:1e4data_I2(i)=data_I1(i);data_Q2(i)=data_Q1(i);end;f=0:0.1:1;xrc=0.5+0.5*cos(pi*f);data_I2_rc=conv(data_I2,xrc)/5.5;data_Q2_rc=conv(data_Q2,xrc)/5.5;f1=1;t1=0:0.1:1e3+0.9;n0=rand(size(t1));I_rc=data_I2_rc.*cos(2*pi*f1*t1);Q_rc=data_Q2_rc.*sin(2*pi*f1*t1); QPSK_rc=(sqrt(1/2).*I_rc+sqrt(1/2).*Q_rc); QPSK_rc_n0=QPSK_rc+n0;% 解调I_demo=QPSK_rc_n0.*cos(2*pi*f1*t1);Q_demo=QPSK_rc_n0.*sin(2*pi*f1*t1);% 低通滤波I_recover=conv(I_demo,xrc);Q_recover=conv(Q_demo,xrc);I=I_recover(11:10010);Q=Q_recover(11:10010);t2=0:0.05:1e3-0.05;t3=0:0.1:1e3-0.1;% 抽样判决data_recover=[];for i=1:20:10000data_recover=[data_recover I(i:1:i+19) Q(i:1:i+19)];end;bit_recover=[];for i=1:20:20000if sum(data_recover(i:i+19))>0data_recover_a(i:i+19)=1;bit_recover=[bit_recover 1];elsedata_recover_a(i:i+19)=-1;bit_recover=[bit_recover -1];endenderror=0;dd = -2*bit_in+1;ddd=[dd'];ddd1=repmat(ddd,20,1);for i=1:2e4ddd2(i)=ddd1(i);endfor i=1:1e3if bit_recover(i)~=ddd(i)error=error+1;endendp=error/1000;figure(1)subplot(2,1,1);plot(t2,ddd2);axis([0 100 -2 2]);title('原序列');subplot(2,1,2);plot(t2,data_recover_a);axis([0 100 -2 2]);title('解调后序列');2、误码率仿真% QPSK误码率分析SNRindB1=0:2:10;SNRindB2=0:0.1:10;for i=1:length(SNRindB1)[pb,ps]=cm_sm32(SNRindB1(i));smld_bit_err_prb(i)=pb;smld_symbol_err_prb(i)=ps;end;for i=1:length(SNRindB2)SNR=exp(SNRindB2(i)*log(10)/10);theo_err_prb(i)=Qfunct(sqrt(2*SNR)); end;title('QPSK误码率分析');semilogy(SNRindB1,smld_bit_err_prb,'*');axis([0 10 10e-8 1]);hold on;% semilogy(SNRindB1,smld_symbol_err_prb,'o'); semilogy(SNRindB2,theo_err_prb);legend('仿真比特误码率','理论比特误码率'); hold off;function[y]=Qfunct(x)y=(1/2)*erfc(x/sqrt(2));function[pb,ps]=cm_sm32(SNRindB)N=10000;E=1;SNR=10^(SNRindB/10);sgma=sqrt(E/SNR)/2;s00=[1 0];s01=[0 1];s11=[-1 0];s10=[0 -1];for i=1:Ntemp=rand;if (temp<0.25)dsource1(i)=0;dsource2(i)=0;elseif (temp<0.5)dsource1(i)=0;dsource2(i)=1;elseif (temp<0.75)dsource1(i)=1;dsource2(i)=0;elsedsource1(i)=1;dsource2(i)=1;end;end;numofsymbolerror=0;numofbiterror=0;for i=1:Nn=sgma*randn(size(s00));if((dsource1(i)==0)&(dsource2(i)==0))r=s00+n;elseif((dsource1(i)==0)&(dsource2(i)==1)) r=s01+n;elseif((dsource1(i)==1)&(dsource2(i)==0)) r=s10+n;elser=s11+n;end;c00=dot(r,s00);c01=dot(r,s01);c10=dot(r,s10);c11=dot(r,s11);c_max=max([c00 c01 c10 c11]);if (c00==c_max)decis1=0;decis2=0;elseif(c01==c_max)decis1=0;decis2=1;elseif(c10==c_max)decis1=1;decis2=0;elsedecis1=1;decis2=1;end;symbolerror=0;if(decis1~=dsource1(i))numofbiterror=numofbiterror+1;symbolerror=1;end;if(decis2~=dsource2(i))numofbiterror=numofbiterror+1;symbolerror=1;end;if(symbolerror==1)numofsymbolerror=numofsymbolerror+1;end;end;ps=numofsymbolerror/N;pb=numofbiterror/(2*N);3、QPSK在AWGN信道下的仿真close allclcclear allSNR_DB=[0:1:12];sum=1000000;data= randsrc(sum,2,[0 1]);[a1,b1]=find(data(:,1)==0&data(:,2)==0);message(a1)=-1-j;[a2,b2]=find(data(:,1)==0&data(:,2)==1);message(a2)=-1+j;[a3,b3]=find(data(:,1)==1&data(:,2)==0);message(a3)=1-j;[a4,b4]=find(data(:,1)==1&data(:,2)==1);message(a4)=1+j;scatterplot(message)title('B点信号的星座图')A=1;Tb=1;Eb=A*A*Tb;P_signal=Eb/Tb;NO=Eb./(10.^(SNR_DB/10));P_noise=P_signal*NO;sigma=sqrt(P_noise);for Eb_NO_id=1:length(sigma)noise1=sigma(Eb_NO_id)*randn(1,sum);noise2=sigma(Eb_NO_id)*randn(1,sum);receive=message+noise1+noise2*j;resum=0;total=0;m1=find(angle(receive)<=pi/2&angle(receive)>0);remessage(1,m1)=1+j;redata(m1,1)=1;redata(m1,2)=1;m2= find( angle(receive)>pi/2&angle(receive)<=pi);remessage(1,m2)=-1+j;redata(m2,1)=0;redata(m2,2)=1;m3=find( angle(receive)>-pi&angle(receive)<=-pi/2);remessage(1,m3)=-1-j;redata(m3,1)=0;redata(m3,2)=0;m4=find( angle(receive)>-pi/2&angle(receive)<=0);remessage(1,m4)=1-j;redata(m4,1)=1;redata(m4,2)=0;[resum,ratio1]=symerr(data,redata);pbit(Eb_NO_id)=resum/(sum*2);[total,ratio2]=symerr(message,remessage);pe(Eb_NO_id)=total/sum;endscatterplot(receive)title('C点信号的星座图')Pe=1-(1-1/2*erfc(sqrt(10.^(SNR_DB/10)/2))).^2;Pbit=1/2*erfc(sqrt(10.^(SNR_DB/10)/2));figure(3)semilogy(SNR_DB,pe,':s',SNR_DB,Pe,'-*',SNR_DB,pbit,'-o',SNR_DB,Pbit,':+')legend('QPSK仿真误码率','QPSK理论误码率','QPSK仿真误比特率','QPSK理论误比特率',1) xlabel('信噪比/dB')ylabel('概率P')gird on结果:4、QPSK在AWGN信道下的性能检测clear all;%对随机序列产生的方法初始化s = RandStream('mt19937ar','Seed', 5489);RandStream.setDefaultStream(s);s = RandStream('mcg16807', 'Seed',0);RandStream.setDefaultStream(s);N = 10^5; %码元数Eb_N0 = -4:20; %Eb/N0比特信噪比s_data = zeros(1,N);ErrorCount=zeros(1,length(Eb_N0)); %预先分配内存,用于记录错误的码元数for j = 1:length(Eb_N0)p = (2*(rand(1,N)>0.5)-1) + 1i*(2*(rand(1,N)>0.5)-1);s = (1/sqrt(2))*p; %归一化n = 10^(-Eb_N0(j)/40)*1/sqrt(2)*(randn(1,N) + 1i*randn(1,N)); %加性高斯白噪声r = s + n;%解调r_re = real(r); %实部r_im = imag(r); %虚部s_data(r_re < 0 & r_im < 0) = -1 + -1*1i;s_data(r_re >= 0 & r_im > 0) = 1 + 1*1i;s_data(r_re < 0 & r_im >= 0) = -1 + 1*1i;s_data(r_re >= 0 & r_im < 0) = 1 - 1*1i;ErrorCount(j) = size(find(p- s_data),2); %错误的码元数endsim_QPSK = ErrorCount/N;theory_QPSK = erfc(sqrt(0.5*(10.^(Eb_N0/20)))) -(1/4)*(erfc(sqrt(0.5*(10.^(Eb_N0/20))))).^2;close allfiguresemilogy(Eb_N0,theory_QPSK,'b.-');hold onsemilogy(Eb_N0,sim_QPSK,'mx-');axis([-4 20 10^-3 1])grid on。
通信原理实验报告四DPSK和QPSK
实验四 调制解调(BPSK ,QPSK ,信噪比)一、实验目的掌握数字频带传输系统调制解调的仿真过程 掌握数字频带传输系统误码率仿真分析方法 二、实验原理数字频带信号通常也称为数字调制信号,其信号频谱通常是带通型的,适合于在带通型信道中传输。
数字调制是将基带数字信号变换成适合带通型信道传输的一种信号处理方式,正如模拟通信一样,可以通过对基带信号的频谱搬移来适应信道特性,也可以采用频率调制、相位调制的方式来达到同样的目的。
1. BPSK 调制解调原理假定:信道为加性高斯白噪声信道,其均值为0、方差为2σ,采用矩形成形,发射端BPSK 调制信号为:s (t )=A cos(2p f c t )b k ="1"-A cos(2p f c t )b k ="0"kT £t <(k +1)Tìíïîï经信道传输,接收端输入信号为:()()()d y t s t n t =+经相干解调,匹配滤波,定时恢复后输出:x k =A +n kb k ="1"-A +n k b k ="0"ìíïîï当1,0独立等概出现时,BPSK 系统的最佳判决门限电平*0d U =。
故判决规则为在取样时刻的判决值大于0,判1,小于0,判0。
BPSK 信号的功率谱密度为:()()()][42c m c m s f f P f f P A f P ++-=2. 2ASK 调制过程如果将二进制码元“0”对应信号0,“1”对应信号t f A c π2cos ,则2ASK 信号可以写成如下表达式:()()cos2T n s c n s t a g t nT A f tπ⎧⎫=-⎨⎬⎩⎭∑{}1,0∈n a ,()⎩⎨⎧≤≤=其他 0T t 0 1s t g 。
MATLAB实现QPSK信号的调制解调以及计算误码率BER
MATLAB实现QPSK信号的调制解调以及计算误码率BER QPSK(Quadrature Phase Shift Keying)是一种基于调制的数字通信方法,它能够提高频谱利用率并减小误码率。
在QPSK调制中,每个符号由两个正交的载波信号之一进行相位调制,共有四种可能的相位状态。
本文将介绍如何使用MATLAB实现QPSK信号的调制、解调,并计算误码率BER(Bit Error Rate)。
首先,我们将使用MATLAB生成一个随机的二进制数列作为待传输的数字数据。
假设数据位数为N。
```matlabN=1000;%数据位数data = randi([0, 1], 1, N); % 生成随机二进制数据```接下来,我们将二进制数据转换为QPSK调制所需的两个IQ通道数据。
其中,I通道代表实部,Q通道代表虚部。
我们将0和1分别映射为QPSK调制的四个相位状态(例如:00映射为相位0°,01映射为相位90°,10映射为相位180°,11映射为相位270°)。
```matlabqpsk_data = reshape(data, 2, N/2); % 转换为2*N/2矩阵qpsk_data = 2*qpsk_data - 1; % 转换为-1和1之间的数值I = qpsk_data(1, :);Q = qpsk_data(2, :);```现在,我们得到了I和Q两个IQ通道的数据。
接下来,我们将对这两个通道的数据进行调制。
在QPSK调制中,我们使用两个不同相位的正弦信号。
```matlabfs = 1000; % 采样率fc = 10; % 载波频率t = 0:1/fs:N/fc-1/fs; % 时间序列I_modulated = real(sqrt(2/T).*I.*cos(2*pi*t*fc)); % I通道调制Q_modulated = real(sqrt(2/T).*Q.*sin(2*pi*t*fc)); % Q通道调制QPSK_signal = I_modulated + Q_modulated; % QPSK信号```现在,我们得到了QPSK信号。
QPSK调制与解调在MATLAB平台上的实现
QPSK调制与解调在MATLAB平台上的实现QPSK(Quadrature Phase Shift Keying)是一种常用的调制解调技术,常用于数字通信中。
在QPSK调制中,每个符号代表两个比特,通过将这两个比特与正交信号载波进行调制,实现高效的数据传输。
在这篇文章中,我们将介绍如何在MATLAB平台上实现QPSK调制和解调。
1.QPSK调制首先,我们需要生成待发送的二进制比特序列。
我们可以使用randi 函数生成0和1之间的随机整数序列。
```matlabbits = randi([0,1],1,N);```N表示待发送的比特数。
接下来,我们需要将这个二进制序列转换为QPSK调制符号。
在QPSK 调制中,我们将每两个比特映射到一个复数符号。
将0映射为1+j,将1映射为1-j。
```matlabfor i = 1:2:Nif bits(i) == 0 && bits(i+1) == 0symbols((i+1)/2) = 1 + 1i;elseif bits(i) == 0 && bits(i+1) == 1symbols((i+1)/2) = 1 - 1i;elseif bits(i) == 1 && bits(i+1) == 0symbols((i+1)/2) = -1 + 1i;elseif bits(i) == 1 && bits(i+1) == 1symbols((i+1)/2) = -1 - 1i;endend```最终得到的symbols变量即为QPSK调制后的复数符号序列。
2.QPSK解调首先,我们需要接收到的QPSK信号进行解调,得到复数符号序列。
```matlabsymbols_received = received_signal./carrier; % 将接收到的信号除以载波得到复数符号序列```其中received_signal为接收到的QPSK信号,carrier为发送端使用的载波。
(完整版)QPSK调制原理及matlab程序实现
QPSK已调信号生成一、QPSK介绍QPSK是英文Quadrature Phase Shift Keying 的缩写,意为正交相移键控,是一种数字调制方式。
其有抗干扰性强、误码性能好、频谱利用率高等优点,广泛应用于数字微波通信系统、数字卫星通信系统、宽带接入、移动通信及有线电视系统之中。
二、实验平台和实验内容1、实验平台本实验是MATLAB环境中生成基本QPSK已调信号,只需要MATLAB12.0。
2、实验内容1.基带信号为周期127bits伪随机序列,信息比特速率:20kbps,载波频率:20kHz(速率及频率参数现场可调整);2.在MATLAB环境中编写M代码搭建QPSK调制系统模型;3.观测基带时域波形、已调信号时域波形;4.观测基带发射星座图;5.观测已调信号的功率谱(优先)或频谱;三、实现框图及其原理分析1、原理分析及其结构QPSK与二进制PSK一样,传输信号包含的信息都存在于相位中。
载波相位取四个等间隔值之一,如л/4, 3л/4,5л/4,和7л/4。
相应的E为发射信号的每个符号的能量,T为符号持续时间,载波频率f等于nc/T,nc为固定整数。
每一个可能的相位值对应于一个特定的二位组。
例如,可用前述的一组相位值来表示格雷码的一组二位组:10,00,01,11。
Sin(t)=2E/tcos[2]4/+∏i]0<=t<=T)1-ft∏2(其中,i=1,2,3,4。
2、框图四、实验结果与分析图一基带信号为周期为127bits的伪随机序列。
图二:已调信号时域波形带宽为7104 HzB点信号的星座图映射,00、01、10、11组合分别映射成-1-j,-1+j,1-j,1+j。
五、实验源码clc;clear all;Num=127;data=randi([0 1],1,Num);figure(1)plot(data)title('基带时域波形');f=20000; %载波频率20kHzRb=20000; %码元速率20kHzTs=1/f;Ns=8000;sample=1*Ns; %每个码元采点数为8000,采样频率为8000*20kHz N=sample*length(data)/2; %总采样点数data1=2*data-1; %正/负极性变换,产生二进制不归零双极性码元%-------------------------将信息源分成两路,分别对信号进行抽样-------------data_1=zeros(1,N); %定义一个长度为N的空数据data_1for i1=1:Num/2data_1(sample*(i1-1)+1:sample*i1)=data1(2*i1-1); %对奇数码元进行采样enddata_2=zeros(1,N);for i2=1:Num/2data_2(sample*(i2-1)+1:sample*i2)=data1(2*i2); %对偶数码元进行采样enda=zeros(1,N);b=zeros(1,N);for j1=1:Na(j1)=cos(2*pi*f*(j1-1)*Ts/Ns); %对余弦载波抽样每个周期采N个点 b(j1)=-sin(2*pi*f*(j1-1)*Ts/Ns); %对正弦载波抽样每个周期采N个点end%---------------------------调制---------------------------data_a=data_1.*a; %a路用余弦调制data_b=data_2.*b; %b路用正弦调制data_c=data_a+data_b;figure(2)subplot(3,1,1)plot(data_a)title('QPSK已调实部时域信号');subplot(3,1,2)plot(data_b)title('QPSK已调虚部时域信号');subplot(3,1,3)plot(data_c);title('QPSK已调信号时域波形');%---------------------绘制调制后波形的频谱图-------------------data_modul1= data_1(1:502000)+1i*data_2(1:502000);data_modul=data_a+1i*data_b;%调制后总的信号figure(3)plot(data_modul1,'o');axis([-2 2 -2 2]);title('星座图');figure(4)QPSK=10*log10(abs(fftshift(fft(data_modul,2048))).^2); %信号的频率值SFreq=linspace(-Rb*sample/2,Rb*sample/2,length(QPSK)); %信号的频率谱范围plot(SFreq,QPSK);title('QPSK已调信号频谱图');xlabel('Frequency');ylabel('Amplitude');hold on;。
MATLAB仿真AM调制解调 无线通信实验报告
无线通信实验报告院系名称:信息科学与工程学院专业班级:电信班学生姓名:学号:授课教师:2014 年11 月 6 日实验一 高斯衰落信道建模一、基本原理QPSK 信号可以看成是对两个正交的载波进行多电平双边带调制后所得信号的叠加,因此可以用正交调制的方法得到QPSK 信号。
QPSK 信号的星座如图4.1.1所示:图1.1 QPSK 信号星座图从AWGN 信道中,在一个信号区间内接收到的带宽信号可以表示为()()()()()cos(2)()sin(2)m m c c s c r t u t n t u t n t f t n t f t ππ=+=+-这里()c n t 和()s n t 是加性噪声的两个正交分量。
可以将这个接收信号与1()()cos(2)T c t g t f t ψπ=,2()sin(2)T c g t f t ψπ=-给出的1()t ψ和2()t ψ作相关,两个相关器的输出产生受噪声污损的信号分量,它们可表示为22()m s s s m m r s n n n M Mππξξ=+=++ 式中c n 和s n 定义为 1()()2c T c n g t n t dt ∞-∞=⎰ 1()()2s T s n g t n t dt ∞-∞=⎰ 这两个正交噪声分量()c n t 和()s n t 是零均值,互不相关的高斯随机过程。
这样,()()0c s E n E n ==和()0c s E n n =。
c n 和s n 的方差是 220()()2c s N E n E n == 最佳检测器将接收信号向量r 投射到M 个可能的传输信号向量{m s }之一上去,并选取对应于最大投影的向量。
据此,得到相关准则为(,)m m C r s r s =•,m=0,1,…,M-1由于全部信号都具有相等的能量,因此,对数字相位调制一种等效的检测器标准是计算接收信号向量r=(c r ,s r )的相位为 arctan s r cr r θ= 并从信号集{m s }中选取其相位最接近r θ的信号。
QPSK调制与解调在MATLAB平台上的实现
QPSK调制与解调在MATLAB平台上的实现QPSK(Quadrature Phase Shift Keying)是一种常见的数字调制技术,主要用于数字通信领域中的高速数据传输。
QPSK调制与解调的实现可以利用MATLAB平台,并结合数字信号处理工具箱中的相关函数来完成。
在本文中,将详细介绍QPSK调制和解调的MATLAB实现步骤,并给出相关代码示例。
1. 生成一个二进制序列作为调制数据。
可以使用MATLAB中的randi函数生成0和1构成的随机序列。
```matlabdata = randi([0 1], 1, N); % N表示数据长度```2. 将二进制序列转换为QPSK调制符号。
由于QPSK调制中每个调制符号代表2个比特,所以需要将二进制序列分成两部分,并将每一部分映射到相应的星座点上。
可以使用MATLAB中的bi2de函数将二进制序列转换为十进制数,并按照星座点的排列顺序进行映射。
示例代码如下:```matlabI_data = bi2de(data(1:2:end), 'left-msb');Q_data = bi2de(data(2:2:end), 'left-msb');```3. 根据映射的结果,使用复数运算来生成QPSK调制信号。
可将实部和虚部分别设置为I_data和Q_data,形成一个复数信号。
示例代码如下:```matlabmodulated_signal = I_data + 1i*Q_data;```4. 将调制信号进行归一化并添加高斯白噪声(可选)。
调制信号一般需要归一化为特定的信号功率,可以使用MATLAB中的awgn函数向调制信号添加高斯白噪声。
示例代码如下:```matlabnormalized_signal = modulated_signal / sqrt(2); % 归一化信号功率noisy_signal = awgn(normalized_signal, SNR); % 向信号添加高斯白噪声,SNR表示信噪比```QPSK解调的实现步骤如下:1.接收到带有噪声的QPSK信号。
QPSK调制与解调系统的MATLAB实现
QPSK调制与解调系统的MATLAB实现和性能分析摘要:QPSK是英文QuadraturePhaseShiftKeying的缩略语简称,意为正交相移键控,是一种数字调制方式。
四相相移键控信号简称“QPSK”。
在现代通信系统中,调制与解调是必不可少的重要手段。
所谓调制,就是把信号转换成适合在信道中传输的形式的一种过程。
解调则是调制的相反过程,而从已调制信号中恢复出原信号。
本课程设计主要介绍通过进行QPSK调制解调的基带仿真,对实现中影响该系统性能的几个重要问题进行了研究。
针对QPSK的特点,调制前后发生的变化,加上噪声后波形出现的各种变化,通过星座图、眼图、波形图等来观察。
程序设计与仿真均采用MATLAB集成环境下的Simulink仿真平台,最后仿真详单与理论分析一致。
1 引言本课程设计主要是学会运用MATLAB中的Simulink来实现数字基带信号的模拟传输。
在知道其传输原理的情况下,将仿真电路到Simulink之中。
并且对正交振幅调制、解调过程的频谱和波形的分析,同时在无噪声和有噪声的进行分析,加入高斯白噪声,瑞利噪声,莱斯噪声分析调制解调后的频谱、波形,观察其误码率。
1.1课程设计的目的通过本课程的学习我们不仅能加深理解和巩固理论课上所学的有关QPSK调制与解调的基本概念、基本理论和基本方法,而且能锻炼我们分析问题和解决问题的能力;同时对我们独立工作的习惯和科学素质进行培养,为今后参加科学工作打下良好的基础。
1.2课程设计的内容利用MATLAB集成环境下的Simulink仿真平台,设计一个QPSK调制与解调系统.用示波器观察调制前后的信号波形;用频谱分析模块观察调制前后信号频谱的变化;加上各种噪声源,用误码测试模块测量误码率;最后根据运行结果和波形来分析该系统性能。
1.3课程设计的要求1)熟悉MATLAB环境下的Simulink仿真平台,熟悉QPSK系统的调制解调原理,构建QPSK调制解调电路图.2)用示波器观察调制前后的信号波形,用频谱分析模块观察调制前后信号的频谱的变化。
基于 MATLAB的 QPSK 调制解调仿真
基于MATLAB的QPSK 调制解调仿真( 1 ) 熟悉2QPSK 调制解调原理。
(2)掌握编写2QPSK 调制解调程序的要点。
(3)掌握使用MATLAB 调制解调仿真的要点。
( 1 ) 根据2QPSK 调制解调原理,设计源程序代码。
( 2 ) 通过MATLAB软件仿真给定信号的调制波形。
(3)对比给定信号的理论调制波形和仿真解调波形。
QPSK即四进制移向键控(quaternary phase shift keying),它利用载波的4种不同相位来表示数字信息,由于每一种载波相位代表两个比特信息,因此每个四进制码元可以用两个二进制码元的组合来表示。
两个二进制码元中的前一个码元用a 表示,后一个码元用b 表示。
由QPSK 信号的调制原理可知,对它的解调可以采用与2PSK 信号类似的解调方法进行解调。
解调原理图如图2-18-2 所示,同相支路和正交支路分别采用相干解调方式解调,得到I ( t )和Q(t),经过抽样判决和并/串交换器,将上下支路得到的并行数据恢复成串行数据。
(1 )利用QPSK 正交调制器,用调相法产生QPSK信号。
( 2 ) 画出QPSK 信号的波形。
( 3 ) 利用相干解调法,画出QPSK解调后的信号。
( 1 ) 首先,用调相法产生QPSK 信号。
( 2 ) 使用MATLAB 画出QPSK 信号的波形。
(3)根据相干解调法,画出解调后的波形,与原始信号波形进行比较。
N=20;%比特数T=1;%比特周期fc=2;%载波频率Fs=100;%抽样频率bitstream=randi([0,1],1,N);%随机产生的比特数0、1bitstream=2*bitstream-1;%单极性变为双极性(0到-1;1到1)I=[];Q=[];%奇数进I路,偶数进Q路for i=1:Nif mod(i,2)~=0I=[I,bitstream(i)];elseQ=[Q,bitstream(i)];endend%采用绘图比较I、Q比特流bit_data=[];for i=1:Nbit_data=[bit_data,bitstream(i)*ones(1,T*Fs)];%在一个比特周期里面有T*Fs个1和采样点一模一样endI_data=[];Q_data=[];for i=1:N/2%I路和Q路是原来比特周期的两倍,2Tb=Ts(码元周期),因此采样点个数为T*Fs*2I_data=[I_data,I(i)*ones(1,T*Fs*2)];Q_data=[Q_data,Q(i)*ones(1,T*Fs*2)];end%绘图figure();%时间轴t=0:1/Fs:N*T-1/Fs;subplot(3,1,1)plot(t,bit_data);legend('Bitstream')%比特信息subplot(3,1,2)plot(t,I_data);legend('I Bitstream')%I路信息subplot(3,1,3)plot(t,Q_data);legend('Q Bitstream')%Q路信息%载波信号bit_t=0:1/Fs:2*T-1/Fs;%载波周期为2倍比特周期,定义时间轴%定义I路和Q路的载波I_carrier=[];Q_carrier=[];for i=1:N/2I_carrier=[I_carrier,I(i)*cos(2*pi*fc*bit_t)];%I路载波信号Q_carrier=[Q_carrier,Q(i)*cos(2*pi*fc*bit_t+pi/2)];%Q路载波信号end%传输信号QPSK_signal=I_carrier+Q_carrier;%绘图figure();%产生一个新图subplot(3,1,1)plot(t,I_carrier);legend('I signal')%I路信号subplot(3,1,2)plot(t,Q_carrier);legend('Q signal')%Q路信号subplot(3,1,3)plot(t,QPSK_signal);legend('QPSK signal')%I路、Q路和的信号snr=1;%信躁比%接收信号QPSK_receive=awgn(QPSK_signal,snr);%awgn()添加噪声%解调for i=1:N/2I_output=QPSK_receive(1,(i-1)*length(bit_t)+1:i*length(bit_t)).*cos(2 *pi*fc*bit_t);if sum(I_output)>0 %积分器求和,大于0为1,否则为-1I_recover(i)=1;elseI_recover(i)=-1;endQ_output=QPSK_receive(1,(i-1)*length(bit_t)+1:i*length(bit_t)).*cos(2 *pi*fc*bit_t+ pi/2);if sum(Q_output)>0Q_recover(i)=1;elseQ_recover(i)=-1;endend%并/串变换bit_recover=[];for i=1:Nif mod(i,2)~=0bit_recover=[bit_recover,I_recover((i-1)/2+1)];%奇数取I路信息elsebit_recover=[bit_recover,Q_recover(i/2)];%偶数取Q路信息endend%适用绘图比较I、Q比特流recover_data=[];for i=1:Nrecover_data=[recover_data,bit_recover(i)*ones(1,T*Fs)];endI_recover_data=[];Q_recover_data=[];for i=1:N/2I_recover_data=[I_recover_data,I_recover(i)*ones(1,T*Fs*2)];Q_recover_data=[Q_recover_data,Q_recover(i)*ones(1,T*Fs*2)];end%绘图figure();t=0:1/Fs:N*T-1/Fs;subplot(3,1,1)plot(t,recover_data);legend('Bitstream')%恢复的比特信息subplot(3,1,2)plot(t,I_recover_data);legend('I Bitstream')%恢复的I路信息subplot(3,1,3)plot(t,Q_recover_data);legend('Q Bitstream')%恢复的Q路信息Q路对应的比特数和波形图如下所示路和信号(QPSK)对应波Q路信息波形图如图所示在本次实验中,我根据QPSK 调制解调仿真原理,写出了源程序代码,了解到了很多东西,其中通过Matlab软件根据相干解调法,画出解调后的波形,与原始信号波形进行仿真比较。
QPSK调制解调试验报告
QPSK调制解调试验报告0QPSK调制解调实验报告一、实验目的1.掌握0QPSK调制解调原理。
2.理解0QPSK的优缺点。
二、实验内容1.观察0QPSK调制过程各信号波形。
2.观察0QPSKB调过程各信号波形。
三、预备知识1..0QPSK调制解调的基本原理。
2.0QPSK调制解调模块的工作原理及电路说明。
四、实验器材1,移动通信原理实验箱。
3字双踪示波器。
五、实验原理0QPSK调制解调原理0QPSK又叫四相相移键控,它通QPSK的不同之处是在正交支路引入了一个码元(TS)的延时,这使得两个支路的数据错开了一个码元时间,不会同时发生变化,而不像QPSK那样产生土兀的相位跳变,而仅能产生土兀/2的相位跳变,如图41星座图和相位转移图中看出对1QPSK兀相位的跳变消除了,所以1QPSK信号的带限不会导致信号包络经过零点。
0QPSK包络的变化小多了,因此对1QPSK的硬限幅或非线性放大不会再产生严重的频带扩展,0QPSK即使在非线性放大后仍能保持其带限的性质。
0QPSK 的调制方法和QPSK一样。
图41+100信道六、实验步骤1.A方式的0QPS颁制实验(1)将“调制类型选择”拨码开关拨为000XXXX1000、0001,则调制类型选择为A方式的0QPSK调制。
(2)分别观察并说明NRZ码经串并转换得到的D、DQ两路的一个周期的数据波形。
CH1:NRZCH2:DCH1:NRZCH2:DQ(3)双踪观察并分析说明D与路成形信号波形;DQ与Q路成形信号波形;CH1:DCH2:路成形CH1:DQCH2:Q路成形(4)双踪观察并分析说明路成形信号波形与路调制同相调制信号波形;Q路成形信号与Q路调制正交调制信号波形。
CH1:路成形CH2:路调制(5)用示波器观察并说明路成形信号与图进行比较说明。
CH1:Q路成形CH2:Q路调制Q路成形t号的_Y波形,分析并说明与A方式的星座图有什么不同。
3.A方式的0QPSKB调实验(1)将“调制类型选择”拨码开关拨为000XXXX1000、0100,“解调类型选择”拨码开关拨为000XXXX1000、0100,则解调类型选择为A方式的0QPSK解调。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通信原理实验
项目名称:QPSK的调制解调
一、实验任务
任意输入长度为64比特的二进制信息,采用QPSK系统传输。
码元速率为1Bps,载波频率为10Hz,采样频率为40 Hz,利用Matlab画出:
(1)调制后的信号波形;
(2)经信道传输后的信号波形(假设加性高斯白噪声,其功率为信号功率1/10);(3)(3)任意解调方法解调后的信号波形。
二、流程图
三、完整程序
Fd=1; %码元速率
Fc=10; %载波频率
Fs=40; %采样频率
N=Fs/Fd;
df=10;
x=[ 1 1 0 1 1 0];%任意输入64比特的二进制信息
M=2; %进制数
SNRpBit=10;%加性高斯白噪声,其功率为信号功率的1/10,即信噪比为10 SNR=SNRpBit/log2(M); %转换为码元速率
seed=[12345 54321];
numPlot=length(x);
figure(1)%画出输入二进制序列
subplot(211);
stem([0:numPlot-1],x(1:numPlot),'bx');
title('输入波形’)
%调制
y=dmod(x,Fc,Fd,Fs,'fsk',M,df);
numModPlot=numPlot*Fs;
t=[0:numModPlot-1]./Fs;
subplot(212);%画出调制后的信号
plot(t,y(1:length(t)),'b-');
axis([min(t) max(t) -1.5 1.5]);
title('调制后的信号')
%在已调信号中加入高斯白噪声
randn('state',seed(2));
y=awgn(y,SNR-10*log10(0.5)-10*log10(N),'measured',[],'dB');
%相干解调
figure(2)
subplot(211);
plot(t,y(1:length(t)),'b-');%画出经过信道的实际信号
axis([min(t) max(t) -1.5 1.5]);
title('加入高斯白噪声后的已调信号')
%带输出波形的相干M元频移键控解调
subplot(212);
stem([0:numPlot-1],x(1:numPlot),'bx');
hold on;
stem([0:numPlot-1],z1(1:numPlot),'ro');
hold off;
axis([0 numPlot -0.5 1.5]);
title('相干解调后的信号')
四、波形。