数字IC萌新
从需求看,你的痛点是平衡吞吐、资源和功耗。我提几个具体步骤:1. 数据流选择:对于卷积这种规整运算,用并行计算阵列(比如多个PE处理不同输出通道)比深流水线更合适。可以设计一个PE包含多个DSP,处理一个输出通道的累加。2. 利用DSP:Zynq的DSP48E1支持预加器,可以用来做三输入加法,巧妙利用它能节省资源。把乘法和加法映射到DSP内部,别用FPGA逻辑,这样既快又省电。3. 数据复用策略:采用‘输入固定、权重流动’或‘输出固定’的数据流,减少特征图数据传输。比如,把一部分权重预加载到DSP附近的寄存器中,重复使用。4. 功耗优化:在系统级,用AXI SmartConnect配置合适的时钟域,降低交叉时钟域通信。在模块级,对非关键路径用多周期约束,降低时钟频率要求,从而降低动态功耗。另外,Zynq有低功耗模式,PS可以监控PL负载,动态调整电压频率(但比较高级,量力而行)。最后,建议你先在Matlab或Python里建模整个CNN,确定各层数据尺寸和位宽,再着手硬件设计,避免后期大改。
