fix: 清理 radar 测试文件 deprecated 别名引用 删除所有 deprecated 注释和重复导入行 替换 MFConfig/BFConfig/EDConfig 为完整命名 修复导入语法错误 Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com
fix: 清理 radar 测试文件 deprecated 别名引用
Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com
脉冲多普勒雷达和主动声纳信号处理仿真平台,用于架构验证和硬件资源统计。
核心价值:
algo_*
simulation
算法级:快速验证算法,输出与 MATLAB/理论一致 周期级:精确模拟硬件行为,输出与 Verilog 仿真一致
脉冲多普勒雷达信号处理链路:
输入 [脉冲, 通道, 采样点] ↓ 匹配滤波 (FFT → CMUL → IFFT) ↓ 时域波束形成 (CMUL → 累加) ↓ 多普勒处理 (SHIFT → CMUL → 累加) ↓ 能量检测 (|x|²) 输出 [角度, 多普勒, 距离]
检测结果:角度-多普勒-距离三维功率图,可检测目标的角度、速度、距离。
主动声纳频域波束形成(宽带处理):
输入 [通道, 采样点] ↓ 频域匹配滤波 (FFT → CMUL) ↓ 频域波束形成 (CMUL → 累加) ↓ IFFT + 能量检测 (SHIFT → IFFT → |x|²) 输出 [角度, 距离]
检测结果:角度-距离二维功率图,可检测目标的角度和距离。
与雷达的区别:
pip install numpy matplotlib pytest
# 算法级(快速验证) python -m app.radar.algo_serial --theta 20 --range 3000 --velocity 10 # 周期级(硬件仿真) python -m app.radar.simulation --theta 20 --range 3000 --velocity 10
# 算法级 python -m app.sonar.algo_serial --theta 20 --range 30 # 周期级 python -m app.sonar.simulation --theta 20 --range 30
--theta
--range
--velocity
--snr
--no-plot
from app.radar.signal import RadarParams, generate_radar_signals from app.radar.simulation import RadarSimulation from sim.types import FixedPointConfig, to_fixed # 1. 设置参数 params = RadarParams( target_angle_deg=20, # 目标角度 target_range_m=3000, # 目标距离 target_velocity_mps=10, # 目标速度 snr_db=20, # 信噪比 ) # 2. 生成信号 signals, _ = generate_radar_signals(params) config = FixedPointConfig.default() signals_q = to_fixed(signals, config) # 3. 运行仿真 simulation = RadarSimulation(params, config) result = simulation.run(signals_q) # 4. 获取结果 power = result['power'] # 检测功率 metrics = simulation.metrics # 硬件资源统计 print(metrics.summary())
from app.radar.configs import RadarModuleConfigs from app.radar.modules import MFConfig, BFConfig, DopplerConfig, EDConfig configs = RadarModuleConfigs( mf=MFConfig(parallelism=4), # MF 4 通道并行 bf=BFConfig(channel_parallelism=4, angle_parallelism=64), # BF 4通道×64角度 doppler=DopplerConfig(angle_parallelism=64, doppler_parallelism=64), ed=EDConfig(parallelism=64), ) simulation = RadarSimulation(params, config, module_configs=configs)
sim/ # 框架层(硬件仿真基础设施) ├── types.py # 定点数类型、转换、饱和 ├── metrics.py # 硬件度量收集(ROM/COMPUTE 分类) ├── sdf.py # SDF 数据流图 ├── pipeline.py # Pipeline 延迟建模 ├── accumulator.py # 多槽位累加器 ├── pingpong_buffer.py # Ping-Pong 双缓冲 ├── rom.py # 只读存储器 ├── module.py # StreamModule 基类 ├── docs/ # 框架文档 └── tests/ # 框架测试 app/ ├── radar/ # 雷达应用(自包含) │ ├── signal.py # RadarParams 和信号生成 │ ├── funcs.py # 计算函数(FFT、IFFT、CMUL 等) │ ├── configs.py # 模块配置(dataclass) │ ├── processor.py # SDF 处理器 │ ├── simulation.py # 仿真驱动 │ ├── modules/ # 硬件模块 │ │ ├── matched_filter_stream.py # MF(FFT→CMUL→IFFT) │ │ ├── time_beamformer_stream.py # 时域 BF │ │ ├── doppler_stream.py # Doppler 处理 │ │ └── energy_detection_stream.py # 能量检测 │ ├── docs/ # 雷达文档 │ └── tests/ # 雷达测试 └── sonar/ # 声纳应用(自包含) ├── signal.py # SonarParams 和信号生成 ├── funcs.py # 计算函数 ├── configs.py # 模块配置 ├── processor.py # SDF 处理器 ├── simulation.py # 仿真驱动 ├── modules/ # 声纳模块 │ ├── matched_filter_freq_stream.py # 频域 MF │ ├── freq_beamformer_stream.py # 频域 BF │ └── ifft_energy_detection_stream.py # IFFT + 能量检测 ├── docs/ # 声纳文档 └── tests/ # 声纳测试 output/ # 仿真输出 ├── radar/ # 雷达报告和图片 └── sonar/ # 声纳报告和图片
┌─────────────────────────────────────────────────────┐ │ Processor (处理器层) │ │ - 管理输入输出、预计算系数、收集结果 │ ├─────────────────────────────────────────────────────┤ │ SDFGraph (数据流图层) │ │ - 模块连接、调度执行、背压传播 │ ├─────────────────────────────────────────────────────┤ │ StreamModule (模块基类) │ │ - data_out, valid_out 缓存、reset() 接口 │ ├─────────────────────────────────────────────────────┤ │ Pipeline / Accumulator (控制层) │ │ - Pipeline: 延迟建模,1:1 数据流 │ │ - Accumulator: N:1 累加控制 │ ├─────────────────────────────────────────────────────┤ │ _compute (计算层) │ │ - fft_compute, cmul_compute, abs_sq_compute 等 │ └─────────────────────────────────────────────────────┘
所有模块实现统一的 Stream 协议:
def step(data_in, valid_in, ready_in) -> (data_out, valid_out, ready_out): """ valid/ready 握手协议: - valid_out && ready_in → 传输发生 - valid_out && !ready_in → 背压,保持输出 """
python -m pytest sim/tests/ app/radar/tests/ app/sonar/tests/ -v
测试覆盖:
====================================================================== 脉冲多普勒雷达周期级仿真 ====================================================================== 系统参数: 脉冲数: 32 通道数: 8 FFT点数: 1024 角度范围: [-60, 60]°, 241点 目标: 角度=20°, 距离=3000m, 速度=10m/s ====================================================================== 检测结果 ====================================================================== 检测: 角度=20.0°, 距离=3002m, 速度=10.0m/s 目标: 角度=20°, 距离=3000m, 速度=10m/s ====================================================================== 硬件资源统计 ====================================================================== ROM 存储: s_conj: 8,192 bytes (8.0 KB) phase_shifts: 15,488 bytes (15.1 KB) twiddles: 524,288 bytes (512.0 KB) 总计: 547,968 bytes (535.1 KB) 仿真耗时: 1.234s 总周期数: 5,120
框架文档:sim/README.md
雷达文档:app/radar/docs/ARCHITECTURE.md
声纳文档:app/sonar/docs/ARCHITECTURE.md
MIT License
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
信号处理仿真平台
脉冲多普勒雷达和主动声纳信号处理仿真平台,用于架构验证和硬件资源统计。
核心价值:
应用场景
两类仿真
algo_*)simulation)算法级:快速验证算法,输出与 MATLAB/理论一致 周期级:精确模拟硬件行为,输出与 Verilog 仿真一致
雷达处理流程
脉冲多普勒雷达信号处理链路:
检测结果:角度-多普勒-距离三维功率图,可检测目标的角度、速度、距离。
声纳处理流程
主动声纳频域波束形成(宽带处理):
检测结果:角度-距离二维功率图,可检测目标的角度和距离。
与雷达的区别:
快速开始
安装
运行雷达仿真
运行声纳仿真
命令行参数
--theta--range--velocity--snr--no-plot代码示例
Python API 使用
配置并行度
目录结构
核心设计
五层架构
Stream 协议
所有模块实现统一的 Stream 协议:
延迟模型
测试
测试覆盖:
输出示例
详细文档
框架文档:sim/README.md
雷达文档:app/radar/docs/ARCHITECTURE.md
声纳文档:app/sonar/docs/ARCHITECTURE.md
许可证
MIT License