FIFO Generate IP核使用——Native Ports页配置

在使用FIFO Generate IP核时,如果在Basic选项页选择了Naitve接口,就需要配置Native Ports页,该页提供了针对FIFO核心的性能选项(读取模式)、数据端口参数、ECC(错误检查和纠正)以及初始化选项。

1 Read Mode

Read Mode通常指的是FIFO(First In First Out,先进先出)在读取数据时的操作方式。当选择使用Block RAM或Distributed RAM作为FIFO时,会有不同的读取模式可供选择。

1.1 Standard FIFO

FIFO实现的是具有标准延迟且不使用输出寄存器的FIFO。数据按照先进先出的顺序从FIFO中读取,但不会在输出端口提前显示即将输出的数据。

当用户请求读取数据时,数据会在下一个时钟周期被提供给用户。换句话说,请求和数据的交付之间存在一个时钟周期的延迟。

对于Standard FIFO读取操作,当读取使能(rd_en)被置位,并且FIFO不为空时,FIFO中存储的下一个数据会被驱动到输出总线(dout)上,并且有效标志(VALID)也会被置位。

工作流程

(1) 写入数据:当至少有一个数据字被写入FIFO时,空标志(empty)会被撤销,表示FIFO中有数据可供读取。

(2) 读取使能:当读取使能信号rd_en被置位时,一个读取操作会在下一个rd_clk(读取时钟)的上升沿发生。

(3) 读取数据:在读取操作的时钟周期,FIFO将下一个可用的数据字输出到dout,并且置位VALID标志,表示一个成功的读取操作已经完成。

(4) FIFO为空:当FIFO中的最后一个数据字被读取后,FIFO会置位empty标志,表示FIFO为空。

(5) 读取请求无效:如果当empty被置位时继续置位rd_en,读取请求将被忽略,VALID会被撤销,并且可能会置位下溢标志(underflow),表示FIFO已经尝试读取一个不存在的数据字。

(6) 恢复读取:当执行写入操作后,FIFO会撤销empty标志,允许恢复有效的读取操作,这通常通过置位VALID和撤销underflow来表示。

图3-3展示了标准读取访问的流程图或时序图。在这个图中,可以看到读数据信号被置位后如何在下一个时钟周期将数据从dout读取出来,并且置位VALID标志。

Standard FIFO读取操作提供了一种简单而可靠的方式来从FIFO中读取数据。通过监控empty、VALID和underflow等标志,可以确保读取操作在FIFO非空时进行,并且在FIFO为空时避免无效的读取请求。

1.2 First-Word Fall-Through FIFO

First-Word Fall-Through FIFO 是使用了带有寄存器输出的读取操作,允许在不执行读取操作的情况下"预览"FIFO中的下一个数据字。当FIFO中有数据可用时,第一个数据字会自动出现在输出总线(dout)上。一旦第一个数据字出现在dout上,空标志(empty)就会被撤销,表示FIFO中有一个或多个可读的数据字,并且有效标志(VALID)会被置位,表示dout上存在一个有效的数据字。这种模式增加了FIFO的有效读取深度,并允许数据在读取使能有效之前就已经准备好。

当用户请求读取数据时,数据会在同一时钟周期内被提供给用户,请求和数据的交付之间没有延迟,从而提高了数据处理的效率。

工作流程

(1) 初始状态:当FIFO不为空时,下一个可用的数据字会自动出现在输出总线dout上,并且VALID被置位。

(2) 读取使能:当读取使能信号rd_en被置位时,在下一个rd_clk的上升沿,下一个数据字会被放到dout上。

(3) 读取最后一个数据字:当最后一个数据字被放到dout上后,如果再次发起读取请求,dout上的数据会变得无效,这由VALID的撤销和empty的置位来表示。此时,如果继续尝试从FIFO中读取数据,将会导致下溢(underflow)条件。

空标志的处理

与standard读取模式不同,First-Word Fall-Through模式下的empty标志是在读取完最后一个数据字后被置位的。当empty被置位时,VALID会被撤销。在标准读取模式下,当empty被置位时,VALID会在一个时钟周期内被置位。

有效读取深度

与standard模式相比,该模式增加了FIFO的有效读取深度,使得FIFO能够多存储两个数据字以供读取。

写入与读取的关系

对于每一个写入操作,都需要相应数量的读取操作来清空FIFO。这对两种读取操作模式都适用。

