第7章:OFDM 信道估计与均衡(4) :感谢读者gxsun的指点,我将指数衰减功率时延谱补充。 本文对应的完整可运行代码下载地址:123kevin456/OFDM- ,有读者反映缺少一个ber_temp,这个需要先运行bpsk_one_rayleigh.m这个函数,会生成ber_temp。 百度网盘链接:https://sigusoft.com/s/1AV5MvdA5N321hxfmCOY-9g 提取码:tvr6 本文增加了LS和MMSE的公式推导。 第7章(4)内容如下: 一、导频结构与图案 二、基于导频的信道估计算法和插值方法 三、完整可运行MATLAB代码及其注意点 四、总结 本文所有可运行代码下载地址是:123kevin456/OFDM- 一、导频结构与图案 前三讲介绍了OFDM经过AWGN信道和衰落信道的误码率情况,其中在第(2)节假设了接收端已经完美知道信道状态信息(Channel State Information,CSI)h,做了完美补偿(perfect compensation)。 那接收端是如何知道信道状态信息的呢?知道了又有什么用呢?这就要从导频信号说起了。 在5G NR系统中,可能会称其为参考信号,比如用于下行数据传输的物理信道(Physical Downlink Shared Channel,PDSCH)中的解调参考信号(Demodulation Reference Signal,DMRS)。
首先看到单径衰落信道的表达式:y=hx+n 假设只有一条径的衰落信道,不妨设x是bpsk调制,即可取1,或者-1。 发送端发送一大堆符号,为方便起见,比如
,经过信道后,接收端收到
。 此时一个问题摆在你的面前,h等于多少呢?面对这一串数据,你会做什么样的处理呢? 可能你马上会想到
。那么恭喜你,这便是最大似然估计(ML)。 (想想为什么是最大似然估计?以及说是最大似然估计,是否有前提条件要加上?思考几秒钟?) 当然,后面会介绍LS(最小平方)估计和MMSE(最小均方误差)估计。 那么导频符号是按照什么样的分布、出现在什么位置呢?这便是导频结构的问题。 导频结构可以分为三种:块状导频、梳状导频和格状导频。
看完上面的三种导频结构后,有两个关键问题出现在你的面前: (1)导频数量:即需要插入多少个导频。 若导频数量多了,信道估计较为准确,同时也会消耗更多的时频资源,减少了有效数据(Data payload)的传输。相反,倘若导频数量少了,可能信道估计不准,会对后续均衡和最终解调产生的一定影响。 例如频域上,是占1、5、9号子载波呢,还是1、5、9、13号子载波呢? 时域上,是占1slot中14个OFDM符号中的1个符号,还是2个符号?3个符号? 因此,导频的数量需要兼顾数据传输效率和开销等因素。 (2)导频位置:即导频插在哪些地方。 比如频域上,是占在第1号、5号、9号子载波位置呢?还是占在2号、6号、10号子载波位置呢?有区别吗? 时域上,是占在第2个符号,还是第3个符号,还是第8个符号呢?有区别吗? 体现在插值函数里,你可以看到区别。 本次仿真是采用梳状导频信号来做信道估计,代码中可以看到导频的位置与间隔。我设置了16个导频符号,间隔为4。 当然, 这里还没有考虑导频本身采用什么样的序列,以及这个序列是否和该系统中其他参数有联系。 举个例子,导频序列是采用[1 1 1 1 ……]呢?还是采用[1 -1 1 -1 1 -1……]呢,还是采用别的什么序列呢? 比如5G PBCH (物理广播信道)DMRS(解调参考信号)用于PBCH的信道估计,DMRS这个序列本身是Gold序列,但DMRS序列产生受到物理小区帧号,SSB时间索引,半无线帧标识的影响。
再拿5G NR中的PDSCH信道举例,时域上可能有单符号、双符号导频,有可能有附加导频(additional DM-RS)。
来自《5G New Radio A Beam-based Air Interface by Mihai Enescu》3.8节 频域上,导频密度(pilot density)可能会占1/2,或者1/3。
来自《5G New Radio A Beam-based Air Interface by Mihai Enescu》3.8节 本文中导频设计时也暂未提到空域资源,即导频映射到发射天线或者天线端口(antenna ports),这在MIMO-OFDM系统中是必不可少的部分。 二、基于导频的信道估计算法和插值方法 基于导频的信道估计方法,是在发送数据流中插入已知数据(导频符号),接收机根据这些已知数据经过信道衰落后的变化,就得到了导频信号所在时刻和子载波上信道衰落的估计值。 信道估计性能的优劣取决于两方面: (1)取决于使用算法的优劣,比如LS、MMSE算法;在这里尤其注意每一种算法所需的先决条件假设和应用场景。 (2)取决于该通信系统的导频图案是否能够较好反映信道响应,这一点需要考虑导频开销与效率的平衡。 注意到上面这句“导频信号所在时刻和子载波上信道衰落的估计值”,那“不处在导频信号所在时刻和子载波信道“,怎么办? 观察上面的导频结构图,均是时间和频率二维的。 不管是采用梳状、块状还是格状,都只知道其中某几个点的信道状况(对应到图里,便是黑色实心点),即要通过这些黑色点的信道状态信息,去想办法知道白色点的信道状况。 这便要介绍插值了,也叫内插和外推。 常见的插值函数是interp1,可以在MATLAB中help interp1中学习一下。下面给出的MATLAB代码也是使用的interp1这个插值函数。 除了上面基于导频的估计方法,其实ODFM还有基于判决反馈的信道估计方法、基于DFT的信道估计、基于叠加信号的信道估计、盲信道估计等等方法,在《MIMO-OFDM无线通信技术及MATLAB实现》中均有介绍。 基于DFT的信道估计这种算法也很实用,《MIMO-OFDM无线通信技术及MATLAB实现》再一次被我点名表扬,哈哈哈哈哈。 下面来看最重要的LS和MMSE均衡算法:
书上的6.14-6.17公式,这里需要补充一下信道的指数模型。 由常见函数的傅里叶变换对,可以知道
。 而在指数信道模型中,平均过量时延(公式1.19)和均方根时延扩展
相等,所以得到6.16。
此外,公式(1.19)、(1.20)和(1.21)对应MMSE_CE中的代码如下。 在一个指数衰减的多径功率时延谱(PDP)中,频域相关为公式6.16。虽然如果不是指数衰减的多径功率时延谱,怎么进行处理呢?类似地问题,书中并没有讲清楚。 因此,在这部分代码中,我是直接调用书中自带的MMSE_CE.m这个代码的。 顺便补充几点: 1、第一是来自知乎上的回答:
MATLAB 5G Toolbox“NR Cell Search and MIB and SIB1 Recovery”的信道估计算法是采用的DFT-LS加窗的方法,也没有使用MMSE信道估计,所以DFT-LS信道估计这种算法推荐学习一下,易于理解且实用。 2、我在知网上看到博士论文《OFDM系统的信道估计和信号均衡技术的研究》中,人家是怎么推LS和MMSE信道估计的,个人感觉比书中推公式较好。
三、完整可运行MATLAB代码及其注意点 先展示实验结果:
图2 不同信道估计和插值算法下的误码率曲线图 这张图是怎么来的呢?运行下面的代码即可。 运行上面的代码,完整的代码已经上传github,地址:123kevin456/OFDM- 有以下几点需要注意,当然也是我自己的思考,不一定就完全正确,欢迎你提问、交流与讨论: (1)在上一讲《OFDM 信道估计与均衡(3)》中讲到过AWGN信道和衰落信道h的不同,对于高斯白噪声信道来说,在发送端和接收端信号功率是没有变化的。 但是对于衰落信道来说,衰落信道会使得发送功率和到达接收端信号功率不一样。 因此,我在上面的代码中分别提到了四种方式,目的是计算并观察信号在不同位置的功率,比如经过IFFT前后,经过衰落信道前后等等。 若假设接收端的白噪声功率是一个固定值,比如接收端的噪声功率谱密度是0.5w/Hz(也就是0.5J),发送端一个1J的比特发过来。 如果是AWGN,那么到达接收端这个比特的能量仍然是1J,此时接收端比特信噪比是3dB。 但若经过h=0.5的单径衰落信道过来接收端,那么到达接收端这个比特的能量就是0.25J了,此时比特信噪比是-3dB。 所以上面代码中h的设置,其实会影响到图2曲线的左移或者右移。至于是不是正确,仿真是不是应该这样仿,我不太确定,欢迎交流。 (2)仿真中我们都先习惯于设置Eb/N0的值,然后去推Es/N0的值,这个怎么推,我在《第二章:线性分组码》和《第1章:BPSK调制解调器仿真》讲过,即需要考虑到调制编码的影响。 有了采样率和系统带宽后,便可以继续从Es/N0往SNR推。 但在OFDM中有了CP和导频后,这些数据会影响到Eb/N0与Es/N0换算中的k值吗?我觉得会的,因为CP和导频的存在,本质上都是为了通信系统的可靠性。 CP和导频均消耗了系统的功率资源,但都没有为系统发送更多的数据做贡献,所以将他们当做冗余来进行处理。这也是为什么多次尝试在上面的代码总修改功率的计算位置。 无论是《MIMO-OFDM无线通信技术及MATLAB实现》还是《Simulation and Software Radio for Mobile Communications》,均没有我上面疑问的答案。 在仿真中是否需要我这么考虑,我也不确定,造成的结果也是实验曲线会相比理论有一定的平移。 四、总结 自本科听说过OFDM、信道估计、均衡等概念,到前段时间开始思考如何用MATLAB来仿真OFDM系统呢?相隔了三年。 看到了知乎上@子木的《OFDM完整仿真过程及解释(MATLAB)》以及《给“小白”图示讲解OFDM的原理》,他们的文章写得非常好,帮助我开始理解OFDM相关的知识。 然后我结合《MIMO-OFDM无线通信技术及MATLAB实现》和《Simulation and Software Radio for Mobile Communications》书中的代码,开始慢慢摸索写出仿真。 但是在调试代码的过程中,常常出现问题。偶与师兄讨论,有所收获,记录在此,希望对刚接触OFDM仿真的同学有所帮助。 欢迎你双击屏幕、点赞、收藏、转发和分享,我的知乎号,也欢迎读者朋友就相关技术问题与我交流,一起学习,共同进步。请你也别忘了把这篇文章分享给你身边正在学习通信专业的同学们,也许能够帮到Ta。 这是《陈老湿·通信MATLAB仿真》的第7章,下次更新见!
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/58190.html