Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode Skip to content
nearlink-sdr 1.0.9 文档
nearlink-sdr 1.0.9 文档
  • 快速入门
  • 操作指南
    • 运行链路仿真
    • 添加新的调制方式
    • QoS 服务质量管理
    • 使用 SLE 节点实体
    • Rust 加速模块
    • SDR E310 部署规划
    • 构建文档
  • 技术参考
    • nearlink_sdr
      • nearlink_sdr.mac
        • nearlink_sdr.mac.access
        • nearlink_sdr.mac.broadcast
        • nearlink_sdr.mac.crypto
        • nearlink_sdr.mac.frame
        • nearlink_sdr.mac.link_control
        • nearlink_sdr.mac.link_manager
        • nearlink_sdr.mac.power_control
        • nearlink_sdr.mac.qos
        • nearlink_sdr.mac.scheduler
        • nearlink_sdr.mac.security
        • nearlink_sdr.mac.security_manager
        • nearlink_sdr.mac.signaling
        • nearlink_sdr.mac.smf
        • nearlink_sdr.mac.smf_scheduler
      • nearlink_sdr.sim
        • nearlink_sdr.sim.link_sim
        • nearlink_sdr.sim.usrp_sim
      • nearlink_sdr.common
        • nearlink_sdr.common.bch
        • nearlink_sdr.common.code_block_seg
        • nearlink_sdr.common.crc
        • nearlink_sdr.common.m_sequence
        • nearlink_sdr.common.mcs
        • nearlink_sdr.common.polar
        • nearlink_sdr.common.prbs
        • nearlink_sdr.common.scrambler
      • nearlink_sdr.phy
        • nearlink_sdr.phy.channel
        • nearlink_sdr.phy.control_info
        • nearlink_sdr.phy.data_link
        • nearlink_sdr.phy.equalizer
        • nearlink_sdr.phy.frame
        • nearlink_sdr.phy.freq_hopping
        • nearlink_sdr.phy.gfsk
        • nearlink_sdr.phy.mac_interface
        • nearlink_sdr.phy.measurement
        • nearlink_sdr.phy.measurement_frame
        • nearlink_sdr.phy.measurement_tx
        • nearlink_sdr.phy.mock_backend
        • nearlink_sdr.phy.multitone
        • nearlink_sdr.phy.pilot
        • nearlink_sdr.phy.pluto_backend
        • nearlink_sdr.phy.preamble
        • nearlink_sdr.phy.psk
        • nearlink_sdr.phy.rf_compliance
        • nearlink_sdr.phy.rx_pipeline
        • nearlink_sdr.phy.sdr_backend
        • nearlink_sdr.phy.sync_sequence
        • nearlink_sdr.phy.tx_pipeline
        • nearlink_sdr.phy.uhd_backend
        • nearlink_sdr.phy.usrp
        • nearlink_sdr.phy.uwb_measurement_security
        • nearlink_sdr.phy.uwb_pulse
      • nearlink_sdr.node
  • 设计说明
    • SparkLink SLE 协议总览
    • 物理层原理
    • 物理层详解
    • MAC 层详解
    • 安全子系统详解
    • 端到端数据流
    • 系统架构
    • 标准条款映射
  • 更新日志
  • API Reference
    • nearlink_sdr
      • nearlink_sdr.mac
        • nearlink_sdr.mac.access
        • nearlink_sdr.mac.broadcast
        • nearlink_sdr.mac.crypto
        • nearlink_sdr.mac.frame
        • nearlink_sdr.mac.link_control
        • nearlink_sdr.mac.link_manager
        • nearlink_sdr.mac.power_control
        • nearlink_sdr.mac.qos
        • nearlink_sdr.mac.scheduler
        • nearlink_sdr.mac.security
        • nearlink_sdr.mac.security_manager
        • nearlink_sdr.mac.signaling
        • nearlink_sdr.mac.smf
        • nearlink_sdr.mac.smf_scheduler
      • nearlink_sdr.sim
        • nearlink_sdr.sim.link_sim
        • nearlink_sdr.sim.usrp_sim
      • nearlink_sdr.common
        • nearlink_sdr.common.bch
        • nearlink_sdr.common.code_block_seg
        • nearlink_sdr.common.crc
        • nearlink_sdr.common.m_sequence
        • nearlink_sdr.common.mcs
        • nearlink_sdr.common.polar
        • nearlink_sdr.common.prbs
        • nearlink_sdr.common.scrambler
      • nearlink_sdr.phy
        • nearlink_sdr.phy.channel
        • nearlink_sdr.phy.control_info
        • nearlink_sdr.phy.data_link
        • nearlink_sdr.phy.equalizer
        • nearlink_sdr.phy.frame
        • nearlink_sdr.phy.freq_hopping
        • nearlink_sdr.phy.gfsk
        • nearlink_sdr.phy.mac_interface
        • nearlink_sdr.phy.measurement
        • nearlink_sdr.phy.measurement_frame
        • nearlink_sdr.phy.measurement_tx
        • nearlink_sdr.phy.mock_backend
        • nearlink_sdr.phy.multitone
        • nearlink_sdr.phy.pilot
        • nearlink_sdr.phy.pluto_backend
        • nearlink_sdr.phy.preamble
        • nearlink_sdr.phy.psk
        • nearlink_sdr.phy.rf_compliance
        • nearlink_sdr.phy.rx_pipeline
        • nearlink_sdr.phy.sdr_backend
        • nearlink_sdr.phy.sync_sequence
        • nearlink_sdr.phy.tx_pipeline
        • nearlink_sdr.phy.uhd_backend
        • nearlink_sdr.phy.usrp
        • nearlink_sdr.phy.uwb_measurement_security
        • nearlink_sdr.phy.uwb_pulse
      • nearlink_sdr.node
