在fpga的设计中的,内部的fifo和ram是两种非常常见的存储单元。有的场景是只能使用ram,比如存放表项的时候,有的场景是ram和fifo都可以使用,比如存放数据的时候,从功能的角度来讲,fpgaer都知道这两种存储单元如何使用,但是从工程的角度,比如板上问题的定位、存储单位读写逻辑的修改和维护等方面来看,用fifo还是用ram还是有点点讲究了。
fifo
关于fifo的基本原理,可以参考fifo的应用,里面对fifo有非常详细的介绍。这里从优缺点2个方面重新看到fifo
fifo的优点
从使用fifo的角度来看,fifo优点很明显,使用简单,问题定位也方便。
首先是时序简单:fifo通过读写使能控制,只要不满,就可以写入数据;只要不空,就可以读出数据。不需要关心数据在内部的存储位置。
定位问题简单:在工程实践中,对fifo的问题定位比较简单,常见的错误就是上下溢出、非空情况下不读、长空长满等。这些现象fifo一般都给出了相应的信号,所以非常好定位。
扩展性好:fifo不仅仅是一个缓存,同时也很好的逻辑隔离单元,写逻辑部分的修改不影响读逻辑;同理读逻辑部分的修改不影响写逻辑,减少了逻辑的耦合性。
fifo的缺点
fifo的缺点,首先不能控制地址,也就不能控制数据写入和读出的位置,所以不能存放表项;还有一个缺点就是从资源的角度来看,需要有额外的逻辑来控制读写,还要产生空、满信号等;最后在一些特殊的应用场景下,比如对数据从写入到读出有延时需求的场景,不同的fifo设计,有可能不满足要求。
ram
关于ram的基础原理,前面有也有过详细的介绍,可以参考ram的应用。
ram的优点
存放表项:由于ram的读写地址可以由用户自己控制,所以ram是fpga内存放大表项的几乎唯一的选择。
覆盖:在数据需要丢弃的场景中,可以通过重复写的方式来覆盖原来的数据,从而实现丢弃的功能。
回读:在有的场景中,同一个数据可能需要从缓存中多次读出,这种场景下ram也是唯一的选择。
ram的缺点
读写控制:相比fifo的读写控制,增加了地址这个控制信号。从以往的经验来看,地址信号是比较容易引起问题的,常见的就是地址错误导致数据写入错误。
溢出:由于ram没有空满状态,ram作为缓存的时候,写入和读出的逻辑,需要从方案上保证不溢出,复杂度略有增加。
问题定位难:除了上述地址错误导致写入的数据错误不好定位外,ram没有空满状态,做缓存的时候,ram的溢出同样不好定位。
总结
经过上面的分析,从功能、控制难易程度、问题定位难易程度考虑,我们可以总结出如下几条原则:
1、表项的存储采用ram;
2、对数据有覆盖和回读需求的,使用ram,使用的时候要做好读写长度的控制以及状态的监测;
3、除上述2种情况外,既可以用ram又可以用fifo的场景,一律用fifo;
芯片信号线中的振铃现象产生原因
明年政府机构将转向云端运算应对紧缩时期
镍氢电池充电器制作
虹膜识别是如何工作的_虹膜识别完全安全吗
数字电路常用的设计准则你必须知道
FIFO和RAM,到底用哪个?
浅谈电力监控系统在城市轨道交通的设计与应用
零知识证明的性质原理及应用实例介绍
恩智浦智能识别芯片荣获公安部“蓝盾奖”
Intel辟谣不会放弃10nm桌面版处理器
灭蚊灯的电路原理图
粤港澳大湾区蓝图展开 LED产业或将迎来新一波的创新潮
荣耀总裁表示2019年我们会在最合适的时间推出5G手机
软通动力与中国总会计师协会再度携手助力央企财务数智化建设
铝砖制造太阳能环保概念手机(透明电池舱 )
谈谈马云对人工智能的几点思考
使用Maxim ADC测量MAX40016上的电流
解读人工智能与新基建的关系
大数据时代还需要数据治理吗?如何面向用户开展大数据治理?
国家电网:建设国际一流绿色智能电网 服务京津冀协同发展