push进去和pop出来的不是一个值_如何设计一个同步FIFO(二)

上一篇如何设计一个同步FIFO(一)中老李介绍了利用Flip Flop来作为存储单元的同步FIFO设计。这一篇咱们来看如何利用2 Port SRAM来作为存储单元设计同步FIFO。

开始往下读之前,老李先问一个问题,假如现在让你设计一个深度为N的基于2port SRAM的同步FIFO,请问至少需要多大的SRAM? 假设SRAM的位宽就是你的数据宽度,那么问题就是问你需要的SRAM的行数至少是多少?如果你觉得答案是显而易见的N,那么你值得读完这一篇。

首先来说为什么要用SRAM设计FIFO,很简单为了省面积。我们说存1bit的数据,SRAM里一个bit cell经典结构是6个晶体管,而一个flip flop需要的晶体管在20个左右,那么从面积上来说,肯定是SRAM小对吧?但是这里面有个平衡点,对于一块SRAM,算面积的时候不能仅仅算里面存储单元bit cell的面积,还要算外围的decode逻辑的面积。当SRAM的row size x column size比较小的时候,外围的decode逻辑占的比重比较大,反而这个时候SRAM的总面积不如row x column个flop的面积小。至于这个转折点要看工艺和memory compiler的data sheet,具体面积要拿SRAM的data sheet去比较。老李自己总结的一个经验,不保证完全准确,在5nm工艺下,这个转折点大概在2k bit,低于2k bit,比如16x32的大小,那还是Flop划算,如果远大于2k bit,那么就用SRAM,差不多在2-3k bit量级的时候要根据memory datasheet里的area number来比较。

再来说说什么是2 port SRAM,2 port 通常也被称作dual port,一个端口为写端口,一个端口为读端口。这两个端口可以同时工作,同一个周期内既可以读,也可以写,简化的框图如下图所示

2b2bcde9c2665851de23222911d79f31.png

WCEN:Write Chip Enable Neg,当这个信号为0的时候,要写入数据

WDATA:  要写入的数据

WADDR:要写入的地址

RCEN:Read Chip Enable Negÿ

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值