赛灵思FPGA设计技巧与应用创新 - FPGA/ASIC技术 -
来源: 网络用户发布,如有版权联系网管删除 2018-08-11
上一次我们提到可以利用本地存储的训练序列与接收到的序列进行匹配滤波(相关)的方法来搜寻精确的OFDM符号起始位置。整个模块的框图如下:
实际当中考虑到节约芯片的资源,可以将本地存储的序列进行量化(正的(包括0)量化为1,负的量化为-1),当然也可以将接收到的序列进行量化,但是这样会稍稍复杂一点。就是说我们为了计算简单而将本地存储的序列近似为1+j,1-j,-1-j,-1+j这四种情况(因为训练序列良好的自相关性所以这种处理是允许的)。因此这样就可以利用加减法代替复数乘法,从而达到节约芯片面积的目的。
为了在理论上比较一下近似处理之后的结果,我用量化后的本地序列与接收到的序列做互相关(就是匹配滤波)如下图,接受信号中已叠加噪声。
(3)符号搜寻模块:
本单元负责检测计算出的幅值是否大于设定的门限值,并计数峰值出现的次数,当次数为短训练序列的段数时(10),此刻即为长训练序列循环前缀精确地起始位置。关于门限值的设定需要先进行理论仿真,并考虑实际信道的影响,灵活调整,一般要反复多次调试。(其实,我觉得这种设置绝对门限值的做法不好,因为实际的信道环境是复杂的,不可能设置一个绝对的门限值适合所有的环境,可以考虑设置相对的门限值)。如下图示意:
(4)循环前缀去除单元
考虑到符号的精确位置已经找到,所以长训练序列符号和数据符号的循环前缀部分可以去除了,用信号Symbol_enable指示数据是否有效(为1时数据有效),有效时间为一个符号中数据的长度,Symbol_enable为低电平的时长为16。因为标准中规定两个长训练序列的循环前缀是连续在一起的,即首先的32个数据我们就舍弃,我们仅需将前一模块的Symbol_finded延时32个单位即可。
随后的两段长训练序列,64X2,为保证和后面数据的结构相同,我们做如下处理:
先输出64个样值(第一段长训练序列),此后的所有样值延时16个单位时间输出。同时,利用一个模80的计数器输出占空比为4/5的脉冲,用它来指示此时是否是有效符号的数据。
(5)最后附上本设计的顶层文件及仿真波形:
查看评论 回复