LTE PSS主同步信号搜索 MATLAB实现

news2024/9/17 0:00:23

本期带来PSS相关检测说明和MATLAB实现,本期只讲相关方面的,所以MATLAB实现也是相关的部分,频偏估计方面的待下期开讲。

LTE 4G PSS搜索分为TDD搜索和FDD搜索,但是对于 TDD 和 FDD 而言,PSS同步信号的结构是完全一样的,但在帧中的时域位置有所不同.

对于 FDD 而言,PSS 在子帧 0 和 5 的第一个 slot 的最后一个 OFDM 符号上发送.

对于 TDD 而言,PSS 在子帧 1 和 6 的第三个 OFDM 符号上发送,即TDD的PSS都是在特殊子帧上发送的。

搜素PSS可以获得:

1. 小区NID2

2. 帧头信息

3. 5ms帧定时,由于10ms内的两个PSS同步信号的结构一样

4. UE的频偏

回顾一下PSS的生成公式,是由根u生成的ZC序列,u是由小区NID2得来的,如下图:

在频域上占据62个SC,加上左右各5个子载波的保护带共占据72个SC,正好是6个RB,占据中心带宽为72*15e3 = 1.08MHz,这么做的原因是UE初始搜索并不知道基站的带宽,只知道PSS在中间6个RB上,所以初始采样率不用太高,可以采用30.72M倍数的1.92M采样就行。

PSS搜索

由于LTE PSS在时间域上的分布,使得PSS相关最好使用互相关算法来寻找相关峰,它的原理是本地预先生成已知的三种ZC序列,再与接收到的空口信号做相关,获得定时同步,频偏信息。

假设只有频偏(包括整数倍和小数倍频偏,在这里两者统一为delta f),时延和噪声的情况下,接收到的信号可以表示为:

其中N为FFT的点数,如果是1.92M采样的话,N = 1.92e6/15e3=128点。

接收信号与本地的生成的序列x(n)做相关可以表示为:

当检测到定时头的时候上式可以表示为:

这个式子可以看成是x(n)循环移位theta后做傅里叶变化在delta f处的采样值,因此定时误差受到了噪声和频偏的影响,上式可以表示为代价函数和噪声和本地序列相关的和如下:

W为噪声和本地序列相关结果,J(delta f,theta)为代价函数。

在LTE中,PSS采用ZC序列,所以x(n)为横幅信号。

所以代价函数跟传输时延无关,把序列的幅值默认为1,可以表示为:

进一步可以表示为:

这是一个delta f在[0 1]上单调递减的函数,图如下:

当归一化频偏接近1的时候,即接近15k的时候相关值几乎为0

当频偏超过15k的时候,即存在整数倍频偏的时候存在相位翻转,出现负值,会导致相关值正负抵消的情况,加剧了情况的恶劣。

为了缓解这种情况,一般采用分段相关法,可以分成K段,每段长度为L,N=KL,每段单独做相关,最后所有的分段相关功率累加求和,如下:

这样频偏的影响就被降低了K倍,K的取值跟频偏的大小有关,频偏越大越需要分的块就越多,相关累计的抗噪声能力就会下降,会造成相关值的能量泄露,从而带来的就是帧头位置找的不准确,在小频偏的时候,不考虑噪声的影响,假设幅值为A,其没有分段的幅值近似为:

而分段的幅值:

其相关峰的峰值反而降低了K倍。所以分段K的大小根据实际的应用场景和UE本身的情况制定,一般的情况下,K的取值为2或者4最为合适。

MALTAB实现:

clc,clear,close all;

%

% author 生产队的蠢驴

%

%  coding timing 2024.09.03

%

%

%

rxSig = zeros(1,100000); % 这个是实际的1.92M空口数据,这里用0代替

Nrb = 100;

Nsc = 12;

Nsub = 14;

Ntot = 1200;

Ns = 7;

Nfft = 2048;

Ng = [160 144];

Index_TxCyclicPrefix_1 = [Nfft-Ng(1)+1:Nfft 1:Nfft];

Index_TxCyclicPrefix_2 = [Nfft-Ng(2)+1:Nfft 1:Nfft];

params.cell_search_enable = true;

params.cell_search_buff_len = 11520;

params.cell_search_window_len = 5*1920 + 128+10;

params.pss_combin_num = 2;

params.pss_segNum = 1;

params.pss_chest_left_point = 10;

params.pss_chest_right_point = 118;

params.SubcarrierSpacing = 15e3;

N_subframes = 17;

params.Nfft =  Nfft;

params.Ntot = Ntot;

params.Nrb = Nrb;

params.Nsc = Nsc;

pssThr = 25;

N = 128;

root_set = [25 29 34];

segL = N/params.pss_segNum;