图3-4展示了First-Word Fall-Through读取操作的时序图。在这个图中,可以看到数据如何自动出现在dout上,以及当rd_en被置位时,如何在下一个时钟周期将数据从dout读取出来。同时,还可以看到empty和VALID标志如何随着数据的读取而变化。

选择哪种读取模式取决于具体的应用需求。如果应用程序可以容忍一个时钟周期的延迟,并且不需要立即访问最新进入FIFO的数据,那么standard 读取操作可能是一个合适的选择。然而,如果应用程序需要立即访问最新进入FIFO的数据,并且对性能有严格要求,那么First-Word Fall-Through读取操作可能更合适。

需要注意的是,虽然First-Word Fall-Through读取操作可以提高数据访问的速度,但它也可能增加FIFO设计的复杂性,并可能需要更多的硬件资源来实现。

2 Data Port Parameters

(1) Asymmetric Port Width(非对称端口宽度):仅对于使用UltraScale设备的Block RAM或Built-in FIFO可用。写入和读取端口的位宽可能不同,这在某些应用中可能是有用的,比如需要同时处理不同位宽的数据时。

(2) Write Width(写入宽度):定义了可以写入FIFO的数据的位宽。有效范围是1到1024位。可以在单个写入操作中将1到1024位的数据发送到FIFO。

(3) Write Depth(写入深度):定义了FIFO可以存储的数据的最大数量。有效范围是16到131072,但只允许深度为2的幂。这确保了FIFO在逻辑上是一个"干净"的结构,因为二进制计数很容易用于管理和跟踪其中的数据。

(4) Read Width(读取宽度):如果选择了block RAM或Built-in FIFO配置,则此参数可用。其有效范围必须遵守非对称端口规则,这意味着读取宽度可能与写入宽度不同,但具体取决于FIFO的配置和应用需求。

(5) Read Depth(读取深度):这是基于写入宽度、写入深度和读取宽度自动计算的。在大多数FIFO设计中,读取深度与写入深度相同,但由于非对称端口的存在,这可能会有所不同。

(6) Low Latency(低延迟):仅当UltraScale设备的Built-in FIFO配置中的深度元素数量超过一个时可用。低延迟模式旨在减少数据从FIFO读取到使用之间的时间延迟,这在需要快速响应的应用中可能是非常重要的。

(7) Low Latency Output Register(低延迟输出寄存器):当选择低延迟选项时,此选项可用。输出寄存器用于在数据从FIFO发送到外部世界之前临时存储数据。在低延迟模式下,这个寄存器可以确保数据尽快到达其目的地,同时仍然保持数据的完整性和准确性。

3 ECC, Output Register and Power Gating Options

ECC(Error Correction Code,错误纠正码)和相关选项在数据存储和处理中扮演着关键角色,特别是在需要高度可靠性和准确性的应用中。

(1) ECC:当启用硬ECC的错误纠正检查功能时,block RAM或Built-in FIFO将设置为全ECC模式,此时编码器和解码器都会被启用。ECC技术通过在数据中添加额外的校验位来检测和纠正错误,从而确保数据的完整性和准确性。

(2) 单比特错误注入(Single Bit Error Injection):在具有ECC功能的Common 和Independent clock block RAM或Built-in FIFO中可用。当使用基于block RAM的FIFO构建时,还可以使用带有ECC逻辑的软ECC选项(Soft ECC)。该功能提供一个输入端口来在写入时注入单个比特错误,并输出一个指示单个比特错误发生的端口。这有助于测试和验证ECC功能的正确性。

(3) 双比特错误注入(Double-Bit Error Injection):同样在具有ECC功能的Common 和Independent clock block RAM或Built-in FIFO中可用。与单比特错误注入类似,它提供输入端口来在写入时注入双比特错误,并输出一个指示双比特错误发生的端口。这进一步增强了ECC功能的测试能力。

(4) ECC流水线寄存器(ECC Pipeline Reg):Built-in FIFO宏在ECC解码器和编码器路径上有一个可选的流水线寄存器。当选择ECC流水线寄存器时,它可以改善FIFO宏的时序并在DOUT上增加一个时钟周期的额外延迟。此外,当对FIFO应用重置时,ECC流水线寄存器会保持先前读取的数据在流水线中。这有助于确保在重置期间数据的连续性和准确性。

(5) 动态功耗门控(Dynamic Power Gating):动态功耗门控是一种节能功能,通过控制睡眠引脚(sleep pin)来使内置FIFO宏保持在睡眠模式,同时保持数据内容不变。在唤醒时间要求之前对FIFO的任何访问都不能得到保证,并且可能会导致内存内容损坏。当睡眠模式激活(即睡眠引脚为高电平)时,写使能(wr_en)和读使能(rd_en)引脚必须保持低电平。在此模式下,内存的数据内容会得到保留。

