PLFM_RADAR 如何配置 FPGA 主机寄存器启用 CFAR 模式、MTI 对消与 DC 陷波?
PLFM_RADAR 如何配置 FPGA 主机寄存器启用 CFAR 模式、MTI 对消与 DC 陷波【免费下载链接】PLFM_RADAROpen-source, low-cost 10.5 GHz PLFM phased array RADAR system项目地址: https://gitcode.com/GitHub_Trending/pl/PLFM_RADAR在 PLFM_RADARAERIS-1010.5 GHz PLFM 相控阵雷达的主板上FPGA 的杂波抑制与恒虚警检测链MTI 两脉冲对消 → DC 陷波 → CFAR 检测已经全部实现但默认处于关闭状态复位后host_cfar_enable 0、host_mti_enable 0、host_dc_notch_width 0此时系统退化为简单的固定阈值检测host_detect_threshold默认 10000。要启用这些功能主机需要通过 USB 向 FPGA 写入 opcode 0x210x27 对应的主机寄存器。本文说明这些寄存器的位域与默认值、如何通过 USB 4 字节命令写值以及如何验证生效。前提条件根据 release notes 和 implementation log 的版本记录CFARCA-CFAR 检测器CA/GO/SO 三种模式自 Build 24tagv0.1.5-cfar起集成为生产基线主机可配置 guard/train/alpha/mode 寄存器MTI 对消与 DC 陷波自 Build 25tagv0.1.6-mti当前生产基线起加入对应两个新寄存器host_mti_enable0x26与host_dc_notch_width0x27两者默认 off/pass-through保证向后兼容。因此固件必须为 Build 25v0.1.6-mti或更高版本才具备全部三个功能Build 24 只有 CFAR。硬件连接方面radar_protocol.py 的模块注释说明了两种 USB 桥FT2232H USB 2.08 位50T 生产板通过pyftdiVID:PID 0x0403:0x6010FT601 USB 3.032 位200T 高端板通过ftd3xxVID:PID 0x0403:0x6030/0x6031。注意pyftdi不支持 FT601。两种连接的write()接口一致命令格式相同FT601 侧会自动把写入数据补齐到 4 字节对齐雷达命令本身已是 4 字节属无副作用补齐。主机寄存器映射0x200x27寄存器定义在 radar_system_top.v 的命令解码case(usb_cmd_opcode)中与 radar_protocol.py 中的Opcode枚举一一对应Opcode寄存器有效位含义复位默认值0x20host_range_mode[1:0]距离模式00Auto默认01近程 3km10远程 10km目前仅存值天线/时序切换未实现000x21host_cfar_guard[3:0]CFAR 保护单元数每侧 0..820x22host_cfar_train[4:0]CFAR 训练单元数每侧 1..1680x23host_cfar_alpha[7:0]门限乘子Q4.4 定点0x30即 3.00x24host_cfar_mode[1:0]00CA-CFAR01GO-CFAR10SO-CFAR00CA0x25host_cfar_enable[0]1启用 CFAR 检测0退回简单阈值检测0禁用0x26host_mti_enable[0]1MTI 两脉冲对消生效0直通0直通0x27host_dc_notch_width[2:0]DC 陷波宽度对消 bin 0 两侧 ±width 个 bin0关闭1..70关闭注意各寄存器只取命令值中的低几位例如host_cfar_train只保留低 5 位、host_dc_notch_width只保留低 3 位因此写值超出范围的部分会被硬件丢弃。信号链位置来自 implementation logMTI 对消器H(z) 1 - z^{-1}位于距离 bin 抽取器与多普勒处理器之间用于去除地物杂波DC 陷波位于多普勒之后、CFAR 之前将host_dc_notch_width范围内的多普勒 bin 置零。通过 USB 写入命令主机到 FPGA 的命令是顺序接收的 4 字节字格式为{opcode[31:24], addr[23:16], value[15:0]}大端序MSB 先传见RadarProtocol.build_command()的文档字符串。项目里推荐直接用 radar_protocol.py 构造命令而不是手写字节import struct from radar_protocol import RadarProtocol, Opcode def show_cmd(opcode: int, value: int) - None: word RadarProtocol.build_command(opcode, value, addr0) print(fopcode0x{opcode:02X} value0x{value:04X} - {word.hex()}) # 1) CFAR先配置参数最后用 0x25 打开 show_cmd(Opcode.CFAR_GUARD, 2) # 0x21: 保护单元2 show_cmd(Opcode.CFAR_TRAIN, 8) # 0x22: 训练单元8 show_cmd(Opcode.CFAR_ALPHA, 0x30) # 0x23: alpha3.0 (Q4.4) show_cmd(Opcode.CFAR_MODE, 0) # 0x24: CA-CFAR00CA, 01GO, 10SO show_cmd(Opcode.CFAR_ENABLE, 1) # 0x25: 启用 CFAR # 2) MTI 对消 show_cmd(Opcode.MTI_ENABLE, 1) # 0x26: 启用两脉冲对消 # 3) DC 陷波宽度取 1..7 show_cmd(Opcode.DC_NOTCH_WIDTH, 2) # 0x27: ±2 bin上面的 opcode 数值和位域含义均可在 radar_system_top.v 的解码段核对0x21: 取 value[3:0]0x22: 取 value[4:0]0x23: 取 value[7:0]0x24: 取 value[1:0]0x25/0x26: 取 value[0]0x27: 取 value[2:0]。实际发送时先打开连接再写from radar_protocol import FT2232HConnection # 或 FT601Connection conn FT2232HConnection(mockFalse) # 真实硬件FT2232H 需安装 pyftdi assert conn.open(), USB 设备打开失败 conn.write(RadarProtocol.build_command(Opcode.CFAR_ENABLE, 1)) conn.write(RadarProtocol.build_command(Opcode.MTI_ENABLE, 1)) conn.write(RadarProtocol.build_command(Opcode.DC_NOTCH_WIDTH, 2))FT2232H 侧open()会自动配置 245 Synchronous FIFO 模式并清空缓冲区FT601 侧open()在芯片配置不符时会自动执行setChipConfiguration触发 USB 重新枚举等待约 2 秒后重新打开——这是文档注释明确的行为连接中断属于正常流程。GUI 侧无需手写命令v7/dashboard.py中已经把0x25、0x26等 opcode 映射到set_cfar_enable(bool(v))、set_mti_enable(bool(v))等软件寄存器方法见 software_fpga.py 第 80125 行的寄存器镜像与 setter通过面板开关即可完成同样的配置。结果验证验证分两层协议层的状态回读和行为层的检测输出。状态回读。主机发送 opcode0xFF触发状态请求FPGA 回传[0xBB] [6 x 32b 状态字] [0x55]共 26 字节的STATUS_PACKET由RadarProtocol.parse_status_packet()解析。需要如实说明文档记录的 6 个状态字包含 radar_mode、stream_ctrl、host_detect_threshold该字段在状态包里命名为cfar_threshold、chirp 时序、range_mode、AGC 指标和自测结果并不直接回读 0x210x27 的寄存器值0xFF 回读能确认命令解码通路CDC 解码寄存器工作正常但 CFAR/MTI 的具体设置值没有状态字可查。行为层验证。项目用测试台验证了各功能生效时的预期行为可作为判断依据以下均为测试台场景与结果不是现场固定数值tb_cfar_ca.vT1 验证 CFAR 禁用时退化为简单阈值直通低于门限不告警、高于门限告警向后兼容T2 均匀噪声底 CA-CFAR 时内部 bin 误检很少flagged 20T3 单个强目标恰好产生 1 个正确 bin 的检测T4 两个间隔大于窗口的目标产生 2 个检测T5 覆盖距离 bin 0 和 63 的边界处理T6 GO-CFAR 在非对称噪声下检测max(leading_avg, lagging_avg)侧的目标T7 SO-CFAR 门限更低、对较弱目标更敏感。tb_fullchain_mti_cfar_realdata.v在“MTI → DC 陷波 → CFAR”完整链路上做真实数据联合仿真implementation log 记录 Build 25 结果为 3/3 与参考输出完全一致。主机侧软件镜像可用 test_v7.py 核对其中test_cfar_enable_changes_detections约 L632验证set_cfar_enable(True)会改变检测输出set_mti_enable(True)的默认值断言也在此文件中。综合判断写入 0x251 后检测输出由固定阈值切换为 CFAR 行为例如均匀噪声下误检显著减少、目标 bin 有且仅有一个告警写入 0x261 后静止地物杂波被两脉冲对消压制写入 0x27n 后 DC 附近 ±n 个多普勒 bin 被置零。限制与排查所有寄存器复位默认关闭/直通是为了与旧固件行为向后兼容忘记写 0x251 时系统仍走简单阈值检测不会报错容易被误判为“CFAR 没生效”。host_dc_notch_width只支持 1..73 位写 0 即关闭写 8 以上无效位会被硬件截断。opcode 0x20range_mode目前是“配置存储”性质天线与切换时序TBD不要指望它改变实际链路。命令字中addr字节在现有 opcode 中不参与解码radar_protocol.py的build_command()默认addr0保持默认即可。版本约束Build 24v0.1.5-cfar只有 CFAR 寄存器组0x26/0x27 不存在于该版本如需 MTI 与 DC 陷波必须升级到 Build 25v0.1.6-mti及以上的 bitstream。【免费下载链接】PLFM_RADAROpen-source, low-cost 10.5 GHz PLFM phased array RADAR system项目地址: https://gitcode.com/GitHub_Trending/pl/PLFM_RADAR创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →