(三)OFDM接收机关键技术

一、补充知识

1.载波偏差

通常以子载波间隔将载波频偏归一化,得到整数倍载波偏频m和小数倍载波偏频n。

m引起频域子载波的偏移,n导致子载波符号幅度衰减和相位偏移以及子载波间干扰。故n的校正更重要

2.采样时钟偏差

导致子载波符号幅度衰减和相位偏移以及子载波间干扰

3.符号定时偏差

接收机需要知道数据帧的起始位置。定时位置T0满足大于最大多径时延扩展,小于保护间隔长度。符号定时同步往往通过基于循环前缀的滑动自相关实现。定时位置不准会引起FFT窗口的偏移,导致频域符号的相位旋转。

二、符号定时同步

1.基于循环前缀的符号定时同步

对接收数据进行滑动自相关,滑动至CP(循环前缀)开始的位置时出现峰值。受噪声影响大。存在偏差使得子载波相位旋转。可在此基础上减去噪声功率。

2.基于导频的符号定时同步

根据导频信号对旋转相位进行估计,对数据进行补偿。

三、载波同步

基于导频的载波同步

首先在时域对信号进行小数倍载波频偏补偿,然后将信号变换到频域。这时会导致子载波位置偏移。通常利用频域的离散导频符号来估计该频偏。当本地序列滑动到于接收序列中离散导频位置对齐时会产生相关峰,从而确定载波位置的偏移。

四、采样时钟同步

基于循环前缀的采样时钟偏差估计

利用二维滑动自相关技术,从时间维度n和相关间隔维度d两个维度进行相关运算。

五、信道估计技术

OFDM最重要的特点是信号在频域进行处理,简化接收机复杂度。(卷积变相乘)

5.1 LS算法

Y=HX+N

Y^=H^X (H^为信道估计值)

LS最小二乘算法要求信道估计得到的信号与应该的接收信号之间的误差平方最小。

LS信道估计方差为1/SNR.

由于LS忽略了噪声影响,当噪声较大时,准确性大大降低。

5.2 判决反馈的信道设计

使用判决后的数据作为已知数据估计H,只进行一次误差很大,需要进行插值滤波。比如进行DFT内插,将信道估计值H通过IDFT转换至时域得到h,在h的中间对应高频的部分补零,再做DFT得到内插后的估计值。

六、均衡技术

由于多径和衰落现象,为获得较好的接收性能,需要准确的信道估计来进行信道补偿。

利用MMSE均衡,将信道加性噪声考虑在内,使得X与估计值X^之间的均方误差最小。由这一准则得到均衡矩阵G,得到X^=GY

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用DMRS序列完成整数倍频偏估计的MATLAB代码: ```matlab % 参数设置 N = 2048; % OFDM符号长度 M = 64; % 子载波数目 L = 2; % 反向链路使用的天线数目 cpLen = 144; % 循环前缀长度 nFrame = 10; % 帧数 nSubframe = 2; % 子帧数 nUE = 4; % 用户数 nRB = 50; % RB数目 dmrsSym = [1; -1; 1; 1]; % DMRS序列 dmrsPos = [1; 11; 34; 46]; % DMRS位置 nDmrsSym = length(dmrsSym); % DMRS符号数目 nDmrsPos = length(dmrsPos); % DMRS位置数目 % 生成OFDM符号 txOFDM = zeros(nUE, N, nSubframe, nFrame); for iFrame = 1:nFrame for iSubframe = 1:nSubframe txSym = randi([0 1], nUE, nRB, M); % 生成随机数据 txMod = qammod(txSym, 64, 'UnitAveragePower', true); % QAM调制 txSymIFFT = sqrt(M) * ifft(txMod, M, 3); % IFFT txSymCP = txSymIFFT(:, :, [end-cpLen+1:end, 1:end], :); % 添加循环前缀 txOFDM(:, :, iSubframe, iFrame) = reshape(permute(txSymCP, [1 3 2 4]), [], nRB); % 转换为OFDM符号 end end % 加载OFDM符号并添加整数倍频偏 rxOFDM = txOFDM; % 假设接收端接收到了完全相同的OFDM符号 freqOff = 5; % 整数倍频偏 for iUE = 1:nUE for iFrame = 1:nFrame for iSubframe = 1:nSubframe rxOFDM(iUE, :, iSubframe, iFrame) = circshift(rxOFDM(iUE, :, iSubframe, iFrame), [0, freqOff * (1:M)]); end end end % 计算整数倍频偏 estFreqOff = zeros(nUE, nSubframe, nFrame); for iUE = 1:nUE for iFrame = 1:nFrame for iSubframe = 1:nSubframe rxSym = reshape(rxOFDM(iUE, :, iSubframe, iFrame), M, []); rxSymNoCP = rxSym(:, cpLen+1:end); dmrs = zeros(nDmrsSym, nDmrsPos); for iDmrs = 1:nDmrsPos dmrs(:, iDmrs) = rxSymNoCP(dmrsPos(iDmrs):dmrsPos(iDmrs)+nDmrsSym-1, iDmrs); end estFreqOff(iUE, iSubframe, iFrame) = round(angle(sum(conj(dmrs(:, 1)).*dmrs(:, 2)))/angle(dmrs(2, 1))-1); end end end % 显示整数倍频偏估计结果 disp(estFreqOff); ``` 上述代码中,首先生成了随机的OFDM符号(包括数据和DMRS序列),然后将OFDM符号发送到接收端并添加整数倍频偏。接着,对于每一个接收端的OFDM符号,提取出其中的DMRS序列并计算相邻两个DMRS符号之间的相位差,最后根据相位差计算整数倍频偏。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值