一种基于格雷码的异步fifo设计与实现

一种基于格雷码的异步fifo设计与实现

ID:6549365

大小:161.50 KB

页数:12页

时间:2018-01-17

一种基于格雷码的异步fifo设计与实现_第1页
一种基于格雷码的异步fifo设计与实现_第2页
一种基于格雷码的异步fifo设计与实现_第3页
一种基于格雷码的异步fifo设计与实现_第4页
一种基于格雷码的异步fifo设计与实现_第5页
资源描述:

《一种基于格雷码的异步fifo设计与实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、飞天雄鹰没有希望的明天,就是在浪费今天。主页博客相册

2、个人档案

3、好友

4、i贴吧查看文章【转】异步FIFO实现(汇总二)2012-03-0812:27转载自zjh20tz最终编辑zjh20tz.....................................一种基于格雷码的异步FIFO设计与实现时间:2008-02-18来源:作者:吴昆黄坤点击:1558字体大小:【大中小】1引言FIFO(FirstINFirstOut)先进先出电路是一种实现数据先进先出的存储器件,普遍用作数据缓冲器。FIFO的基本单元是寄

5、存器,作为存储器件,FIFO的存储能力是由其内部定义的存储寄存器的数量决定。FIFO通常是双端口的存储器,其中一个端口用于写入数据,而另一个端口用于读出数据。可以同时对存储器字存储单元进行写入和读出操作。它的数据吞吐率是普通RAM的两倍。FIFO型的存储器不需要由地址来存取数据。需要由另外的信号线(或标志)来指明存储器的内容状态。在现代数字系统设计中,FPGA(现场可编程门阵列)器件凭借其灵活、方便、资源丰富的优势在很多领域得到了广泛应用。随着其片内存储资源的增加,把FIFO器件集成到其中是一种方便地代替专用芯

6、片的实现方法。根据异步逻辑的设计方法,引入乒乓操作的设计技巧,给出了一种新颖的异步FIFO设计方案,解决FPGA多时钟系统中不同时钟域传输数据的问题。2异步FIFO的设计与实现2.1通用异步FIFO的基本结构在现代的集成电路芯片中,随着设计规模的不断扩大,一个系统中往往含有数个时钟。多时钟域带来的一个问题就是,如何设计异步时钟之间的接口电路。异步FIFO是解决这个问题一种简便、快捷的解决方案。使用异步FIFO可以在两个不同时钟系统之间快速而方便地传输实时数据。在网络接口、图像处理等方面,异步FIFO得到了广泛的

7、应用。异步FIFO常用于存储、缓冲在两个异步时钟之间的数据传输。在异步电路中,由于时钟之间周期和相位完全独立,因而数据的丢失概率不为零。如何设计一个高可靠性、高速的异步FIFO电路便成为一个难点。下面将介绍解决这一问题的一种方法,其结构框图如图1所示。本系统FPGA内部FIFO的存储介质是一块双端口的RAM,具有两个独立的读写时钟,整个系统也分为两个完全独立的时钟域——读时钟域和写时间域。FIFO的控制逻辑执行所有的读写指针管理,产生各种状态标志。在写时钟域部分,由写地址产生逻辑产生写控制信号和写地址;读时钟域

8、部分由读地址产生逻辑产生读控制信号和读地址。在空/满标志产生部分,由读写地址相互比较产生空/满标志。本设计的外部引脚如表1所示。这种FIFO设计当中有两个难点:一是如何正确地设计空、满信号的控制电路;二是如何同步异步信号,使触发器不产生亚稳态。下一小节将具体阐述解决方法。2.2FIFO的读写控制空/满标志的产生是FIFO的核心部分,如何正确设计这部分逻辑,直接影响到FIFO的性能。空/满标志产生的原则是:写满不溢出,读空不多读。即无论在什么时候,都不应出现读写地址同时对一个存储器地址操作的情况。在读写地址相等或

9、相差一个或多个地址的时候,满标志应该有效,表示此时FIFO已满。在满信号有效时若继续向FIFO写数据,应根据设计的要求对数据作保持或抛弃重发处理,空标志的产生也是如此。最直接的做法是,采用读写地址相比较来产生空满标志。当读写地址的差值等于一个预设值的时候,空/满信号被置位。这种实现方法逻辑简单,但它是减法器形成的一个比较大的组合逻辑,因而限制了FIFO的速度。所以,一般只采用相等不相等的比较逻辑,避免使用减法器。即:空标志<=(

10、写地址-读地址

11、<=预定值)AND(写地址超前读地址)满标志<=(

12、写地址-读地址

13、

14、<=预定值)AND(读地址超前写地址)另一种方法是,比较器只对读写地址比较是否相等。在读写地址相等的时候有两种情况:满或者空。所以,附加了一个并行的区间判断逻辑来指示是空还是满。这个区间判断逻辑将整个地址空间分为几个部分,以指示读写地址的相对位置。这种做法提高了整个电路的速度,但是也有其缺点。主要是直接采用读写地址等于不等于的比较逻辑来进行空/满标志的判断,可以带来误判。将读写指针位宽分别定义为:rp[aw:0]和wp[aw:0],其中rp[aw]和wp[aw]为最高位进位位,rp[aw-1:0]和wp[aw

15、-1:0]分别表示读写指针寻址的地址。当读写指针每次从初始地址处读写到最后一位地址位时,均需向最高位rp[aw]和wp[aw]进位。因为先有写才能有读,所以当wp[aw-1:0]=rp[aw-1:0]时,只要判断wp[aw]与rp[aw]是否相等就可以知道是写指针追赶上读指针写满了(wp[aw]!=rp[aw]),还是读指针追赶上写指针读空了(wp[aw]=rp[aw])。rp_pl1

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。