(6) 输出寄存器(Output Registers):block RAM宏具有Built-in 嵌入式或互联寄存器,可用于流水线数据处理并改善宏的时序。此选项允许用户在FIFO的输出端添加一个流水线阶段,并利用可用的嵌入式寄存器。对于Built-in FIFO,此功能仅支持具有1个FIFO宏深度的同步FIFO配置。

FIFO生成器还提供了选择嵌入式寄存器和互联寄存器的选项,以便在满足时序要求时获得平滑的延迟。这种灵活性允许用户根据具体的应用需求优化FIFO的性能和功耗。

3 Initialization

初始化中关于FIFO的部分,包含了多种选项和配置。

(1)Reset Pin(复位引脚):

对于使用Block RAM或Distributed RAM实现的FIFO,复位引脚不是必需的,输入引脚也是可选的。在某些情况下,可以通过软件或其他方式实现复位,而无需专门的复位引脚。

(2) Enable Reset Synchronization(启用复位同步):

可选选项,仅适用于Independent clock block RAM或Distributed RAM FIFO。当未选中时,wr_rst/rd_rst是可用的。这有助于确保在多个时钟域之间正确同步复位信号。

(3) Enable Safety Circuit(启用安全电路):

可选选项,仅适用于基于BRAM的FIFO,并且默认启用异步复位。对于AXI接口,安全电路在核心内部自动启用,因为AXI接口中的复位始终是异步的。当选择启用安全电路时,会启用额外的逻辑以确保同步触发器驱动FIFO生成器的输出和BRAM原语的控制信号。

(4} Reset Type(复位类型):

异步复位(Asynchronous Reset):对于使用Distributed 或block RAM实现的Common Clock FIFO,可选选项。异步复位意味着复位信号可以在任何时间断言,而不受时钟信号的限制。

同步复位(Synchronous Reset):可选选项,适用于使用Distributed 或block RAM实现的Common Clock FIFO。同步复位要求复位信号在时钟信号的上升沿或下降沿处断言。

(5) Full Flags Reset Value(满标志复位值):

对于block RAM、Distributed RAM和移位寄存器配置,可以选择在复位期间满标志(prog_full、almost_full和full)的复位值。这有助于在复位后正确地初始化FIFO的状态。

(6) Dout Reset Value(Dout复位值):

这指示当复位被置位时,FIFO输出上断定的十六进制值。它适用于所有使用block RAM、Distributed RAM、移位寄存器或7系列设备的Common Clock built-in FIFO实现,其中启用了嵌入式寄存器选项。如果选择了此选项,当复位被置位时,FIFO的dout输出将复位到定义的dout复位值。如果未选择此选项,FIFO的dout输出将不会受到复位置位的影响,并将保持其先前的值(对于使用内置FIFO的UltraScale架构设备,有一些限制)。

相关推荐
Hello-FPGA8 小时前
基于RFSOC FPGA ZCU216 的CoaXPress 采集demo
fpga开发
9527华安9 小时前
FPGA基于ADV7182解码PAL视频,Video Processing Subsystem去隔行,提供6套工程源码和技术支持
fpga开发·音视频·pal·adv7182
hahaha601610 小时前
数字图像时域滤波或者3D降噪算法FPGA实现
算法·计算机视觉·fpga开发
GateWorld10 小时前
Xilinx 7系列FPGA时钟网络详解
fpga开发·时钟网络·xilinx 7系列
szxinmai主板定制专家1 天前
X86 工控机 vs RK3588 异构主控:AMR 控制器 BOM、散热、长期运维对比
运维·stm32·单片机·嵌入式硬件·fpga开发·am62x
szxinmai主板定制专家1 天前
AMR 项目落地:机器人控制器硬件定制化需求复盘
arm开发·单片机·fpga开发·系统架构·机器人·am62x
FPGA小迷弟2 天前
FPGA 与卫星:从星载硬件到在轨智能的完整技术解析
fpga开发·架构·fpga·1024程序员节·无线电
NamoAmitabha1282 天前
CPU 内部结构是什么?---deepseek
fpga开发
abc light2 天前
ARM 裸机开发(6)——时钟树与定时器
arm开发·单片机·fpga开发
156082072193 天前
JFMZQ28DR、JFMZQ68DR、RFsoc XCZU47DR、XCZU48DR 信号处理板
fpga开发·信号处理