惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
宝玉的分享
宝玉的分享
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
WordPress大学
WordPress大学
V
V2EX
Apple Machine Learning Research
Apple Machine Learning Research
J
Java Code Geeks
腾讯CDC
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Engineering at Meta
Engineering at Meta
L
LangChain Blog
Jina AI
Jina AI
博客园 - 叶小钗
B
Blog RSS Feed
Recent Announcements
Recent Announcements
H
Help Net Security
小众软件
小众软件
大猫的无限游戏
大猫的无限游戏
B
Blog
云风的 BLOG
云风的 BLOG
Blog — PlanetScale
Blog — PlanetScale
D
DataBreaches.Net
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
罗磊的独立博客

博客园 - 普罗大众

debug的一个问题 phy_simulators之nr_dlsim之4层接收的优化 phy_simulators之nr_dlsim之一个bug phy_simulators之nr_dlsim开始 phy_simulators之nr_pbchsim之PBCH解码 phy_simulators之nr_pbchsim之PBCH-DMRS检测 phy_simulators之nr_pbchsim之仿真的局限 phy_simulators之nr_pbchsim之一些结构 phy_simulators之nr_pbchsim之信道 phy_simulators之nr_pbchsim之初始同步 phy_simulators之nr_pbchsim之发送端 phy_simulators之nr_pbchsim之PSS检测 phy_simulators之dlsim.c debug方法三:printf debug方法二:用vs code debug方法一:直接用gdb命令 phy_simulators的编译生成方法三:CMakePresets.json phy_simulators的编译生成方法二:手动写cmake脚本 phy_simulators的编译生成方法一:build_oai --phy_simulators open air interface的phy_simultors编译过了 AI App的使用感觉 从“图像视频编码”到“通信物理层” MAC pc + Ubuntu + OAI 原来Fourier是法国的,怪不得法国小波分析这么牛 整理心情
phy_simulators之nr_pbchsim之SSS检测
普罗大众 · 2026-03-24 · via 博客园 - 普罗大众

SSS/PBCH检测是在频域上做的,所以跟slot/symbol/sample这些数字是强相关的。例如: 

106 RB, 1272 subcarriers, 2048 FFT

15kHz SCS: 15*2048=30720 samples per ms, 30720 samples per slot (1ms)

30kHz SCS: 30*2048=61440 samples per ms, 30720 samples per slot (0.5ms)

=> 2048 sample per symbol without CP, 2048 samples for 14 symbols 

       15KHz SCS: 160+144*6+160+144*6=2048

       30kHz SCS: 176+144*13=2048 

调用nr_search_ssb_common,包括SSS检测

1)=> 调用nr_slot_fep

分别取出SSB的符号进行频域处理

// Symbol ordering: 0=PSS, 1=PBCH, 2=SSS, 3=PBCH

for (int i = 0; i < NR_N_SYMBOLS_SSB; i++) {

    nr_slot_fep(NULL, fp, 0, i, rxdataF, link_type_dl, sample_offset, (c16_t **)params->rxdata);

}

通过slot/symbol/sample_offset参数,取出SSB的某个符号,例如

第0个符号:对于30kHz SCS,sample_offset=4416=长CP+symbol+短CP+symbol=176+2048+144+2048

因为SSB所在符号都不具有长CP,因此不用考虑长CP

rx_offset会计算出去除了CP后的某个符号的起始采样点位置,相当于包括了“去CP”操作

2)=> 调用nr_symbol_fep

一个符号的频域处理。会调用dft函数,进行DFT操作

会调用pss_ch_est_nr进行基于PSS的信道估计,并对SSS进行信道补偿

AWGN下信道估计值近似为1(会有scaling),可以先调试AWGN信道(即不过信道)

 好像PSS/SSS/PBCH操作中SSB的数据都在rxdata中,不同操作仅仅是指向了它的内容,如果需要修改rxdata的数据(如DFT,补偿),会进行memcpy操作,避免对rxdata造成影响

3)=> 调用rx_sss_nr,检测SSS

针对一个N_ID1(共336个)、一个phase assumption(共16个),会计算出一个metric(127个频域值的相关值)

metric_re += d[i] * ((phase_nr[phase].r * sss[i].r - phase_nr[phase].i * sss[i].i) >> SCALING_METRIC_SSS_NR);

其中d[i]是预先计算好的,它是SSS的BPSK调制值(来自38.211公式)?

for (int N_ID_2 = 0; N_ID_2 < nid_2_num; N_ID_2++) {

    for (int N_ID_1 = 0; N_ID_1 < N_ID_1_NUMBER; N_ID_1++) {

      m0 = 15 * (N_ID_1 / 112) + (5 * N_ID_2);

      m1 = N_ID_1 % 112;

      for (int n = 0; n < LENGTH_SSS_NR; n++) {

        dss_current = (1 - 2 * x0[(n + m0) % (LENGTH_SSS_NR)]) * (1 - 2 * x1[(n + m1) % (LENGTH_SSS_NR)]);

        /* Modulation of SSS is a BPSK TS 36.211 chapter 5.1.2 BPSK */

#if 1

        d_sss[N_ID_2][N_ID_1][n] = dss_current; // * amp;

        (void)amp;