Intel® Stratix® 10嵌入式存储器用户指南

ID 683423
日期 11/19/2019
Public
文档目录

5.1.2.1. 仿真结果

此设计实例的仿真结果显示了FIFO与FIFO2 Intel® FPGA IP内核之间的行为比较。
注: 对于FIFO和FIFO2 Intel® FPGA IP内核,此设计实例中使用的信号名称是参照FIFO输入和输出端口定义的。

第1部分(0 - 100 ns)

仿真的这一部分显示了FIFO2在无效复位条件下的read-after-write操作。 FIFO2需要32个周期的复位周期。因此,一些信号不能在两个复位时钟周期返回到已知状态。这导致FIFO2无法按预期运行。相反,FIFO显示一个正确的write-then-read操作,因为FIFO只需要一个时钟周期的复位。
图 50. 第1部分—FIFO的Read-after-write操作

第2部分(100 - 480 ns)

仿真的这一部分显示了一个有效复位方案的FIFO2操作,然后是一个write-then-read操作。32个周期的复位过后,所有信号都返回到已知状态。在任何操作之前也需要一个8个周期的等待。
图 51. 第2部分—FIFO2的有效复位方案
图 52. 写操作
图 52的注释:
  • usedw signal:写请求信号(例如,i_wrreq)置位后,FIFO的usedw信号(例如,o_usedw1)在数据存储进FIFO的同时开始计数。对于FIFO2,在写(例如,o_w_usedw2)和读(o_r_usedw2)一侧都有usedw信号。写usedw在3个周期的延迟后开始计数,并使用另外8个周期来更新读usedw信号。
  • Full and empty signals:FIFO满信号(例如,o_full1)在FIFO的存储器变满后置高。FIFO2满信号(例如,o_full2)在与o_w_usedw2信号的同一周期上置高,表明存储器已满。需要注意, 在full信号置位前的三个周期,ready信号已经置低,这是一个预期的FIFO2的流水线行为。FIFO空信号(例如,o_empty1,只有一个时钟周期的延迟)在第一个数据写入到存储器后置低。相比之下,在o_r_usedw2信号升至1之后,FIFO2使用三个周期的延迟来表明其空信号(例如,o_empty2)已变为非空。
图 53. 读操作
图 53的注释:
  • 在读操作上,FIFO o_usedw1信号反映在与读请求信号同一正时钟边沿上。对于FIFO2,它在o_r_usedw2信号上反映之前有两个周期的延迟。它也使用另外9个周期从o_r_usedw2传播到o_w_usedw2
图 54. FIFO满条件
图 54的注释:
  • Ready signal:一个有效的复位方案之后,FIFO2 ready信号(例如,o_ready2)置高,表明已准备好写操作。
    注: FIFO没有此信号。
  • Valid signal:FIFO2 valid信号(例如,o_valid2)表明读出的数据是有效的。在一个有效读操作的情况中,o_valid2信号将在两个周期的延迟后置高,读请求(e.g., i_rdreq)信号的置位。
    注: FIFO没有此信号。

第3部分(480 - 700 ns)

仿真的这一部分显示了一个有效的复位条件,然后是一个read-during-write操作。复位后,写请求信号(例如,i_wrreq)置高。几个周期过后,i_rdreq信号也置高。对于FIFO,在数据读出的同时,所使用的字的数量保持不变,这是一个预期行为。请注意,在此情况下,FIFO2没有读出的数据,因为o_empty2信号没有置低。因此,对于FIFO2这不是一个有效的读操作。

第4部分(700ns及更高)

仿真的这一部分显示了在不同情况下的FIFO和FIFO2的行为。当FIFO2 o_r_usedw2信号下数到2时,o_empty2信号置高并进行内部检查。两个周期后,在状态验证后o_empty2信号回到非空状态。此机制是根据FIFO2的多流水线性质专门为FIFO2设计的。