Back to top
View this page

nearlink_sdr.sim.link_sim¶

TXS-10002-2025 链路仿真: GFSK/PSK 无编码 + Polar编码端到端仿真。

Module Contents¶

Functions¶

run_phase1_simulation

Phase 1 综合仿真: GFSK + BPSK + QPSK BER曲线。

run_phase2_simulation

Phase 2 综合仿真: Polar编码 BPSK/QPSK BER/FER 曲线。

run_phase3_simulation

Phase 3 帧级仿真: 不同帧类型、导频配置的 BER/FER。

run_phase4_simulation

Phase 4: 不同信道模型 + 均衡器的 BER/FER 比较。

run_phase5_simulation

Phase 5: 跳频链路仿真 — 比较不同跳频配置的 BER/FER。

run_phase6_simulation

Phase 6: 全链路 Pipeline BER/FER 仿真 — 不同 MCS + 帧类型。

run_phase7_simulation

Phase 7: 多径信道 + 频率偏移 Pipeline BER/FER 仿真。

run_phase8_simulation

Phase 8: 多帧类型在不同信道条件下的 BER/FER 综合对比。

run_phase9_simulation

Phase 9: MAC 帧级端到端仿真 — 信令、数据、复用帧 (含信道损伤)。

run_phase10_simulation

Phase 10: 多链路调度仿真入口。

run_phase11_simulation

Phase 11: 安全通信端到端仿真可视化。

run_phase12_simulation

Phase 12: AMC 吞吐量 + HARQ 重传 + 跳频多径仿真可视化。

run_phase13_simulation

Phase 13: QoS 驱动的 ARQ + AMC 自适应 + 流控仿真可视化。

run_phase14_simulation

Phase 14: 双节点端到端仿真可视化。

run_phase15_simulation

Phase 15: SleNode 集成仿真可视化。

run_phase16_simulation

Phase 16: 多用户干扰 + Doppler 时变信道仿真可视化。

sim_access_scheduled_link

接入流程 + 调度器驱动的数据传输仿真。

sim_amc_throughput

各 MCS 级别的吞吐量与误帧率扫描, 含 AMC 包络线。

sim_channel_eq_link

多径信道 + 均衡器 + Polar编码 BPSK 链路仿真。

sim_doppler_link

Doppler 时变信道仿真: 扫描不同多普勒频移下的 FER。

sim_doppler_multipath_link

Doppler + 多径信道联合仿真。

sim_dual_node_link

双 SleNode 实体数据交换仿真。

sim_dual_node_mcs_adapt

双节点 MCS 自适应仿真。

sim_dual_node_secure_link

双 SleNode 安全通信仿真 (配对 + 加密)。

sim_encrypted_vs_plain

对比加密与明文传输的误帧率。

sim_event_group_timing

事件组时序计算仿真。

sim_frame_link

完整帧级仿真: 帧组装 → Polar编码 → PSK调制(含导频) → AWGN → 解调 → 解码 → BER。

sim_gfsk_link

帧类型1 GFSK无编码链路仿真。

sim_harq_link

HARQ 重传链路仿真 (Chase combining 简化模型)。

sim_hopping_link

跳频链路仿真: 数据帧在多个跳频信道间传输, 每跳独立衰落。

sim_hopping_multipath_link

跳频 + 多径信道链路仿真。

sim_mac_data_link

MAC 异步数据帧端到端仿真: 数据编码 → IQ → 信道 → IQ → 数据解码。

sim_mac_mux_link

MAC 复用帧端到端仿真: 控制帧+数据帧复用 → IQ → 信道 → IQ → 解码。

sim_mac_signaling_link

MAC 信令帧端到端仿真: 信令编码 → IQ → 信道 → IQ → 信令解码。

sim_multi_link

多链路调度仿真: 多条链路在超帧内按时间片分时传输。

sim_multi_user_interference

多用户干扰仿真: 扫描不同干扰用户数下的 FER 和 SINR。

sim_node_access_flow

SleNode 完整接入流程仿真。

sim_node_channel_sweep

SleNode 内置信道模型扫频仿真。

sim_node_hopping_link

SleNode 跳频数据链路仿真。

sim_node_measurement

SleNode 测量信号生成仿真。

sim_node_power_adapt

SleNode 功率自适应仿真。

sim_pairing_signaling_phy

配对信令经 PHY 管道传输的成功率仿真。

sim_pipeline_channel_link

全链路 Pipeline 仿真 — 支持多径信道、频率偏移和均衡器。

sim_pipeline_link

使用 tx_chain / rx_chain 的全链路端到端仿真。

sim_polar_coded_psk_link

Polar编码PSK链路仿真。

sim_psk_link

帧类型2/3/4 PSK无编码链路仿真。

sim_qos_amc_adaptive

QoS 链路质量跟踪驱动的 AMC 自适应仿真。

sim_qos_arq_link

QoS 管理器驱动的 ARQ 重传链路仿真。

sim_qos_flow_control

QoS 流控机制仿真。

sim_secure_link

接入 → 配对 → 加密数据传输端到端仿真。

sim_sir_sweep

SIR 扫描仿真: 固定干扰用户数, 扫描 SIR 下的 FER。

sim_superframe_capacity

超帧容量分析: 逐步增加链路直到出现时间片冲突。

