当前位置:文档之家› 自适应编码调制

自适应编码调制

西安电子科技大学宽带无线接入与无线IP技术课程作业题目:自适应编码调制技术学院:通信工程学院姓名:2015年4月28日1 / 301 / 302 / 302 / 30摘要本文主要介绍了自适应编码调制技术的基本原理,讨论了所用到的信道编码和调制技术,最后对自适应编码调制技术进行了简单的仿真。

关键字:自适应编码仿真3 / 303 / 30ABSTRACTThis paper begins with an introduction to the basic principle of Adaptive Modulation and Coding(AMC), followed by a presentation of Channel coding and Modulation technology and concludes with a simple simulation for the adaptive modulation and coding technology.Keywords:Adaptive Modulation and Coding simulation4 / 304 / 30目录第一章引言 (1)第二章基本原理 (3)2.1 AMC基本原理 (3)2.2信道编码 (4)2.3调制 (5)2.3.1 BPSK ................................................ 和QPSK调制52.3.2 16QAM调制 (6)第三章仿真分析 (8)3.1误码率分析 (8)3.2误块率分析 (8)3.3 信息传输速率分析 (9)3.4结论 (10)参考文献 (13)附录 (14)i / 30i / 30ii / 30ii / 30第一章引言随着现代无线通信技术的飞速发展以与人们对无线数据业务需求的快速增长, 高速无线数据传输迫切需要开发出能够有效抗信道衰落的高频谱利用率、高可靠性和智能化的通信技术。

其中如何提高系统在衰落信道中的频谱利用率, 逐渐成为无线通信技术的研究热点。

而自适应编码调制技术正是以其智能化的传输机制、高效的频谱利用率得到了业界的广泛关注与研究, 从而成为目前和未来无线通信系统的关键技术之一。

对于现在的无线通信系统, 假如以最优信道状态来设计系统, 传输将是不稳定的, 因而无法实现要求连续传输的业务, 另一方面, 如果以最差信道状态为基准, 对于较为理想的信道则会造成浪费。

针对这种情况, 人们设计了自适应编码调制技术, 在自适应无线通信系统中, 接收端估计信道状态, 并通过反馈信道传回发射端, 针对当前的信道状态, 设计合适的发射功率、调制模式、编码形式等从而使系统的整体传输性能达到最优, 满足高效可靠传输的目的。

1 / 301 / 302 / 302 / 30第二章基本原理2.1 AMC基本原理AMC的基本原理是通过信道估计,获得信道的瞬时状态信息,根据无线信道变化选择合适的调制和编码方式。

网络侧根据用户瞬时信道质量状况和目前无线资源,选择最合适的下行链路调制和编码方式,从而提高频带利用效率,使用户达到尽量高的数据吞吐率。

当用户处于有利的通信地点时(如靠近基站或存在视距链路),用户数据发送可以信道编码方案,例如:QPSK和1/2编码速率,来保证通信质量。

图2.1 OFDM系统中自适应编码调制实现原理框图如图2.1,在OFDM系统中发射端,输入的信号经过编码、调制、OFDM信号的产生,然后发射出去,经过时变信道后,在接收端,经3 / 303 / 30过OFDM信号的接收、解调、译码,最后得到所需要的数据。

其中的编码采用的是卷积码,调制方式采用的是QPSK或16QAM。

当前的信道状态信息可以通过信道估计得到,然后通过一定的自适应算法来控制输入端的编码和调制以与接收端相应的解调和译码。

其中编码和译码的自适应调节参数是信道编码的码率,码率根据信道状态来自适应地调整。

同样调制和解调的方式也是根据信道状态来确定选择QPSK和16QAM两种中的一种。

2.2信道编码由于移动通信存在干扰和衰落,在信号传输过程中将出现差错,故对数字信号必须采用纠、检错技术,即纠、检错编码技术,以增强数据在信道中传输时抵御各种干扰的能力,提高系统的可靠性。

对要在信道中传送的数字信号进行的纠、检错编码就是信道编码。

通常纠卷积码(2,1,2)图2.2 卷积码(2,1,2)框图2.3调制2.3.1 BPSK 和QPSK调制在二进制数字调制中,当正弦载波的相位随二进制数字基带信号离散变化时,则产生BPSK(Binary Phase Shift Keying)信号。

通常用以调信号载波的0度和180度分别表示数字基带信号的1和0。

一个BPSK符号表示一个比特。

