异步FIFO的设计.docx





《异步FIFO的设计.docx》由会员分享,可在线阅读,更多相关《异步FIFO的设计.docx(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、异步FIFO的设计(电子器件杂志)2014年第三期1FIFO状态判定设计11写、读指针的产生经过在FIFO的工作经过中,数据的写入和读出是按顺序进行的,一旦给其上电,写读指针都指向第1个存储单元,每当收到写读指令时,写读指针都加1,当写读指针指向存储器最后一个单元时,写读指针又回到初始位置,构成环形地址5。由于在写入前一个数据的同时要对下一个数据进行预充电,所以,在写入第1个数据时是不需要预充电的,这样写计数器输出的写地址指针要从0开场计数,在写时钟处于低电平期间进行数据写入,在写时钟上升沿时发生跳变,而读地址指针则是从1开场计数的,在读时钟的上升沿发生跳变。本设计的FIFO容量为1MB(Mb
2、yte),因而地址指针有20bit。FIFO的工作原理如下:刚开场时,FIFO是处于复位(ESET)状态的,读写地址都相等且为0,FIFO处于空状态,读信号被阻塞,只能进行写操作,每进行一次,写指针就递增1。在对FIFO进行最后一次写操作时,写指针的值由19回到0,此时读写地址指针又相等,FIFO处于满状态。此后写信号被阻塞,只能进行读操作,同理,每进行一次,读指针就递增1,直到读指针再次回到0,此时FIFO再次回到空状态。综上所述,FIFO的空满状态都是在读、写地址指针相等时才会出现,于是判定空满状态的问题就归结于怎样在读、写地址指针相等时,判定出FIFO是处于空状态还是满状态。传统的方法是
3、直接将读、写指针通过一个减法器进行运算,将运算结果与一个预设值进行比拟:若(读指针地址写地址指针=预设值)时,为满状态,相反为空状态。此法存在两个弊端。首先,采用减法器这样复杂的运算逻辑会降低FIFO的运行效率。其次,由于运算结果是和一个预设值进行比拟,会产生一个相对误差,其准确性也会降低。本设计采用为写读地址指针分别附加一位的方法来判定FIFO的状态,当写读指针遍历一次存储器地址时,则增加的这一位改其“0,“1状态,通过判定写、读指针该改变位能否相等,进而正确判定空满状态。即写逻辑产生WP,WE,WF三组指针,读逻辑产生P,E,F三组指针,如图2所示6。这里先给出结论:WF要比WP提早一个写
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 异步 FIFO 设计

限制150内