编辑: f19970615123fa 2019-09-27
www.

cypress.com 文档编号:001-95805 版本**

1 AN1042 了解同步 FIFO 相关项目:无 相关组件系列:CY7C42x5 / CY7C42x1 摘要 AN1042 简单介绍了同步 FIFO 的特性和功能.该应用手册还提供了同步 FIFO 的带宽和深度扩展方面的信息. 简介 由于同步 FIFO 的操作速度非常快,因此能够成为高性能系 统的理想选择. 除此之外,同步 FIFO 还提供了多项其他 优势,能够提高系统性能并降低系统的复杂性. 具体包括 各个状态标志:同步标志、半满、可编程近空和近满标志. 这些 FIFO 还具有带宽扩展、深度扩展和重新发送等特性. 异步 FIFO 需要在不存在外部时钟参考的情况下生成读和写 脉冲,所以,与其相比,同步 FIFO 更适用于高速操作,因 为同步 FIFO 通过使用自由运行的时钟对内部操作进行定时. 范围 该应用手册对同步 FIFO 的架构进行了概述,并讨论了它的 主要特性、使用指导和典型应用. 该应用手册只提供了大概内容,并不是赛普拉斯某一特定同 步FIFO 器件的特性信息.有关特定器件的详细信息,请参 考赛普拉斯网站(www.cypress.com)上相关器件的数据 手册. 同步 FIFO 架构 一个同步 FIFO 由寄存器阵列、标志逻辑和扩展逻辑等三个 基本模块组成.图1显示的是一个同步 FIFO 的逻辑框图. 寄存器阵列由各双端口寄存器单元组成.这些单元支持同时 对写端口和读端口进行访问.该特性提供了 FIFO 内部同步 化的能力.两端口之间的访问不存在任何时序或相位限制. 因此在一个端口上以某一速度进行写入操作时,剩下的端口 可以按另一速度进行读取,两者相互独立.这样有益于选择 最佳速度进行读取和写入寄存器阵列中的数据.赛普拉斯提 供了同步 FIFO CY7C42x5(x9 位宽)和CY7C42x5(x18 位宽).它们分别提供了

66 MHz 和100 MHz 的高速度操 作. 读地址指针和写地址指针控制着数据进入和退出寄存器阵列. 每次操作完成后,相关指针都会增加,这样能够对阵列中下 一个地址进行访问.有关详细信息,请参考同步 FIFO 中的 引导. 标志逻辑会对两个地址指针中的值进行比较.如果两个地址 指针中的值相差为零,那么 FIFO 为空,并且空标志被激活. 如果该差别等于器件深度,那么 FIFO 已满,并且满标志被 激活.其他标志(如半满、可编程近空和可编程近满标志) 将以相似的方式被激活.可编程标志是通过对偏移寄存器中 编程的值与 FIFO 的字的数量进行比较后生成的. 最后,扩展逻辑用于创建更深逻辑的 FIFO,可通过级联各 个器件实现(深度扩展).在正常的 无深度级联 模式下, 每个地址指针在达到最大值之后会返回到零.而在深度扩展 模式下,当地址指针达到最大值后,会有一个脉冲被驱动到 一个扩展引脚,进而传输一个令牌给另一个 FIFO.该令牌 被传递后,地址指针不再继续增加,直到令牌返回为止.实 际上,执行写入或读取操作的责任已经被传给了另一个器件. 在深度扩展配置下,始终只有一个 FIFO 负责执行读取操作, 并且只剩下一个负责执行写入操作.令牌返回时,地址指针 复位为零,操作恢复. 了解同步 FIFO www.cypress.com 文档编号:001-95805 版本**

