官方淘宝店 易迪拓培训 旧站入口
首页 > 无线通信 > 通信技术学习讨论 > OFDM信号AD过采样之后怎么处理

OFDM信号AD过采样之后怎么处理

01-03
如题,最近遇到个问题,请教一下
OFDM信号在基带接收机中AD过采样,如5MSps信号以80MHz过采样16倍,进行时域频率估计与定时同步前,需要把过采样16倍的数据恢复为1倍的数据,这个过程用什么算法,怎么做呢?如果随机选点,性能会很差吧!
  
看到的论文大多在分析采样频率偏差,但是都是基于1倍采样的数据分析的,对于过采样的数据怎么处理?

每16点做平均

从任意点开始以16个数据为单位求平均?
这样影响随后的时域求频偏 定时同步的性能吗?

这是一个典型的数字信号降采样抽取问题,你需要看看dsp相关的书籍。
粗略的讲,你需要一个工作在80MHz的低通滤波器再加上抽取器,最后得到降采样的信号。
实际中可能是多级半带滤波器级联等,来降低运算量。这些都是典型做法,查查就知道了。

我以前做MPSK MQAM信号解调时,是那样的,对16倍过采样数据抽取滤波,降为4倍过采样,然后通过锁相环和interpolation得到1倍采样数据。
但是,现在OFDM的时域信号近似为高斯分布了,如果直接从16倍抽取为1倍,这时的采样信号可能距离理想采样点偏差比较大,再去载波与定时同步性能会比较差吧

OFDM对定时起始点偏差不敏感,因为有CP
对载波频偏敏感,但1倍速率上,如果你有已知训练序列,估载波频偏什么的也不成问题。

谢谢!
是啊,OFDM的FFT对起始点不敏感,只要落在CP就可以,
但是这FFT的数据对象是1倍采样的数据,已经是我所遇到问题之后的信号处理了。
我遇到的问题是如何得到这个1倍采样的数据,
如果16个点直接抽取为1个点,这个1倍采样点可能不是16个点里最好的点。
不是最好的点去估计频偏,性能会比克拉美罗限差好多吧,这样载波估计不准确 就影响FFT了。

你怎么知道哪个点最好,信号经过了发射滤波信道接收滤波(发射机、接收机很多非理想因素),而且时延未知。
从数字信号处理的角度来看,如果你对一个波形采样频率够了,那么这些样点里包含了原始波形的所有信息,比如你对一个正弦波过采样,出来一系列样点,你认为那个好,那个不好。
OFDM的子载波就是一个正弦波,只不过OFDM是n个不同频率和相位的正弦波叠加而已。
建议你实际做做算法的仿真。
在最初阶段你可能需要过采样的训练序列(比如2~4倍)去做一些比如你说的频偏估计算法,看情况而定。做完最初的算法,之后全跑在1倍就行了。

我做过的仿真:
256个OFDM数据x(n) n=1...256,过采样16倍(通过CIC或半带滤波获得),不加噪声,不加频偏,一个OFDM符号长度256,其采样长度256*16. 采样信号为y(k),k=1....256*16.
分析x(n)与y(k)发现,x(n)是y(k)波形上的点。
在解调时,依次选取16个采样点中的1个点,共获得256个数据去做FFT,然后解映射计算BER,
所以,总共有16种情况,发现大约有半数的情况下有错误bit,这些情况下我分析了这些情况抽取出的数据z(j)。
发现在y(k)波形上,z(j)偏离x(n)很远。
所以z(j)都偏离了最佳点x(n),即便我不加噪声、频偏,假设他们都得到理想的同步恢复,但是FFT后解映射仍然有错误比特!

你这种情况下信号相当于信号已经经过了一个等效信道。你得做信道估计或者推算出精确的信道响应,根据响应进行信道均衡后才能解调统计ber。
你做的那些滤波和选取点,这些操作导致的等效信道可以反映为子载波上的信道响应 。不做补偿直接解调肯定有问题,除非恰好你碰到了等效信道为1对应的采样点。

