【ZT】FIFO使用技巧---申请酷帖
转自EETOPlucien_1986FIFO是在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资源的一半。 哥哥呀,这样的帖子你也好意思申请置酷!这让那些原创酷帖情何以堪! {:lol:}{:lol:}{:lol:} 本帖最后由 NJ8888 于 2012-3-26 22:41 编辑
看来酷贴真的难,我传了个原创和7个资料,可能偏好那方面的人少,反响几乎没有 我昨天也在刚好在学习FPGA的FIFO技术。不过感觉这个没什么意思,不知道是不是真的如楼主文中说的那么重要呀? UNIFAN 发表于 2012-3-26 22:30 static/image/common/back.gif
哥哥呀,这样的帖子你也好意思申请置酷!这让那些原创酷帖情何以堪!
阿莫说了呀, 转载有价值的帖子也可以评酷帖的。
而且我在本版并未见到有人写关于FIFO的使用心得,所以转载了一篇。 本帖最后由 NJ8888 于 2012-3-27 11:26 编辑
418478935 发表于 2012-3-27 09:22 static/image/common/back.gif
阿莫说了呀, 转载有价值的帖子也可以评酷帖的。
而且我在本版并未见到有人写关于FIFO的使用心得,所以转 ...
我的看法是:不了解FIFO的确实值得看,不过本坛用FPGA的人比例不多,其中使用FIFO的更少所以不热门.就像IamPolaris坛友说的没意思,我分析他刚接触FPGA,还没使用FIFO.其实FIFO使用并非很容易,在有的情况下,表现数据会错位.我当时用逻辑分析仪反复试验才搞懂.而通常单芯片的FIFO比如7104之类用起来容易,只是他容量小价格相对贵
页:
[1]