注意系统中的虚线部分就是你要做的OFDM的频域同步模块。我们的MATLAB代码就是参考这个系统结构进行设计的。其中虚线就是本课题要做的代码部分。
下面我们结合这个结构和我们的MATLAB进行综合分析和说明。
这些模块对应的MATLAB代码为:
func_demod:这个函数中,以下代码是解调前初期准备,比如加入频偏,加入信噪比,内插等等。
………………………….. …………………………..
………………………………………………………..
然后开始检测OFDM中添加的训练序列数据信息:
………………………….. …………………………..
………………………………………………………..
这段代码的基本原理如下所示:
通过对训练序列求相关值,从而得到相应的相关峰,通过搜索相关峰的顶点位置从而确定训练序列的具体位置。
通过记录伪码匹配输出的最大值的位置。这里伪码匹配的输出通过加窗算法实现。
匹配位置示意图
如图所示,我们通过加窗法来搜索相关峰,即根据信号功率设定一个门限,将PN码匹配后的结果与门限比较,当出现大于门限值的时候,将值记录到寄存器中,然后继续记录之后N个值,然后逐次比较得到最大值,
这个功能就是对应的代码是:
………………………….. …………………………..
………………………………………………………..
这些是定时同步的过程
这个是通过定时同步,给FFT变化合适的窗的位置。
这些模块对应的MATLAB代码为:
提取导频;
通过这个环路跟踪,重新调整定时误差和频偏误差。
通过仿真,可以得到误码率曲线
以及OFDM的星座图变化趋势图