[OAI] OAI openair1源码分析

本文深入讲解了LTE系统中PSS和SSS的原理与实现,包括时间同步过程、信号生成与检测、信道估计等关键步骤。通过分析eNB与UE端代码,揭示了LTE同步信号的复杂机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


PSS/SSS procedure

基础知识

http://sharetechnote.com/html/Handbook_LTE_PSS.html
http://sharetechnote.com/html/Handbook_LTE_SSS.html
http://sharetechnote.com/html/lte_toolbox/Matlab_LteToolbox_PSS.html
http://sharetechnote.com/html/lte_toolbox/Matlab_LteToolbox_SSS.html
http://sharetechnote.com/html/BasicProcedure_LTE_TimeSync.html
http://sharetechnote.com/html/Handbook_LTE_PCI.html
在这里插入图片描述

时间同步过程

在非常高的级别,定时同步的过程可以描述如下。

i)UE解码具有三个不同主同步序列的主同步,并找出为该小区分配的序列并获得主时间同步。
ii)应用主同步序列以解码辅同步代码并找出为该小区分配的序列。
此同步检测每5 ms完成一次。

正如我在前一节中提到的,三个不同的序列被用作主同步信号,并且在三个序列中的每一个之间存在一对一映射,并且在小区标识组内存在小区ID。在UE检测到该小区标识组之后,它可以确定帧定时。UE还从该小区标识组中确定哪个伪随机序列用于在小区中生成参考信号。

iii)一旦建立了该定时同步,UE就可以解码MIB并找出SFN号,因为MIB携带SFN号。
如果您进一步了解详细信息,则需要执行以下几个步骤(步骤(1)和步骤(2))。要检测PSS和SSS,您需要准确地获取具有一系列特定资源元素的数据。要准确地从特定资源元素中提取数据,您需要知道确切的符号边界(起始样本和OFDM符号的结束样本)。一旦检测到确切的符号边界,就可以检测频率偏移(一种频率误差)以进一步补偿信号。从某种意义上说,这两个步骤比PSS,SSS检测更难。

您可以使用不同的技术来检测符号边界,但是使用的常用技术之一是使用循环前缀的属性。如您所知,Cyclic Prefix是来自OFDM符号结尾部分的数据序列的副本。这意味着循环前缀和符号的结尾部分之间的相关性应该与其他区域相比非常大,如下所示。

在这里插入图片描述
<图1:当相关窗口精确地位于循环前缀和符号的结尾部分时>的情况
在这里插入图片描述
<图2:当相关窗口不在循环前缀的位置和符号的结尾部分时>的情况

正确使用此选项,如果您在沿着捕获的时域数据向下滑动两个相关窗口时找到获得最高相关性的点。您可以找到符号边界。

以下是在逐个样本滑动窗口的同时绘制这些相关性的示例。显然,您可以看到具有一个OFDM符号间隔的峰值(这来自以7.62 Mhz采样率采样的5 Mhz BW LTE下行链路数据)。
在这里插入图片描述

但在实际工程中没有任何东西像教科书。尽管循环前缀应该与符号的结尾部分相同,但实际上它并不完全相同,因为在生成信号并通过信号路径传播时应用了不同的噪声(或衰落)。因此,相关峰值现在可能恰好出现在预期点。此外,峰值可能不仅仅是一个点…您可能会在峰值周围的几个样本周围看到类似的高相关性。因此,您会在几个样本中出现峰值位置的一些错误。

随着相关窗口的长度变长,这些相关峰值的准确度将更准确。这意味着您可以在更宽的带宽内获得相当好的准确性,因为CP长度在更宽的带宽中更长。然而,随着CP长度变短,系统带宽越来越窄,相关性的准确性越来越差。

因此,在实际实现中,您需要一些额外的技巧来补偿这种错误。

P-SS(主同步信号)

  • 映射到72个活动子载波(6个资源块),以时隙0(子帧0)和时隙10(子帧5)中的DC子载波为中心。
  • 由62个Zadoff Chu序列值组成
  • 用于下行链路帧同步
  • 确定物理小区ID的关键因素之一
  • 有关详细信息,请参阅物理层:PSS和Matlab工具箱:PSS。

