推荐答案
测试一下
题目
FIFO是标准接口,wr_rdy为高时可写,wr_en为高时写有效;
参考答案与知识点
参考答案
由于题目未明确maxpool的窗口大小和步长,此处以最常见2x2池化窗口、步长为1(或2)为例分析。假设数据通过FIFO输入,每个cycle从FIFO读取一个数据(当wr_rdy有效且wr_en有效时,数据写入FIFO;读侧假设由maxpool模块控制)。从trig信号启动一次池化处理到done信号输出该窗口的最大值,最少需要的cycle数取决于读取窗口内所有数据的耗时以及比较器的延迟。若读数据每个cycle可读一个,则读取2x2=4个数据需要4个cycle。比较器可设计为流水线方式:每读入一个数据与当前最大值比较,当最后一个数据读入后比较结果立即有效,因此可在第4个cycle结束时产生done。若考虑寄存输出,可能增加1个cycle。但题目问“最少”,可假设比较器组合逻辑直接输出,则第4个cycle即可完成。若步长大于1,则不需要额外等待。因此,对于2x2 maxpool,最少需要4个cycle。若窗口大小为KxK,则需K²个cycle。易错点:忽略wr_rdy与wr_en的握手条件可能引入等待;误以为需要额外等待全部数据读完后才开始比较;未区分流水线并行与串行读取。实际设计中,若数据连续有效且无气泡,最小延迟即为窗口内数据个数。
涉及知识点
- FIFO写接口握手时序
- 最大池化滑动窗口数据读取
- 流水线比较器延迟分析
- 最小cycle数计算与假设条件