硅农预备役_01
同学,毕设做这个很有挑战性,但搞定了会很出彩。我分享点实际经验。
PS和PL划分上,除了基本的数据搬运,建议把后处理(如NMS非极大值抑制)也放在PL里。这样PS更轻松,整体延迟更低。ZYNQ的PS和PL之间用AXI HP接口,带宽够用,但要注意数据对齐和缓存一致性问题。
模型不一定要INT8,但INT8是最务实的选择。如果你的检测目标比较单一(比如只检测人),甚至可以尝试INT4或二值化,但精度损失需要评估。量化不是简单转换,要微调(fine-tuning)来恢复精度。
卷积加速器结构,流水线和阵列不是二选一。通常做法是:用多个处理单元(PE)组成阵列,每个PE内部流水,然后多个PE并行。这样既能提高并行度,又能保持高时钟频率。关键是根据数据复用方式设计数据流:比如权重固定,输入数据流动,这样可以减少带宽压力。
硬件架构设计时,别光盯着卷积,全连接层和激活函数(如Leaky ReLU)也要硬件化。激活函数用查找表(LUT)实现很高效。
资源评估方面,ZYNQ-7020的BRAM可能比DSP更先成为瓶颈。因为每一层特征图都要缓存,尤其是中间层。尽量复用缓冲区,压缩数据位宽。
建议你先用HLS(高层次综合)快速原型设计,验证功能后再考虑手写Verilog优化。毕业设计时间有限,先确保通路跑通,再优化性能。
最后,去Xilinx官网看看Vitis AI的文档,里面有很多ZYNQ上部署CNN的参考设计,可以直接借鉴或修改。