对于大多数情况来说,这可能不是一个大问题,因为它对于大多数用于测试的设备都可以正常工作。否则它将不会给你进行测试。但是,如果您是LTE芯片组早期阶段的开发人员,那么这将是您必须实施的第一个信号之一。如何从基带捕获的IQ数据序列中找到PSS的确切位置?这是定时同步中最重要的部分之一。这是理解LTE协议的一个非常棘手的部分,它需要很长时间才能完成研究。

在这里插入图片描述
在这里插入图片描述

S-SS(辅同步信号)

SSS是用于无线电帧同步的特定物理层信号。它具有如下所列的特征。

映射到72个活动子载波(6个资源块),以FDD中的时隙0(子帧0)和时隙10(子帧5)中的DC子载波为中心。
子帧0中的SSS序列和子帧5中的SSS序列彼此不同
由62个加扰序列组成(基于m序列)
奇数索引资源元素中的值和偶数索引资源元素中的值由不同的等式生成
用于下行链路帧同步
确定物理小区ID的关键因素之一
有关详细信息,请参阅物理层:SSS和Matlab工具箱:SSS
对于大多数情况来说,这可能不是一个大问题,因为它对于大多数用于测试的设备都可以正常工作。否则它将不会给你进行测试。

但是,如果您是在LTE芯片组早期工作的开发人员(特别是在基带区域),这将是您必须实现的第一个信号之一。

在这里插入图片描述
在这里插入图片描述

eNB端代码分析

在这里插入图片描述

pss生成函数

int generate_pss(int32_t **txdataF, short amp, LTE_DL_FRAME_PARMS *frame_parms, unsigned short symbol, unsigned short slot_offset);

generate_pss(eNB→common_vars.txdataF[0], AMP, &eNB→frame_parms, (eNB->frame_parms.Ncp==0) ? 6 : 5, 0);

根据NID2提取不同的同步信号
不同的天线端口遍历
从m=5到5+62中间遍历zadoff-chu序列

sss生成函数

int generate_sss(int32_t **txdataF, int16_t amp, LTE_DL_FRAME_PARMS *frame_parms, uint16_t symbol, uint16_t slot_offset)

generate_sss(eNB→common_vars.txdataF[0], AMP, &eNB→frame_parms, (eNB->frame_parms.Ncp==0) ? 5 : 4, 0);

UE端代码分析

lte_sync_time
找到相关性最大的点,返回pos

slot_fep
slot fep (front end processor) = FFT + channel estimation + frequency offset estimation

rx_sss函数流程

从subframe0 slot0的倒数第2和倒数第1个符号解析pss/sss
从subframe5 slot10的倒数第2和倒数第1个符号解析pss/sss
根据d0d5是否翻转、pss和sss的相位偏移、Nid1的个数,遍历62个Zadoff Chu序列值,使用内积计算最强的能量值
对于上述遍历,匹配的就获取小区ID等参数

_do_pss_sss_extract函数流程

pss/sss解析

遍历接收天线个数
对于每一个天线,遍历不同的RB
对于每一个RB,遍历12个 —这里没有搞明白

pss_ch_est函数调用
pss信道估计

PCFICH procedure

http://www.sharetechnote.com/html/Handbook_LTE_PCFICH.html

generate_pcfich

rx_pcfich

PBCH procedure

下行概览
下图是eNB过程,UE是其逆过程。

PBCH 仿真main函数

文件调用关系

函数调用关系

过程
http://www.sharetechnote.com/html/Handbook_LTE_PBCH.html

http://www.sharetechnote.com/html/lte_toolbox/Matlab_LteToolbox_PBCH.html

对每一个符号进行遍历
pbch_extract
pbch_channel_level
pbch_channel_compensation
pbch_detection_mr/pch_alamouti (for mimo)
pbch_quantize
然后pbch_unscrambling
lte_rate_matching_cc_rx 速率匹配
物理层viterbi解码 phy_viterbi_lte_sse2
然后根据crc判断发射天线个数

PDCCH procedure

http://www.sharetechnote.com/html/Handbook_LTE_PDCCH.html

PDCCH TX

PDCCH RX

PDCCH extract RBS
PDCCH channel level
PDCCH channel compensation
PDCCH LLR
rx PCFICH
PDCCH extract RBS
PDCCH channel compensation
PDCCH LLR
PDDCH demapping
PDDCH deinterleaving
PDCCH unscrambling
get_nCEE

PMCH procedure

mch_extract_rbs
mch_channel_level
mch_channel_compensation
mch_detection_mrc
mch_detection_mrc

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sundaygeek

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值