英特尔Agilex® 7嵌入式存储器用户指南

ID 683241
日期 4/10/2023
Public
文档目录

4.3.3.4. FIFO信号

本节提供了FIFO Intel® FPGA IP核的SCFIFO和DCFIFO块的结构图,有助于将其输入和输出端口可视化。本节还详细介绍了每个端口,以帮助您了解其用法、功能或任何限制。为了更好地说明,某些描述可能会建议您参阅本用户指南中的指定部分。
图 33. SCFIFO和DCFIFO输入和输出信号

对于SCFIFO模块,读和写信号同步到同一时钟;对于DCFIFO模块,读和写信号分别同步到rdclkwrclk时钟。前缀wrrd分别代表由wrclkrdclk时钟同步的信号。

表 39.  输入和输出端口描述下表列出了FIFO Intel® FPGA IP核的信号。术语“系列(series)”是指特定器件的所有器件系列。
端口 类型 是否需要 描述
clock 11 输入 正边沿触发(positive-edge-triggered)时钟。
wrclk 12 输入 正边沿触发(positive-edge-triggered)时钟。

用于同步以下端口:

  • data
  • wrreq
  • wrfull
  • wrempty
  • wrusedw
rdclk 12 输入 正边沿触发(positive-edge-triggered)时钟。

用于同步以下端口:

  • q
  • rdreq
  • rdfull
  • rdempty
  • rdusedw
data 13 输入 wrreq信号置位时,保持要写入到FIFO Intel® FPGA IP核中的数据。如果手动例化FIFO Intel® FPGA IP核,则要确保端口宽度等于lpm_width参数。
wrreq 13 输入 置位此信号以请求写操作。

确保满足以下条件:

  • full (对于SCFIFO)或者wrfull (对于DCFIFO)端口为高时,请勿置位wrreq信号。使能上溢保护电路或者将overflow_checking参数设置为ON,以便FIFO Intel® FPGA IP核能够自动禁用wrreq信号(已满时)。
  • wrreq信号必须满足基于full或者wrfull信号的功能时序要求。
  • aclr信号解除置位期间,请勿置位wrreq信号。违反该要求将会在wrreq端口设为高电平时,导致aclr信号的下降沿与写时钟的上升沿之间产生一个竞争条件。对于采用 英特尔Agilex® 7 系列 目标器件系列的两个DCFIFO功能,您可以选择自动添加一个电路将aclr信号同步到wrclk时钟,或者将write_aclr_synch参数设置为ON。使用此选项可确保遵守限制。
rdreq 13 输入 置位此信号以请求读操作。rdreq信号在正常模式和show-ahead模式下的行为有所不同。

要确保满足以下条件:

  • empty (SCFIFO)或者rdempty (DCFIFO)端口为高电平时,请勿置位 rdreq信号。使能下溢保护电路或者将underflow_checking参数设置成ON,以便FIFO Intel® FPGA IP core能够自动禁止rdreq信号(为空时)。
  • rdreq信号必须满足基于empty或者rdempty信号的时序要求。
sclr 11

aclr 13

输入 置位此信号以对所有输出状态端口清零,但是对于q输出的影响可能因不同的FIFO配置而异。

对于必须保持在活动状态的aclr信号,没有最小时钟周期数。

q 13 输出 显示从读取请求操作读取的数据。

对于SCFIFO功能和DCFIFO功能,q端口必须等于data端口的宽度。如果手动例化FIFO功能,那么要确保端口宽度等于lpm_width参数。

对于DCFIFO_MIXED_WIDTHS功能,q端口的宽度可以与数据端口的宽度不同。如果手动例化FIFO功能,那么要确保q端口的宽度等于lpm_width_r参数。 FIFO功能支持和具有窄读端口的宽写端口,反之亦然。但是,宽度比受RAM模块类型的限制,通常为2的幂。

full 11

wrfull 12

rdfull 12

输出 置位时,视为FIFO Intel® FPGA IP核已满。FIFO Intel® FPGA IP核已满时不要执行写请求操作。

一般而言,rdfull信号是wrfull信号的延迟版本。 rdfull信号用作一个组合输出,而不是wrfull信号的一个衍生版本。因此,无论目标器件如何,您都要始终参考wrfull端口来确保是否能够执行一个有效的写请求操作。

empty 11

wrempty 12

rdempty 12

输出 置位时,视为FIFO Intel® FPGA IP核已满。FIFO Intel® FPGA IP核已满时不要执行读请求操作。

一般而言,wrempty信号是rdempty信号的延迟版本。 wrempty信号用作一个组合输出,而不是rdempty信号的一个衍生版本。因此,无论目标器件如何,您都要始终参考rdempty端口来确保是否能够执行一个有效的读请求操作。

almost_full 11 输出 usedw信号大于或等于almost_full_value参数时置位此端口。此端口用作full信号的早期指示。
almost_empty 11 输出 usedw信号小于almost_empty_value参数时置位此端口。此端口用作empty信号的早期指示。 14
usedw 11

wrusedw 12

rdusedw 12

输出 显示存储在FIFO中的字数。

如果手动例化SCFIFO功能或者DCFIFO功能,那么要确保端口宽度等于lpm_widthu参数。对于DCFIFO_MIXED_WIDTH功能,wrusedwrdusedw端口的宽度必须分别等于LPM_WIDTHUlpm_widthu_r参数。

FIFO Intel® FPGA IP核都会显示已满。因此,无论目标器件如何,您都必须始终查看fullwrfull端口用于有效的写请求操作,而emptyrdempty端口用于有效的读请求操作。
注: 存储的数据可能无法读取。请参阅FIFO输出状态标志和延迟来了解"wrreq to empty"和"rdreq to empty"延迟,从而确保在读取FIFO之前数据已准备就绪。
eccstatus 15 输出 2-bit宽的纠错状态端口。指示从存储器中读取的数据是否存在single-bit with correction错误,fatal error with no correction错误或者没出现错误比特。
  • 00: No error
  • 01: Illegal
  • 10: 出现一个可纠正错误,并且已在输出上纠正了此错误;但是,存储器阵列尚未更新。
  • 11:出现一个不可纠正错误,并且不可纠正的数据出现在输出上。

置位aclr输入时,DCFIFO功能rdempty输出可能会暂时出现故障。为防止外部寄存器错误捕获此故障,请确保满足以下条件之一:

  • 外部寄存器必须使用连接到DCFIFO功能的aclr输入的相同复位,或者
  • 连接到DCFIFO功能的aclr输入的复位必须同步置位到驱动外部寄存器的时钟。

FIFO Intel® FPGA IP核的输出延迟信息非常重要,尤其是对于q输出端口,因为没有输出标志来指示何时输出何时有效并且可进行采样。

11 仅应用于SCFIFO功能。
12 可应用于两个DCFIFO功能。
13 应用于SCFIFO,DCFIFO和DCFIFO_MIXED_WIDTH功能。
14 在特定条件下,SCFIFO置位empty信号,而不会置位almost_empty信号。请参考SCFIFO ALMOST_EMPTY功能时序了解详细信息。
15 不适用于DCFIFO_MIXED_WIDTHS功能。