重要通知:此代码由AI生成。
此代码尚未经过专业程序员审查,它是一个大型项目。代码库中有可用的测试,请审查这些测试及其代码。
用于QRadioLink块的GNU Radio外部(OOT)模块。
分支 main: GNU Radio 3.10 OOT(CMake find_package(gnuradio))。实验性的GNU Radio 4移植版本位于分支**gnuradio4**(该分支上的README_gr4.md)。
代码导航: docs/CODE_MAP.md(文件、函数、块索引)。gr-ident ZMQ模式路由: docs/GRIDENT_ZMQ.md(在:5560端口上的gr-ident前导码)。
使用radio-modulation-validator(2026-05-31)检查了调制器块的参考IQ。总结:SOFT FAIL — 19个块中6个通过,13个软失败,0个硬失败,3个跳过。
所有测试模式均被识别为正确的调制族(FSK、PSK、AM、FM)。阶数级别的软失败(例如FSK被预测为CPFSK而不是4FSK或GMSK)反映了验证器阶数分类器的局限性,而不是这些调制器产生错误波形族的证据。
扫描使用内置参考IQ(而非构建的OOT块);结果适用于本README中main分支上列出的模式,并镜像在**gnuradio4**分支上。
完整的逐块结果:VALIDATION_REPORT.md
本项目在以下预印本中有所描述:
用于增强隐蔽通信的密码学密钥高斯分布扩频:设计、实现及ITU信道模型中的仿真性能
IACR Cryptology ePrint Archive,Paper 2025/108456
https://eprint.iacr.org/2025/108456
档案记录时间戳:2026年3月21日。
本模块提供了用于各种数字和模拟调制方案的GNU Radio块,专为业余无线电和数字语音通信设计。
本模块从QRadioLink应用程序转换而来,该应用程序是一个用于GNU Radio、ADALM-Pluto、LimeSDR、USRP和其他SDR硬件的多模式SDR收发机。原始源代码位于https://codeberg.org/qradiolink/qradiolink。
验证: 与QRadioLink相对应的转换块已针对原始QRadioLink源代码(分支next,codeberg.org/qradiolink/qradiolink)进行了验证,以确保流图、滤波器参数、缩放常数和块行为匹配。SSB和AM调制器/解调器链(包括CESSB结构和限幅器/拉伸器常数)已恢复以匹配原始版本,因为它们之前有所偏离。本模块中的某些块在QRadioLink的src/gr/中没有对应来源;其来源在下表中说明。
致谢和来源:
next,src/gr/一致):调制/解调(2FSK、4FSK、GMSK、BPSK、QPSK、AM、SSB、NBFM、WBFM)、数字语音(FreeDV、M17、DMR)及支持块(RSSI、M17解帧器、MMDVM源/宿、限幅器、拉伸器、zero_idle_bursts、gr_4fsk_discriminator、demod_mmdvm_multi、demod_mmdvm_multi2、mod_mmdvm_multi2)。这些块的DSP和模式行为源自或重新实现自QRadioLink应用程序。src/gr/中没有gr_*来源):8FSK、SOQPSK、CPM-4FSK、dPMR、NXDN、POCSAG、D-STAR、YSF、P25。其来源在下文的块来源表中给出。块来源(验证/归属):
该代码已使用libFuzzer进行了广泛的模糊测试,超过1.04亿次执行,涉及多个块,未发现崩溃或内存泄漏。请参阅fuzzing-results/results.md了解覆盖率详情。
SOQPSK是一种带宽高效的调制方案,相比标准QPSK提供了改善的频谱效率。该实现支持两种操作模式:
模式1:VHF/UHF单载波
模式2:VHF/UHF多载波(抗衰落)
可用的最大带宽段:
SOQPSK效率:~1.5 bps/Hz
每载波容量:
载波规格:
所有块都可通过Python绑定使用,包括:
Python绑定使得可以在GNU Radio Companion流图和Python脚本中使用这些块。
gr-qradiolink/ ├── CMakeLists.txt # Top-level CMake configuration ├── include/ # Public header files │ └── gnuradio/ │ └── qradiolink/ ├── lib/ # Implementation files ├── python/ # Python bindings │ └── qradiolink/ │ └── bindings/ ├── grc/ # GNU Radio Companion block definitions ├── docs/ # Documentation │ ├── doxygen/ │ ├── CODE_MAP.md # Code and function map (all modules) │ ├── GRIDENT_ZMQ.md # gr-ident ZMQ mode routing guide │ ├── DSSS_BLOCKS.md # DSSS spreader/despreader guide │ ├── GDSS_BLOCKS.md # GDSS spreader/despreader guide │ └── PTT_CONTROL.md # PTT control with gr-osmosdr ├── examples/ # Example flowgraphs ├── tests/ # Unit tests └── cmake/ # CMake modules └── Modules/
## 依赖项
请参阅 [DEPENDENCIES.md](https://github.com/supermagnum/gr-qradiolink/blob/HEAD/DEPENDENCIES.md) 获取所需和可选依赖项的完整列表。
**快速概要:**
- 使用 `git clone --recursive` 克隆(或者在克隆后运行 `git submodule update --init --recursive`)
- GNU Radio >= 3.10(其中 vocoder 组件需支持 Codec2 编译)
- CMake >= 3.16
- Boost 库
- Volk(向量优化内核库)
- ZeroMQ(可选,用于 MMDVM 块和 gr-ident 前导 SUB)
- Python 3.x 及 NumPy(用于 Python 绑定)
- fmt 库(用于测试)
## 测试
该模块包含所有块的全面单元测试。测试使用 CTest 和 Boost.Test 框架运行。
### 测试结果
所有测试均成功通过。请参阅 [tests/results.md](https://github.com/supermagnum/gr-qradiolink/blob/HEAD/tests/results.md) 查看 C++ 单元测试、Python 测试框架及边界案例结果。请参阅 [fuzzing-results/results.md](https://github.com/supermagnum/gr-qradiolink/blob/HEAD/fuzzing-results/results.md) 查看模糊测试和 MMDVM 协议测试详情。
**C++ 单元测试:**```
100% tests passed
Test Breakdown:
- 12 Manual tests (with int main): test_mod_2fsk, test_mod_4fsk, test_mod_8fsk,
test_mod_am, test_mod_gmsk, test_mod_bpsk, test_mod_mmdvm, test_mod_freedv,
test_gdss_spreader_cc, test_gdss_despreader_cc, test_dsss_cdma_transmitter_cc,
test_dsss_cdma_receiver_cc
- Boost.Test tests: mod_ssb, mod_qpsk, mod_nbfm, mod_wbfm, mod_dsss, all
demodulators, rssi_tag_block (8 tests), interleaver_bb (13 tests with edge cases)
- gr-ident: test_grident_zmq (JSON parse and mode_id to demod mapping)
Test Coverage:
- Modulators: 2FSK, 4FSK, 8FSK, AM, GMSK, BPSK, SSB, QPSK, NBFM, WBFM, DSSS, M17, DMR, dPMR, NXDN
- Demodulators: 2FSK, 4FSK, 8FSK, AM, GMSK, BPSK, SSB, QPSK, NBFM, WBFM, DSSS, M17, DMR, dPMR, NXDN
- FEC: interleaver_bb (HF burst error handling, 13 tests including edge cases)
- Note: SOQPSK and CPM-4FSK blocks are implemented and available but unit tests are planned for future releases
MMDVM 协议测试(Python):``` 41 tests passed, 0 tests failed
有关完整的MMDVM协议测试结果,请参见 [fuzzing-results/results.md](https://github.com/supermagnum/gr-qradiolink/blob/HEAD/fuzzing-results/results.md)。
一个 **DSSS BER 仿真** ([examples/dsss_ber_simulation.py](https://github.com/supermagnum/gr-qradiolink/blob/HEAD/examples/dsss_ber_simulation.py)) 运行 spreader -> AWGN -> despreader,并绘制 N=64, 128, 256 时 BER 与 SNR 的关系图,叠加理论曲线 0.5*erfc(sqrt(N*Es/N0/2));两条曲线在仿真噪声范围内匹配,确认了正确的 DSSS 行为。
### 运行测试
要构建并运行测试套件:```bash
cd build
cmake ..
make
ctest --output-on-failure
该模块包含使用 libFuzzer 的全面模糊测试覆盖。参见 fuzzing-results/results.md 获取完整的模糊测试活动结果,包括:
该模块包含所有调制类型的基于 Python 的验证测试。参见 fuzzing-results/results.md 获取验证测试结果。所有数字语音模式(FreeDV、M17、DMR、dPMR、NXDN)现在都有 Python 绑定和验证支持。SOQPSK 模块具有 Python 绑定并可供使用;验证测试计划在未来版本中提供。
mode_id 切换解调/调制组。所有模块在 grc/ 目录中都有 GRC(GNU Radio Companion)模块定义。关键模块:
数字调制:
模拟调制:
数字语音:
MMDVM 协议:
gr-ident(可选,libzmq):
FEC:
有关所有模块的完整列表,请参见 grc/ 目录。
本项目采用 GNU 通用公共许可证 v3.0 或更高版本(GPL-3.0-or-later)授权。
详细信息请参见 QRadioLink 仓库中的 LICENSE 文件。
| 块 | 来源 | 备注 |
|---|
| 2FSK、4FSK、GMSK、BPSK、QPSK、AM、SSB、NBFM、WBFM、FreeDV、M17、DMR | QRadioLink | 已验证与QRadioLink src/gr/(gr_demod_、gr_mod_)一致。 |
| MMDVM源/宿、demod_mmdvm_multi、demod_mmdvm_multi2、mod_mmdvm_multi2、RSSI、限幅器、拉伸器、zero_idle_bursts、gr_4fsk_discriminator | QRadioLink | 已验证与QRadioLink src/gr/一致。 |
| 8FSK | 为本模块实现 | QRadioLink中没有gr_demod_8fsk/gr_mod_8fsk。基于4FSK风格设计的扩展。 |
| SOQPSK | 为本模块实现 | QRadioLink中没有gr_demod_soqpsk/gr_mod_soqpsk。来自SOQPSK文献/规范。 |
| CPM-4FSK | 为本模块实现 | QRadioLink中没有gr_mod_cpm_4fsk。 |
| dPMR | 为本模块实现 | QRadioLink中没有gr_*。来自ETSI TS 102 658(测试向量和代码注释)。 |
| NXDN | 为本模块实现 | QRadioLink中没有gr_*。来自NXDN论坛规范;符号映射参考MMDVM惯例。 |
| POCSAG | 为本模块实现 | QRadioLink中没有gr_*。来自POCSAG/ITU-R M.584-2;协议与MMDVMHost兼容。 |
| D-STAR | 为本模块实现 | QRadioLink中没有gr_*。来自D-STAR/JARL规范(Golay FEC);与MMDVMHost兼容。 |
| YSF | 为本模块实现 | QRadioLink中没有gr_*。来自YSF协议文档;与MMDVMHost兼容。 |
| P25 | 为本模块实现 | QRadioLink中没有gr_*。来自P25 Phase 1 TIA-102;与MMDVMHost兼容。 |
| DSSS(基础) | QRadioLink | 已验证与QRadioLink gr_demod_dsss/gr_mod_dsss一致。 |
| DSSS(增强)、GDSS | 本模块 | DSSS:在QRadioLink基础之上的增强。GDSS:来自Shakeel等人,Sensors 2023。 |
| gr-ident ZMQ路由 | 本模块 | 与gr-ident前导码PUB互操作;非来自QRadioLink。 |
tcp://127.0.0.1:5560上的解码mode_id,并选择匹配的解调/调制块族(参见GRIDENT_ZMQ.md、CODE_MAP.md)
libzmq)route_out上发布demod_block / mod_block