Verilog小白2024
参加过类似比赛,说点实战心得。
CFAR 用移位寄存器替代大存储完全可行,关键是设计好数据流。我们当时用了一维 CFAR 先做距离维,再做多普勒维,比二维 CFAR 省资源,效果也能接受。排序用的是一种叫“双调排序”的硬件友好结构,但只排序参考窗里的一部分值,不是全部。
聚类算法,我们根本没敢用 K-means 或 DBSCAN 的完整版。自己琢磨了一个“峰值关联”的土办法:把 CFAR 检测出的点(认为是目标峰值),按照距离和速度的连续性,和上一帧的点进行关联匹配。如果位置变化在阈值内,就认为是同一个目标,更新跟踪轨迹。这本质上是一种简化的最近邻聚类,计算量极小,用一些减法和比较器就能实现,特别省资源,在室内人不多、走动不快的情况下够用了。
平衡吞吐和资源,我们的策略是“用时间换资源”。不用追求每个时钟周期都输出一个结果。比如,一个 DSP 块可以通过时分复用来计算多个数据通道的距离值。BRAM 也可以配置成双端口,同时服务两个模块。
最深的坑是数据精度和溢出。定点数仿真一定要做充分,不然板上行为不对,debug 起来能累死人。建议先用 MATLAB 的 Fixed-Point Designer 工具箱验证。
