HDL FIFO
在先进先出(FIFO)寄存器中存储输入采样序列。
类型: SubSystem
图书馆中的路径:
|
端口
输入
#
在
—
输入信号
标量
Details
设备的数据输入信号。
向数据块写入数据时,最新数据将被置于寄存器的末尾。数据块将在此条目之后写入后续数据。
数据类型 |
|
复数支持 |
有 |
#
推动
—
推动信号
scalar
Details
当该端口接收到 "1 "时,程序块会将端口 In 的数据放在 FIFO 寄存器的末尾。
数据类型 |
布尔 |
复数支持 |
无 |
#
流行音乐
—
读取控制信号
标量
Details
当该端口接收到 "1 "值时,程序块将从 FIFO 寄存器中卸载第一个项目,并将该值保存在 Out 端口上。
如果在同一时间步触发了两个或多个输入控制端口,则首先在*Pop*信号下执行读操作,然后在*Push*信号下执行写操作。 |
数据类型 |
|
复数支持 |
无 |
#
第一次
—
复位控制信号
标量
Details
当复位端口接收到 1
时,将复位块 HDL FIFO 的 Empty、Full 和 Num 输出。
数据类型 |
布尔 |
复数支持 |
无 |
输出
#
外出
—
数据输出信号
标量
Details
从 FIFO 模块输出数据的信号。当执行从 FIFO 读取操作时,先写入 FIFO 寄存器的数据将从 FIFO 取出并保留在输出端。
数据类型 |
布尔信号 |
复数支持 |
是 |
#
Empry
—
空寄存器指示信号
标量
Details
当 FIFO 寄存器中没有数据且无法执行读取操作时,FIFO 输出的控制信号,等于 "1"。
数据类型 |
布尔 |
复数支持 |
无 |
#
全部
—
寄存器满指示信号
标量
Details
从 FIFO 输出的控制信号,当 FIFO 寄存器已满,不能再接受任何数据时,该信号为 "1"。
数据类型 |
布尔 |
复数支持 |
无 |
#
编号
—
记录数
标量
Details
FIFO 寄存器中当前的数据量。
-
每向 FIFO 写入一个数据,Num 就递增 "1"。
-
每从 FIFO 读取一个数据,Num 就减少`1`。
数据类型 |
Float64`。 |
复数支持 |
无 |
参数
Main group
# 寄存器大小 — 记录数
Details
指定 FIFO 寄存器可包含的条目数。
寄存器大小 的最小值为 "4"。
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |
#
模式 —
运行方式
Classic
| FWFT
Details
指定 FIFO 运行模式。
使用 "FWFT "模式,无需执行读取操作,即可提前查看 FIFO 队列起始位置的数据。在使用 AXI4-Stream 接口施加反向压力时,"FWFT "模式尤其有用。
值 |
|
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |
# 输出采样时间与输入采样时间之比 — 采样率系数
Details
指定输出采样周期与输入采样周期的比率。
默认情况下,该比率为 "1",这意味着 In 和 Push 输入以及 Out 和 Pop 输出以相同的采样率运行。
输入和输出可能以不同的采样周期运行。使用正整数或 1/N
,其中 N
为正整数。例如,如果输入 1/2
,输出的采样周期将是输入采样周期的一半,即输出运行得更快。端口 Full、Empty 和 Num 的信号将以更快的速度运行。
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |
#
推入完整寄存器 —
推*端口的溢出条件
Ignore
| Warning
| Error
Details
指定向已填满的 FIFO 写入时,程序块应如何反应。
值 |
|
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |
#
弹出空寄存器 —
端口 Pop 的溢出条件
Ignore
| Warning
| Error
Details
指定程序块从空 FIFO 读取数据时的反应。
值 |
|
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |
# 空寄存器指示端口(空) — 空寄存器指示端口
Details
选择此复选框可启用空寄存器显示端口。
当 FIFO 寄存器为空时,该端口输出 "1";当 FIFO 包含一条或多条数据记录时,该端口输出 "0"。
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |
# 寄存器指示器端口满时(满) — 寄存器满载指示端口
Details
选择该复选框可启用寄存器满指示端口。
当 FIFO 寄存器满时,该端口输出 "1"。
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |
# 寄存器输入端口数 (Num) — 有关登记簿条目数的信息端口
Details
选择该复选框可启用寄存器计数信息端口。
该端口输出 FIFO 队列中当前可用的数据量。
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |
# 在本地复位端口 (rst) — 本地重置端口
Details
选择此复选框可启用可选的本地重置端口 rst。
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |
Signal settings
#
数据类型 —
数据类型
Float64
| Float32
| Float16
| Int8
| UInt8
| Int16
| UInt16
| Int32
| UInt32
| Int64
| UInt64
| Int128
| UInt128
| Bool
| Fixed-point
Details
指定数据类型。定义为
-
Float64
. -
Float32
. -
浮点 16
-
Int8
. -
`UInt8
-
`Int16
-
`UInt16
-
`Int32
-
`UInt32
-
`Int64``U
-
`UInt64
-
`Int128
-
`UInt128
-
布尔
-
定点
值 |
|
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |
# 数据定点类型 — 定点数据类型
Details
指定定点数据类型。
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |
#
信号类型 —
信号类型
Real
| Complex
Details
指定信号类型。定义为
-
Real
. -
复杂
值 |
|
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |
# 采样时间 — 采样期
Details
以正数指定的采样周期。
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |
算法
*FIFO 写操作
本图显示的是写操作。Push 输入端口作为写操作的使能信号。图中,data_in 表示该信号。
当 data_in 信号为 "0 "时,数据块不会向 FIFO 写入数据,而是设置 Empty 标志。
当*data_in*信号变为 "1 "时,程序块会在下一个时间步骤中将*In*输入端口上的*din*信号传输到 FIFO 寄存器的末端。Num 信号表示 FIFO 寄存器中的数据量。每次向 FIFO 写入数据时,Num 信号都会递增 "1"。在时间步骤 6
时,data_in 等于 1
。在下一个时间步,data_in 为`7`,数据被写入 FIFO。Num 信号增量为 1
,Empty 标志被取消。
该 FIFO 使用*寄存器大小*参数指定的寄存器大小。默认寄存器大小为 10
。在图中,当时间步长为 34 时,Num 信号等于 10 时,Full 信号被置信。在 Full 信号变为等于 `1`后,如果向 FIFO 写入更多数据,程序块将发出警告。
*经典的 FIFO 读操作。
本图显示的是一次读操作。Pop 输入端口作为读操作的使能信号。图中,read_en 表示该信号。
图中显示,当时间步长为 34 时,read_en 信号为 1 时,dout 信号将在下一个时间步长为 35 时输出 FIFO 中最旧的记录。随着从 FIFO 中读取数据,Full 标志被清除,Num 信号从时间步骤 35
开始减少 1
。
当*Num*信号变为`0`时,Empty*信号被确认。在 *Empty 信号变为`0`后,如果从 FIFO 中读取更多数据,程序块将发出警告。
通过 FIFO 进行首次字写操作
该图显示了 Mode 参数设置为 "FWFT "时的写操作。Push 输入端口作为写操作的使能信号。图中,write_en 表示该信号。
当 write_en 信号为 "0 "时,数据块不会向 FIFO 写入数据,并设置 Empty 标志。
当*write_en*信号变为 "1 "时,程序块会在下一个时间步骤中将*In*输入端口上的*din*信号值传输到 FIFO 寄存器的末端。Num 信号表示 FIFO 寄存器中的数据量。每次向 FIFO 写入数据时,Num 信号都会递增 "1"。在时间步骤 6
中,write_en 等于 1
。在下一个时间步骤`7`,数据被写入 FIFO。*Num*信号增量为`1`,*Empty*标志被取消。
FIFO 使用寄存器大小参数指定的寄存器大小。默认寄存器大小为 "10"。在图中,当时间步长为 43 时,Num 信号等于 13 时,Full 信号被置信。在 FWFT 模式下,FIFO 可以再存储超出其指定大小的 3
个值。在 Full 信号变为 `1`后,如果向 FIFO 写入更多数据,程序块将发出警告。
从 FIFO 读取操作的第一个字转换
该图显示的是*Mode*参数设置为 "FWFT "时的读操作。Pop 输入端口作为读操作的使能信号。图中,read_en 表示该信号。
在 FWFT 模式下,写入 FIFO 的第一个值将转入 Out 输出信号。
在图中,read_en 在时间步骤 42
时变为 1
,FIFO 在时间步骤 9
时读取 data out 信号的第一个值。您可以利用这一点,查看首次写入 FIFO 的数据。
当 Num 信号变为 `0`时,Empty 信号被断言。在 Empty 信号变为`0`后,如果从 FIFO 中读取更多数据,程序块将发出警告。