同步FIFO设计分析

描述

模块虽小但是要有新意,首先写一个同步FIFO,这是一个烂大街的入门级项目,但是我肯定不会写的那么简单,需求如下:

  • size=3232(高宽)
  • 同时读写
  • 给出空满、将空将满信号
  • 单口sram接到读使能下一拍出数据(或者n拍之后)

和大多数文章所写描述的同步FIFO的需求不一样的地方在于最后一个需求,内部例化的sram的读取动作不是读及读出的操作。因此基于这种sram,又要兼顾FIFO的标准协议,以及需要FIFO逻辑速度到达最优,需要对设计进行一些小的处理

下图为本次同步FIFO设计的框图:

寄存器

设计分析:

  1. 使用reg0的原因
    由于sram延时一拍读出,因此就需要有reg0处理延时,既只要reg0为空,寄存器就向sram读数,达到提前取数,消除延时的效果。(一般sram有几拍延时就有几个reg0)
  2. 使用reg1的原因
    reg1用于处理边界条件,在sram和reg0为空时,没有读使能的情况下写入第一个数,此时第一个数如果存入sram,则读取流程将变成sram-reg0-output,中间延迟过长,但是假如使用reg1用于存储第一个数据,则可以把这一拍数据延时解决掉。(且同上述,一般有几个reg0就有几个reg1)
  3. 使用mux2的原因
    mux2也是用于处理边界条件,在sram和所有寄存器都为空时,写使能和读使能同时来到,则数据bypass通过SYNC_FIFO模块。
  4. mux0和mux1则用于处理上述逻辑关于数据通道切换的处理。
  5. 关于sram存取、各种空满信号的判断,就不再一一叙述,想了解这方面设计可以参见网上各种同步FIFO设计。
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分