活动介绍

NB-IoT通信机制与调度策略解析

立即解锁
发布时间: 2025-08-29 10:46:46 阅读量: 17 订阅数: 41 AIGC
### NB-IoT 通信机制与调度策略解析 #### 1. 下行信道质量报告 设备通过 NPDCCH 可靠运行所需的重复次数来提供下行信道质量报告。例如,当设备在消息 2 中接收到随机接入响应(RAR)时,就能获得这样的估计,因为在这个过程中,设备知道解码调度 RAR 的 NPDCCH 需要多少次重复。支持两种报告格式: - **完整格式**:设备可以指示 NPDCCH 重复因子之一,如 1、2、4、8、16、32、64、128、256、512、1024 或 2048,也可以指示为空(即未进行测量),这需要一个 4 位的消息。 - **短格式**:用于某些空间有限的消息 3 类型。设备根据为搜索空间配置的最大 NPDCCH 重复因子 Rmax 来指示其 NPDCCH 重复估计。报告的下行信道质量可以是 Rmax/8、Rmax 或 4Rmax,也可以指示为空,这种短格式需要一个 2 位的消息。 在消息 5 中,设备会向网络报告以 NRSRP 和 NRSRQ 表示的下行信号强度和下行信号质量,以便网络长期合理配置和规划网络中的小区。 需要注意的是,上述报告与功率余量报告、HARQ ACK/NACK 以及 RLC 确认模式状态报告是 NB - IoT 设备向网络发送的唯一反馈。 #### 2. 接入控制 接入限制(AB)是 NB - IoT 采用的一种接入控制机制,它类似于特定的接入类限制功能,允许跨 10 个普通接入类和 5 个特殊接入类进行 PLMN 特定的限制,还支持对打算发送异常报告的设备进行特殊处理。 MIB - NB 中提供了一个 AB 标志: - 若该标志设置为 false,则所有设备都允许接入网络。 - 若设置为 true,设备在尝试接入网络之前必须读取 SIB14 - NB,该消息提供了接入类特定的限制信息,设备需要检查其接入类是否被允许接入网络。如果设备被限制接入,它应该回退并在稍后重新尝试接入。 此外,3GPP Release 15 引入了覆盖级别特定的限制,通过在 SIB14 - NB 中提供 NRSRP 阈值来防止处于特定覆盖级别或更差覆盖的设备接入网络。如果设备测量的 NRSRP 低于该阈值,将被禁止接入网络,需回退并稍后重新尝试。 #### 3. 非锚载波上的系统接入 NB - IoT 的基本设计目标是每平方公里至少支持 60,680 个设备,从 3GPP Release 14 开始,目标提升到每平方公里支持 1,000,000 个设备。根据流量模型,这些负载分别对应每秒 6.8 次和 112.2 次接入请求。为了降低竞争前导码的碰撞率,需要为 NPRACH 预留足够的无线电资源。 对于如 NB - IoT NPRACH 这样的时隙型接入方案,竞争前导码之间的碰撞概率可以通过以下公式估计: \[Prob(collision) = 1 - e^{-g/L}\] 其中,L 是每秒的随机接入机会总数,g 是平均随机接入强度。 如果目标是在每秒 6.8 次接入请求的情况下,将碰撞概率控制在 1%,则系统需要每秒提供 677 次随机接入机会。NB - IoT 通过为 CE 级别 0 配置一个跨越 48 个子载波且周期为 40 ms 的 NPRACH 资源,最多每秒可提供 1200 次接入机会。若允许 10% 的碰撞率,每秒配置 65 次接入机会即可。但要支持每秒 112.2 次接入请求,即使碰撞率为 10%,也需要每秒配置 1065 次接入机会。 因此,为了满足高负载需求并支持扩展覆盖的设备,3GPP Release 14 引入了非锚载波上的随机接入,并为非锚载波添加了寻呼支持。寻呼载波除了用于寻呼外,还用于消息 2 和 4 的传输,而随机接入载波用于消息 1 和 3 的传输。非锚载波上的寻呼和随机接入过程的无线电资源配置由 SIB22 - NB 提供。 非锚载波与锚载波的系统接入的一个主要区别在于是否存在 NRS。 #### 4. 组播 为了更好地支持固件或软件更新,NB - IoT Release 14 引入了单小区点对多点(SC - PTM)服务。它基于多媒体广播组播服务架构,提供了用于单小区广播和组播传输的空中接口,其设计与 LTE - M SC - PTM 有相似之处。 SC - PTM 定义了两个逻辑信道:单小区组播控制信道(SC - MCCH)和单小区组播业务信道(SC - MTCH),这些逻辑信道映射到 NPDSCH 上。NPDSCH 由 NPDCCH 调度,NPDCCH 在与 SC - MCCH 和 SC - MTCH 相关的两个新公共搜索空间中传输。 - **Type - 1A 公共搜索空间(CSS)**:包含 NPDCCH 候选,其 CRC 由单小区 RNTI(SC - RNTI)加扰,用于调度携带 SC - MCCH 的 NPDSCH。由于 SC - MCCH 类似于寻呼,是广播到小区内的一组设备,因此 Type - 1A CSS 的设计基于 Type - 1 CSS,NPDCCH 候选只能在搜索空间的开始处启动。 - **Type - 2A CSS**:包含 NPDCCH 候选,其 CRC 由组 RNTI(G - RNTI)加扰,用于调度携带 SC - MTCH 的 NPDSCH。为了保持 SC - MTCH 调度的灵活性,Type - 2A CSS 遵循 Type - 2 CSS 的设计原则,为 NPDCCH 候选定义了多个起始点。 获取 SC - PTM 服务的流程如下: ```mermaid graph LR A[开始] --> B[读取 SIB 1 - NB 获取 SIB20 - NB 调度信息] B --> C[读取 SIB20 - NB 获取 SC - MCCH 配置] C --> D[在 Type - 1A CSS 中搜索由 SC - RNTI 标识的调度 SC - MCCH 的 DCI] D --> E[读取 SC - MCCH 获取 SC - MTCH 配置,包括 G - RNTIs] E --> F[在 Type - 2A CSS 中搜索由 G - RNTI 标识的调度 SC - MTCH 的 DCI] F --> G[获取携带 SC - PTM 服务的 SC - MTCH] ``` 一个小区可以配置一个 SC - MCCH,它可以配置通过 SC - MTCH 传输的多达 64 个同时进行的组播和广播服务。锚载波和非锚载波都可以用于承载 SC - MCCH 和 SC - MTCH。组播数据包不支持重传,每个 SC - PTM 会话在 NPDSCH 上只有一次传输,但由于 NPDCCH 和 NPDSCH 支持大量重复,NB - IoT SC - PTM 服务仍有望支持 164 dB 的最大耦合损耗(MCL)。 #### 5. NPDCCH 搜索空间 NPDCCH 搜索空间是与连接模式调度以及空闲模式寻呼相关的关键概念。搜索空间由一个或多个子帧组成,设备可以在其中搜索寻址到该设备的下行控制信息(DCI)。定义了三种主要类型的搜索空间: - **Type - 1 公共搜索空间(CSS)**:用于监控寻呼,其变体 Type - 1A CSS 用于监控 SC - MCCH 的调度。 - **Type - 2 CSS**:用于监控随机接入响应(RAR)、消息 3 的 HARQ 重传以及消息 4 的无线电资源分配,其变体 Type - 2A CSS 用于监控 SC - MTCH 的调度。
corwn 最低0.47元/天 解锁专栏
赠100次下载
继续阅读 点击查看下一篇
profit 400次 会员资源下载次数
profit 300万+ 优质博客文章
profit 1000万+ 优质下载资源
profit 1000万+ 优质文库回答
复制全文