QPSK则是用载波的四个相位分别表示00、01、10和11。

一个QPSK符号可以表示二个比特。

下图2.3是QPSK的星座图,5 / 305 / 306 / 306 / 30图2.3 QPSK 的星座图2.3.2 16QAM 调制16QAM 一个符号可以表示4个比特,如下是16QAM 的星座图。

QAM 调制星座图中的点不再位于单位圆上,而是分布在复平面的一定范围内,各点如果模相同,则相位必不相同,如果相位相同则模必不相同。

Q u a d r a t u r eIn-Phase16QAM 星座图图2.4 16QAM 星座图7 / 307 / 308 / 308 / 30第三章 仿真分析3.1误码率分析图3.1 误码率分析本文针对不同编码速率不同调制格式在五种情况下做了仿真,结果如上图3.1。

其中R=1/3 Bpsk 调制的误码率最低,R=1/2 16QAM 调制的误码率最高。

比较可以看出,同样的信噪比条件下,高的编码速率和高阶调制抗干扰能力越弱,误码率越高。

3.2误块率分析101010101010SNR/dbB E RAMC 分析-误码率9 / 309 / 30由于实际通信中编码以比特块进行的(比如统一以100个比特为一块进行编码传送),所以误块率更具有参考价值。

图3.2 误块率同样,高阶调制,高的编码速率误块率越高,抗干扰能力差。

3.3 信息传输速率分析在码元速率一样的前提下,R=1/3 Bpsk 的最大传输速率最低,以其为基准,R=1/2 Bpsk 的最大传输速率是R=1/3 Bpsk 的1.5倍。

未编码Bpsk 和R=1/2 Qpsk 的最大传输速率是R=1/3 Bpsk 的2倍。

R=1/2 QAM 是的最大传输速率是R=1/3 Bpsk 的6倍。

在不同的误码率情况下,仿真计算每种方式的吞吐量(传输速率)。

SNR/db误块率10 / 3010 / 30图3.3 吞吐量(传输速率)分析由上图3.3可以看出,虽然R=1/2 16QAM 调制的最大传输速率是R = 1/3 BPSK 调制的6倍,但是在信道条件不好(信噪比较低)的情况下,R = 1/3 BPSK 调制的吞吐量还是比R=1/2 16QAM 调制的高的。

3.4结论为提高信息传输速率,可以检测信道的条件,利用AMC 技术,当用户处于有利的通信地点时(小区中心),可以采用高的编码速率和高阶调制,从而得到高的峰值速率;而当用户处于不利的通信地点时(如位于小区边缘)采用低的编码速率和低阶调制方式来保证通信质量。

