一种基于格雷码的异FIFO设计与实现.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一种基于格雷码的异FIFO设计与实现

飞天雄鹰 没有希望的明天,就是在浪费今天。 主页博客相册|个人档案|好友|i贴吧 查看文章 【转】异步FIFO实现(汇总二) 2012-03-08 12:27 转载自 zjh20tz 最终编辑 zjh20tz ..................................... 一种基于格雷码的异步FIFO设计与实现 时间:2008-02-18 来源: 作者:吴昆 黄坤 点击: 1558 字体大小:【大 中 小】 1 引言 FIFO(First IN First Out)先进先出电路是一种实现数据先进先出的存储器件,普遍用作数据缓冲器。FIFO的基本单元是寄存器,作为存储器件,FIFO的存储能力是由其内部定义的存储寄存器的数量决定。 FIFO通常是双端口的存储器,其中一个端口用于写入数据,而另一个端口用于读出数据。可以同时对存储器字存储单元进行写入和读出操作。它的数据吞吐率是普通RAM的两倍。FIFO型的存储器不需要由地址来存取数据。需要由另外的信号线(或标志)来指明存储器的内容状态。 在现代数字系统设计中,FPGA(现场可编程门阵列)器件凭借其灵活、方便、资源丰富的优势在很多领域得到了广泛应用。随着其片内存储资源的增加,把FIFO器件集成到其中是一种方便地代替专用芯片的实现方法。根据异步逻辑的设计方法,引入乒乓操作的设计技巧,给出了一种新颖的异步FIFO设计方案,解决FPGA多时钟系统中不同时钟域传输数据的问题。 2 异步FIFO的设计与实现 2.1 通用异步FIFO的基本结构 在现代的集成电路芯片中,随着设计规模的不断扩大,一个系统中往往含有数个时钟。多时钟域带来的一个问题就是,如何设计异步时钟之间的接口电路。异步FIFO是解决这个问题一种简便、快捷的解决方案。使用异步FIFO可以在两个不同时钟系统之间快速而方便地传输实时数据。在网络接口、图像处理等方面,异步FIFO得到了广泛的应用。 异步FIFO常用于存储、缓冲在两个异步时钟之间的数据传输。在异步电路中,由于时钟之间周期和相位完全独立,因而数据的丢失概率不为零。如何设计一个高可靠性、高速的异步FIFO电路便成为一个难点。下面将介绍解决这一问题的一种方法,其结构框图如图1所示。 本系统FPGA内部FIFO的存储介质是一块双端口的RAM,具有两个独立的读写时钟,整个系统也分为两个完全独立的时钟域——读时钟域和写时间域。FIFO的控制逻辑执行所有的读写指针管理,产生各种状态标志。在写时钟域部分,由写地址产生逻辑产生写控制信号和写地址;读时钟域部分由读地址产生逻辑产生读控制信号和读地址。在空/满标志产生部分,由读写地址相互比较产生空/满标志。本设计的外部引脚如表1所示。 这种FIFO设计当中有两个难点:一是如何正确地设计空、满信号的控制电路;二是如何同步异步信号,使触发器不产生亚稳态。下一小节将具体阐述解决方法。 2.2 FIFO的读写控制 空/满标志的产生是FIFO的核心部分,如何正确设计这部分逻辑,直接影响到FIFO的性能。空/满标志产生的原则是:写满不溢出,读空不多读。即无论在什么时候,都不应出现读写地址同时对一个存储器地址操作的情况。在读写地址相等或相差一个或多个地址的时候,满标志应该有效,表示此时FIFO已满。在满信号有效时若继续向FIFO写数据,应根据设计的要求对数据作保持或抛弃重发处理,空标志的产生也是如此。 最直接的做法是,采用读写地址相比较来产生空满标志。当读写地址的差值等于一个预设值的时候,空/满信号被置位。这种实现方法逻辑简单,但它是减法器形成的一个比较大的组合逻辑,因而限制了FIFO的速度。所以,一般只采用相等不相等的比较逻辑,避免使用减法器。即: 空标志=(|写地址-读地址|=预定值)AND(写地址超前读地址) 满标志=(|写地址-读地址|=预定值)AND(读地址超前写地址) 另一种方法是,比较器只对读写地址比较是否相等。在读写地址相等的时候有两种情况:满或者空。所以,附加了一个并行的区间判断逻辑来指示是空还是满。这个区间判断逻辑将整个地址空间分为几个部分,以指示读写地址的相对位置。这种做法提高了整个电路的速度,但是也有其缺点。主要是直接采用读写地址等于不等于的比较逻辑来进行空/满标志的判断,可以带来误判。 将读写指针位宽分别定义为:rp[aw:0]和wp[aw:0],其中rp[aw]和wp[aw]为最高位进位位,rp[aw-1:0]和wp[aw-1:0]分别表示读写指针寻址的地址。当读写指针每次从初始地址处读写到最后一位地址位时,均需向最高位rp[aw]和wp[aw]进位。因为先有写才能有读,所以当wp[aw-1:0]=rp[aw-1:0]时,只要判断wp[aw]与rp[aw]是否相等就可以知道是写指针追赶上读指针写满了(wp[

文档评论(0)

lxiencan + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档