相关推荐

物联网_赵伟杰

物联网专家
12年毕业于人民大学计算机专业,有超过7年工作经验的物联网及硬件开发专家,曾就职于多家知名科技公司,并在其中担任重要技术职位。有丰富的物联网及硬件开发经验,擅长于嵌入式系统设计、传感器技术、无线通信以及智能硬件开发等领域。
最低0.47元/天 解锁专栏
赠100次下载
百万级 高质量VIP文章无限畅学
千万级 优质资源任意下载
千万级 优质文库回答免费看
立即解锁

专栏目录

最新推荐

Rust模块系统与JSON解析:提升代码组织与性能

### Rust 模块系统与 JSON 解析:提升代码组织与性能 #### 1. Rust 模块系统基础 在 Rust 编程中,模块系统是组织代码的重要工具。使用 `mod` 关键字可以将代码分隔成具有特定用途的逻辑模块。有两种方式来定义模块: - `mod your_mod_name { contents; }`:将模块内容写在同一个文件中。 - `mod your_mod_name;`:将模块内容写在 `your_mod_name.rs` 文件里。 若要在模块间使用某些项,必须使用 `pub` 关键字将其设为公共项。模块可以无限嵌套,访问模块内的项可使用相对路径和绝对路径。相对路径相对

iOS开发中的面部识别与机器学习应用

### iOS开发中的面部识别与机器学习应用 #### 1. 面部识别技术概述 随着科技的发展,如今许多专业摄影师甚至会使用iPhone的相机进行拍摄,而iPad的所有当前型号也都配备了相机。在这样的背景下,了解如何在iOS设备中使用相机以及相关的图像处理技术变得尤为重要,其中面部识别技术就是一个很有价值的应用。 苹果提供了许多框架,Vision框架就是其中之一,它可以识别图片中的物体,如人脸。面部识别技术不仅可以识别图片中人脸的数量,还能在人脸周围绘制矩形,精确显示人脸在图片中的位置。虽然面部识别并非完美,但它足以让应用增加额外的功能,且开发者无需编写大量额外的代码。 #### 2.

Rust编程:模块与路径的使用指南

