您好,欢迎访问三七文档
本程序根据《基于dsPIC的无线通信系统设计》整理,程序实现DQPSK调制,g_bincode是输入的数字信号序列,每两个数字信号生成一个DQPSK调制符号。为了安全起见,增加两个符号,一个是开载波,一个是关载波。程序中包括正弦脉冲成型设计。MATLAB中分别新建两个m文件,一个为主程序,另一个为basegen函数(文件名与函数名一致)。1.主程序%符号列表11=0=0,01=1=+90,00=2=180;10=3=-90;4=关载波;5=开载波;g_bincode=[1001001];tsym=0;symb_size=floor(length(g_bincode)/2);%符号长度原始符号前加入符号5,结尾处加入4%生成QPSK的符号g_symbol=[5];%第一个符号是开载波fori=1:symb_sizetcode=g_bincode(i*2-1)*2+g_bincode(i*2);switchtcodecase0tsym=2;case1tsym=1;case2tsym=3;case3tsym=0;endg_symbol=[g_symboltsym];endg_symbol=[g_symbol4];%最后一个符号是关载波%产生基带波形[g_basei,g_baseq]=basegen(5);fori=2:length(g_symbol)[ti,tq]=basegen(g_symbol(i));g_basei=[g_baseiti];g_baseq=[g_baseqtq];end%调制fc=1500;%载波频率phaseinc=2*pi*fc/8000;%采样间隔内的载波相位增量t=0:length(g_basei)-1;fc_i=cos(0:phaseinc:phaseinc*(length(g_basei)-1));g_modi=fc_i.*g_basei;%i通道已调信号fc_q=cos(0:phaseinc:phaseinc*(length(g_basei)-1));g_modq=fc_q.*g_baseq;%q通道已调信号g_mod=g_modi+g_modq;%完整的已调信号plot(t,g_mod);2.basegen函数%basegen函数如下%i,q代表当前符号周期内的波形序号function[basei,baseq]=basegen(insymbol)persistentcurphase;%curphase记录当前符号的绝对相位,等下一个符号到达,自然记录了上一个符号的绝对相位%绝对相位的定义:0=45;1=135;3=315;4=无载波;ifinsymbol==5i=3;q=3;%开载波,绝对相位总是45度curphase=0;elseswitchinsymbolcase0%相对相移0度switchcurphasecase0i=1;q=1;curphase=0;case1i=2;q=1;curphase=1;case2i=2;q=2;curphase=2;case3i=1;q=2;curphase=3;case4i=0;q=0;curphase=4;endcase1%相对相移90度switchcurphasecase0i=6;q=1;curphase=1;case1i=2;q=6;curphase=2;case2i=7;q=2;curphase=3;case3i=1;q=7;curphase=0;case4i=3;q=3;curphase=0;endcase2%相对相移180度switchcurphasecase0i=6;q=6;curphase=2;case1i=7;q=6;curphase=3;case2i=7;q=7;curphase=0;case3i=6;q=7;curphase=1;case4i=3;q=3;curphase=0;endcase3%相对相移-90度switchcurphasecase0i=1;q=6;curphase=3;case1i=7;q=1;curphase=0;case2i=2;q=7;curphase=1;case3i=6;q=2;curphase=2;case4i=3;q=3;curphase=0;endcase4%关闭载波switchcurphasecase0i=4;q=4;curphase=4;case1i=5;q=4;curphase=4;case2i=5;q=5;curphase=4;case3i=4;q=5;curphase=4;case4i=0;q=0;curphase=4;endendend%下面根据i,q来生成该符号周期内的两路基带信号switchicase0basei=zeros(1,256);case1basei=ones(1,256);case2basei=-ones(1,256);case3basei=[zeros(1,128)sin(pi/256:pi/256:pi/2)];case4basei=[cos(pi/256:pi/256:pi/2)zeros(1,128)];case5basei=[-cos(pi/256:pi/256:pi/2)zeros(1,128)];case6basei=cos(pi/256:pi/256:pi);case7basei=-cos(pi/256:pi/256:pi);endswitchqcase0baseq=zeros(1,256);case1baseq=ones(1,256);case2baseq=-ones(1,256);case3baseq=[zeros(1,128)sin(pi/256:pi/256:pi/2)];case4baseq=[cos(pi/256:pi/256:pi/2)zeros(1,128)];case5baseq=[-cos(pi/256:pi/256:pi/2)zeros(1,128)];case6baseq=cos(pi/256:pi/256:pi);case7baseq=-cos(pi/256:pi/256:pi);end
本文标题:DQPSK调制
链接地址:https://www.777doc.com/doc-5562595 .html