系统架构¶
nearlink-sdr 是一个链路级仿真系统, 实现了 TXS-10002-2025 SparkLink SLE 标准定义的物理层处理链路。本文说明系统的整体结构和设计思路。
模块组织¶
系统分为四个子包:
nearlink_sdr/
├── common/ 信道编码与底层算法
├── phy/ 物理层信号处理
├── mac/ MAC 层协议
└── sim/ 链路仿真入口
common -- 信道编码¶
模块 |
功能 |
标准条款 |
|---|---|---|
|
CRC12/24A/24B/32 校验 |
6.9 (6.10.1) |
|
BCH(31,26) / BCH(63,24) 编码 |
6.11 |
|
Polar 编码, SC 解码 |
6.10.1 |
|
码块分割 |
6.9.1.2 / 6.9.1.3 |
|
m31/m63 序列生成 |
6.11 |
|
信道比特加扰 (Galois LFSR) |
6.10.4 |
|
MCS 表与速率匹配 |
6.10.5 / 6.10.6 |
|
PRBS11/PRBS17 伪随机序列 |
8.3.5 |
phy -- 物理层¶
模块 |
功能 |
标准条款 |
|---|---|---|
|
GFSK 调制/解调 |
6.2.1.1 |
|
BPSK/QPSK/8PSK, RRC 脉冲成型 |
6.2.1.2 |
|
前导码生成 |
6.4 |
|
同步信号 1-6 |
6.5/6.6/6.2.3 |
|
导频符号插入与移除 |
6.7 |
|
帧结构组装/解析 (类型 1-4) |
6.3 |
|
A1-A7/B1-B5 物理层控制信息 |
6.4 |
|
TX 发射流水线 |
6.10 |
|
RX 接收流水线 |
6.10 |
|
AWGN/Rayleigh/Rician/多径信道, Jakes Doppler 衰落, 多用户干扰 |
-- |
|
ZF/MMSE 均衡, LS 信道估计 |
-- |
|
跳频序列与频率管理 |
6.10.3/8.1.2 |
|
MAC-PHY 适配层 |
-- |
|
位置信息测量信号 |
6.2.4 |
|
测量帧类型 1-4 与 UWB 脉冲帧 |
6.3.6-6.3.11 |
|
窄带/UWB 测量链路参数与调度 |
6.7/6.8 |
|
UWB 脉冲波形与芯片调制 |
6.2.1.4 |
|
多音信号生成 |
6.2.1.3 |
|
射频合规参数校验 |
8.2-8.4 |
|
异步/同步数据链路传输规程 |
6.5.1-6.5.3 |
|
USRP E310 硬件接口 |
-- |
mac -- MAC 层¶
模块 |
功能 |
标准条款 |
|---|---|---|
|
控制面/数据面/复用帧结构 |
7.3.2-7.3.4 |
|
广播帧结构与子信息 |
7.1.4 |
|
信令注册与编解码 (112 个类型) |
7.3 |
|
全部链路控制信令 |
7.3.2 |
|
功率控制流程与信令 |
7.2.13 |
|
链路管理状态机 |
7.1/7.2 |
|
接入流程管理 |
7.1.3 |
|
时序调度器 |
6.3/6.6/7.2 |
|
配对信令 (16 个消息类型) |
9.2 |
|
AES-CCM 加密与密钥派生 |
9.3/9.4 |
|
安全流程集成 (配对 + 加密) |
9.2-9.4 |
|
QoS 服务质量管理 (ARQ/HARQ/流控/LQI) |
6.5 |
|
系统管理帧编解码 |
6.6 |
|
SMF 发送调度 |
6.6.3 |
|
UWB 脉冲测量安全 |
9.5 |
sim -- 仿真¶
link_sim 模块封装了端到端仿真流程, 分为十六个阶段:
阶段 |
内容 |
函数 |
|---|---|---|
Phase 1 |
无编码 GFSK/PSK BER |
|
Phase 2 |
Polar 编码 BER/FER |
|
Phase 3 |
帧级仿真 |
|
Phase 4 |
多径信道 + 均衡器 |
|
Phase 5 |
跳频仿真 |
|
Phase 6 |
全链路 Pipeline 仿真 |
|
Phase 7 |
多径信道 + 频偏 Pipeline |
|
Phase 8 |
均衡器集成 Pipeline |
(run_phase8_simulation) |
Phase 9 |
MAC 帧级端到端仿真 |
|
Phase 10 |
多链路调度仿真 |
|
Phase 11 |
安全通信端到端仿真 |
|
Phase 12 |
AMC / HARQ / 跳频多径 |
|
Phase 13 |
QoS ARQ / AMC 自适应 / 流控 |
|
Phase 14 |
双节点端到端仿真 |
|
Phase 15 |
SleNode 集成仿真 |
|
Phase 16 |
多用户干扰 + Doppler 时变信道 |
|
每个阶段的仿真函数可独立调用, 也可通过 run_phaseN_simulation() 批量执行。
node -- 节点实体¶
node 模块提供顶层 SleNode 类, 将所有 MAC/PHY 组件整合为统一的收发接口:
类 |
职责 |
|---|---|
|
节点参数配置 (地址、角色、帧类型、MCS、带宽、加密等) |
|
节点主体, 管理完整链路生命周期 |
|
事件回调接口 (状态变迁、连接、断开) |
|
发射/接收结果数据 |
SleNode 内部组件关系:
SleNode
├── LinkManager 链路状态机 (IDLE → BROADCASTING/SCANNING → CONNECTED → DISCONNECTED)
├── QosManager QoS 管理 (ARQ + HARQ + 流控 + 质量跟踪 + 发送队列)
├── PairingManager 配对流程驱动 (ECDH 密钥交换)
├── FrameCryptoContext 帧级加密上下文 (AES-CCM)
├── FreqHopping 跳频序列管理
├── PowerController 功率控制
├── ScheduleManager 时序调度
├── ChannelModel 信道模型 (仿真模式)
├── AccessManager 接入流程管理
├── SMFScheduler 系统管理帧调度 (可选)
└── TxConfig 发射参数 (帧类型 + MCS + 导频 + 加扰)
信号处理链路¶
SparkLink SLE 的发射处理链路 (tx_chain):
flowchart TD
A["信息比特"] --> B["CRC 附加"]
B --> C["码块分割"]
C --> D["Polar 编码 (FT2/3/4) 或直通 (FT1)"]
D --> E["比特加扰"]
E --> F["调制 (GFSK / BPSK / QPSK / 8PSK)"]
F --> G["导频插入 (FT2/3/4)"]
G --> H["帧组装 (前导 + 同步 + 控制信息 + 数据)"]
H --> I["脉冲成型 (RRC)"]
I --> J["上变频 / 发射"]
接收链路 (rx_chain) 是上述过程的逆操作:
flowchart TD
A["接收 IQ"] --> B["帧同步 (前导检测 + 同步序列相关)"]
B --> C["头部解码 (解加扰 → Polar 解码 → CRC 校验)"]
C --> D["导频移除"]
D --> E["解调 (软 LLR / 硬判决)"]
E --> F["Polar 解码 (FT2/3/4) 或直通 (FT1)"]
F --> G["解加扰"]
G --> H["CRC 校验"]
H --> I["数据比特输出"]
帧类型¶
标准定义了四种帧类型:
帧类型 |
调制方式 |
编码 |
控制信息 |
同步信号 |
用途 |
|---|---|---|---|---|---|
1 |
GFSK |
无 (BCH) |
A 组 (20 bit + CRC12) |
sync_signal_1 |
广播/发现 |
2 |
PSK |
Polar(64,K) |
A 组 (28 bit + CRC12) |
sync_signal_2 |
数据 (有连接) |
3 |
PSK |
Polar(256,K) |
B 组 (27 bit + CRC24B) |
sync_signal_3 |
数据 (有连接) |
4 |
PSK |
Polar(256,K) |
B 组 (27 bit + CRC24B) |
sync_signal_4 |
数据 (有连接) |
关键差异:
FT1 使用 GFSK 调制, 不经 Polar 编码, 头部通过 BCH 编码。
mcs_index=8表示非编码直通。FT2 使用 PSK 调制, Polar(64,K) 头部编码,
segment_without_crc码块分割。FT3/FT4 使用 PSK 调制, Polar(256,K) 头部编码,
segment_with_crc码块分割 (每段额外附加 CRC)。B 组控制信息 CRC 种子为0x555555 ^ LLID。
硬件对接¶
phy.usrp 模块封装了 USRP E310 (Xilinx Zynq-7020 + AD9361) 的收发接口。在无硬件环境下, MockUSRP 提供完整的 UHD API 仿真, 使得收发流程可以离线调试。