夏班长谈OFDM通信系统仿真。
?最近也是晴多雾少。最痛苦的是下周OFDM的通信系统测试。想必同学的脑洞都比我大,很多同学问我这个OFDM怎么做。我也简单说说高斯信道下的OFDM系统,其实我也说说瑞利和莱斯信道下的OFDM。不过别问了,有点难。
他们跟我们沟通就是装修宽带和电线,其实不是。是该拼实力,还是该懂点常识?
信源编码:注重信号容量压缩,提高传输效率。
信道编码:为可变信道插入冗余信息,增加传输稳定性(在设计的OFDM中插入CP(循环前缀),导频信号为冗余信息)。
信号调制:将比特流转换成稳定的波形以便传输。
比如:sint?然后呢。sin2t?是一对正交信号,因为sint*sin2t在区间内;%输入序列xk
sn = IFFT(xk);?%IFFT后的序列号序列输出
?可以得到输入序列后的IFFT曲线。
%////////////////////////////////////////////////////////////////////////////////////////////////////
使用公式:f(t)=∑fk e(j . 2πδf kt)。
对于QPSK调制,OFDM符号中有两个比特。
(对应于OFDM符号和调制方案的比特数:(QPSK: 2),(16QAM: 4),(64QAM: 6)?)
根据公式找出副载波。
副载波百分比
e 1 = exp(1i * 2 * pi * f * t);
E2 = exp(1i * 2 * pi * f * t * 2);
E3 = exp(1i * 2 * pi * f * t * 3);
E4 = exp(1i * 2 * pi * f * t * 4);
OFDM基带复信号的表达
ST = d 1 * e 1+D2 * E2+D3 * E3+D4 * E4;?%展开上面的公式。
画一幅圣彼得的画像。
我们比较上面的st和sn图像。
(上图为实部,下图为虚部)
令人惊讶的发现,IFFT之后的图是公式图的离散值!所以OFDM系统和傅立叶级数有着亲密不可分的感情,比如牛郎织女,杨贵妃和唐玄宗,葫芦娃和爷爷。。。。。这似乎有点奇怪
?所以IFFT模块的作用相当于说:不用费心发N个副载波信号,我直接计算你在空中会叠加什么;FFT模块的作用相当于说:不要用老式的积分法去掉其他正交的子载波,让我帮你一下子把N个载波信号全部算出来。
最后,设计要进行了。前面太多了,我都打累了。原来写文章这么辛苦,我觉得司马迁比牛。。
先说最简单的高斯信道。我们走吧。
如上所述,傅立叶变换在OFDM系统中起着重要的作用,所以我们在OFDM系统的仿真中使用了IFFT和FFT算法。
高斯信号就是通过这个信道在信号中加入高斯白噪声。
在maltab通信系统的仿真中,我们使用AWGN (TRDATA 1,SNR,'实测');向信号TrData1添加高斯白噪声的函数。
信号经过无线信道后,其信号幅度是随机的,即衰落,其包络服从瑞利分布。
接收到的信号有四个效果:1。暗影2。距离3。多路4。多普勒频移。
简单地说,莱斯信道比瑞利信道多一个DC分量。
就是我们所说的循环前缀,那为什么还要加上CP循环前缀的冗余信息呢?为了抵抗由多径效应引起的ICI(载波间干扰),还应该注意,CP占用每个OFDM符号的大约1/15资源。
通过训练序列插入导频信号的信息,实时估计信道,然后对信号进行校正,以降低解调时的误码率。
发件人:
第一步:生成随机序列?Signal=rand(1,para*Ns*2)>0.5
其中,我们设置并行传输的子载波的数量。
Ns是帧结构中OFDM信号的数量。
第二步:进行串并转换。
串并行转换成一个非常重要的函数整形函数
它的用法是:SIG para = shape(signal,para,ns * 2);将原始信号信号转换成并行Ns*2列信号。
重塑(a,m,n);首先将矩阵A分成列,然后拼接成m * n大小的向量..
第三步:QPSK调制。
(1)将数据分为两个通道,I通道和Q通道。
该功能如下所示:
对于j=1:Ns
ich(:,j)=SigPara(:,2 * j-1);
qch(:,j)=SigPara(:,2 * j);
结束
(2)根据QPSK映射关系,获得输入数据。
kmod=1。/sqrt(2);
ich1=ich。* kmod
qch1=qch。* kmod?%QPSK映射关系
步骤4:插入保护间隔
ich3=[ich2(fl-gl+1:fl,);ich 2];
qch3=[qch2(fl-gl+1:fl,:);qch 2];
我们选择gl = 32:复制信号的最后32组数据,加到原信号上——加强容错。
步骤5:并行-串行转换
ich4=reshape(ich3,1,(fl+GL)* Ns);
qch4=reshape(qch3,1,(fl+GL)* Ns);
形成多个传输数据:trdata1 = ich4+qch4。* sqrt(-1);
第六步:在传输的数据中加入高斯白噪声。
ReData=awgn(TrData1,SNR,'实测');
%///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
接收端:
步骤1:移除保护间隔。
(1)来复制数据。
idata = real(ReData);添加噪声后的实部百分比
qdata = imag(ReData);添加噪声后的虚部百分比
(2)数据的串并行转换
idata1 = reshape(idata,fl+gl,Ns);
qdata1 = reshape(qdata,fl+gl,Ns);
(3)移除保护间隔
idata 2 = idata 1(GL+1:GL+fl,);
qdata 2 = qdata 1(GL+1:GL+fl,);
idata1的每一列从gl+1到gl+fl的数据构成iadta2。
第二步:快速傅立叶变换
步骤3: QPSK解调:
(1)FFT转换后的数据/komd?
?(2)并行-串行转换
(3)重组信号
第四步:抽样判断
ReSig = Res & gt0.5;对上述重组信号进行分析后,大于0.5的信号赋为1,小于0.5的信号赋为0。
第五步:计算出错的概率。
err = 0;
对于I = 1:para * Ns * 2;
if (Signal(i)~=ReSig(i))
err = err+1;%获取错误代码的数量。
结束
结束
PE = err/(para * Ns * 2);
取多组信噪比值,加入高斯信道,可以得到snr-Pe曲线
%///////////////////////////////////////////////////////////////////////////////////////
图为瑞利信道下的OFDM(无信道估计)。
可以看出,当加入多径和多普勒频移时,信道误码率从3%上升到30%左右,瑞利信道完全破坏了信号传输。
引入导频信号
我们正在添加排飞行员和排飞行员。
A =[A;R]插入该行?插值
在行之间添加引导:
ich2= [zeros(fl,1) ich21(:,[1:Ns/2]) zeros(fl,1) ich21(:,[Ns/2+1:Ns]) zeros(fl,1)];
在行间添加导频:
ich 2 =[零(1,(Ns+3));ich2(1:fl/2,);零(1,(Ns+3));ich2((fl/2)+1:fl,);零(1,(Ns+3))];?
加入的结果:
在添加导频信号之后,可以使用LS算法来估计信道。
LS算法的基本原理:Y = HX+N?其中n是噪声信号,h是通道的频率响应,y和x是输出和输入信号的响应。
在理想信道下:H’= Y/X输入除以输出(其中Y为通过瑞利信道后的信号),即可得到频率响应H’的估计。
我们用得到的H '依次计算X的估计:X' = Y/H '?获取新输入。x’经受去导频的后续处理。
对于j = 1:(Ns+3)
对于i = 1:(para+3)
Hls(i,j) = idata21(i,j)。/ich2(i,j);
ixg(i,j) = idata21(i,j)。/ Hls(i,j);
hls(i,j) = qdata21(i,j)。/qch2(i,j);
qxg(i,j) = qdata21(i,j)。/ hls(i,j);
结束
结束
添加信道估计后的误码率示意图:
在OFDM系统中,只有高斯白噪声时OFDM系统的影响很小,在高斯信道中OFDM设计的优势很小。
但是在瑞利信道中,OFDM导频信号、CP和信道估计保护了传输的信号。在接收多径和多普勒频移的情况下,可以有效地恢复原始信号。
在没有信道估计的OFDM - Rayleigh系统中,多径、距离、阴影和多普勒频偏对信号造成了严重的干扰。不能正常传输,误码率严重。
。。。。。。。我厌倦了打字。里面可能有些错误。请指正。