# SDR E310 部署规划 本文档概述将 NearLink SDR 从纯仿真环境迁移到 USRP E310 硬件的路径。 ## 当前完成度 ### 物理层 (第 6 章) -- 全部完成 | 功能 | 模块 | 标准章节 | |------|------|----------| | GFSK 调制解调 | `phy/gfsk.py` | 6.2.1.1 | | BPSK/QPSK 调制解调 | `phy/psk.py` | 6.2.1.2 | | 帧结构 FT1-FT4 | `phy/frame.py` | 6.3 | | 前导码 | `phy/preamble.py` | 6.4 | | 同步信号 1-6 | `phy/sync_sequence.py` | 6.5/6.6 | | 导频 | `phy/pilot.py` | 6.7 | | 控制信息 A/B 组 | `phy/control_info.py` | 6.4 | | CRC-12/24A/24B/32 | `common/crc.py` | 6.9 | | Polar 编解码 (SSC) | `common/polar.py` | 6.10.1 | | 码块分割 | `common/code_block_seg.py` | 6.10.2 | | 跳频序列 (2.4/5.1/5.8 GHz) | `phy/freq_hopping.py` | 6.10.3 | | 信道比特加扰 | `common/scrambler.py` | 6.10.4 | | MCS 表与速率匹配 | `common/mcs.py` | 6.10.5/6 | | BCH 编码 | `common/bch.py` | 6.11 | | TX/RX 流水线 | `phy/tx_pipeline.py`, `phy/rx_pipeline.py` | 6.10 | | 测量信号 1/2 (多音) | `phy/measurement.py` | 6.2.4 | | 测量帧类型 1-4 + UWB | `phy/measurement_frame.py` | 6.3.6-11 | | 安全随机函数 | `mac/crypto.py` | 6.10.7 | | PRBS11/PRBS17 | `common/prbs.py` | 8.3.5 | | USRP E310 接口 | `phy/usrp.py` | - | | MAC-PHY 适配层 | `phy/mac_interface.py` | - | | 信道模型 + 均衡器 | `phy/channel.py`, `phy/equalizer.py` | - | ### MAC 层 (第 7 章) -- 全部完成 | 功能 | 模块 | 标准章节 | |------|------|----------| | 控制面/数据面/复用帧结构 | `mac/frame.py` | 7.3 | | 信令注册表 (130 类型) | `mac/signaling.py` | 7.3.2 全覆盖 | | 链路控制信令 | `mac/link_control.py` | 7.3.2.2-114 | | 功率控制 | `mac/power_control.py` | 7.2.13 | | 广播帧 + 子信息 (7.1.4.1-9) | `mac/broadcast.py` | 7.1.4 | | 链路管理状态机 (含休眠/唤醒) | `mac/link_manager.py` | 7.1/7.2/7.2.14 | | 接入流程 | `mac/access.py` | 7.1.3 | | 时隙调度器 | `mac/scheduler.py` | 6.3.1/7.1.4 | | QoS 管理 (ARQ/HARQ/流控) | `mac/qos.py` | 6.5 | | 配对信令 | `mac/security.py` | 9.2 | | 加密模块 (AES-CCM/ECDH/KDF) | `mac/crypto.py` | 9.3/9.4 | | 安全管理器 | `mac/security_manager.py` | 9.2-9.4 | ### 仿真 (15 阶段 + USRP 环回) | 阶段 | 内容 | |------|------| | Phase 1 | GFSK/BPSK/QPSK 未编码 BER | | Phase 2 | Polar 编码 BER/FER | | Phase 3 | 帧级导频 BER/FER | | Phase 4 | 多径衰落 + 均衡器性能 | | Phase 5 | 频率选择性信道 | | Phase 6 | 全 TX/RX 流水线 | | Phase 7 | 多径 + 频偏集成 | | Phase 8 | Pipeline 全帧类型对比 | | Phase 9 | MAC 帧端到端 (信令/数据/复用) | | Phase 10 | 多链路调度仿真 | | Phase 11 | 接入 → 配对 → 加密端到端 | | Phase 12 | AMC + HARQ + 跳频多径 | | Phase 13 | QoS ARQ/AMC/流控自适应 | | Phase 14 | 双节点 SleNode 端到端 | | Phase 15 | SleNode 集成仿真 (跳频/接入/功率/信道) | | USRP Sim | MockUSRP 环回 (IQ/PHY/MAC/跳频/批量) | ### 统一实体 | 功能 | 模块 | |------|------| | SLE 节点实体 | `node.py` | | USRP 环回仿真引擎 | `sim/usrp_sim.py` | ### 测试质量 - 2652 个测试用例, 全部通过 - 整体覆盖率 91%, 核心模块覆盖率 97%+, 测试执行时间 5.00 秒 - 标准第 14 章测试向量 (TV101-TV206, SyncWord2) 全部验证通过 - 一致性测试 244 个 (协议/射频/安全) --- ## 未实现的进阶特性 以下是标准中定义但当前未实现的进阶功能, 不影响核心 SLE 通信: | 特性 | 标准章节 | 说明 | |------|----------|------| | 睡眠时钟精度计算 | 8.2.2.4-5 | DORMANT/WAKING 状态已实现, 精确漂移补偿需硬件 | --- ## SDR E310 迁移规划 ### 前置条件 1. USRP E310 硬件就绪, UHD 驱动已安装 2. 宿主机与 E310 网络连通 (或直接在 E310 ARM 上运行) 3. SLE 2.4 GHz 频段射频校准完成 ### 软件仿真验证 (已完成) 以下步骤已通过 MockUSRP 环回仿真完成验证: - IQ 级环回: TX IQ 样本 → LoopbackBuffer → RX, AWGN/多径信道可选 - PHY 全链路: 编码 → 调制 → MockUSRP TX → 信道 → MockUSRP RX → 解调 → 解码 - MAC 帧级: AsyncDataFrame 打包 → PHY → 环回 → PHY → 解包 - 跳频序列: 在多个信道上依次发射/接收 - 双节点: SleNode G + SleNode T 端到端通信 - 批量帧: 多帧 BER/FER 统计 验证代码: `sim/usrp_sim.py` + `tests/test_usrp_sim.py` (33 个测试) ### 阶段一: 硬件验证 **目标**: 验证 `phy/usrp.py` 在真实硬件上的基本功能 ```text scripts/hw_verify.py: 1. 初始化 USRPDevice(use_mock=False) 2. 验证频率设置 (2402-2480 MHz) 3. 验证增益控制 (TX/RX) 4. 发射单载波 → 频谱仪确认 5. 回环测试 (TX→RX, 外部衰减器/线缆) ``` 关键参数: - 采样率: 1 MHz (GFSK) 或 2 MHz (QPSK) - 中心频率: 2440 MHz (信道 19) - TX 增益: 20 dB (初始低功率) - RX 增益: 40 dB ### 阶段二: 物理层回环 **目标**: TX pipeline → 空口/线缆 → RX pipeline 回环验证 ```text scripts/phy_loopback.py: 1. 构造 FT2 帧 (GFSK, MCS=0) 2. mac_to_iq() 生成 IQ 样本 3. SLETransceiver.transmit_iq() 发射 4. SLETransceiver.receive_iq() 接收 5. iq_to_mac() 解码比较 6. 统计 BER/PER ``` 注意事项: - 首次使用线缆回环 + 衰减器, 排除空口干扰 - 频偏校准: E310 TCXO 精度 ±2.5 ppm, 对应 ±6 kHz@2.4 GHz - AGC: 初始固定增益, 后续增加自动增益控制 ### 阶段三: 双机通信 **目标**: 两台 E310 之间收发通信 ```text scripts/tx_node.py: # G 节点发射端 (待创建) scripts/rx_node.py: # T 节点接收端 (待创建) 流程: G 节点: 1. 广播帧发射 (周期性) 2. 等待接入请求 3. 建立连接 4. 数据帧发射 T 节点: 1. 扫描广播帧 2. 前导码检测 + 同步 3. 解码广播帧 4. 发送接入请求 5. 数据帧接收 ``` ### 阶段四: 协议栈集成 **目标**: MAC 状态机驱动的完整协议栈运行 ```text main.py (重构): - CLI 入口: tx/rx/loopback/sim 模式选择 - G 节点模式: 广播 → 接入 → 连接 → 数据传输 - T 节点模式: 扫描 → 接入 → 连接 → 数据接收 - 仿真模式: 各 Phase 仿真 关键集成: LinkManager → mac_to_iq() → SLETransceiver → 空口 → iq_to_mac() → LinkManager ``` ### 阶段五: 性能优化 - 实时性: NumPy 计算耗时评估, 瓶颈识别 - 缓冲区管理: TX/RX 缓冲区大小调优 - 跳频延迟: `tune_channel()` 切换时间测量 - 功率控制: TX 增益动态调节 - 时钟同步: PPS/GPS 外部参考时钟 (可选) --- ## 部署优先级 | 优先级 | 任务 | 状态 | |--------|------|------| | P0 | 广播帧子信息补全 (7.1.4.1-9) | 已完成 | | P0 | 接入流程实现 (7.1.3) | 已完成 | | P1 | 时隙调度子系统 | 已完成 | | P1 | MockUSRP 环回仿真验证 | 已完成 | | P2 | 控制面信令类型 (7.3.2 全覆盖) | 已完成 | | P2 | 休眠唤醒状态 (DORMANT/WAKING) | 已完成 | | **P3** | **硬件验证脚本** | **待 E310 硬件就绪** | | **P3** | **物理层线缆回环** | **待硬件验证完成** | | **P4** | **双机空口通信** | **待物理层回环调通** | | **P5** | **协议栈 CLI 集成** | **待双机通信稳定** | | **P6** | **实时性能优化** | **待部署后评估** |