先进先出存储器FIFO.pdf

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

1.什么是 FIFO? FIFO 是英文 First In First Out 的缩写,是一种先进先出的数据缓存器,他与普通存 储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据, 顺序的读出数据,其数据地址由内部读写指针自动加 1 完成,不能像普通存储器那样可以由 地址线决定读取或写入某个指定的地址。 2.什么情况下用 FIFO? FIFO 一般用于不同时钟域之间的数据传输,比如FIFO 的一端时AD 数据采集,另一端 时计算机的 PCI 总线,假设其 AD 采集的速率为 16 位 100K SPS,那么每秒的数据量为 100K×16bit=1.6Mbps,而 PCI 总线的速度为 33MHz,总线宽度 32bit,其最大传输速率为 1056Mbps,在两个不同的时钟域间就可以采用 FIFO 来作为数据缓冲。另外对于不同宽度的数 据接口也可以用 FIFO,例如单片机位 8 位数据输出,而 DSP 可能是 16 位数据输入,在单片 机与 DSP 连接时就可以使用 FIFO 来达到数据匹配的目的。 3.FIFO 的一些重要参数 FIFO 的宽度:也就是英文资料里常看到的 THE WIDTH,它只的是 FIFO 一次读写操作的 数据位,就像 MCU 有 8 位和 16位,ARM 32 位等等,FIFO 的宽度在单片成品 IC 中是固定的, 也有可选择的,如果用 FPGA 自己实现一个FIFO,其数据位,也就是宽度是可以自己定义的。 FIFO 的深度:THE DEEPTH,它指的是 FIFO 可以存储多少个 N 位的数据 (如果宽度为 N)。 如一个 8 位的 FIFO,若深度为 8,它可以存储 8 个 8 位的数据,深度为 12 ,就可以存储 12 个 8 位的数据,FIFO 的深度可大可小,个人认为 FIFO 深度的计算并无一个固定的公式。在 FIFO 实际工作中,其数据的满/空标志可以控制数据的继续写入或读出。在一个具体的应用 中也不可能由一些参数算数精确的所需FIFO 深度为多少,这在写速度大于读速度的理想状 态下是可行的,但在实际中用到的 FIFO 深度往往要大于计算值。一般来说根据电路的具体 情况,在兼顾系统性能和 FIFO 成本的情况下估算一个大概的宽度和深度就可以了。而对于 写速度慢于读速度的应用,FIFO 的深度要根据读出的数据结构和读出数据的由那些具体的 要求来确定。 满标志:FIFO 已满或将要满时由FIFO 的状态电路送出的一个信号,以阻止FIFO 的写 操作继续向 FIFO 中写数据而造成溢出 (overflow)。 空标志:FIFO 已空或将要空时由FIFO 的状态电路送出的一个信号,以阻止FIFO 的读 操作继续从 FIFO 中读出数据而造成无效数据的读出 (underflow)。 读时钟:读操作所遵循的时钟,在每个时钟沿来临时读数据。 写时钟:写操作所遵循的时钟,在每个时钟沿来临时写数据。 读指针:指向下一个读出地址。读完后自动加 1。 写指针:指向下一个要写入的地址的,写完自动加 1。 读写指针其实就是读写的地址,只不过这个地址不能任意选择,而是连续的。 4.FIFO 的分类 根均 FIFO 工作的时钟域,可以将 FIFO 分为同步 FIFO 和异步 FIFO。同步FIFO 是指读 时钟和写时钟为同一个时钟。在时钟沿来临时同时发生读写操作。异步 FIFO 是指读写时钟 不一致,读写时钟是互相独立的。 5.FIFO 设计的难点 FIFO 设计的难点在于怎样判断 FIFO 的空/满状态。为了保证数据正确的写入或读出, 而不发生益处或读空的状态出现,必须保证 FIFO 在满的情况下,不能进行写操作。在空的 状态下不能进行读操作。怎样判断FIFO 的满/空就成了FIFO 设计的核心问题。由于同步FIFO 几乎很少用到,这里只描述异步 FIFO 的空/满标志产生问题。 在用到触发器的设计中,不可避免的会遇到亚稳态的问题 (关于亚稳态这里不作介绍,可查 看相关资料)。在涉及到触发器的电路中,亚稳态无法彻底消除,只能想办法将其发生的概 率将到最低。其中的一个方法就是使用格雷码。格雷码在相邻的两个码元之间只由一位变换 (二进制码在很多情况下是很多码元在同时变化)。这就会避免计数器与时钟同步的时候发生 亚稳态现象。但是格雷码有个缺点就是只能定义 2^n 的深度,而不能像二进制码那样随意的 定义 FIFO

您可能关注的文档

文档评论(0)

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

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

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档