2 图1. 逻辑框图 ― 同步 FIFO 架构(CY7C42x5) 复位 加电后,FIFO 必须被复位.复位器件会将读和写地址指针 设置为零、清空输出数据寄存器并将各个状态标志设置为空 器件的状态.通过将RS引脚设置为低电平可复位器件.同步FIFO 需要在RS上生成一个上升沿.这样便允许各器件 (如处理器监控芯片)直接驱动RS.这些器件在 VCC 下降 后会将复位激活,并在最短的时间内将其保持为低电平,以 便保证 VCC 和所有时钟进入稳定状态. 在RS被激活的过程中,不能对器件进行读或写操作.可通 过取消激活读取和写入使能(REN,WEN),或者通过将 RCLK 和WCLK 设置为低状态实现禁止读写操作.在RS的 取消激活(上升)沿之后,需要保持写入和读取操作为禁用 状态,直到复位恢复时间 tRSR 结束为止. 注意:复位是一个异步操作,在不存在 WCLK 和RCLK 的 切换情况下仍能完成. 状态标志 状态标志,如空标志、可编程近空标志、半满标志、可编程 近满标志和满标志(EF、PAE、HF、PAF、FF)均用于确定 FIFO 状态.这些标志是通过对读和写地址指针中的值进行 比较而生成的.外部控制逻辑需要使用这些标志来确定是否 可以在 FIFO 上进行读或写操作.FIFO 的标志逻辑禁止读 取空 FIFO,并禁止对满 FIFO 进行写入操作.当对空 FIFO 进行读取操作时,输出始终显示最后被读取的有效数据.对满FIFO 进行写入操作是无效的. 空标志(EF)和满标志(FF)是同步标志,即它们与各自 的相对应时钟同步.空标志(EF)与读取时钟(RCLK)同步,满标志(FF)与写入时钟(WCLK)同步.将标志与相 对应的时钟进行同步便不再需要进行外部同步.在大多数情 况下,写入逻辑要保证 FIFO 在被写入前未满.同样,读取 控制逻辑会在读取 FIFO 之前进行检查空标志(EF). CY7C42x1 FIFO 的可编程近空( PAE)和可编程近满 (PAF)标志是同步的.PAE标志与 RCLK 同步,PAF标志 与WCLK 同步.其他 FIFO,如CY7C42x5,通过使用 了解同步 FIFO www.cypress.com 文档编号:001-95805 版本**

3 SMODE控制信号允许可编程标志的同步和异步操作.有关 编程PAE和PAF标志以及标志操作的详细信息,请参考赛普 拉斯网站(www.cypress.com)上的器件数据手册. 半满标志(HF)是异步标志,因为该标志是否被读取或写 入控制逻辑使用是不确定的. 作为异步 FIFO 使用 当数据即将进入或从器件退出时,用户通常不希望将一个自 由运行的时钟连接到同步 FIFO 的RCLK 和WCLK 引脚上, 他们更愿意为这些时钟提供脉冲.对于同步 FIFO,该操作 模式完全可行,但需要考虑一些问题.想要将同步 FIFO 作 为异步 FIFO 使用,只要给同步 FIFO 的RCLK 和WCLK 引 脚提供脉冲.WCLK 的每一个上升沿会执行数据写入操作, 而RCLK 的每一个上升沿会执行数据读取操作.在操作过 程所有阶段内(复位和重新传输除外),读取和写入使能 (REN,WEN)可被设置为低电平.需要保证在复位和重 新传输的过程中,不会进行任何读或写操作.可通过将REN 和WEN驱动为高电平,或者将 RCLK 或WCLK 设置为低电 平实现.将RCLK 和WCLK 设置为高电平会生成内部时钟 脉冲(如果其相对应的使能已被激活),这是不允许的. 标志更新周期是有关该操作模式的另一个问题.因为器件不 使用任何自由运行时钟,所以同步标志不会总是被自动更新. 例如,对于一个空 FIFO,将对其进行一些写入操作.此时, FIFO 不再是空的,但是因为不存在 标志更新周期 ,EF 仍然被激活.从用户角度来看,在这种情况下,需要两个读 取周期才能对 FIFO 中的第一字进行读取:第一个周期是标 志更新周期,第二个将执行第一次读取操作. 标志得到更新后,在每一个 RCLK 的上升沿,数据会被读 取.若想在每次EF被激活都能添加这个附加的读取周期, 需要特别小心.同样,FF在满边界时也需要一个标志更新 周期.每次 FIFO 已满,并且完成了一次读取操作,便需要 两个 WCLK 上升沿用于写入下一个数据. 标志更新周期 因为空标志和满标志是同步的,因此它们需要相应时钟的一 个上升沿,用于更新为当前的值. 在满边界或空边界中存在一个被称为 标志更新周期 的死周 期.这个死周期能够保证满标志和空标志能够在至少一个完 整的时钟周期内被激活,进而可被相对应控制逻辑观察到. 例如,我们有一个空 FIFO.如图

2 所示,在WCLK 的时钟 周期