正解,OFDM系统是必须要有时频偏补偿的。老的系统,通过诸如Gardner算法,目的是要
重构最佳采样点,OFDM系统是不需要的。
简单地想,如果你的OFDM系统只有一个子载波上传输数据,那按照采样率采样得到的就已
经是256倍过采样数据了,还要过采样干吗?
最后提醒下,实际的OFDM系统都要在两边留0子载波作为guard band,这时候才是不需要
过采样的。

  通常,AD之前的信号是被模拟滤波器滤波过的,但这个滤波器的等效基带带宽一般大于要分析的OFDM信号(这是因为模拟滤波器很难做得很窄又很陡)。根据采样定理,要表征这个信号,采样率(IQ都采样)需要用大于该滤波器带宽,否则带外信号/噪声会混叠到有用信号中。
  到了AD之后,要用1倍的采样率来表征这个信号,也就是抽取,若直接抽取,不管取哪一组点(共16组),都相当于对原始的模拟信号用1倍采样率采样,引入混叠。为避免混叠,需使信号的带宽得满足采样定理,所以要对信号进行数字低通滤波,把不需要的带外信号滤除。滤波之后,可以从16个相位中任意选择一组作为1倍采样的数据,他们是完全等效的,不同的是第n组相对于第n-1组相当于多引入了一个delta(t-Ts)的信道响应,对应到频域是子载波上的线性相移exp(-j*2*pi*k/N)(幅值不变故各组信噪比不变),但均衡器可以将其影响消除。
  上面提到的数字低通滤波器,其归一化阻带起始频率应该小于1/16,而通带截止频率要大于M/(N*16),M为子载波个数,N为FFT点数。这是为了确保既不引入信号混叠又不对有用信号造成衰减。当然,通带截止频率略小一些问题也不大,因为均衡器能抵消其影响(但在两边的子载波上会引入少量信噪比损失)。在设计滤波器时,1/16的滤波器耗费资源比较多,不如多个低通级联划算。

谢谢!
你的解释完全符合我的想法。滤波器设计理解也应该很好!
不过,我又做了仿真:
之前讲的x(n),n=1...256,上采样到y(k),k=1...256*16,此时加AWGN噪声仿真频率估计的性能。
如果我直接选取y(k)中最佳的点(即对应x(n),为16组中的1组)进行小数倍频率估计,那么在AWGN信道下方差性能符合CRB、符合直接用x(n)做频率估计。当然这时的x(n)设计为时域上2段相同的数据。
如果我选取y(k)中偏离此点的其他组合,发现小数倍频偏估计得方差性能会变差,偏差越大性能越差。
如果小数倍频率估计性能变差,同时时域的定时同步变差,就会影响FFT后信号的质量,均衡将不止要均衡信道,还要均衡此处理误差引来的信号畸变!加重均衡处理负担。
当然,我在matlab仿真中选点前没有加低通滤波,明天再试试加滤波有改善否,
但是不加低通滤波时,直接选取最佳点位置的数据进行频率估计,性能也是理想的!

上行链路中可以只用到几个子载波,
那么下行链路子载波中,256点FFT有效载波应该是180,留76载波,这时按照384 采样率在频域算也刚刚够2倍。
这样在OFDM两边留0载波,直接在时域256点采样,而不是过采样,可以有效地进行同步估计吗?
(相当于180*15kHz=2.7MHz有效子载波,256*15kHz=3840kHz采样,信号占用带宽3MHz)

已经等效为经过信道的数据组,会恶化小数倍频偏估计与定时同步的性能的吧。
如前个贴所述,应该是先滤波再选取?性能怎样我再仿真分析下

实际信号总会经过各种各样的信道,包括传播的,设备内部的等等,你的频偏估计和定时同步必须能工作在这些信道条件下啊,如果只能工作在理想条件下那这算法还怎么用在实际当中?

在复数采样情况下(I、Q两路而不是单路采样),理论上只需要1倍即可无误恢复原始信号,而不是两倍。
所以理论上不会对你的算法产生性能影响,因为这些样点可以完美恢采样之前的信号。当然这只是理论上,还和你具体采样的算法有关系,有些算法可以工作在1倍上,有些必须2倍或者4倍。
但理论上,1倍采样获取的数据对采样前的信号来说在信息上是无损的,因此也不会有任何性能损失(不考虑具体算法选择和实现的话)。

不是说只能在理想条件下工作,
频偏估计与定时同步所处理的数据对象,如果只有经历AD之前所经历的信道,性能会达到某个水平或门限,
但是,如果AD后的信号处理不当,例如直接选点,会恶化这个估计与同步的性能!这也等效为恶化信号质量,
信号恶化,等效为SNR恶化的话,到FFT后面均衡出的信号,也比没有恶化的信号去均衡要差吧。

