工程中FIFO空,满,将空,将满标志使用

来源:互联网 发布:淘宝拍卖二手车靠谱吗 编辑:程序博客网 时间:2024/06/05 19:36

最近跳槽到了一家公司做硬件防火墙,第一次真真正正的用Verilog做工程,学到了很多东西,尤其对FIFO的empty,full,aempty,afull感触很深,使用好了,可以提高系统性能,使用不当,会造成性能下降,甚至会出现FIFO写、读反转,造成空、满标志同时拉起,系统挂死。

防火墙处理的对象是报文,下面的例子就直接取的项目中的实际情况。

一般设置afull为能再容纳一个完整的报文且FIFO不会满,如32*144的字节FIFO,一个报文为6PAT,afull最好设置为24或者更低,这样当看到afull拉起时,并反压上级模块时,可以在写进去一个完整的报文,且不会反转,

empty标志最好在状态机或流水线的第一级就判断,如不满足,需等待fifo非空,不要等状态机跳转到了某一状态后再判断,此时如果为空,会造成逻辑错误。如在BM地址管理中,如果该报文需要申请BM地址,就必须判断bm地址非空,否则就必须在idle状态等待,如果跳转到了这一状态,发现为空,选择不读,此时rdata为上次读取数据,会造成数据被覆盖,出现错误。

此外,full,aempty在项目很少用,full是尽力避免的情况,aempty有可能会造成fifo中数据读不完。

0 0
原创粉丝点击