FIFO Generate IP核AXI接口配置全解

当需要在设计中使用自定义IP时,可以通过为IP核的各种参数指定值来进行定制。以下是一般步骤的概述:

首先是从IP catalog中选择IP核。

然后双击这个选定的IP核,打开一个定制向导或参数设置窗口。或在工具栏或右键菜单中选择“Customize IP”命令,启动定制向导或打开相关参数设置。

对于AXI memory mapped的FIFO Generator IP核,通常包含多个配置选项卡,以便用户可以根据其应用需求进行定制。以下是一些常见的配置选项卡示例,但请注意,这些可能因Vivado的版本更新而略有变化:

1  Basic Tab

AXI Interface Option

四种AXI接口样式是可用的:AXI4-Stream、AXI4、AXI3和AXI4-Lite。

Clocking Options

FIFO可以被配置为写操作和读操作使用独立时钟域或公共时钟域。

独立时钟(Independent Clock):允许用户在写端口和读端口上实现独特的时钟域。FIFO Generator IP负责处理时钟域之间的同步,不需要对时钟的相位和频率有特定的要求。

公共时钟(Common Clocks):当在单个时钟域内进行数据缓冲时,可以选择公共时钟选项。这意味着写端口和读端口都使用相同的时钟信号。

使用从设备时钟使能进行写入

注意:此选项仅适用于AXI Stream接口。

从设备接口时钟使能(Slave Interface Clock Enable)允许AXI主设备以AXI从设备接口(或FIFO的写入侧)的分频速率运行。

当您希望AXI主设备以较低的频率向FIFO写入数据时,此功能非常有用。时钟使能信号允许您控制何时从AXI主设备向FIFO发送数据,从而有效地降低了数据写入速率。

使用主设备时钟使能进行读取

注意:此选项仅适用于AXI Stream接口。

主设备接口时钟使能(Master Interface Clock Enable)允许AXI从设备以AXI主设备接口(或FIFO的读取侧)的分频速率运行。

当您希望AXI从设备以较低的频率从FIFO读取数据时,此功能非常有用。时钟使能信号允许您控制何时从FIFO向AXI从设备发送数据,从而有效地降低了数据读取速率。

2  Ports Tabs

AXI FIFO的宽度是由通道中所有通道信息信号的总和来确定的。对于AXI4-Stream、AXI4、AXI3和AXI4-Lite接口,它们的通道信息信号在特定的表格(Table 4-3和Table 4-4)中列出。在配置AXI FIFO时,Vivado集成设计环境(IDE)提供了多个选项卡来进行相关配置。

2.1 AXI4/AXI3 Ports Tab

在AXI4和AXI3接口中,可以为ID、ADDR、DATA和USER信号配置宽度。

ID WidthAXI3接口中ID宽度应用于的所有通道。

ADDR Width:当同时选择了写通道和读通道时,相同的ADDR宽度将应用于写通道和读通道。这是因为AXI协议中的地址空间通常是共享的,因此读写操作使用相同的地址空间。

DATA Width:当同时选择了写通道和读通道时,DATA宽度也会在两个通道上保持一致。DATA宽度定义了每个数据传输中可以携带的数据位数。

USER Width:USER信号是AXI4/AXI3 FIFO中的可选信号,并且可以为每个通道独立配置。USER信号可以用于传输自定义的辅助信息。

对于所有选定的信号,AXI4/AXI3 FIFO的相应通道宽度是通过将特定通道中所有信号的宽度相加来确定的,如表4-3所示。

2.2 AXI4-Stream Ports Tab

在AXI4-Stream接口中,可以配置TDATATUSERTIDTDEST信号的宽度。而TKEEPTSTRB信号的宽度则是由配置的TDATA宽度决定的,它们内部使用公式(TDATA Width) / 8来计算。

对于所有选定的信号,AXI4-Stream FIFO的总宽度是通过将所有选定信号的宽度相加来确定的。这意味着,如果您配置了一个32位的TDATA、一个8位的TUSER、一个4位的TID和一个4位的TDEST,那么AXI4-Stream FIFO的总宽度将是48位(32位+8位+4位+4位)。同时,TKEEPTSTRB的宽度将分别为4位(因为32位的TDATA被分为8个字节)。

4.3  AXI4-Lite Ports Tab

在AXI4-Lite接口中,当同时选择了写通道和读通道时,会对这两个通道应用相同的ADDR和DATA宽度。对于AXI4-Lite FIFO的特定通道宽度,它是通过将该通道中所有信号的宽度相加来确定的。如Table 4-4所示。

3  AW/W/B/AR/R/AXI4-Stream Configuration Tab

AXI FIFO的功能在某些方面与Native FIFO在first-word fall-through模式下的功能相似。它支持的功能集包括ECC(错误检查和纠正,通常用于块RAM)、可编程就绪生成(如满、几乎满、可编程满)和可编程有效生成(如空、几乎空、可编程空)。

3.1 配置选项

1. FIFO

  这是用于实现先进先出(FIFO)缓冲器的选项。它通常用于在不同速率的数据生产者和消费者之间缓存数据,或者在两个时钟域之间传递数据。

2. Register Slice

这是一个寄存器切片选项,它可以提供数据的缓冲和同步,但不像FIFO那样具有完整的先进先出功能。它可能用于需要简单数据缓冲或延迟的场景。

3. Pass Through Wire

这是一个直通线选项,它直接传递数据而不进行任何缓冲或处理。这在不需要任何缓冲或同步的场景中可能是有用的。

