Engee 文档

HDL FIFO

在先进先出(FIFO)寄存器中存储输入采样序列。

类型: SubSystem

图书馆中的路径:

/Basic/Additional/Discrete/HDL FIFO

说明

HDL FIFO 块将输入采样序列存储在 FIFO(先进先出)寄存器中。最先写入 FIFO 寄存器的数据最先输出。该模块的功能和行为类似于硬件平台中的 FIFO 模块。

端口

输入

# — 输入信号
标量

Details

设备的数据输入信号。

向数据块写入数据时,最新数据将被置于寄存器的末尾。数据块将在此条目之后写入后续数据。

数据类型

Float32, Float64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64, Bool, Fixed-point.

复数支持

# 推动 — 推动信号
scalar

Details

当该端口接收到 "1 "时,程序块会将端口 In 的数据放在 FIFO 寄存器的末尾。

数据类型

布尔

复数支持

# 流行音乐 — 读取控制信号
标量

Details

当该端口接收到 "1 "值时,程序块将从 FIFO 寄存器中卸载第一个项目,并将该值保存在 Out 端口上。

如果在同一时间步触发了两个或多个输入控制端口,则首先在*Pop*信号下执行读操作,然后在*Push*信号下执行写操作。
数据类型

Bool.

复数支持

# 第一次 — 复位控制信号
标量

Details

当复位端口接收到 1 时,将复位块 HDL FIFOEmptyFullNum 输出。

数据类型

布尔

复数支持

输出

# 外出 — 数据输出信号
标量

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

# Register size — 记录数

Details

指定 FIFO 寄存器可包含的条目数。

Register size 的最小值为 "4"。

默认值

10

程序使用名称

RSize

可调谐

可计算

# Mode — 运行方式
Classic | FWFT

Details

指定 FIFO 运行模式。

使用 "FWFT "模式,无需执行读取操作,即可提前查看 FIFO 队列起始位置的数据。在使用 AXI4-Stream 接口施加反向压力时,"FWFT "模式尤其有用。

Classic | FWFT

默认值

Classic

程序使用名称

Mode

可调谐

可计算

# The ratio of output sample time to input sample time — 采样率系数

Details

指定输出采样周期与输入采样周期的比率。

默认情况下,该比率为 "1",这意味着 InPush 输入以及 OutPop 输出以相同的采样率运行。

输入和输出可能以不同的采样周期运行。使用正整数或 1/N,其中 N 为正整数。例如,如果输入 1/2,输出的采样周期将是输入采样周期的一半,即输出运行得更快。端口 FullEmptyNum 的信号将以更快的速度运行。

默认值

1

程序使用名称

Ratio

可调谐

可计算

# Push onto full register — 推*端口的溢出条件
Ignore | Warning | Error

Details

指定向已填满的 FIFO 写入时,程序块应如何反应。

Ignore | Warning | Error

默认值

Warning

程序使用名称

AssertPushOntoFullReg

可调谐

可计算

# Pop empty register — 端口 Pop 的溢出条件
Ignore | Warning | Error

Details

指定程序块从空 FIFO 读取数据时的反应。

Ignore | Warning | Error

默认值

Warning

程序使用名称

AssertPopEmptyReg

可调谐

可计算

# On empty register indicator port (Empty) — 空寄存器指示端口

Details

选择此复选框可启用空寄存器显示端口。

当 FIFO 寄存器为空时,该端口输出 "1";当 FIFO 包含一条或多条数据记录时,该端口输出 "0"。

默认值

true (已开启)

程序使用名称

EmptyPortOn

可调谐

可计算

# On full register indicator port (Full) — 寄存器满载指示端口

Details

选择该复选框可启用寄存器满指示端口。

当 FIFO 寄存器满时,该端口输出 "1"。

默认值

true (已开启)

程序使用名称

FullPortOn

可调谐

可计算

# On number of register entries port (Num) — 有关登记簿条目数的信息端口

Details

选择该复选框可启用寄存器计数信息端口。

该端口输出 FIFO 队列中当前可用的数据量。

默认值

true (已开启)

程序使用名称

NumPortOn

可调谐

可计算

# On local reset port (rst) — 本地重置端口

Details

选择此复选框可启用可选的本地重置端口 rst

默认值

false (关掉)

程序使用名称

ResetPortOn

可调谐

可计算

Signal settings

# Data type — 数据类型
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

  • 布尔

  • 定点

Float64 | Float32 | Float16 | Int8 | UInt8 | Int16 | UInt16 | Int32 | UInt32 | Int64 | UInt64 | Int128 | UInt128 | Bool | Fixed-point

默认值

Float64

程序使用名称

DType

可调谐

可计算

# Data fixed-point type — 定点数据类型

Details

指定定点数据类型。

默认值

fixdt(1,16,0)

程序使用名称

DataTypeStrFixed

可调谐

可计算

# Signal type — 信号类型
Real | Complex

Details

指定信号类型。定义为

  • Real.

  • 复杂

Real | Complex

默认值

Real

程序使用名称

SType

可调谐

可计算

# Sample time — 采样期

Details

以正数指定的采样周期。

默认值

1

程序使用名称

STime

可调谐

可计算

算法

*FIFO 写操作

本图显示的是写操作。Push 输入端口作为写操作的使能信号。图中,data_in 表示该信号。

hdl fifo 1 hdl fifo 2 hdl fifo 3 hdl fifo 4 hdl fifo 5

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 信号增量为 1Empty 标志被取消。

该 FIFO 使用*寄存器大小*参数指定的寄存器大小。默认寄存器大小为 10。在图中,当时间步长为 34 时,Num 信号等于 10 时,Full 信号被置信。在 Full 信号变为等于 `1`后,如果向 FIFO 写入更多数据,程序块将发出警告。

*经典的 FIFO 读操作。

本图显示的是一次读操作。Pop 输入端口作为读操作的使能信号。图中,read_en 表示该信号。

hdl fifo 6 hdl fifo 7 hdl fifo 8 hdl fifo 9 hdl fifo 10

图中显示,当时间步长为 34 时,read_en 信号为 1 时,dout 信号将在下一个时间步长为 35 时输出 FIFO 中最旧的记录。随着从 FIFO 中读取数据,Full 标志被清除,Num 信号从时间步骤 35 开始减少 1

当*Num*信号变为`0`时,Empty*信号被确认。在 *Empty 信号变为`0`后,如果从 FIFO 中读取更多数据,程序块将发出警告。

通过 FIFO 进行首次字写操作

该图显示了 Mode 参数设置为 "FWFT "时的写操作。Push 输入端口作为写操作的使能信号。图中,write_en 表示该信号。

hdl fifo 11 hdl fifo 12 hdl fifo 13 hdl fifo 14 hdl fifo 15

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 表示该信号。

hdl fifo 16 hdl fifo 17 hdl fifo 18 hdl fifo 19 hdl fifo 20

在 FWFT 模式下,写入 FIFO 的第一个值将转入 Out 输出信号。

在图中,read_en 在时间步骤 42 时变为 1,FIFO 在时间步骤 9 时读取 data out 信号的第一个值。您可以利用这一点,查看首次写入 FIFO 的数据。

Num 信号变为 `0`时,Empty 信号被断言。在 Empty 信号变为`0`后,如果从 FIFO 中读取更多数据,程序块将发出警告。