SNR/db传输速率11 / 3011 / 3012 / 3012 / 30参考文献[1]张辉曹丽娜主编现代通信原理与技术[2]刘爱莲主编纠错编码原理与MATLAB实现[3]刘学勇编著ATLAB/Simulink通信系统建模与仿真13 / 3013 / 30附录源程序文件1 wukuai.m•function out = Wukuai(x,y)% 统计误块率% 统计出错的的块的个数(块的大小是100)% x是输入信息msg ,y是接码后的信息dsgn=length(x);number = ceil(n/100);wrongblock = zeros(1,number);%标记出错的块,1 代表错误,0 代表正确for k=1:numberif k == numbera = x(100*(k-1)+1 : end);b = y(100*(k-1)+1 : end);elsea = x(100*(k-1)+1 : 100*k);b = y(100*(k-1)+1 : 100*k);enderr = (a ~= b);c=sum(err);14 / 3014 / 30if c>0wrongblock(k) = 1;endendout = sum(wrongblock)/number;end文件2clcclear allSNR = 0: 1.5 : 22; % 信噪比msg = randint(1,100000); % 输入信息BER0 = zeros(1,length(SNR));BER1 = zeros(1,length(SNR));BER2 = zeros(1,length(SNR));BER3 = zeros(1,length(SNR));BER4 = zeros(1,length(SNR));%误块率Wrongblock0 = zeros(1,length(SNR));Wrongblock1 = zeros(1,length(SNR));Wrongblock2 = zeros(1,length(SNR));Wrongblock3 = zeros(1,length(SNR));15 / 3015 / 30Wrongblock4 = zeros(1,length(SNR));%传输速率(吞吐率)cap0 = zeros(1,length(SNR));cap1 = zeros(1,length(SNR));cap2 = zeros(1,length(SNR));cap3 = zeros(1,length(SNR));cap4 = zeros(1,length(SNR));%--------------------------------------------------------%网络结构%trelllist1 1/2 编码速率trellis1 = poly2trellis(3,[5,7]);%trellist2 1/3 编码速率trellis2 = poly2trellis(3,[1 6 5]);%-----------------------------------------------------------------%未编码的误码率2pskmodbit0 = pskmod(msg,2);for k = 1 : length(SNR)y0 = awgn(modbit0,SNR(k),'measured'); %在传输序列中加入AWGN噪声demmsg0 = pskdemod(y0,2); %解调recode0 = reshape(demmsg0',1,[]);[num0,rat0] = biterr(recode0,msg);16 / 3016 / 30BER0(k) = rat0; %误码计算Wrongblock0(k) = Wukuai(msg,recode0);%计算吞吐率以r=1/3 2psk 为基准%(2psk)是其2倍cap0(k) = (1 - Wrongblock0(k)) * 2;end%-----------------------------------------------------------------------%编码的误码率1/2 编码速率2pskcode1 = convenc(msg,trellis1); %编码modbit1 = pskmod(code1,2); %调制for k = 1 : length(SNR)y1 = awgn(modbit1,SNR(k),'measured'); %在传输序列中加入AWGN噪声demmsg1 = pskdemod(y1,2); %解调recode1 = reshape(demmsg1',1,[]);tblen = 5; %回潮长度decoded1 = vitdec(recode1,trellis1,tblen,'cont','hard'); %译码[num1 ,rat1] = biterr(double(decoded1(tblen+1 : end)),msg(1: end - tblen)); %误码计算BER1(k) = rat1;17 / 3017 / 30Wrongblock1(k) = Wukuai(double(decoded1(tblen+1 : end)),msg(1: end - tblen));%计算吞吐率以r=1/3 2psk 为基准%(r = 1/2 2psk)是其1.5倍cap1(k) = (1 - Wrongblock1(k)) * 1.5;end%编码的误码率1/3 编码速率2pskcode2 = convenc(msg,trellis2);modbit2 = pskmod(code2,2);for k = 1 : length(SNR)y2 = awgn(modbit2,SNR(k),'measured'); %在传输序列中加入AWGN噪声demmsg2 = pskdemod(y2,2); %解调recode2 = reshape(demmsg2',1,[]);tblen = 5; %回潮长度decoded2 = vitdec(recode2,trellis2,tblen,'cont','hard'); %译码[num2 ,rat2] = biterr(double(decoded2(tblen+1 : end)),msg(1: end - tblen)); %误码计算BER2(k) = rat2;Wrongblock2(k) = Wukuai(double(decoded2(tblen+1 : end)),msg(1: end - tblen));18 / 3018 / 30%计算吞吐率以r=1/3 2psk 为基准cap2(k) = (1 - Wrongblock2(k)) * 1;end%编码的误码率r = 1/2 qpsk 2code3 = convenc(msg,trellis1); %编码deccode1 = zeros(1,length(code3)/2); %二进制码变为4进制消息数据demmsg1 = zeros(1,length(code3));for i = 1 : length(code3)/2str1 = int2str(code3(2*i-1)) ;str2 = int2str(code3(2*i)) ;deccode1(i) = bin2dec(strcat(str1,str2));endM = 4;graycode=[0 1 3 2]; %gray编码规则graymsg = graycode(deccode1+1); %gray映射for k = 1 : length(SNR)modbit3 = pskmod(graymsg,M); %基带qpsk调制y3 = awgn(modbit3,SNR(k),'measured'); %在传输序列中加入AWGN噪声yjie = pskdemod(y3,4); %解调19 / 3019 / 30decmsg = graycode(yjie+1);for i = 1 : length(decmsg)temp = dec2bin(decmsg(i),2);demmsg1(2*i-1) = str2num(temp(1));demmsg1(2*i) = str2num(temp(2));endrecode3 = reshape(demmsg1',1,[]);tblen = 5; %回潮长度mdecoded3 = vitdec(recode3,trellis1,tblen,'cont','hard'); %译码[num3 ,rat3] = biterr(double(mdecoded3(tblen+1 : end)),msg(1: end - tblen)); %误码计算BER3(k) = rat3;Wrongblock3(k) = Wukuai(double(mdecoded3(tblen+1 : end)),msg(1: end - tblen));%计算吞吐率以r=1/3 2psk 为基准%(r = 1/2 qpsk)是其2倍cap3(k) = (1 - Wrongblock3(k)) * 2;end%编码的误码率r = 1/2 16qam 4code4= convenc(msg,trellis1); %编码20 / 3020 / 30demmsg4 = zeros(1,length(code4));M=16;x4=reshape(code4,4,length(code4)/4); %将原始的二进制比特序列每四个一组分组,并排列成4行length(code4)/4列的矩阵xsym=bi2de(x4.','left-msb');deccode4 = xsym'; %二进制码变为16进制消息数据%----------------------------------------------------------------------graycode=[0 1 3 2 6 7 5 4 12 13 15 14 10 11 9 8]; %gray 编码规则ungraycode4=[1 2 4 3 8 7 5 6 16 15 13 14 9 10 12 11] %gray反解码graymsg = graycode(deccode4+1); %gray映射for k = 1 : length(SNR)modbit4 = qammod(graymsg,M); %基带16qam调制y4 = awgn(modbit4,SNR(k),'measured'); %在传输序列中加入AWGN噪声yjie4 = qamdemod(y4,M); %16qam解调21 / 3021 / 30decmsg4 = ungraycode4(yjie4+1)-1;for i = 1 : length(decmsg4)temp = dec2bin(decmsg4(i),4);demmsg4(4*i-3) = str2num(temp(1));demmsg4(4*i-2) = str2num(temp(2));demmsg4(4*i-1) = str2num(temp(3));demmsg4(4*i) = str2num(temp(4));endrecode4 = reshape(demmsg4',1,[]);tblen = 5; %回潮长度mdecoded4 = vitdec(recode4,trellis1,tblen,'cont','hard'); %译码[num4 ,rat4] = biterr(double(mdecoded4(tblen+1 : end)),msg(1: end - tblen)); %误码计算BER4(k) = rat4;Wrongblock4(k) = Wukuai(double(mdecoded4(tblen+1 : end)),msg(1: end - tblen));%计算吞吐率以r=1/3 2psk 为基准%(r = 1/2 16qam)是其6倍cap4(k) = (1 - Wrongblock4(k)) * 6;end22 / 3022 / 30%计算吞吐量假设各种调制方式的码元传输速率是一样的,%以R=1/3 bpsk 调制为基准%----------------------------------------------------------------------%画图length(SNR)figure(1)%semilogy(SNR,BER0,'k-',SNR,BER1,'k-s',SNR,BER2,'g-d iamond',SNR,BER3,'r--s');semilogy(SNR,BER0,'k-',SNR,BER1,'k-s',SNR,BER2,'g-dia mond',SNR,BER3,'r--s',SNR,BER4,'b--s');xlabel('SNR/db');ylabel('BER');legend('未编码Bpsk','R=1/2 Bpsk','R=1/3 Bpsk','R=1/2 Qpsk','R=1/2 16QAM');%legend('未编码2psk','卷积编码2psk(R=1/2)','卷积编码2psk(R=1/3)','卷积编码qpsk(R=1/2)');title('AMC分析-误码率')grid onfigure(2)plot(SNR,Wrongblock0,'k-',SNR,Wrongblock1,'k-s',SNR,W rongblock2,'g-diamond',SNR,Wrongblock3,'r--s',SNR,Wrongbl23 / 3023 / 30ock4,'b--s');axis([0 22 0 1]);xlabel('SNR/db');ylabel('误块率');legend('未编码Bpsk','R=1/2 Bpsk','R=1/3 Bpsk','R=1/2 Qpsk','R=1/2 16QAM');%legend('卷积编码2psk(R=1/2)','卷积编码2psk(R=1/3)','卷积编码qpsk(R=1/2)'R=1/2 16QAM');title('AMC分析-误块率')grid onfigure(3)plot(SNR,cap0,SNR,cap1,'k-s',SNR,cap2,'g-diamond',SNR ,cap3,'r--s',SNR,cap4,'b--s');axis([0 22 0 6]);xlabel('SNR/db');ylabel('传输速率');legend('未编码Bpsk','R=1/2 Bpsk','R=1/3 Bpsk','R=1/2 Qpsk','R=1/2 16QAM');%legend('卷积编码2psk(R=1/2)','卷积编码2psk(R=1/3)','卷积编码qpsk(R=1/2)'R=1/2 16QAM');title('AMC分析-传输速率(码元速率一样)')grid on24 / 3024 / 30。

相关主题