原创 【博客大赛】 FIFO使用技巧

2012-5-11 18:29 1626 12 13 分类: FPGA/CPLD

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资源的一半。

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户192767 2012-5-28 11:49

128位?什么数据位宽这么宽?你是说深度吧。其实用usedw来控制空满最简单也最不容易出错了。不过Quatus里,当FIFO满时深度会显示为0,这时会需要满信号来辅助判断。位宽的转换只需要一个FIFO就行了,配合简单的时序逻辑操作

相关推荐阅读
用户1647968 2013-03-12 22:27
[博客大赛]TI官网上的WEBENCH® Power Designer 设计工具厉害啊
您指掌之间完成电源设计! WEBENCH设计环境为您提供了创建电源或直流/直流转换器所需的全面设计和原型建立工具,能够有效地满足您的设计要求。WEBENCH工具让设计者在建...
用户1647968 2013-03-12 21:53
【博客大赛】【原创】基于ALTER 数字信号传输性能分析仪
...
用户1647968 2012-11-22 12:20
【TI博客大赛】基于TMS320LF2407A的PMSM矢量控制电流环的设计
三相永磁同步电动机的转矩方程为 (4-1) 上式说明了转矩由两项组成,括号中的第一项是由三相旋转磁场和永磁磁场相互作用所产生的电磁转矩;第二项是由凸极效应引起的磁阻转矩。 对于嵌入式转子,Ld,电磁转...
用户1647968 2012-11-22 12:18
【TI博客大赛】基于DSP28027的SVPWM简易变频器
SVPWM技术的原理 2.1 基本电压空间矢量 图1示出电动游览车的逆变器主电路。规定当上桥臂的一个开关管导通时,开关状态为1。此时,相应的下桥臂开关管关断;反之亦然,开关状态为0。3个桥...
用户1647968 2012-08-25 22:37
【TI博客大赛】TI电源管理芯片BQ20Z75DBT 设计高稳定笔记本电池移动电源
时间岁月飞快啊,一转眼俺做电源工程师之路也有10年了,一直做移动笔记本电池电源设计,使用过不少笔记本电源设计应用解决方案。说起使用稳定性,也很纠结啊,笔记本电源安全性一直各品牌生产厂家最关注问题,经过...
用户1647968 2012-08-25 22:34
【TI博客大赛】基于TI DSP的数字化三相变频电源的研制
    随着电力电子技术的飞速发展,正弦波输出变频电源已被广泛应用在各个领域中,与此同时对变频电源的输出电压波形质量也提出了越来越高的要求。在实验室和工业部门,三相正弦波变频电源常用于各种测量和控...
EE直播间
更多
我要评论
1
12
关闭 站长推荐上一条 /3 下一条