### Rust编程:模块与路径的使用指南 #### 1. Rust代码中的特殊元素 在Rust编程里,有一些特殊的工具和概念。比如Bindgen,它能为C和C++代码生成Rust绑定。构建脚本则允许开发者编写在编译时运行的Rust代码。`include!` 能在编译时将文本文件插入到Rust源代码文件中,并将其解释为Rust代码。 同时,并非所有的 `extern "C"` 函数都需要 `#[no_mangle]`。重新借用可以让我们把原始指针当作标准的Rust引用。`.offset_from` 可以获取两个指针之间的字节差。`std::slice::from_raw_parts` 能从

AWS无服务器服务深度解析与实操指南

### AWS 无服务器服务深度解析与实操指南 在当今的云计算领域,AWS(Amazon Web Services)提供了一系列强大的无服务器服务,如 AWS Lambda、AWS Step Functions 和 AWS Elastic Load Balancer,这些服务极大地简化了应用程序的开发和部署过程。下面将详细介绍这些服务的特点、优缺点以及实际操作步骤。 #### 1. AWS Lambda 函数 ##### 1.1 无状态执行特性 AWS Lambda 函数设计为无状态的,每次调用都是独立的。这种架构从一个全新的状态开始执行每个函数,有助于提高可扩展性和可靠性。 #####

Rust应用中的日志记录与调试

### Rust 应用中的日志记录与调试 在 Rust 应用开发中,日志记录和调试是非常重要的环节。日志记录可以帮助我们了解应用的运行状态,而调试则能帮助我们找出代码中的问题。本文将介绍如何使用 `tracing` 库进行日志记录,以及如何使用调试器调试 Rust 应用。 #### 1. 引入 tracing 库 在 Rust 应用中,`tracing` 库引入了三个主要概念来解决在大型异步应用中进行日志记录时面临的挑战: - **Spans**:表示一个时间段,有开始和结束。通常是请求的开始和 HTTP 响应的发送。可以手动创建跨度,也可以使用 `warp` 中的默认内置行为。还可以嵌套

并发编程中的锁与条件变量优化

# 并发编程中的锁与条件变量优化 ## 1. 条件变量优化 ### 1.1 避免虚假唤醒 在使用条件变量时,虚假唤醒是一个可能影响性能的问题。每次线程被唤醒时,它会尝试锁定互斥锁,这可能与其他线程竞争,对性能产生较大影响。虽然底层的 `wait()` 操作很少会虚假唤醒,但我们实现的条件变量中,`notify_one()` 可能会导致多个线程停止等待。 例如,当一个线程即将进入睡眠状态,刚加载了计数器值但还未入睡时,调用 `notify_one()` 会阻止该线程入睡,同时还会唤醒另一个线程,这两个线程会竞争锁定互斥锁,浪费处理器时间。 解决这个问题的一种相对简单的方法是跟踪允许唤醒的线

Rust开发实战:从命令行到Web应用

# Rust开发实战:从命令行到Web应用 ## 1. Rust在Android开发中的应用 ### 1.1 Fuzz配置与示例 Fuzz配置可用于在模糊测试基础设施上运行目标,其属性与cc_fuzz的fuzz_config相同。以下是一个简单的fuzzer示例: ```rust fuzz_config: { fuzz_on_haiku_device: true, fuzz_on_haiku_host: false, } fuzz_target!(|data: &[u8]| { if data.len() == 4 { panic!("panic s

Rust项目构建与部署全解析

### Rust 项目构建与部署全解析 #### 1. 使用环境变量中的 API 密钥 在代码中,我们可以从 `.env` 文件里读取 API 密钥并运用到函数里。以下是 `check_profanity` 函数的代码示例: ```rust use std::env; … #[instrument] pub async fn check_profanity(content: String) -> Result<String, handle_errors::Error> { // We are already checking if the ENV VARIABLE is set

Rust数据处理:HashMaps、迭代器与高阶函数的高效运用

### Rust 数据处理:HashMaps、迭代器与高阶函数的高效运用 在 Rust 编程中,文本数据管理、键值存储、迭代器以及高阶函数的使用是构建高效、安全和可维护程序的关键部分。下面将详细介绍 Rust 中这些重要概念的使用方法和优势。 #### 1. Rust 文本数据管理 Rust 的 `String` 和 `&str` 类型在管理文本数据时,紧密围绕语言对安全性、性能和潜在错误显式处理的强调。转换、切片、迭代和格式化等机制,使开发者能高效处理文本,同时充分考虑操作的内存和计算特性。这种方式强化了核心编程原则,为开发者提供了准确且可预测地处理文本数据的工具。 #### 2. 使

React应用性能优化与测试指南

### React 应用性能优化与测试指南 #### 应用性能优化 在开发 React 应用时,优化性能是提升用户体验的关键。以下是一些有效的性能优化方法: ##### Webpack 配置优化 通过合理的 Webpack 配置,可以得到优化后的打包文件。示例配置如下: ```javascript { // 其他配置... plugins: [ new webpack.DefinePlugin({ 'process.env': { NODE_ENV: JSON.stringify('production') } }) ],