FIFO原理讲解.pdf

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

异 步 FIFO 结 构 (第一部分) 作者: Vijay A.Nebhrajani 翻译: Adam Luo 2006 年 7 月 设计一个FIFO 是ASIC 设计者遇到的最普遍的问题之一。本文着重介绍怎 样设计FIFO——这是一个看似简单却很复杂的任务。 一开始,要注意,FIFO 通常用于时钟域的过渡,是双时钟设计。换句话说, 设计工程要处理(work off )两个时钟,因此在大多数情况下,FIFO 工作于独立 的两个时钟之间。然而,我们不从这样的结构开始介绍—我们将从工作在单时钟 的一个FIFO 特例开始。虽然工作在同一时钟的FIFO 在实际应用中很少用到, 但它为更多的复杂设计搭建一个平台,这是非常有用的。然后再从特例推广到更 为普通的FIFO ,该系列文章包括以下内容: 1.单时钟结构 2 .双时钟结构——双钟结构1 3 .双时钟结构——双钟结构2 4 .双时钟结构——双钟结构3 5 .脉冲模式FIFO 单时钟FIFO 特例 FIFO 有很多种结构,包括波浪型(ripple )FIFO ,移位寄存器型以及其他一 些我们并不关心的结构类型。我们将集中讨论包含RAM 存储器的结构类型。其 结构如图1 所示。 通过分析,我们看到图中有一个具有独立的读端口和独立的写端口的RAM 存储器。这样选择是为了分析方便。如果是一个单端口的存储器,还应包含一个 仲裁器保证同一时刻只能进行一项操作(读或写 ),我们选择双口RAM (无需 真正的双口RAM ,因为我们只是希望有一个简单的相互独立的读写端口)是因 为这些实例非常接近实际情况。 读、写端口拥有又两个计数器产生的宽度为log (array_size)的互相独立的读、 2 写地址。数据宽度是一个非常重要的参数将在在稍后的结构选择时予以介绍,而 现在我们不必过分的关心它。为了一致,我们称这些计数器为“读指针”(read pointer )和“写指针”(write pointer )。写指针指向下一个将要写入的位置,读指 针指向下一个将要读取的位置。每次写操作使写指针加1,读操作使读指针加1。 我们看到最下面的模块为“状态”(stauts) 模块。这个模块的任务实给FIFO 提供“空”(empty )和“满”(full )信号。这些信号告诉外部电路FIFO 已经达 到了临界条件:如果出现“满”信号,那么FIFO 为写操作的临界状态,如果出 现“空”信号,则FIFO 为读操作的临界状态。写操作的临界状态(“full is active ”) 表示FIFO 已经没有空间来存储更多的数据,读操作的临界表示FIFO 没有更多 的数据可以读出。status 模块还可告诉 FIFO 中“满”或“空”位置的数值。这 是由指针的算术运算来完成了。 实际的“满”或“空”位置计算并不是为FIFO 自身提供的。它是作为一个 报告机构给外部电路用的。但是,“满”和“空”信号在 FIFO 中却扮演着非常 重要的角色,它为了能实现读与写操作各自的独立运行而阻塞性的管理数据的存 取。这种阻塞性管理的重要性不是将数据复写(或重读),而是指针位置可以控 制整个 FIFO ,并且使读、写操作改变着指针数值。如果我们不阻止指针在临界 状态下改变状态,FIFO 还能都一边“吃”着数据一边“产生”数据,这简直是 不可能的。 进一步分析:DPRAM 若能够寄存读出的信号,这意味着存储器的输出数据 已被寄存。如果这样的话

文档评论(0)

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

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

1亿VIP精品文档

相关文档