API¶

nearlink_sdr.sim.link_sim.run_phase1_simulation()[源代码]¶

Phase 1 综合仿真: GFSK + BPSK + QPSK BER曲线。

nearlink_sdr.sim.link_sim.run_phase2_simulation()[源代码]¶

Phase 2 综合仿真: Polar编码 BPSK/QPSK BER/FER 曲线。

nearlink_sdr.sim.link_sim.run_phase3_simulation()[源代码]¶

Phase 3 帧级仿真: 不同帧类型、导频配置的 BER/FER。

nearlink_sdr.sim.link_sim.run_phase4_simulation()[源代码]¶

Phase 4: 不同信道模型 + 均衡器的 BER/FER 比较。

nearlink_sdr.sim.link_sim.run_phase5_simulation()[源代码]¶

Phase 5: 跳频链路仿真 — 比较不同跳频配置的 BER/FER。

nearlink_sdr.sim.link_sim.run_phase6_simulation()[源代码]¶

Phase 6: 全链路 Pipeline BER/FER 仿真 — 不同 MCS + 帧类型。

nearlink_sdr.sim.link_sim.run_phase7_simulation()[源代码]¶

Phase 7: 多径信道 + 频率偏移 Pipeline BER/FER 仿真。

nearlink_sdr.sim.link_sim.run_phase8_simulation()[源代码]¶

Phase 8: 多帧类型在不同信道条件下的 BER/FER 综合对比。

nearlink_sdr.sim.link_sim.run_phase9_simulation()[源代码]¶

Phase 9: MAC 帧级端到端仿真 — 信令、数据、复用帧 (含信道损伤)。

nearlink_sdr.sim.link_sim.run_phase10_simulation() → None[源代码]¶

Phase 10: 多链路调度仿真入口。

nearlink_sdr.sim.link_sim.run_phase11_simulation() → None[源代码]¶

Phase 11: 安全通信端到端仿真可视化。

nearlink_sdr.sim.link_sim.run_phase12_simulation() → None[源代码]¶

Phase 12: AMC 吞吐量 + HARQ 重传 + 跳频多径仿真可视化。

nearlink_sdr.sim.link_sim.run_phase13_simulation() → None[源代码]¶

Phase 13: QoS 驱动的 ARQ + AMC 自适应 + 流控仿真可视化。

nearlink_sdr.sim.link_sim.run_phase14_simulation() → None[源代码]¶

Phase 14: 双节点端到端仿真可视化。

nearlink_sdr.sim.link_sim.run_phase15_simulation() → None[源代码]¶

Phase 15: SleNode 集成仿真可视化。

nearlink_sdr.sim.link_sim.run_phase16_simulation(n_frames: int = 50) → None[源代码]¶

Phase 16: 多用户干扰 + Doppler 时变信道仿真可视化。

nearlink_sdr.sim.link_sim.sim_access_scheduled_link(snr_range_db: numpy.ndarray | None = None, n_frames: int = 50, mcs_index: int = 7, payload_size: int = 10, channel_type: str = 'awgn', cfo_hz: float = 0.0, eq_method: str = 'none', rician_k_db: float = 6.0, seed: int = 42) → dict[源代码]¶

接入流程 + 调度器驱动的数据传输仿真。

模拟完整的接入建链过程, 然后使用接入参数配置调度器, 在事件组时间窗口内进行数据帧收发。

参数:
  • snr_range_db -- 信噪比范围 (dB)。

  • n_frames -- 每个 SNR 点仿真帧数。

  • mcs_index -- MCS 索引。

  • payload_size -- 载荷字节数。

  • channel_type -- 信道类型。

  • cfo_hz -- 载波频率偏移。

  • eq_method -- 均衡方法。

  • rician_k_db -- Rician K 因子。

  • seed -- 随机种子。

返回:

{"snr_db": [...], "fer": [...], "access_ok": bool, "link_params": dict}

nearlink_sdr.sim.link_sim.sim_amc_throughput(snr_range_db: numpy.ndarray | None = None, n_frames: int = 50, payload_size: int = 10, channel_type: str = 'awgn', cfo_hz: float = 0.0, eq_method: str = 'none', rician_k_db: float = 6.0, mcs_indices: list[int] | None = None, seed: int = 42) → dict[源代码]¶

各 MCS 级别的吞吐量与误帧率扫描, 含 AMC 包络线。

遍历所有 MCS 索引 (0-12), 对每个 SNR 点计算 FER 和有效吞吐量。 有效吞吐量 = (1 - FER) * spectral_efficiency (bit/symbol)。 AMC 策略: 在每个 SNR 点选择吞吐量最高的 MCS。

返回:

