目录
1.OFDM原理
1.1时域正交与基带信号
1.2频域正交与频率间隔Δf
2.基带信号的调制框图
3.OFDM调制与IDFT
4.串行比特流怎么进行IDFT
[1]OFDM的核心就是利用各个子载波的正交性,信号的正交性是什么呢?就是无论两个函数(信号的表达式称为函数)的幅值为多少,在确定的一个时间周期内相乘,其积分总是等于0(也就是面积相加为0)。比如最简单的一对正交函数sin(t)和sin(2t),其中红色是sin(t),蓝色是sin(2t)。他们均在2π时间内具有完整的周期,各自在2π时间内的积分问为0(正负面积相加为0)。而sin(t)*sin(2t)的图像为:
可以大概地看出,图像中正负面积相加同样为0,也就是:
那么如果使得sin(t)的幅度为a,sin(2t)的幅度为b,也就是将a调制于sin(t),将b调制于sin(2t),同时传输这两个调制了信号的正弦波(子载波):a*sin(t)+b*sin(2t),在接收时又分别对两路子载波进行积分,也就是:
这样就将原始信息a和b解调出来了,两路子载波互不干扰,而OFDM就是通过多路互不干扰的子载波传递了不同的信息。而由于子载波的正交性,其频率间隔很小,使得频带利用率很高。
设f0~fN-1是以Δf(能使每个子载波互相正交的频率间隔)为频率间隔的N个频率,那么就有:
由于正弦函数与余弦函数的正交关系,上式还可以扩展得到OFDM的基带信号表达式:
对限制在[0,2π]内的sin(t)信号,相当于无限长的sin(t)信号乘以一个[0,2π]上的门信号(矩形脉冲),其频谱为两者频谱的卷积。sin(t)的频谱为冲激,门信号的频谱为sinc信号(即sin(x)/x信号)。冲激信号卷积sinc信号,相当于对sinc信号的搬移。所以分析到这里,可以得出[0,2π]内的sin(t)信号时域波形其对应的频谱如下[3]:
sin(2t)的频谱分析基本相同。需要注意的是,由于正交区间为[0,2π],因此sin(2t)在相同的时间内发送了两个完整波形。相同的门函数保证了两个函数的频谱形状相同,只是频谱被搬移的位置变了[3]:
将sin(t)和sin(2t)所传信号的频谱叠加在一起,正交在频域看就是他们的主瓣关系以及零点关系,如下:
那么子载波的间隔怎么取呢?即下图中的Δf :
假设s(t)的一个码元周期是Ts,即Ts内所有的子载波波形分别代表一个码元,且子载波都应该正交,就是任意两个子载波在Ts内的积分为0,幅度不影响,有如下[4]:
上式等于0的即为分母等于零:
m,n为整数,即子载波频率:
要求子载波满足:,k为整数, 最小子载波间隔:
设一个OFDM系统有N个子信道,第k个子载波公式为:
,其中k=0,1,...N-1
(注意这里中间的加号变成了减号是为了推导下面的复频域信号方便)子载波是承载所要传递的信息的正/余弦波,那么它怎么体现所承载的信息内容?幅度。频率是用来区分哪个子载波的。
一路子载波包括两路正交的信号(任意频率的正弦余弦波都相互正交),这就可以看做IQ信号。下图是单个子载波的IQ调制:
把N个携带信息的子载波累加,就得到了OFDM信号的模拟形式:
其中,意思是所有子载波的一个码元周期
的连续波形。注意我们这里得到的是基带信号,也就是:
所以根据s(t)的公式,我们可以对每个子载波进行IQ调制,把所有的子载波中的I路加起来,把所有Q路加起来,基带信号的输出结果就是两路IQ信号,一路cos,一路sin,(关于调制方式可以是QPSK,QAM等)如下图所示:
解调框图就是对接收的s(t)乘以相应载波并积分就得到相应载波承载的信息ak或bk了,详细内容参考资料[6].
然而理论上可行,实际生成多个子载波然后分别调制后求和,就很难了;是否可以避免一个一个的调制后再求和,而是直接生成求和后的信号呢?当然可以,用IDFT。
上述信号s(t)可以写成复指数表示:
其中Re[]是取实部操作, Im[]是取虚部操作,所以s(t)的复指数形式的调制框图就不言而喻了,参考[6].
因为硬件实现上复数是没有意义的,复数只是数学计算上才有意义。我们硬件实现时传递的两路信号I和Q也都是实数,来代表复数。不要纠结这两个式子的关系,只要做到硬件实现和数学计算上的对应就可以了。
这个式子是模拟信号,我处理的是离散的数字信号,带入,在一个码元周期内采样N点即
带入得到信号采样后的离散OFDM基带信号:
注意这里子载波个数k和采样点n都是N个。
说到这里,很明显上式就是IDFT的形式了,输入就是N个单独子载波的,输出就是子载波叠加后信号进行N点采样的N个数据点。
那么对应的是什么呢?
事实上,原始数据是串行的二进制数据,我们把数据分成帧,一帧F比特就是合成后的s(t)在一个码元周期的数据,F比特分成N组:
,N组分别对应N个子载波,每组的比特数可以不同,因为每个子载波可以采用不同的调制方式。
将每组中的个比特看作是一个
进制码元
,则
,例如16进制对应4个比特,假设这4比特为1100,我们采用16QAM映射,根据星座图
调制后的相位45度,振幅,即把1100映射为
,这就是
,当然我们会把a和b均用二进制表示,这就完成了把一路子载波上的信息映射成两路信号I和Q。假设每个子载波调制方式相同,我们把所有数据映射完后的示意图如下:
最终,我们得到了IDFT的输入:,使用IFFT算法即可得到输出的离散的s(n),对应s(t)的N个采样点。
当然,实际实现中我们的数据在进行IFFT之前和之后都要进行一系列的编码和处理等,这个我会另外再写博文详细讲解。
参考资料:
1.OFDM基本原理及简单实例应用
2.通信里 星座图 到底是什么意思啊?
3.给"小白"图示讲解OFDM的原理
4.《通信原理》樊昌信第六版
5.OFDM专题之输入的复信号从何而来
6.OFDM专题之理解原理图(暂不包含用IFFT以及FFT的原理图形式)