corr_result = zeros(1,3,params.pss_combin_num,params.cell_search_window_len,params.pss_segNum);

%% first corr with local pss signal

for N_ID_2_idx=1:3

    pss_local_ifft128 = pss_gen(root_set(N_ID_2_idx));

    for combin_idx = 1:params.pss_combin_num

        rxSig_temp = rxSig((combin_idx-1)*5*1920+1:combin_idx*6*1920);

        for i_sample = 1:params.cell_search_window_len

            for seg_idx = 1:params.pss_segNum

                rx_temp = rxSig_temp(i_sample+(seg_idx-1)*segL:i_sample-1+seg_idx*segL);

                corr_result(1,N_ID_2_idx,combin_idx,i_sample,seg_idx) = corr_result(1,N_ID_2_idx,combin_idx,i_sample,seg_idx) + rx_temp*pss_local_ifft128((seg_idx-1)*segL+1:seg_idx*segL)';

            end

        end

    end

end

%% cal power

corr_result_abs = zeros(3,3,params.cell_search_window_len);

for N_ID_2_idx=1:3

    for combin_idx = 1:params.pss_combin_num

        for i_sample = 1:params.cell_search_window_len

            corrPower = 0;

            for seg_idx = 1:params.pss_segNum

                corrPower = corrPower + abs(corr_result(1,N_ID_2_idx,combin_idx,i_sample,seg_idx));

            end

            corrPower = corrPower^2;

            corr_result_abs(1,N_ID_2_idx,i_sample) = corr_result_abs(1,N_ID_2_idx,i_sample) + corrPower;

        end

    end

end

代码未完。。。

完整的MATLAB实现请关注微信号订阅号:nb_lte_5g ,老牛nb5g老牛每天带你学通信同步更新

努力只能及格,拼命才能优秀。

想成功,先发疯,不顾一切往前冲。

学通信任道重远,老牛带你走最捷径的路.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2113373.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

探索Python的数学魔法:Numpy库的神秘力量

文章目录 探索Python的数学魔法:Numpy库的神秘力量背景:为什么选择Numpy?Numpy是什么?如何安装Numpy?五个简单的库函数使用方法场景应用常见Bug及解决方案总结 探索Python的数学魔法:Numpy库的神秘力量 背景…

springnboot +uniapp汽车租赁系统

springnboot uniapp汽车租赁系统 手机移动端:主页,租赁汽车展示,汽车租赁,我的租赁记录,还车记录,注册登录,修改个人资料 PC端管理后台:公告管理,用户管理,…

PMBOK® 第六版 项目进度管理知识领域

目录 读后感—PMBOK第六版 目录 提到“进度”,大家都能直观理解其含义。有统计指出,现在项目的延迟交付比例越来越高,并且这一趋势持续上升。造成项目延期的原因是多方面的,常见的原因之一是在项目初期,由于时间充裕&…

Java:方法的使用

一.什么是方法: 在 Java SE 中,方法是类中包含的功能块,它定义了一组执行某些操作的指令。方法用于封装可重复的代码逻辑,并使代码更简洁、易读和易维护。(类似于 C 语言中的 "函数") 二.方法的…

JavaFX基本控件-Button

JavaFX基本控件-Button 常用属性textpaddingalignmenttextAlignmentwidthheighttooltipborderwrapTextellipsisStringunderlinegraphicgraphicTextGapdisable 实现方式Java实现fxml实现 常用属性 text 设置文本内容 button.setText("测试按钮");padding 内边距 butt…

css 个人喜欢的样式 速查笔记

起因&#xff0c; 目的: 记录自己喜欢的&#xff0c; 觉得比较好看的 css. 下次用的时候&#xff0c;直接复制&#xff0c;很方便。 1 设置英语字体: Noto html <link rel"preconnect" href"https://fonts.googleapis.com"> <link rel"p…

[情商-12]:人际交流中倾听的三大层次,十二个小层次, 低情商摆样子;研发人员关注:逻辑层;高情商人关注:情绪、情感、需求、动机

目录 前言&#xff1a; 一、基础层次 二、进阶层次 三、高级层次 总结 前言&#xff1a; 倾听是一个复杂而多维的过程&#xff0c;它不仅仅是耳朵在工作&#xff0c;更是心灵和思维的深度参与。根据不同的理论和观察角度&#xff0c;倾听可以划分为不同的层次。以下是对倾…

AI文献综述神器,有这一款就够了!

我是娜姐 迪娜学姐 &#xff0c;一个SCI医学期刊编辑&#xff0c;探索用AI工具提效论文写作和发表。 当前的AI辅助文献综述的工具有很多&#xff0c;如果说功能最强大的&#xff0c;娜姐无疑要推SciSpace了。 SciSpace利用强大的AI算法&#xff0c;理解并建立研究论文之间的联…

