通道化表示分段式 AXI4‑Stream 总线的更高一层的控制超集。它允许在不相关通道之间对总线带宽进行 TDM 细分。在此情况下,在个别 AXI4‑Stream 传输事务上由 tid
字段来识别通道;因为 DCMAC Subsystem 支持最多 40 条通道,id
字段全部为 6 位。
tid
值的所有传输事务都提取出来,那么最完美有效的方式是将这些传输事务全部作为独立(非通道化)AXI4‑Stream 传输序列来提取。在此情况下,tid
字段的重要性远高于数据。它成为了一个请求,表示应为指定的通道执行(或者至少评估)某种形式的处理。由此导致 tid
字段变为有效的 AXI 信息,即使总线上没有数据移动(即,所有分段均为 ena==0
)也是如此。
DCMAC Subsystem 通道化分段式 AXI4‑Stream 接口定义为包含所请求的通道的提前指示(使用 id_req_vld
和 id_req output
端口)。它采用目标序列化操作,其中 DCMAC Subsystem 会指示 tid
字段上的数据源经过固定响应时间间隔之后必须返回的 ID。指定时间间隔可能因应用而异,但在返回首个 tvalid
/tid
响应之后,必须保持静态。下表中显示了添加到分段式 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_vld
和 id_req
信号均与 tvalid
和 tid
建立起临时关联,并在后二者之前添加多个固定数量的周期。以下列表进一步澄清了这些信号的目的和用法。
-
tx_axis_id_req_vld
- 表明
tvalid
必须断言有效。 -
tx_axis_id_req[5:0]
- 预先指定的
tid
(通道 ID)值,必须同时将tvalid
断言有效。 -
tx_axis_ch_status_vld
- 通道状态有效;此信号断言有效即表示后续
ch_status_id
和ch_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
必须与对应的 tid
和 tuser_skip_response
一起断言有效(而所有端口分段中的 tuser_ena0
则应断言无效)。如果搭配跳过响应周期一并提供此信号,那么 DCMAC Subsystem 应相应地将提供的空闲分段替换为其自己的累积数据。