3.2 FIFO Options

1.FIFO Implementation Type

FIFO Generator IP核可以根据计算出的宽度和选定的FIFO深度,以最优配置组合内存基本单元(block RAM或distributed RAM)。

2. FIFO Application Type

指定了FIFO的应用类型,例如数据FIFO、Packet FIFO或低延迟数据FIFO。每种类型都有其特定的用途和性能特点。

3. FIFO Width

AXI FIFO支持对称的写和读宽度。AXI FIFO的宽度是根据所选的接口类型(AXI4-Stream、AXI4、AXI3或AXI4-Lite)以及在该接口内选定的信号和配置的信号宽度来确定的。

3.3 ECC Options

ECC(Error Correction Code,错误检查和纠正)选项为使用块RAM(Block RAM)的FIFO宏提供了内置或通用的互联、错误注入和纠正检查功能。这个特性在公共时钟和独立时钟的块RAM FIFO中都可用。

在AXI FIFO的设计中,数据阈值参数提供了对FIFO状态进行监控和控制的重要机制。这些参数允许用户自定义何时FIFO被视为“满”或“空”,并可以生成中断以通知系统这些状态的变化。下面是您提到的数据阈值参数的详细解释:

3.4 Data Threshold Parameters

Programmable Full Type
  • 功能:允许用户从下拉菜单中选择一个可编程的满阈值类型。每个阈值的有效范围将在IDE中显示,并可能根据IDE中其他选项的选择而有所不同。
  • Full Threshold Assert Value:当选择带有单个阈值常量的可编程满阈值时可用。用户可以输入一个自定义的值。该阈值的有效范围将在IDE中提供。
Programmable Empty Type
  • 功能:允许用户从下拉菜单中选择一个可编程的空阈值类型。与满阈值类似,每个空阈值的有效范围也将在IDE中显示,并可能根据IDE中其他选项的选择而有所不同。
  • Empty Threshold Assert Value:当选择带有单个阈值常量的可编程空阈值时可用。用户可以输入一个自定义的值。该阈值的有效范围将在IDE中提供。
Provide FIFO Occupancy Data Counts

允许FIFO提供关于其内部数据占用情况的数据计数。这通常表示FIFO中当前存储的数据个数。此外,对于块RAM和分布式RAM实现,还可以选择性地提供溢出和欠流中断标志(Overflow和Underflow)。

3.5 Occupancy Data Counts

在AXI FIFO中,data_count是一个用于跟踪FIFO中数据个数的参数。数据计数总线的宽度被设置为log2(FIFO深度) + 1。这是因为一个N位的计数器可以表示从0到2^N - 1的数值,因此一个能够表示从0到FIFO深度(包括0和FIFO深度)的计数器需要log2(FIFO深度) + 1位。

在公共时钟模式下,AXI FIFO提供单一的“Data Count”输出,这个输出反映了FIFO中当前的总数据个数。在独立时钟模式下,AXI FIFO提供两个数据计数输出:Read Data Count和Write Data Count。

关于数据阈值参数的例子,下面给出了“可编程满阈值”和“可编程空阈值”以及数据计数的具体应用场景:

可编程满阈值

假设你希望FIFO中的数小于16,可以设置可编程满阈值为16。当FIFO中的单词数量达到或超过16时,满阈值将被触发,系统可以采取相应的措施,如暂停向FIFO写入数据,以防止数据溢出。

可编程空阈值

如果设置可编程空阈值为8,当FIFO中的数降至或低于8时,空阈值将被触发,系统可以开始从FIFO中读取数据,以确保FIFO不会完全排空,从而保持数据的连续性和流畅性。

数据计数

使用数据计数来确定FIFO中的事务数量。

Status Flags Tab

4.1 Underflow Flag

  • 功能:用于指示读操作不成功。这通常发生在尝试从FIFO中读取数据但FIFO为空时。当Underflow 条件被满足时,该标志会被设置。
  • 同步性:Underflow 标志与读时钟(rd_clk)同步。这意味着当在读时钟的某个边沿检测到FIFO为空且尝试进行读操作时,Underflow 标志会被设置。
  • 非破坏性:Underflow 事件不会改变FIFO的状态。

4.2 Overflow Flag

  • 功能:用于指示写操作不成功。这通常发生在尝试向FIFO中写入数据但FIFO已满时。当Overflow 条件被满足时,该标志会被设置。
  • 同步性:Overflow 标志与写时钟(wr_clk)同步。这意味着当在写时钟的某个边沿检测到FIFO已满且尝试进行写操作时,Overflow 标志会被设置。
  • 非破坏性:Overflow 事件同样不会改变FIFO的状态。

Summary Tab

在AXI FIFO的Summary(摘要)标签页中,会显示用户所选的AXI FIFO选项的总结,包括接口类型、FIFO类型、FIFO尺寸以及任何额外功能的选择状态。在“Additional Features”(额外功能)部分,大部分功能会显示为“Not Selected”(未选择,如果未使用)或“Selected”(已选择,如果使用)。

关于FIFO深度的说明,它提供了所选配置的实际FIFO深度。这些深度可能与在AXI FIFO IDE的第4个屏幕上所选的深度略有不同。这通常是因为FIFO的实际深度可能是由硬件实现、性能优化或对齐要求等因素决定的,这些因素可能导致实际的FIFO深度与用户在界面上指定的不完全相同。

  • 47
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值