打印

FIFO使用技巧

[复制链接]
1312|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
LMQQ|  楼主 | 2013-1-28 21:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
FIFO是在FPGA设计中使用的非常频繁,也是影响FPGA设计代码稳定性以及效率等得关键因素。我总结一下我在使用FIFO过程中的一些心得,与大家分享。
         我本人是做有线通信的,所做的设计中大量的使用到FIFO,用于报文的缓存。我经常使用一个FIFO存报文内容,另一个FIFO存报文的长度,两者配合使用。

         在数据连续读取时,为了能不间断的读出数据而又不导致FIFO为空后还错误的读出数据。可以将FIFO的Empty和Almost_empty以及读使能配合起来使用,来保证能够连续读,并准确的判断FIFO空满状态,提前决定是否能启动读使能。具体的实施办法是:当Empty为1,立即停止读;当Empty为0,Almost_empty为0时,可以放心读;当Empty为0,但是Almost_empty为1时,如果上一拍读使能Read也为1,那么不能读;当Empty为0,但是Almost_empty为1时,如果上一拍读使能Read为0,可以读最后一拍。

        在FIFO使用时,使用到Almost_full信号以及读写counter来控制FIFO的读满预警,如果数据不是在空满判断的下一拍写入FIFO,则设计FIFO的满预警时要小心。如果你不确定判断满预警之后要延迟多少拍才能真正写入FIFO,那么尽量让FIFO有足够满预警裕量。例如,在wr_data_count为128才是真的满了,你可以设成wr_data_count为120的时候就给出满预警,可以保证设计的可靠和安全。当然,如果你能准确的算出判断满预警与真正写入FIFO的延迟,可以用精确的满预警阈值。

      当需要使用到数据位宽转换时,如将128位的数据转换成64位的数据,最好不要用XILINX自己生成的位宽转换FIFO。可以例化两个64位的FIFO,自己控制128转64。这样可以大大的节省资源,是XILINX CORE生成的FIFO资源的一半。

相关帖子

沙发
GoldSunMonkey| | 2013-1-28 21:11 | 只看该作者
嗯,不错,谢谢啦。

使用特权

评论回复
板凳
Tianya283| | 2013-1-29 22:15 | 只看该作者
GoldSunMonkey 发表于 2013-1-28 21:11
嗯,不错,谢谢啦。

学习了

使用特权

评论回复
地板
GoldSunMonkey| | 2013-1-29 22:24 | 只看该作者
;P

使用特权

评论回复
5
LongChip| | 2013-1-30 22:22 | 只看该作者
:loveliness:

使用特权

评论回复
6
vincentyeh| | 2013-2-20 16:37 | 只看该作者
AL460 Full HD FIFO DRAM 的基本结构FIFO(First in First out) 符合高速影像先进先出的结构,尤其适用于数码影像资料的暂存器使用。
一.独立的写入/ 输出程序,较低的输入clock rate,可有效地为贵司简化开发成本以及时间。
二.支援影像/图像数位资料VGA到1080p,内部架构为8Mx 16bit**体架构,最高速度可达到150MHz,可满足1080p的设计需求。
三.具有输入/输出智能控制(enable control) , 可做双倍**体(double buffer)控制,在frame 图框控制编程上尤其方便。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

153

主题

401

帖子

1

粉丝