{ "snr_db": [...], "mcs_fer": {mcs_idx: [fer_per_snr, ...]}, "mcs_throughput": {mcs_idx: [throughput_per_snr, ...]}, "amc_throughput": [...], # AMC 包络吞吐量 "amc_mcs": [...], # AMC 选择的 MCS 索引 }

nearlink_sdr.sim.link_sim.sim_channel_eq_link(channel_type: str = 'rayleigh', rician_k_db: float = 6.0, eq_method: str = 'mmse', rate_str: str = '1/2', code_length: int = 256, snr_range_db: numpy.ndarray | None = None, n_frames: int = 20, seed: int = 42) → dict[源代码]¶

多径信道 + 均衡器 + Polar编码 BPSK 链路仿真。

流程: 信息比特 → Polar编码 → BPSK调制 → 信道(衰落+AWGN) → 均衡 → LLR → 解码

参数:
  • channel_type -- "awgn" / "rayleigh" / "rician" / "multipath"。

  • rician_k_db -- Rician K 因子。

  • eq_method -- "zf" / "mmse" / "none" (不均衡)。

  • rate_str -- Polar 码率。

  • code_length -- Polar 码长。

  • snr_range_db -- SNR 范围。

  • n_frames -- 每个 SNR 点的帧数。

  • seed -- 随机种子。

返回:

{"snr_db": [...], "ber": [...], "fer": [...]}

nearlink_sdr.sim.link_sim.sim_doppler_link(doppler_range_hz: numpy.ndarray | None = None, snr_db: float = 12.0, n_frames: int = 100, mcs_index: int = 7, payload_size: int = 20, channel_type: str = 'rayleigh', eq_method: str = 'zf', seed: int = 42) → dict[源代码]¶

Doppler 时变信道仿真: 扫描不同多普勒频移下的 FER。

使用 Jakes 求和正弦模型生成时间相关衰落, 评估 FER 随 Doppler 扩展的变化。

参数:
  • doppler_range_hz -- Doppler 频移扫描范围 (Hz)。

  • snr_db -- 固定 SNR (dB)。

  • n_frames -- 每个 Doppler 点仿真帧数。

  • mcs_index -- MCS 索引。

  • payload_size -- 载荷字节数。

  • channel_type -- 衰落类型 ("rayleigh" / "rician")。

  • eq_method -- 均衡方法。

  • seed -- 随机种子。

返回:

{"doppler_hz": [...], "fer": [...], "avg_fade_depth_db": [...]}

nearlink_sdr.sim.link_sim.sim_doppler_multipath_link(doppler_range_hz: numpy.ndarray | None = None, snr_db: float = 15.0, n_frames: int = 80, mcs_index: int = 7, payload_size: int = 20, seed: int = 42) → dict[源代码]¶

Doppler + 多径信道联合仿真。

在 ITU Indoor Office B 多径模型基础上叠加 Doppler 时变, 评估信道时变对频率选择性衰落下的接收性能影响。

返回:

{"doppler_hz": [...], "fer": [...]}

nearlink_sdr.sim.link_sim.sim_dual_node_link(snr_range_db: numpy.ndarray | None = None, n_frames: int = 50, mcs_index: int = 7, payload_size: int = 10, channel_type: str = 'awgn', cfo_hz: float = 0.0, eq_method: str = 'none', rician_k_db: float = 6.0, seed: int = 42) → dict[源代码]¶

双 SleNode 实体数据交换仿真。

创建 G 节点与 T 节点, 完成广播→接入→数据交换全流程。 G 节点发送随机数据, T 节点接收并统计 FER 与字节误码率。

返回:

{ "snr_db": [...], "fer": [...], "byte_ber": [...], "tx_count": int, "rx_count": int, }

nearlink_sdr.sim.link_sim.sim_dual_node_mcs_adapt(snr_db: float = 8.0, n_frames: int = 100, payload_size: int = 10, initial_mcs: int = 7, channel_type: str = 'awgn', seed: int = 42) → dict[源代码]¶

双节点 MCS 自适应仿真。

固定 SNR 下连续帧传输, 跟踪 G 节点的 MCS 自适应过程和吞吐量变化。

返回:

{ "frame_idx": [...], "mcs_history": [...], "fer_history": [...], "success_history": [...], }

nearlink_sdr.sim.link_sim.sim_dual_node_secure_link(snr_range_db: numpy.ndarray | None = None, n_frames: int = 50, mcs_index: int = 7, payload_size: int = 10, channel_type: str = 'awgn', seed: int = 42) → dict[源代码]¶

双 SleNode 安全通信仿真 (配对 + 加密)。

在 sim_dual_node_link 基础上增加配对与加密流程:

  1. 广播→接入→连接

  2. 配对 (ECDH 密钥协商)

  3. 加密数据帧传输

返回:

{ "snr_db": [...], "fer_plain": [...], "fer_encrypted": [...], "pairing_ok": bool, }

nearlink_sdr.sim.link_sim.sim_encrypted_vs_plain(snr_range_db: numpy.ndarray | None = None, n_frames: int = 50, mcs_index: int = 7, payload_size: int = 10, channel_type: str = 'awgn', seed: int = 42) → dict[源代码]¶

对比加密与明文传输的误帧率。

返回:

{"snr_db", "fer_encrypted", "fer_plain"}

nearlink_sdr.sim.link_sim.sim_event_group_timing(event_group_period: int = 100, event_count: int = 4, event_period: int = 25, intra_event_interval: int = 300, tx_max_offset: int = 3, rx_max_offset: int = 3) → dict[源代码]¶

事件组时序计算仿真。

可视化事件组内各事件的 TX/RX 窗口分布和资源利用率。

参数:
  • event_group_period -- 事件组周期 (调度时隙)。

  • event_count -- 事件总数。

  • event_period -- 事件周期 (调度时隙)。

  • intra_event_interval -- 事件内间隔 (μs)。

  • tx_max_offset -- TX 最大偏移 (基础时隙)。

  • rx_max_offset -- RX 最大偏移 (基础时隙)。

返回:

{"events": [{"start": int, "tx_window": (s,e), "rx_window": (s,e)}], "total_active_us": int, "group_period_us": int, "utilization": float}

nearlink_sdr.sim.link_sim.sim_frame_link(frame_type: int = 2, num_data_bits: int = 200, rate_str: str = '1/2', code_length: int = 256, pilot_interval: int = 4, snr_range_db: numpy.ndarray | None = None, seed: int = 42) → dict[源代码]¶

完整帧级仿真: 帧组装 → Polar编码 → PSK调制(含导频) → AWGN → 解调 → 解码 → BER。

参数:
  • frame_type -- 2, 3, or 4.

  • num_data_bits -- 数据负载比特数.

  • rate_str -- Polar码率.

  • code_length -- Polar码长.

  • pilot_interval -- 导频插入间隔 (0, 4, 8, 16).

  • snr_range_db -- SNR扫描范围.

  • seed -- 随机种子.

返回:

{"snr_db": [...], "ber": [...], "fer": [...]}

nearlink_sdr.sim.link_sim.sim_gfsk_link(num_data_bits: int = 1000, snr_range_db: numpy.ndarray | None = None, sps: int = 8, seed: int = 42) → dict[源代码]¶

帧类型1 GFSK无编码链路仿真。

流程: 前导码 + 同步信号1(广播) + 数据 → GFSK调制 → AWGN信道 → GFSK解调 → BER

返回:

{"snr_db": [...], "ber": [...]}

nearlink_sdr.sim.link_sim.sim_harq_link(snr_range_db: numpy.ndarray | None = None, n_frames: int = 50, mcs_index: int = 7, payload_size: int = 10, max_retries: int = 3, channel_type: str = 'awgn', cfo_hz: float = 0.0, eq_method: str = 'none', rician_k_db: float = 6.0, seed: int = 42) → dict[源代码]¶

HARQ 重传链路仿真 (Chase combining 简化模型)。

每帧传输失败时进行重传, 最多重传 max_retries 次。 使用 B1 控制信息中的 harq_feedback 和 packet_sn 字段。 标准 6.10.5 规定 MCS=15 表示重传帧。

返回:

{ "snr_db": [...], "fer_no_harq": [...], # 无重传 FER "fer_harq": [...], # HARQ FER (超过最大重传仍失败) "avg_transmissions": [...], # 平均每帧传输次数 "throughput_no_harq": [...], # 无重传吞吐量 (归一化) "throughput_harq": [...], # HARQ 吞吐量 (归一化) }

nearlink_sdr.sim.link_sim.sim_hopping_link(hop_param2: int = 43981, n_hops: int = 20, rate_str: str = '1/2', code_length: int = 256, snr_range_db: numpy.ndarray | None = None, bandwidth_mhz: int = 1, blocked_ratio: float = 0.0, seed: int = 42) → dict[源代码]¶

跳频链路仿真: 数据帧在多个跳频信道间传输, 每跳独立衰落。

流程: 生成跳频序列 → 每跳: Polar编码 → BPSK调制 → 独立 Rayleigh 信道 → 均衡 → 解码

参数:
  • hop_param2 -- 跳频参数 2。

  • n_hops -- 每个 SNR 点的跳频次数 (帧数)。

  • rate_str -- Polar 码率。

  • code_length -- Polar 码长。

  • snr_range_db -- SNR 范围。

  • bandwidth_mhz -- 信道带宽 1/2/4 MHz。

  • blocked_ratio -- 被阻塞信道占比 (0~1)。

  • seed -- 随机种子。

返回:

{"snr_db": [...], "ber": [...], "fer": [...], "channels_used": [...]}

nearlink_sdr.sim.link_sim.sim_hopping_multipath_link(snr_range_db: numpy.ndarray | None = None, n_frames: int = 50, mcs_index: int = 7, payload_size: int = 10, n_hop_channels: int = 8, seed: int = 42) → dict[源代码]¶

跳频 + 多径信道链路仿真。

每帧在不同频率信道上传输, 模拟跳频对抗频率选择性衰落的效果。 对比固定信道 (Rayleigh) 与跳频 (不同信道独立衰落) 的 FER。

返回:

{ "snr_db": [...], "fer_fixed": [...], # 固定信道 FER "fer_hopping": [...], # 跳频 FER }

nearlink_sdr.sim.link_sim.sim_mac_data_link(payload_sizes: list[int] | None = None, snr_range_db: numpy.ndarray | None = None, n_frames: int = 50, mcs_index: int = 7, channel_type: str = 'awgn', cfo_hz: float = 0.0, eq_method: str = 'none', rician_k_db: float = 6.0, seed: int = 42) → dict[源代码]¶

MAC 异步数据帧端到端仿真: 数据编码 → IQ → 信道 → IQ → 数据解码。

对不同载荷大小, 统计字节级误码率和帧正确率。

参数:
  • payload_sizes -- 要测试的载荷大小列表 (字节)。

  • channel_type -- "awgn" | "rayleigh" | "rician" | "multipath"。

  • cfo_hz -- 载波频率偏移 (Hz)。

  • eq_method -- "none" | "zf" | "mmse"。

  • rician_k_db -- Rician K 因子 (dB)。

返回:

{"snr_db": [...], "results": {size: {"fer": [...], "byte_ber": [...]}}}

nearlink_sdr.sim.link_sim.sim_mac_mux_link(snr_range_db: numpy.ndarray | None = None, n_frames: int = 50, mcs_index: int = 7, data_size: int = 10, channel_type: str = 'awgn', cfo_hz: float = 0.0, eq_method: str = 'none', rician_k_db: float = 6.0, seed: int = 42) → dict[源代码]¶

MAC 复用帧端到端仿真: 控制帧+数据帧复用 → IQ → 信道 → IQ → 解码。

每帧包含一条信令和一段数据, 验证复用帧在信道传输后的完整性。

参数:
  • channel_type -- "awgn" | "rayleigh" | "rician" | "multipath"。

  • cfo_hz -- 载波频率偏移 (Hz)。

  • eq_method -- "none" | "zf" | "mmse"。

  • rician_k_db -- Rician K 因子 (dB)。

返回:

{"snr_db": [...], "mux_success_rate": [...], "data_match_rate": [...]}

nearlink_sdr.sim.link_sim.sim_mac_signaling_link(snr_range_db: numpy.ndarray | None = None, n_frames: int = 50, mcs_index: int = 7, channel_type: str = 'awgn', cfo_hz: float = 0.0, eq_method: str = 'none', rician_k_db: float = 6.0, seed: int = 42) → dict[源代码]¶

MAC 信令帧端到端仿真: 信令编码 → IQ → 信道 → IQ → 信令解码。

每帧随机选取一种信令类型进行编码, 经过 PHY 发射/接收流水线和信道后, 统计信令解码成功率。

参数:
  • channel_type -- "awgn" | "rayleigh" | "rician" | "multipath"。

  • cfo_hz -- 载波频率偏移 (Hz)。

  • eq_method -- "none" | "zf" | "mmse"。

  • rician_k_db -- Rician K 因子 (dB)。

返回:

{"snr_db": [...], "signaling_success_rate": [...]}

nearlink_sdr.sim.link_sim.sim_multi_link(n_links: int = 3, snr_range_db: numpy.ndarray | None = None, n_superframes: int = 20, mcs_index: int = 7, payload_size: int = 10, channel_type: str = 'awgn', cfo_hz: float = 0.0, eq_method: str = 'none', rician_k_db: float = 6.0, smf_interval: int = 800, seed: int = 42) → dict[源代码]¶

多链路调度仿真: 多条链路在超帧内按时间片分时传输。

使用 ScheduleManager 分配时间资源, 每条链路在各自的事件组窗口内 发送/接收数据帧, 统计每条链路和总体的 FER。

参数:
  • n_links -- 并发链路数。

  • snr_range_db -- 信噪比范围 (dB)。

  • n_superframes -- 每个 SNR 点仿真的超帧数。

  • mcs_index -- 调制编码策略索引。

  • payload_size -- 每帧载荷字节数。

  • channel_type -- 信道类型。

  • cfo_hz -- 载波频率偏移。

  • eq_method -- 均衡方法。

  • rician_k_db -- Rician K 因子。

  • smf_interval -- SMF 间隔 (基础时隙)。

  • seed -- 随机种子。

返回:

{"snr_db": [...], "aggregate_fer": [...], "per_link_fer": {link_id: [...]}, "throughput_ratio": [...]}

nearlink_sdr.sim.link_sim.sim_multi_user_interference(n_interferers_range: list[int] | None = None, sir_db: float = 10.0, snr_db: float = 15.0, n_frames: int = 100, mcs_index: int = 7, payload_size: int = 20, channel_type: str = 'awgn', freq_offset_hz: float = 0.0, seed: int = 42) → dict[源代码]¶

多用户干扰仿真: 扫描不同干扰用户数下的 FER 和 SINR。

多个干扰用户在同一频段 (或邻信道) 独立发送, 叠加到有用信号上。

参数:
  • n_interferers_range -- 干扰用户数扫描列表。

  • sir_db -- 每个干扰用户的 SIR (dB)。

  • snr_db -- 噪声 SNR (dB)。

  • n_frames -- 每个点仿真帧数。

  • mcs_index -- MCS 索引。

  • payload_size -- 载荷字节数。

  • channel_type -- 信道类型。

  • freq_offset_hz -- 干扰频偏 (Hz), 0 为同信道。

  • seed -- 随机种子。

返回:

{"n_interferers": [...], "fer": [...], "sinr_db": [...]}

nearlink_sdr.sim.link_sim.sim_node_access_flow(seed: int = 42) → dict[源代码]¶

SleNode 完整接入流程仿真。

模拟 G 节点广播 → T 节点扫描/发现 → 接入 → 数据交换 → 断开。

返回:

{ "g_state": G 节点最终状态, "t_state": T 节点最终状态, "broadcast_frame_valid": 广播帧是否有效, "data_roundtrip_ok": 数据往返是否成功, "scheduler_active": 调度器是否已注册链路, "disconnect_ok": 断开是否成功, }

nearlink_sdr.sim.link_sim.sim_node_channel_sweep(snr_range_db: numpy.ndarray | None = None, n_frames: int = 50, mcs_index: int = 7, payload_size: int = 10, channel_type: str = 'awgn', seed: int = 42) → dict[源代码]¶

SleNode 内置信道模型扫频仿真。

使用节点内置的 ChannelModel, 遍历 SNR 范围统计 FER。

返回:

{"snr_db": [...], "fer": [...], "mcs_history": [...]}

nearlink_sdr.sim.link_sim.sim_node_hopping_link(snr_db: float = 10.0, n_frames: int = 100, mcs_index: int = 7, payload_size: int = 10, seed: int = 42) → dict[源代码]¶

SleNode 跳频数据链路仿真。

G 节点和 T 节点在跳频序列上逐帧通信, 每帧发送后推进时隙, 观察信道号变化和传输成功率。

返回:

{ "channels": 使用过的信道号列表, "unique_channels": 唯一信道数, "success_count": 成功帧数, "fer": 帧错误率, "tx_powers": 各帧发射功率列表, }

nearlink_sdr.sim.link_sim.sim_node_measurement(n_measur: int = 64, seed: int = 42) → dict[源代码]¶

SleNode 测量信号生成仿真。

返回:

{ "signal_length": 测量信号长度, "signal_energy": 信号能量, }

nearlink_sdr.sim.link_sim.sim_node_power_adapt(snr_db: float = 8.0, n_frames: int = 80, payload_size: int = 10, seed: int = 42) → dict[源代码]¶

SleNode 功率自适应仿真。

节点逐帧通信, 根据反馈结果动态调整发射功率。

返回:

{ "frame_idx": [...], "power_history": [...], "success_history": [...], "fer": float, }

nearlink_sdr.sim.link_sim.sim_pairing_signaling_phy(snr_range_db: numpy.ndarray | None = None, n_trials: int = 20, channel_type: str = 'awgn', seed: int = 42) → dict[源代码]¶

配对信令经 PHY 管道传输的成功率仿真。

将配对过程中的每条信令编码为 IQ, 经信道传输后解码, 统计信令传输成功率。

返回:

{"snr_db", "signaling_success_rate"}

nearlink_sdr.sim.link_sim.sim_pipeline_channel_link(frame_type: int = 2, mcs_index: int = 7, n_data_bytes: int = 10, channel_type: str = 'awgn', rician_k_db: float = 6.0, cfo_hz: float = 0.0, eq_method: str = 'none', snr_range_db: numpy.ndarray | None = None, n_frames: int = 20, sps: int = 4, seed: int = 42) → dict[源代码]¶

全链路 Pipeline 仿真 — 支持多径信道、频率偏移和均衡器。

在 tx_chain 输出的 IQ 信号上依次施加:

  1. 衰落信道 (Rayleigh / Rician / 多径)

  2. 载波频率偏移

  3. AWGN 噪声 然后可选地进行均衡, 最后送入 rx_chain 解码。

参数:
  • frame_type -- 帧类型 (1-4)。

  • mcs_index -- MCS 索引。

  • n_data_bytes -- 数据长度 (字节)。

  • channel_type -- "awgn" | "rayleigh" | "rician" | "multipath"。

  • rician_k_db -- Rician K 因子 (dB)。

  • cfo_hz -- 载波频率偏移 (Hz)。

  • eq_method -- "none" | "zf" | "mmse", 仅对衰落信道有效。

  • snr_range_db -- Eb/N0 扫描范围。

  • n_frames -- 每个 SNR 点的仿真帧数。

  • sps -- 每符号采样数。

  • seed -- 随机种子。

返回:

{"snr_db": [...], "ber": [...], "fer": [...]}

nearlink_sdr.sim.link_sim.sim_pipeline_link(frame_type: int = 2, mcs_index: int = 7, n_data_bytes: int = 10, snr_range_db: numpy.ndarray | None = None, n_frames: int = 20, sps: int = 4, seed: int = 42) → dict[源代码]¶

使用 tx_chain / rx_chain 的全链路端到端仿真。

参数:
  • frame_type -- 帧类型 (1-4)

  • mcs_index -- MCS 索引

  • n_data_bytes -- 数据长度 (字节)

  • snr_range_db -- Eb/N0 扫描范围 (dB)

  • n_frames -- 每个 SNR 点的仿真帧数

  • sps -- 每符号采样数

  • seed -- 随机种子

返回:

{"snr_db": [...], "ber": [...], "fer": [...]}

nearlink_sdr.sim.link_sim.sim_polar_coded_psk_link(num_info_bits: int = 1000, mod_type: str = 'BPSK', rate_str: str = '1/2', code_length: int = 256, snr_range_db: numpy.ndarray | None = None, sps: int = 4, seed: int = 42) → dict[源代码]¶

Polar编码PSK链路仿真。

流程: 信息比特 → Polar编码 → BPSK/QPSK调制 → AWGN信道 → 解调(软判决LLR) → SC解码 → BER

返回:

{"snr_db": [...], "ber": [...], "fer": [...]}

nearlink_sdr.sim.link_sim.sim_psk_link(num_data_bits: int = 1000, mod_type: str = 'QPSK', frame_type: int = 2, snr_range_db: numpy.ndarray | None = None, sps: int = 4, seed: int = 42) → dict[源代码]¶

帧类型2/3/4 PSK无编码链路仿真。

流程: 数据 → PSK调制 → AWGN信道 → PSK解调 → BER (前导和同步信号作为独立信号段,不影响数据BER)

返回:

{"snr_db": [...], "ber": [...]}

nearlink_sdr.sim.link_sim.sim_qos_amc_adaptive(snr_sequence: numpy.ndarray | None = None, n_frames_per_snr: int = 20, payload_size: int = 10, channel_type: str = 'awgn', rician_k_db: float = 6.0, seed: int = 42) → dict[源代码]¶

QoS 链路质量跟踪驱动的 AMC 自适应仿真。

模拟 SNR 随时间变化的场景, QoS 管理器根据 FER 反馈自动调整 MCS, 验证 AMC 跟踪性能。

返回:

{ "snr_trace": [...], "mcs_trace": [...], "fer_trace": [...], "throughput_trace": [...], }

nearlink_sdr.sim.link_sim.sim_qos_arq_link(snr_range_db: numpy.ndarray | None = None, n_frames: int = 50, mcs_index: int = 7, payload_size: int = 10, max_retries: int = 3, channel_type: str = 'awgn', rician_k_db: float = 6.0, seed: int = 42) → dict[源代码]¶

QoS 管理器驱动的 ARQ 重传链路仿真。

使用 QosLink 封装实现自动 ARQ 重传, 对比无 QoS 管理时的 FER。 验证 QosManager 的序列号管理、重传决策和链路质量跟踪。

返回:

{ "snr_db": [...], "fer_no_arq": [...], # 无重传 FER "fer_qos_arq": [...], # QoS ARQ FER "avg_transmissions": [...], # 平均每帧传输次数 "throughput_no_arq": [...], "throughput_qos_arq": [...], }

nearlink_sdr.sim.link_sim.sim_qos_flow_control(n_frames: int = 100, burst_size: int = 10, snr_db: float = 15.0, mcs_index: int = 7, payload_size: int = 10, high_watermark: int = 8, low_watermark: int = 2, channel_type: str = 'awgn', rician_k_db: float = 6.0, seed: int = 42) → dict[源代码]¶

QoS 流控机制仿真。

模拟突发数据到达场景, 验证流控背压机制对缓冲区占用和丢包的影响。

返回:

{ "frame_idx": [...], "buffer_occupancy": [...], "flow_ctrl_bit": [...], "paused": [...], "tx_success": [...], }

nearlink_sdr.sim.link_sim.sim_secure_link(snr_range_db: numpy.ndarray | None = None, n_frames: int = 50, mcs_index: int = 7, payload_size: int = 10, channel_type: str = 'awgn', cfo_hz: float = 0.0, eq_method: str = 'none', rician_k_db: float = 6.0, seed: int = 42) → dict[源代码]¶

接入 → 配对 → 加密数据传输端到端仿真。

模拟完整的安全通信建立过程:

  1. 接入建链 (run_access_procedure)

  2. 配对密钥协商 (run_pairing_procedure)

  3. 加密数据帧经 PHY 管道传输

返回:

{"snr_db", "fer", "access_ok", "pairing_ok", "encrypted": True}

nearlink_sdr.sim.link_sim.sim_sir_sweep(sir_range_db: numpy.ndarray | None = None, n_interferers: int = 1, snr_db: float = 20.0, n_frames: int = 100, mcs_index: int = 7, payload_size: int = 20, channel_type: str = 'awgn', seed: int = 42) → dict[源代码]¶

SIR 扫描仿真: 固定干扰用户数, 扫描 SIR 下的 FER。

参数:
  • sir_range_db -- SIR 扫描范围 (dB)。

  • n_interferers -- 干扰用户数。

  • snr_db -- 噪声 SNR (dB)。

  • n_frames -- 每个 SIR 点帧数。

  • mcs_index -- MCS 索引。

  • payload_size -- 载荷字节数。

  • channel_type -- 信道类型。

  • seed -- 随机种子。

返回:

{"sir_db": [...], "fer": [...], "sinr_db": [...]}

nearlink_sdr.sim.link_sim.sim_superframe_capacity(smf_interval: int = 800, slice_duration: int = 50, slice_gap: int | None = None, max_links: int = 20) → dict[源代码]¶

超帧容量分析: 逐步增加链路直到出现时间片冲突。

参数:
  • smf_interval -- SMF 间隔 (基础时隙)。

  • slice_duration -- 每条链路时间片持续长度 (调度时隙)。

  • slice_gap -- 相邻链路的偏移间距 (调度时隙, 默认等于 slice_duration)。 当 gap < slice_duration 时, 链路时间片将发生重叠。

  • max_links -- 最大测试链路数。

返回:

{"n_links": [...], "n_conflicts": [...], "max_no_conflict": int, "utilization": [...]}

Next
nearlink_sdr.sim.usrp_sim
Previous
nearlink_sdr.sim
Copyright ©
Made with Sphinx and @pradyunsg's Furo
On this page
  • nearlink_sdr.sim.link_sim
    • Module Contents
      • Functions
      • API
        • run_phase1_simulation()
        • run_phase2_simulation()
        • run_phase3_simulation()
        • run_phase4_simulation()
        • run_phase5_simulation()
        • run_phase6_simulation()
        • run_phase7_simulation()
        • run_phase8_simulation()
        • run_phase9_simulation()
        • run_phase10_simulation()
        • run_phase11_simulation()
        • run_phase12_simulation()
        • run_phase13_simulation()
        • run_phase14_simulation()
        • run_phase15_simulation()
        • run_phase16_simulation()
        • sim_access_scheduled_link()
        • sim_amc_throughput()
        • sim_channel_eq_link()
        • sim_doppler_link()
        • sim_doppler_multipath_link()
        • sim_dual_node_link()
        • sim_dual_node_mcs_adapt()
        • sim_dual_node_secure_link()
        • sim_encrypted_vs_plain()
        • sim_event_group_timing()
        • sim_frame_link()
        • sim_gfsk_link()
        • sim_harq_link()
        • sim_hopping_link()
        • sim_hopping_multipath_link()
        • sim_mac_data_link()
        • sim_mac_mux_link()
        • sim_mac_signaling_link()
        • sim_multi_link()
        • sim_multi_user_interference()
        • sim_node_access_flow()
        • sim_node_channel_sweep()
        • sim_node_hopping_link()
        • sim_node_measurement()
        • sim_node_power_adapt()
        • sim_pairing_signaling_phy()
        • sim_pipeline_channel_link()
        • sim_pipeline_link()
        • sim_polar_coded_psk_link()
        • sim_psk_link()
        • sim_qos_amc_adaptive()
        • sim_qos_arq_link()
        • sim_qos_flow_control()
        • sim_secure_link()
        • sim_sir_sweep()
        • sim_superframe_capacity()