逻辑电路爱好者
这个问题很实际,做人数统计确实对实时性要求高。我做过类似的雷达处理,分享点经验。
FFT IP核的流水线设计,核心是复用和平衡。TI的6843每个chirp的采样点数和chirp数都是固定的,你可以根据这个来定制FFT点数,不是2的幂次也没关系,用混合基FFT。重点是把FFT分解成多级,每级之间用双端口RAM做缓冲,这样就能形成流水。比如做距离维FFT,当前chirp的数据在进入FFT第一级时,上一个chirp的数据可能正在第二级计算,同时再上一个chirp的结果正在从最后一级输出。关键是要算好每级的延迟,让数据流不断。
二维CFAR的并行化,我的做法是把距离-多普勒平面分块。CFAR本质上是在每个单元周围取参考窗做比较,计算量大。硬件上可以实例化多个CFAR处理单元,每个单元负责一片区域。但更巧的办法是,利用检测通常只在少数点发生的特性,先做门限比较,只对超过门限的点进行精确的CFAR计算,能省很多资源。
整个流水线调度,你得画个数据流图。从ADC数据输入、缓存、距离FFT、转置、多普勒FFT、到CFAR,每一步的输入输出数据率和所需时钟周期要标清楚。最容易卡住的地方是中间数据的转置(因为多普勒FFT需要按慢时间维数据),这里需要一个大缓冲,比如用外部DDR或者FPGA内的大Block RAM矩阵。设计时让前级(距离FFT)的输出速率和后级(多普勒FFT)的读取速率匹配,如果后级慢,前级就要设置FIFO缓冲,防止数据丢失。
最后提醒一点,优化时别光看资源,也要看时序。高频操作下布线延迟可能成为瓶颈,复杂逻辑尽量打拍。
