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

推荐订阅源

V
Visual Studio Blog
I
InfoQ
H
Help Net Security
GbyAI
GbyAI
博客园 - 叶小钗
Recent Announcements
Recent Announcements
Engineering at Meta
Engineering at Meta
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
爱范儿
爱范儿
Y
Y Combinator Blog
L
LangChain Blog
腾讯CDC
酷 壳 – CoolShell
酷 壳 – CoolShell
WordPress大学
WordPress大学
Stack Overflow Blog
Stack Overflow Blog
F
Fortinet All Blogs
G
Google Developers Blog
Apple Machine Learning Research
Apple Machine Learning Research
The GitHub Blog
The GitHub Blog
T
The Blog of Author Tim Ferriss
博客园 - Franky
D
Docker
Jina AI
Jina AI
罗磊的独立博客

博客园 - 普罗大众

debug的一个问题 phy_simulators之nr_dlsim之4层接收的优化 phy_simulators之nr_dlsim之一个bug phy_simulators之nr_dlsim开始 phy_simulators之nr_pbchsim之PBCH解码 phy_simulators之nr_pbchsim之仿真的局限 phy_simulators之nr_pbchsim之一些结构 phy_simulators之nr_pbchsim之SSS检测 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之PBCH-DMRS检测
普罗大众 · 2026-04-29 · via 博客园 - 普罗大众

调用nr_pbch_detection,包括PBCH-DMRS检测

1)不同序列假设下的 PBCH DMRS相关, PBCH DMRS携带8种序列假设

for (int hf = 0; hf < N_hf; hf++) {

    for (int l = 0; l < N_L; l++) {

      // computing correlation between received DMRS symbols and transmitted sequence for current i_ssb and n_hf

      cd_t cumul = {0};

      for (int i = pbch_initial_symbol; i < pbch_initial_symbol + 3; i++) {

        c32_t meas = nr_pbch_dmrs_correlation(frame_parms,

                                              proc,

                                              i,

                                              i - pbch_initial_symbol,

                                              Nid_cell,

                                              ssb_start_subcarrier,

                                              nr_gold_pbch(frame_parms->Lmax, Nid_cell, hf, l),

                                              rxdataF);

2)=> 调用nr_pbch_dmrs_correlation

一个OFDM符号上的PBCH DMRS相关 

生成本地的DMRS为:

nr_pbch_dmrs_rx(dmrss, (uint32_t *)nr_gold_pbch, pilot, false);

第dmrss个符号,PBCH序列为nr_gold_pbch,输出为pilot

逐个RX天线进行相关:

for (int aarx = 0; aarx < fp->nb_antennas_rx; aarx++) {

    int re_offset = ssb_offset;

    c16_t *pil = pilot;

    const c16_t *rxF = &rxdataF[aarx][symbol_offset + k];

本地信号(采样点)为pil,接收信号(采样点)为rxF

symbol_offset=4096

k = Nid_cell % 4

不同的cell ID,DMRS会有不同的偏移,共4种偏移

复数相加并累计起来:

computed_val = c32x16maddShift(*pil, rxF[re_offset], computed_val, 15);

__attribute__((always_inline)) inline c32_t c32x16maddShift(const c16_t a, const c16_t b, const c32_t c, const int Shift) {

    return (c32_t) {

      .r = ((a.r * b.r - a.i * b.i) >> Shift) + c.r,

      .i = ((a.r * b.i + a.i * b.r) >> Shift) + c.i

    };

}

computed_val既是输入也是输出

其中:re_offset应该是子载波位置,也是采样点位置,re_offset = ssb_offset,ssb_offset = fp->first_carrier_offset + ssb_start_subcarrier,比如re_offset=1928

具体来说,接收信号逐次加4,即每4个子载波有一个DMRS,re_offset = (re_offset + 4) % fp->ofdm_symbol_size

本地信号逐次加1,pil++