一篇带你速通差分算法(C/C++)

个人主页&#xff1a;摆烂小白敲代码 创作领域&#xff1a;算法、C/C 持续更新算法领域的文章&#xff0c;让博主在您的算法之路上祝您一臂之力 欢迎各位大佬莅临我的博客&#xff0c;您的关注、点赞、收藏、评论是我持续创作最大的动力 差分算法是一种在计算机科学中常用的算法…

C# 通过拖控件移动窗体

目录 引言一、通过控件事件移动窗体1、创建窗体界面2、添加控件事件3、添加代码 二、通过windowsAPI移动窗体1、 构建窗体和添加事件2、代码展示 引言 在C#Form窗体设计中&#xff0c;如果我们不需要使用默认边框设计自己个性化的窗体&#xff08;FromBorderStylenone时&#…

YOLOv8改进 | 模块缝合 | C2f 融合RFCAConv增强感受野空间特征 【二次融合 小白必备】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效…

《师兄啊师兄年番2》震撼发布,玄机科技再铸国漫巅峰!

随着秋风送爽&#xff0c;9月6日的优酷动漫发布会无疑为所有动漫爱好者带来了一场视觉与心灵的双重盛宴。其中最引人瞩目的&#xff0c;莫过于《师兄啊师兄年番2》携其全新海报的惊艳亮相&#xff0c;不仅预示着这部备受期待的国漫巨制即将开启全新篇章&#xff0c;更以其独特的…

SpringBoot3.x+MyBatisPlus+druid多数据源配置

1 引言 本章主要介绍SpringBoot3.x多数据源配置&#xff0c;以及在此基础上配置分页拦截&#xff0c;自动填充功等功能&#xff0c;源码链接在文章最后。下面列出几个重要文件进行介绍。 2 项目结构 整体项目结构如下&#xff0c;主要介绍配置文件和配置类。 3 主要代码 …

IstoreOS内网域名解析 修改网页端口

设置了自定义DNS&#xff0c;解析到Istore的IP&#xff0c;安装了1Panel&#xff0c;想用1Panel做域名解析&#xff0c;但是需要80和443端口。 这俩端口被IstoreOS占用了&#xff0c;下面修改 修改网页端口 https://github.com/istoreos/istoreos/issues/47 opkg update opkg…

【每日刷题】Day112

【每日刷题】Day112 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 1137. 第 N 个泰波那契数 - 力扣&#xff08;LeetCode&#xff09; 2. 面试题 08.01. 三步问题 - …

Web

关于Web Web是基于HTTP协议进行交互的应用网络Web就是通过使用浏览器/APP访问的各种资源 一个请求对应一个响应 eg. 淘宝网 输入一个url&#xff0c;就会返回一个页面 简单的网站开发 简单代码 package mainimport ("fmt""net/http" )/*http.ResponseWr…

麒麟系统安装GPU驱动

1.nvidia 1.1显卡驱动 本机显卡型号:nvidia rtx 3090 1.1.1下载驱动 打开 https://www.nvidia.cn/geforce/drivers/ 也可以直接使用下面这个地址下载 https://www.nvidia.com/download/driverResults.aspx/205464/en-us/ 1.1.3安装驱动 右击&#xff0c;为run文件添加可…

【Sceneform-EQR】通过sceneform-eqr实现一个视频播放器(使用安卓MediaPlayer实现视频播放)

在前一篇文档中介绍了如何在AR\三维场景创建几种背景 【Sceneform-EQR】scenefrom-eqr中的几种背景实现(不仅用于AR、三维场景&#xff0c;在图片、视频播放器中也适用) 本文将侧重介绍如何使用安卓MediaPlayer实现视频播放。 ↓↓↓↓↓↓↓↓↓↓↓↓ 以下正文 ↓↓↓↓↓↓…

OFDM信号PARP的CCDF图

文章目录 引言代码代码疑难解答参考文献 引言 本书主要参考了文献1&#xff0c;但实际上该书中符号和表述的错误非常多&#xff08;只能说棒子是这样的&#xff09;&#xff1b;同时因为发表时间的关系&#xff0c;很多MATLAB代码进行了更新&#xff0c;原书提供的代码已经无法…

溜狗牵绳行为检测-目标检测数据集(包括VOC格式、YOLO格式)

溜狗牵绳行为检测-目标检测数据集&#xff08;包括VOC格式、YOLO格式&#xff09; 数据集&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1CwLEAKcdlh9hbcBNh_Awdw?pwdiu6b 提取码&#xff1a;iu6b数据集信息介绍&#xff1a; 共有 1980 张图像和一一对应的标注文件…