64QAM调制(星座点)映射、子载波信道划分、导频插入、IFFT

前言:补充上一篇文章,补充内容包括(64 -QAM调制(星座点)映射、子载波信道划分、导频插入、IFFT 、添加CP)

基于802.11a协议的OFDM发射物理层基带数据处理(part1)_ofdm每个data域都要携带service域-CSDN博客

五、64 -QAM调制(星座点)映射、子载波信道划分、导频插入

IQ路调制原理:输入的复数信号(a+bj)的实部和虚部分别作用在时域上两个正交信号的幅度上,然后进行两路信号叠加。 s(t)=a*cos(w_{0} t)-b*sin(w_{0} t);  

IQ路解调原理:接收端对从信道中接收的时域信号s(t),采用与发送端相同频率的正交信号,对其进行相干解调。 a=\frac{2}{T}\int_{T}^{} s(t)*cos(w_{0} t); b=\frac{2}{T}\int_{T}^{} s(t)*(-sin(w_{0} t));  

复数运算原理图:

 指数运算原理图:

IQ调制和星座点映射间关系:以QPSK举例,QPSK星座图中4种相位,2bit表示一个星座点。(QPSK仅是相位调制,QAM调制是相位+幅度调制,误码率优于QPSK)

在IQ调制器的输入端分别输入(+1,+1)、(-1,+1)、(-1,-1)、(+1,-1)

 公式推导:输入IQ信号为(-1,+1),s(t)=-cos(w_{0} t)-sin(w_{0} t)=\sqrt{2}cos(w_{0} t+3\pi /4);

可以看出的输入IQ数据与输出相位相对应,为了功率归一化,调整输入1/\sqrt{2}

进一步得到qpsk调制的调制原理图:

 那么如何将输入的二进制映射到IQ输入呢?给出QPSK调制的映射关系表及星座图:

将输入S0S1按格雷码映射到星座图对应点上,采用格雷码映射的好处是:星座点上相邻点周围的其他星座点有且仅有1bit不同,当信号传输过程中出现相位旋转,接收根据相位图判别发送信号时,判错成周围星座点(概率大)时,保证了误码率最低。

顺便讨论以下二进制码和格雷码的相互转换:将二进制码转为格雷码(转换方式:gray=bin>>1 ^ bin);将格雷码转换为二进制码(转换方式:bin[N-1]=gray[N-1];bin[N-2:0]=gray[N-2:0] ^ bin[N-1:1])。

了解了IQ调制与星座图映射的原理后,进入正题,如何实现64QAM数字调制?

观察64QAM的星座图可知:输入的b0b1b2对应横轴,从横轴最左侧-7开始,按照格雷码顺序依次是000,001,011,010,110.....;输入的b3b4b5对应纵轴,从最下侧-7开始,按照格雷码顺序依次排列。

64QAM调制模块工作原理:将输入的二进制每6bit进行映射,(高3bit映射成实部,低3bit映射成虚部),转换成对应的IQ路电平值,最后输入到IQ调制器(与正交载波进行相乘)。FPGA要实现的是:根据64QAM星座IQ映射表,实现输入bit到实际IQ电平间的映射。(为实现输出功率归一化,对赋值进行调制,乘归一化系数1/\sqrt{42}.

注意:由于FPGA处理的是定点数,硬件实现时需要对输入bit的映射值进行定点数转换。以7 * 1/\sqrt{42}为例,需要将计算结果1.080123449734643371827661239348转换为定点数,为了最大提高精度,设置定点数位宽为32,其中小数位宽30,1bit符号位,1bit整数位。转换公式:(7 * 1/\sqrt{42})*{2^{30}}取整数部分1159773723。

-7 * 1/\sqrt{42}表示为:2^{32}-1159773723=3135193573。

硬件实现:模块输入是交织后的串行bit,利用移位寄存器每6bit,写入fifo一个数据,读出数据进行查表映射的同时,按照对应导频位置,进行拼接。完成一个ofdm符号的导频插入后,将数据输入ifft模块进行频域转时域后,由ifft模块反馈转换完成flag,本模块再次输出第二个ofdm符号数据,直到fifo的空信号拉高,模块回到初始状态。

fifo输出的每6bit数据,查找上述64QAM星座映射表,并转换为定点数。

子载波信道划分:4个导频信号,实际信道是-26~26加直流(dc),导频分部在-21,-7,7,21。硬件上无法实现负数索引下标,计数器实现时0~51,对应导频位置:5,19,32,46(去掉直流频点位置,该模块不处理直流频点,直流频点在ifft模块时进行插入)。

导频插入:导频信号采用BPSK调制方式,即虚部为0,协议规定若导频极性为正,对应导频序列为 1 1 1 -1;反之,则取反。导频极性(按一帧中的ofdm符号的顺序)根据扰码寄存器(初始化全为1),自循环产生的127个扰码序列来决定,将已知的127个扰码序列存入rom中,该模块每输出一个ofdm符号数据后,读地址加1,(data域第一个OFDM符号采用第2个扰码输出)。

六、IFFT以及CP插入

每48+4+1(直流)个子载波(单个OFDM)映射到相应IFFT信道上,进行IFFT转换,按照协议规定:-26~-1个子载波映射到IFFT输入的最后26个信道上,0~26对应IFFT输入的0~26,这里直流频点(0点位置)插入0值。

CP保护间隔:由于信道多径时延扩展引起的符号间ISI干扰和信道间(子载波间)干扰ICI,通过插入保护间隔,只要保护间隔的长度大于最大时延扩展,可以避免符号间的干扰。为了避免由于保护间隔插值为0,导致的载波间干扰(不正交),所以选择插入的保护间隔是循环前缀。循环前缀的的持续时间为0.8us(Tfft/4)。

硬件实现:调用IFFT ip核实现频域转时域;输入的前26个数据(即信道频点对应:-26~-1)先利用FIFO进行缓存;通过IFFT输入计数器的累加,控制IFFT输入数据的顺序,(FIFO中缓存的-26~-1信道的位置对应IFFT输入的最后26个数据);IFFT IP核选择流水线模式,IFFT输出时,先将数据进行FIFO缓存,并通过IFFT输出计数器,控制IFFT输出最后32个点作为循环前缀,添加在输出数据的前面。

文章均是个人日常学习总结,如有理解不正确地方,欢迎指正。

  • 33
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值