1 内将对器件进行一次写入操作.此时,该器件将不 再是空的.因为空标志(EF)与读取时钟同步,所以该标 志不会被取消激活状态,直到一个 RCLK 上升沿到来为止. 读取操作被禁止,直到EF被取消激活状态为止.第一个 RCLK 上升沿(第一次写入完成后 ― RCLK 的时钟周期 2) 会更新标志,并且第二个 RCLK 上升沿(时钟周期 3)会读 取第一个字.第一个 RCLK 周期作为一个死周期或标志更 新周期.该附加周期能够保证空标志(EF)的激活状态或 取消激活状态始终被延长至少一个周期. 在RCLK 和WCLK 的异步条件下(常见于 FIFO 应用), 标志激活可以无限地小,并且不带这个死周期. 对于使用了自由运行时钟的应用,该 死 周期或 标志更 新 周期都是透明的,并且无需关注它们.读取控制逻辑会 忽略读取使能(REN),直到空标志(EF)被取消激活为止. 因此,虽然已经为 RCLK 周期

2 和4的读取操作设定了控 制信号,但数据仍然不会出现在数据线上.在EF被取消激 活后,RCLK 的第一个上升沿会读取 FIFO 的第一字(如果 REN被激活 ― RCLK 时钟周期 6). 对于不使用自由运行时钟的应用,RCLK 需要从低电平切换 为高电平两次才可以读取第一个字 ― 第一次用于 标志更 新周期 ,第二次用于读取第一个字. 注意:标志更新周期发生在空边界和满边界.对于PAE和PAF标志,不存在 标志更新周期 . 了解同步 FIFO www.cypress.com 文档编号:001-95805 版本**

4 图2. 标志更新周期 [1]

1 当tSKEW2 >

最短规格, tFRL (最长) = tCLK + tSKEW2.当tSKEW2 <

最短规格, tFRL (最长) = 或(2 * tCLK + tSKEW2) 或(tCLK + tSKEW2).延迟时序仅应用于空边界 ( EF = LOW). 了解同步 FIFO www.cypress.com 文档编号:001-95805 版本**

5 重新传输 重新传输特性用于重新对已经读取的 FIFO 数据模块执行读 取操作.该特性通常用于串行通信接口.如果在数据传输过 程中发生了错误,能够重新从 FIFO 传输数据包,然后再通 过串行媒介重新发送. 通过给 FIFO 重新传输(RT)引脚提供脉冲,可以执行该特 性.通过将RT引脚驱动为低电平,可将 FIFO 的读地址指针 设置到物理位置(零).图3显示的是重新传输操作.请 注意,为了准确执行重新传输,必须在将需要重新传输的数 据写入 FIFO 前,复位 FIFO. 例如:如果您想将一个

1 K 深的数据包发送给其他电路板. 该数据能被写入到一个 FIFO 内,然后被传送给一个串行收 发器,该器件通过一个串行媒介会继续发送数据.首先, FIFO 被复位,FIFO 的读和写地址指针被设置到位置零.

1 K 的数据包被写入 FIFO 内.EF被取消激活,并且串行收 发器器件开始读取 FIFO. 当数据被读取时,读地址指针将依次增加,直到达到位置

1024 为止,这时候 FIFO 将变为空.请注意,虽然 FIFO 中 的数据已被读取,但仍未擦出 FIFO 中的这些数据.如果在 读取过程中出现了错误,则RT引脚可被提供脉冲,使读地 址指针返回到位置零,并且数据包被重新发送到目的位置. 该过程可以重复无限次. 请注意,RT引脚只会将读地址指针复位到位置零.FIFO 不 知道特定的数据包被存储到器件中的什么地方.需要重新传 输的数据包被写入之前,您必须复位器件. 在正常的 FIFO 操作过程中,或在RT引脚已被取消激活后, FIFO 可随时执行正常的读/写操作.在RT被激活的过程中, 不能进行任何读或写操作. 注意:重新传输是一个异步操作,即便不存在 WCLK 和RCLK 的切换情况,它仍能执行. 图3. 重新传输中的 FIFO 操作 了解同步 FIFO www.cypress.com 文档编号:001-95805 版本**

6 扩展配置 带宽扩展 带宽扩展用于创建数据带宽更大的 FIFO.两个 x18 FIFO 可用于扩大带宽,以便创建一个 x36 FIFO 等.与正常模式 相比,带宽扩展模式下进行的读取、写入和重新传输操作均 是相同的.实际上,FIFO 对其使用的模式是随机的. 为................

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题