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

推荐订阅源

奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
小众软件
小众软件
博客园 - 三生石上(FineUI控件)
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园_首页
Last Week in AI
Last Week in AI
美团技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
WordPress大学
WordPress大学
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - Franky
The Cloudflare Blog
罗磊的独立博客
月光博客
月光博客
N
Netflix TechBlog - Medium
C
Check Point Blog
Microsoft Security Blog
Microsoft Security Blog
F
Fortinet All Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Microsoft Azure Blog
Microsoft Azure Blog
IT之家
IT之家
Jina AI
Jina AI
J
Java Code Geeks

博客园 - 普罗大众

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之SSS检测 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之信道
普罗大众 · 2026-03-17 · via 博客园 - 普罗大众

1)信道参数生成:

gNB2UE = new_channel_desc_scm(n_tx, n_rx, channel_model, fs, 0, txbw, 300e-9, 0.0, CORR_LEVEL_LOW, 0, 0, 0, 0);

信道数据保存在gNB2UE内

delays,amp应该是建模的参数,例如:EPA信道里有7个元素,相当于7个抽头对应7个延迟7个幅度

ch是后续过信道时的卷积信道,长度为channel_length

channel_length计算示例(EPA):

chan_desc->channel_length = (int) (2*chan_desc->sampling_rate*chan_desc->Td + 1 + 2/(M_PI*M_PI)*log(4*M_PI*chan_desc->sampling_rate*chan_desc->Td));

EPA时,TD=0.41,单位是微秒,即410ns,来自hard code

TDL-A时,TD=2.9e-6,单位是秒,来自new_channel_desc_scm的输入参数DS_TDL

单位不统一,可能作者重点维护TDL信道去了?

2)信道生成和过信道:

先是信道生成:

random_channel

具体生成ch

输入参数keep_channel填0

再过信道:

void __attribute__ ((no_sanitize_address)) multipath_channel(channel_desc_t *desc,

                       double *tx_sig_re[NB_ANTENNAS_TX],

                       double *tx_sig_im[NB_ANTENNAS_TX],

                       double *rx_sig_re[NB_ANTENNAS_RX],

                       double *rx_sig_im[NB_ANTENNAS_RX],

                       uint32_t length,

                       uint8_t keep_channel,

                  int log_channel)

注意,作者没有维护这段代码,所以有些错误,例如tx_sig没有赋值,哎。。。

过信道是如下循环:

for (int i=0; i<((int)length-dd); i++) {

    for (int ii=0; ii<desc->nb_rx; ii++) {

      struct complexd rx_tmp={0};

      for (int j=0; j<desc->nb_tx; j++) {

        struct complexd *chan=desc->ch[ii+(j*desc->nb_rx)];

        for (int l = 0; l<(int)desc->channel_length; l++) {

          if ((i>=0) && (i-l)>=0) {

            struct complexd tx;

            tx.r = tx_sig_re[j][i-l];

            tx.i = tx_sig_im[j][i-l];

            rx_tmp.r += (tx.r * chan[l].r) - (tx.i * chan[l].i);

            rx_tmp.i += (tx.i * chan[l].r) + (tx.r * chan[l].i);

          }

应该是与desc->ch进行卷积。tx的第i-l个信号与chan的第l个信号相乘,然后累加起来