资源描述
(无线局域网场景)
一、PBL问题二:
试设计一种完整无线通信系统物理层传播方案,规定满足如下指标:
1. Data rate :54Mbps,Pe<=10-5 with Eb/N0 less than 25dB
2. 20 MHz bandwidth at 5 GHz frequency band
3. Channel model :设系统工作在室内环境,有4条径,无多普勒频移,各径相对时延为:[0 2 4 6],单位为100ns ,多径系数服从瑞利衰落,其功率随时延变化呈指数衰减:[0 -8 -16 -24]。
请给出如下成果:
A. 收发机构造框图,重要参数设定
B. 误比特率仿真曲线(可假定抱负同步与信道预计)
二、系统选取及设计设计
1、系统规定
20MHz带宽实现5GHz频带上无线通信系统;
速率规定:R=54Mbps;
误码率规定:Pe <=10^ (-5)。
2、方案选用
依照参数规定,选取802.11a作为方案基准,并在此基本上进行某些改进,使实际系统达到设计规定。
802.11a中对于数据速率、调制方式、编码码率及OFDM子载波数目拟定如表 1 所示。
Data rate
(Mbits/s)
Modulation
Coding rate
(R)
Code bits per subcarrier
(NBPSC)
Coded bits per OFDM symbol
Data bits per OFDM symbol
(NDPSC)
6
BPSK
1/2
1
48
24
9
BPSK
3/4
1
48
36
12
QPSK
1/2
2
96
48
18
QPSK
3/4
2
96
72
24
16-QAM
1/2
4
192
96
36
16-QAM
3/4
4
192
144
48
64-QAM
2/3
6
288
192
54
64-QAM
3/4
6
288
216
表1 802.11a定义数据速率、调制方式、编码码率及OFDM子载波数目
与时延扩展、保护间隔、循环前缀及OFDM符号持续时间有关参数如表 2 所示。
Parameter
Value
NSD:Number of data subcarries
48
NSP:Number of pilot subcarries
4
NST:Number of subcarries,total
52(NSD+NSP)
ΔF:Subcarrier frenquency spacing
0.3125MZ(=20MHz/64)
TFFT:IFFT/FFT period
3.2μs(1/ΔF)
TPREAMBLE:PLCP preamble duration
16μs(TSHORT+TLONG)
TSIGNAL:Duration of the SIGNAL BPSK-OFDM symbol
4.0μs(TG1+TFFT)
TG1:G1 duration
0.8μs(TFFT/4)
TG2:G2 duration
1.6μs(TFFT/2)
TSYM:Symbol interval
4μs(TG1+TFFT)
TSHORT:Short training sequence duration
8μs(10*TFFT/4)
TLONG:Long training sequence duration
8μs(TG2+2*TFFT)
表2 1802.11a定义与时延扩展、保护间隔、循环前缀及OFDM符号持续时间有关参数
参照原则选取OFDM系统来实现,详细参数选取如下述。
3、OFDM简介
OFDM基本原理是将高速信息数据编码后分派到并行N个互相正交子载波上,每个载波上调制速率很低(1/N),调制符号持续间隔远不不大于信道时间扩散,从而可以在具备较大失真和突发性脉冲干扰环境下对传播数字信号提供有效保护。OFDM系统对多径时延扩散不敏感,若信号占用带宽不不大于信道相干带宽,则产生频率选取性衰落。OFDM频域编码和交织在分散并行数据之间建立了联系,这样,由某些衰落或干扰而遭到破坏数据,可以通过频率分量增强某些接受数据得以恢复,即实现频率分集。
OFDM克服了FDMA和TDMA大多数问题。OFDM把可用信道提成了许各种窄带信号。每个子信道载波都保持正交,由于她们频谱有1/2重叠,既不需要像FDMA那样多余开销,也不存在TDMA 那样多顾客之间切换开销。
过去多载波系统,整个带宽被提成N个子信道,子信道之间没有交叠,为了减少子信道之间干扰,频带与频带之间采用了保护间隔,因而使得频谱运用率减少,为了克服这种频带挥霍,OFDM采用了N个交叠子信道,每个子信道波特率是1/T,子信道间隔也是1/T,这时各个子载波之间是正交,因而在收端无需将频谱分离即可接受。由于OFDM容许子载波频谱混叠,其频谱效率大大提高,因而是一种高效调制方式。OFDM频谱如图1所示。
图1 OFDM信号频谱示意图
可以证明这种正交子载波调制可以用IFFT来实现。需要指出是OFDM既是一种调制技术,也是一种复用技术。图2给出了OFDM系统框图,在系统中调制解调是使用FFT和IFFT来实现。
图2 OFDM系统框图
3、参数拟定
在OFDM系统设计中,需要折中考虑各种系统规定,这些需求经常是矛盾。普通有3个重要系统规定需要重点考虑:系统带宽W、业务数据速率R及多径时延扩展,涉及时延扩展均方根和最大值。按照这3个系统参数,设计环节可分为3步。
一方面,拟定保护时间。多径时延扩展直接决定了保护时间大小。作为重要设计准则,保护时间至少是多径时延扩展均方根2-4倍,即(2-4) 。保护时间取值依赖于系统信道编码与调制类型。高阶调制(如64QAM)比低阶调制(如QPSK)对于ICI和ISI干扰更加敏感。,而编码纠错能力过目越强,越能减少这种对干扰敏感特性。
一旦保护时间拟定,则OFDM符号周期也就拟定就可以拟定,其中T表达IFFT积分时间,其倒数就是相邻载波间隔,即。为了尽量地减小由于保护时间导致信噪比损失,普通规定符号周期远不不大于保护时间。但是,符号持续时间并不是越长越好,因这符号持续时间越长,则意味着需要子载波数目越多,相邻子载波机间隔就会越小,增长了收发信机实现复杂度,并且系统对于相位噪声和频率偏移更加敏感,还增大了系统峰值-平均功率(PAPR)。在实际系统设计中,OFDM符号周期至少是保护时间5倍,这就意味着,由于引入了冗余时间,信噪比会损失1dB左右。
拟定了保护时间和符号周期后,就需要在3dB带宽内,决定子载波数目。一种办法是直接计算,即。另一种办法是,载波数目可以依照总数据比特速率除以每个子载波承载比特速率得到。子载波比特速率与调制类型、编码码率和符号速率都在关系。本系统采用第二种办法拟定子载波数目
详细参数如下所示:
参数设计
阐明
symbol_num = 10000
发送符号数(number of symbols to be transmitted )
fp = 5e9
中心频率(central frequency )
fc = 20e6
抽样频率(sampling frequency)
Ts= 50e-9
抽样时间(sampling time)
T0= 2.4e-6
data length (=48*50e-9)
TP= 0.8e-6
cyclic prefix (=16*50e-9)
TG = 0.8e-6
total guard time (=16*50e-9
T=T0+TP+TG
OFDM符号周期4000ns:(满足TP/T=20%)
A = 1
amplitude of the rectangular impulse response
N = 64
number of carriers of the OFDM system
1) 一方面计算信息量。由R达到54Mbps可以得到每个OFDM块需要承载信息量为:
54*10^6*4*10^(-9) = 216bit
2) 选取调制方式。采用64QAM调制,一种子载波6bit则需要216/6 = 36个子载波。
3) 编码。采用3/4码率卷积码编码,所需子载波数目为36/(3/4)=48个。
4) 计算传播速率:R=(48*6bit*3/4)/(4000*10^(-9))=54Mbps
以上设计满足系统规定。
三、系统实现
1、收发机框图
依照上述系统设计,收发机框图设计如下图所示:
图3 收发机框图
2、系统模块接口
数据产生: data_transmit=randint(1,num*symbol_num);
卷积码编码: trel=poly2trellis([3 3 3],[7 7 0 4;3 2 7 4;0 2 3 7]);
[data_conv,fstate] = convenc(data_transmit,trel);
64QAM调制:data_mod=modulate(data_conv);
64QAM解调:data_demod=demodulate(data_fft_ps);
卷积码译码: tblen = 3*1000;% Traceback length
data_receive = vitdec(data_vitdec_in,trel,tblen,'trunc','soft',1)。
3、程序流程图
依照系统设计和收发机框图,编码实现该系统。程序流程如下图所示:
图4 程序流程图
4、程序清单(见附录)
四、系统仿真成果及分析
1、64QAM星座图:
图5 16QAM星座图
图6 64QAM仿真图
2、通过多径信道信号波形:
图7 通过多径信道后输出波形
3、在多径信道中叠加AGWN后波形:
图7 叠加AGWN后输出波形
4、均衡前:
图8 均衡前波形
5、均衡后:
图9 均衡后波形
均衡后各点幅度变化范畴在[-7,+7]之间,这与星座点取值(-7-7j,……,+7+7j)关于。
6、误比特率曲线:
图10 误比特率
误比特率,运用转换公式,得到。
五、总结
1、系统设计总结
依照Matlab程序运营后仿真成果,可以得到验证,即:
咱们所设计OFDM系统可以满足系统设计规定:
20MHz带宽实现5GHz频带上无线通信系统;
速率规定:R=54Mbps;
误码率规定:Pe <=10^ (-5)。
2、设计中遇到问题和解决
1)时域均衡时间选取
由数字信号解决理论可知,只有时域循环卷积,才等效为频域线性相乘。因此,均衡位置应当在去CP之后,而不能在一开始就进行频域均衡,由于一开始不是循环卷积,不能等效为频域线性乘法。
因而,频域均衡位置应当在去CP之后,FFT正好是去CP之后,因此可以在FFT之后进行频域均衡。
2)噪声能量计算原理
文献所给Eb/N0是指接受端信噪比,加噪声要依照Eb值算出相应噪声。可以在经历框图每一模块时,看其能量与否发生了变化,并将其归一化,保证系统是无源系统,不会因而而影响输出成果。注意是FFT和IFFT可以对输入它信号能量进行变化,要进行某些解决。如信号进行IFFT之后能量会减小为本来1/N,要对其进行能量计算,而FFT之后,信号能量会增大为本来N倍,也要进行能量计算,保证信号通过都是无源模块。
OFDM能否克服样值间干扰,样值干扰与ICI OFDM消除干扰是在频域中进行,由于循环卷积就等于频域线性相乘,没有收入干扰。所提这里样值干扰是指时域上干扰,在时域看来是有干扰,并不能消除它;在频域看来,各个子载波是独立,没有互相间干扰,即没有ICI。
OFDM消除干扰是在频域中进行,由于循环卷积就等于频域线性相乘,没有收入干扰。所提这里样值干扰是指时域上干扰,在时域看来是有干扰,并不能消除它;在频域看来,各个子载波是独立,没有互相间干扰,即没有ICI。
因而,OFDM系统在时域上是有样值干扰,但是在频域上没有ICI。
附录
1、 主程序:
文献名:run.m
%------------------------------无线通信系统实现-----------------------------
%
% *************************************************************************
% 一、系统规定:
% *************************************************************************
%
% 实现20MHz带宽5GHz频带上无线通信系统
% 满足速率规定:R=54Mbps;
% 误码率规定:在 25dB信噪比条件下,Pe <=10^ (-5);
%
%**************************************************************************
% 二、参数拟定:
% *************************************************************************
%
% symbol_num = 10000; % 发送符号数
% fp = 5e9; %中心频率
% fc = 20e6; % 抽样频率
% Ts = 50e-9 %抽样时间
% T0 = 2.4e-6; % 数据长度 (=48*50e-9)
% TP = 0.8e-6; % cyclic prefix (=16*50e-9)
% TG = 0.8e-6; % total guard time (=16*50e-9)
% T=T0+TP+TG; % OFDM符号周期4000ns:(满足TP/T=20%)
% A = 1; % amplitude of the rectangular impulse response
% N = 64; % number of carriers of the OFDM system
%
% ------------------------------------------------------------------------
%
% 由R达到54Mbps可以得到每个OFDM块需要承载信息量为:
% 54*10^6*4*10^(-9)=216bit,采用64QAM星座映射,
% 一种载波承载6bit,仅需36个子载波,采用3/4 码率,
% 所需子载波数为48.此时可达到传播速率为
% R=(48*6bit*3/4)/(4000*10^(-9))=54Mbps,符合系统规定。
% R=3/4; %编码效率
%
% *************************************************************************
clear all;
close all;
clc;
data_carrier_num=48;
carrier_num=64;
R=3/4;%卷积码编码效率
i1=0;% 中间变量
err_ratio=zeros(1,31);
for EbN0dB=0:1:30
sum_xu=0;
for loop=1:100
symbol_num=10000;% 符号个数
cp_len=16;% 循环前缀长度
% 数据产生
num=64*6*3/4;
data_transmit=randint(1,num*symbol_num);
% 卷积码编码
trel=poly2trellis([3 3 3],[7 7 0 4;3 2 7 4;0 2 3 7]);
[data_conv,fstate] = convenc(data_transmit,trel);
% 采用64QAM调制
data_mod=modulation(data_conv);
% 数据通过IFFT变换
data_ifft_in=reshape(data_mod,64,length(data_mod)/64);
data_ifft_out=ifft(data_ifft_in);
% 加CP
data_cp=[data_ifft_out((size(data_ifft_out,1)-cp_len+1:end),:);data_ifft_out];
data_ps=reshape(data_cp,1,size(data_cp,1)*size(data_cp,2));
% 输出符号能量归一化
data_ps=data_ps.*8;
Es=1;
Eb=Es*1/R*80/64*1/6;
N0=Eb./10^(EbN0dB/10);
sigma=sqrt(N0/2);
% % ------------------------------ 数据通过信道(down)----------------------------%
symbol_input=data_ps;
% 每径时延功率【0 -8 -16 -24】dB 转化成功率值
atten_power = [1 0.1585 0.0251 0.0040];
% 50ns样点间隔 每径时延【0 200 400 600】ns 转化成样点数表达
path_delay = [0 4 8 12];
% 求信号幅度衰减,并归一化总功率
atten = sqrt( atten_power );
atten = atten./sqrt(sum(atten.*conj(atten)));
% 输出样值序列
output = zeros(1,length(symbol_input)+ max(path_delay));
h = zeros(1,max(path_delay)+1);
for k = 1:length(path_delay)
signal=symbol_input.*atten(k);
output=output+[zeros(1,path_delay(k)),signal,zeros(1,max(path_delay)-path_delay(k))];
h=h+[zeros(1,path_delay(k)),atten(k),zeros(1,max(path_delay)-path_delay(k))];
end
symbol_output=output;
% %------------------------- 数据通过信道(up)---------------------------------%
%----------------------------add noise (down)--------------------------------%
output=symbol_output+sigma.*randn(1,length(symbol_output))+i*sigma.*randn(1,length(symbol_output));
output=output(1:length(symbol_input));
%---------------------------add noise (up)-----------------------------------%
% 去CP
temp=reshape(output,cp_len+carrier_num,length(output)./(cp_len+carrier_num));
data_fft_in=temp(cp_len+1:end,:);
% FFT变换
data_fft_out=fft(data_fft_in);
%--------------------------------------频域均衡(down)------------------------%
h_t=[h,zeros(1,carrier_num-length(h))]';
H=fft(h_t);
data_balance=zeros(size(data_fft_out));
for m1=1:size(data_fft_out,2)
data_balance(:,m1)=data_fft_out(:,m1)./H;
end
%------------------------------------------频域均衡(up)-----------------------%
% 64QAM解调
data_fft_ps=reshape(data_balance,1,size(data_balance,1)*size(data_balance,2));
data_fft_ps=data_fft_ps./8;
data_demod=demodulation(data_fft_ps);
data_vitdec_in=data_demod;
% 卷积码译码
tblen = 3*100;% Traceback length
data_receive = vitdec(data_vitdec_in,trel,tblen,'trunc','soft',1);%soft decision
sum_xu=sum_xu+sum(abs(data_receive-data_transmit));
end
i1=i1+1;
err_ratio(i1)=sum_xu./(num*symbol_num*loop);
end
semilogy(0:1:30,err_ratio);
hold on;
semilogy(0:1:30,err_ratio,'*');
grid on;
2、函数模块:
⑴ 64QAM调制函数:
文献名:modulation.m
function mod_out=modulation(mod_in)
if rem(length(mod_in),6)~=0 %%如果输入二进制序列数不是6倍数则进行补零操作
mod_in=[zeros(1,6-rem(length(mod_in),6)),mod_in];
end
mod_out=zeros(1,length(mod_in)/6);
R=reshape(mod_in,6,length(mod_in)/6); %%将输入序列变换为行数为6矩阵形式
B2D=bi2de(R','left-msb')+1; %%将二进制数转换为十进制数
Temp=[-7-7*j -7-5*j -7-j -7-3*j -7+7*j -7+5*j -7+j -7+3*j...
-5-7*j -5-5*j -5-j -5-3*j -5+7*j -5+5*j -5+j -5+3*j...
-1-7*j -1-5*j -1-j -1-3*j -1+7*j -1+5*j -1+j -1+3*j...
-3-7*j -3-5*j -3-j -3-3*j -3+7*j -3+5*j -3+j -3+3*j...
7-7*j 7-5*j 7-j 7-3*j 7+7*j 7+5*j 7+j 7+3*j...
5-7*j 5-5*j 5-j 5-3*j 5+7*j 5+5*j 5+j 5+3*j...
1-7*j 1-5*j 1-j 1-3*j 1+7*j 1+5*j 1+j 1+3*j...
3-7*j 3-5*j 3-j 3-3*j 3+7*j 3+5*j 3+j 3+3*j ]./sqrt(42);%%星座映射矩阵
for i=1:length(mod_in)/6
mod_out(i)=Temp(B2D(i));
end
scatterplot(mod_out); %%显示星座映射图
⑵ 64QAM解调函数:
文献名:demodulation.m
function [demod_out] = demodulation(demod_in)
d=zeros(64,length(demod_in));
D=zeros(64,length(demod_in));
m=zeros(1,length(demod_in));
temp=[-7-7*j -7-5*j -7-j -7-3*j -7+7*j -7+5*j -7+j -7+3*j...
-5-7*j -5-5*j -5-j -5-3*j -5+7*j -5+5*j -5+j -5+3*j...
-1-7*j -1-5*j -1-j -1-3*j -1+7*j -1+5*j -1+j -1+3*j...
-3-7*j -3-5*j -3-j -3-3*j -3+7*j -3+5*j -3+j -3+3*j...
7-7*j 7-5*j 7-j 7-3*j 7+7*j 7+5*j 7+j 7+3*j...
5-7*j 5-5*j 5-j 5-3*j 5+7*j 5+5*j 5+j 5+3*j...
1-7*j 1-5*j 1-j 1-3*j 1+7*j 1+5*j 1+j 1+3*j...
3-7*j 3-5*j 3-j 3-3*j 3+7*j 3+5*j 3+j 3+3*j ]./sqrt(42);
for i=1:length(demod_in)
for n=1:64
d(n,i)=(abs(demod_in(i)-temp(n))).^2;
end
[min_distance,constellation_point] = min(d(:,i)) ; %D(:,i)=sort(d(:,i));
%排序 (sort the distance in ascending order.)
m(i) = constellation_point;
end
A=de2bi([0:63],'left-msb'); %%将十进制数转换为二进制数
for i=1:length(demod_in)
DEMOD_OUT(i,:)=A(m(i),:);
end
demod_out=reshape(DEMOD_OUT',1,length(demod_in)*6);%%将解调出序列按行输出
展开阅读全文