发射通道化分段式 AXI4‑Stream - 2.3 简体中文

Versal Adaptive SoC 600G Channelized Multirate Ethernet Subsystem (DCMAC) LogiCORE IP 产品指南 (PG369)

Document ID
PG369
Release Date
2023-11-08
Version
2.3 简体中文

通道化表示分段式 AXI4‑Stream 总线的更高一层的控制超集。它允许在不相关通道之间对总线带宽进行 TDM 细分。在此情况下,在个别 AXI4‑Stream 传输事务上由 tid 字段来识别通道;因为 DCMAC Subsystem 支持最多 40 条通道,id 字段全部为 6 位。

重要: 如果要将某一个通道化的 AXI4‑Stream 总线中含相同 tid 值的所有传输事务都提取出来,那么最完美有效的方式是将这些传输事务全部作为独立(非通道化)AXI4‑Stream 传输序列来提取。

在此情况下,tid 字段的重要性远高于数据。它成为了一个请求,表示应为指定的通道执行(或者至少评估)某种形式的处理。由此导致 tid 字段变为有效的 AXI 信息,即使总线上没有数据移动(即,所有分段均为 ena==0)也是如此。

DCMAC Subsystem 通道化分段式 AXI4‑Stream 接口定义为包含所请求的通道的提前指示(使用 id_req_vldid_req output 端口)。它采用目标序列化操作,其中 DCMAC Subsystem 会指示 tid 字段上的数据源经过固定响应时间间隔之后必须返回的 ID。指定时间间隔可能因应用而异,但在返回首个 tvalid/tid 响应之后,必须保持静态。下表中显示了添加到分段式 AXI4‑Stream 接口中用于通道化操作的信号。

表 1. 专为通道化操作而添加的 AXI4‑Stream 信号
总线分割 TX 信号

预先指定的通道

DCMAC Subsystem 输出

tx_axis_id_req_vld

tx_axis_id_req[5:0]

通道状态

输入 DCMAC Subsystem

tx_axis_ch_status_vld

tx_axis_ch_status_id[5:0]

tx_axis_ch_status_skip_req

通道响应

输入 DCMAC Subsystem

tx_axis_tid[5:0]

tx_axis_tuser_skip_response

通道状态字段提供了一种方式,以便 DCMAC Subsystem 指示其内部状态并基于通道来请求流量控制。

通道化 AXI4‑Stream 总线的总体速率由 id_req_vld 流进行控制,此流固有作用即为对总线进行规范,以使内部耗用精确匹配。当 id_req_vld 断言无效时,对应 tvalid 即断言无效。这样可确保将源速率限制为 DCMAC Subsystem 速率。但通道化 AXI4‑Stream 方案中的各通道都需要独立的个性化控制机制,以免造成为其分配的内部资源发生溢出。

随后,通道状态信号可支持 DCMAC Subsystem 请求对每条通道的入口速率进行调制。这是通过指示需要跳过(无有效数据)周期来达成的。请求跳过时,DCMC 会指明它当前已累积足够的内部数据,能够完全满足对一整个周期的源数据进行逐通道处理。这些请求均为脉冲信号(非电平,因此,每个断言有效的周期预计都有一个周期的响应),源所需的响应时间由时间表交织和分配给通道的内部资源来决定。

这些信号均重叠在基础 AXI4‑Stream 信号集上。id_req_vldid_req 信号均与 tvalidtid 建立起临时关联,并在后二者之前添加多个固定数量的周期。以下列表进一步澄清了这些信号的目的和用法。

tx_axis_id_req_vld
表明 tvalid 必须断言有效。
tx_axis_id_req[5:0]
预先指定的 tid(通道 ID)值,必须同时将 tvalid 断言有效。
tx_axis_ch_status_vld
通道状态有效;此信号断言有效即表示后续 ch_status_idch_status_skip_req 信号上的信息有效。
tx_axis_ch_status_id
通道 ID。
tx_axis_ch_status_skip_req
跳过请求。只要 DCMAC Subsystem 在其内部上下文中累积了一整个总线周期的数据,此信号就会断言有效并保持一个周期,这表示 DCMAC Subsystem 能够在单个周期内完全满足其数据需求,而无需来自 AXI 的数据源的任何新数据。用于逐通道速率管理(例如,用于偏移带宽扩展)。
tx_axis_tuser_skip_response
跳过响应。表明一个空闲周期(必须同时将所有分段设为 tuser_ena == 0),这是对 skip_req 的显式响应。这些周期允许 DCMAC Subsystem 将源串流中的不活动分段替换为来自其本地上下文的累积字节。

在跳过请求断言有效的情况下,DCMAC Subsystem 需要先从自己的逐通道存储空间内运行,然后才会上溢。为此,AXI4‑Stream 发射驱动程序必须指明在总体序列中已轮到该通道,与此对应,不提供任何数据,同时显式断言跳过响应指示符有效。这意味着 tvalid 必须与对应的 tidtuser_skip_response 一起断言有效(而所有端口分段中的 tuser_ena0 则应断言无效)。如果搭配跳过响应周期一并提供此信号,那么 DCMAC Subsystem 应相应地将提供的空闲分段替换为其自己的累积数据。