如果处理不当,当然会恶化。那是处理不当的原因而不是1倍够不够,2倍够不够的原因。1倍在理论上够了。
前面包括我在内好几个人都说了,先低通滤波再抽取(也就是你说的选点)。
你说的直接选点导致性能恶化,这个太笼统了。前面我说了直接选点(即1倍)也是信息无损的,你所谓直接选点会导致性能恶化的原因是因为你在直接选点之后的其他操作处理不当导致的,即你的接收算法肯定是:
直接选点 --> 其他操作(你没说)-->观察到性能恶化。
因此你不妨具体说说其他操作是什么,大家才能帮你分析性能恶化的原因。我猜你的其他操作缺少了定时补偿和信道均衡,因此选点不对必然恶化!

没有其他操作,matlab仿真,上采样16倍,AWGN加噪声,选点,然后直接时域频率估计,
当选到最佳点,即上采样之前的数据时,频率估计得性能是理想的;当选到其他点时,估计得性能都不理想,偏差越远,性能越差。
在这里可能的问题是:选点前应该低通滤波。但是不低通滤波,直接选取最佳点位置的接收数据 进行估计性能也是理想的。
这里仿真不需要定时与均衡,定时认为理想的,均衡在FFT之后频域做,但是频率估计是在时域处理的,与均衡无关。不然的话,就均衡之后,再IFFT到时域,再频率估计,应该不必要这种迭代式处理

刚仿真发现 信道只有AWGN时 选点非常影响FFT后解调的BER。。。怎么解!
程序如上贴

按你这个说法推理,过采1000倍,都用上,效果就比不过采好1000倍?

我的matlab没有定点工具箱,跑不了你的程序。你这个程序就是没有做时偏补偿,我简
单加几行你试试,不保证完全对:
tt=zeros(1,256);
tt(1:2:Ndata*2)=s;
tt = fftshift(tt);  % the actual signal should be fftshifted
...
rs = y(n+(1:ovsf:NFFT*ovsf));
Frs = 1/sqrt(256)*fft(rs,256);
Frs = fftshift(Frs );  % the actual signal should be fftshifted
loc = -NFFT/2+1:NFFT/2;
Frs = Frs exp(-1i*2*pi/NFFT*n*loc/ovsf); % time offset compensation
scatterplot(Frs); grid on; % debug
从你的代码看,你对OFDM和FFT还在入门阶段。建议你找本书和实际的协议比如LTE、
wimax看看。另外debug的时候自己多画画图,不要一遇到点问题就来问,对自己提高不
大。

AWGN的噪声n不同才能有增益,而且不是按照正比例。
相邻组数据只在时域同步估计没差别,但是,只加AWGN的信道中,FFT后解调 还是有最佳点BER,其他点太差。见前个帖子的程序。

嗯 谢谢哈  我之前做OFDM都是不过采样处理,
现在考虑过采样嘛,然后问了在民企外企做LTE协议或FPGA的同学 也都不懂过采样后怎么处理的。
1、我没有fftshift是因为产生的发端信号是1个FFT产生2段相同数据,shift前后一样啊,即在频域奇数位置有值,偶数位置为0.
2、其实我想知道你说的% time offset compensation中的n在实际接收机中是怎么得到的,这里是遍历仿真统计,实际中应该不知道自己选的哪个n啊。
这个n是在FFT后估计的?如果可以估计,是在频域估计完了,再对数据重新做一次FFT?
谢谢建议,标准中一般只给出发的信号形式,不讲接收。。。。所以就问哈,大多论文也不讲过采样怎么处理。你在哪工作啊 请你吃饭

1、是我写错了。我的意思是你送给fft的数据应该是[Ndata/2, NFFT-Ndata个0,
Ndata/2]这样的,这才是真正的低通信号。
2、n是通过时偏估计得到的,一般都是用频域导频来做精估计。它的效果已经折合到信道
里去了,实际中通过信道均衡就能补偿掉了,不需要再做一次FFT了。
我单位比较远,呵呵。有机会你在请我吃饭吧:)不要这么客气。
看你这么热情,我推荐你本书吧:MIMO-OFDM Wireless Communications with MATLAB。
你关心的所有问题这本书里应该都能找到答案。

谢谢~~ 刚找来看了这本书
确实挺不错啊

是啊
一般应用过采样两三倍就够用了
再高纯属浪费资源,没什么增益

按照理解,采样1倍就可以了。
实际中因为AD常工作在定频,例如定频80MHz,对5M的数据会过采样16倍为80M。

Top