入口帧可采用抢占 (preempt) 或高速 (express) 类型。核会根据判定的类型将入口帧分别置于相应的高速 AXI4‑Stream 接口或抢占 AXI4‑Stream 接口上。
高速流量将连续传输,由于核在此接口上不具有任何缓冲机制,您必须准备好随时接受高速帧。
由于抢占流量的性质,帧能以一组碎片的形式到达,后续由核进行汇编。在核生成期间,可以选择在抢占接口上插入 FIFO。插入此 FIFO 时,将缓冲该抢占帧的所有碎片,仅当汇编进程成功完成后,该帧才会在 AXI4‑Stream 接口上可用。如果不插入 FIFO,那么 AXI4‑Stream 接口上的 tvalid
可能在不同碎片之间出现波动。核通过断言 tlast
有效来指示碎片 tlast
汇编进程完成;如果汇编进程不成功,则会断言 tuser
有效。
下图显示了不插入 FIFO 时 AXI4‑Stream 接口上的抢占帧碎片的呈现方式。
图 1. 抢占帧碎片:不插入 FIFO 时
名称 | I/O | 描述 | 时钟域 |
---|---|---|---|
控制 | |||
ctl_en_preempt | 输入 |
断言有效时,允许抢占。 首次断言有效时,如果 ctl_disable_verify = 1'b0 且 stat_tx_mm_verified[1:0] = 2'b00,则会触发验证。 |
tx_clk_out |
ctl_hold_request | 输入 | 如果断言有效,则阻止抢占流量。 | tx_clk_out |
ctl_disable_verify | 输入 | 如果断言有效,则阻止验证进程。 | tx_clk_out |
ctl_restart_verify | 输入 | 如果 ctl_disable_verify = 1'b0,那么 0 到 1 转换将触发验证。 | tx_clk_out |
ctl_addfrag_size[1:0] | 输入 |
启用抢占前的剩余碎片大小: 2'b00 = 64 字节 2'b01= 128 字节 2'b10 = 192 字节 2'b11 = 256 字节 |
tx_clk_out |
ctl_verify_time[7:0] | 输入 | 验证超时值(以毫秒为单位)。整数范围 1-128。默认值为 1 ms。 | tx_clk_out |
ctl_verify_limit[3:0] | 输入 | 核尝试验证的次数。整数范围 1-15。默认值为 3。 | tx_clk_out |
p_frame_len_0 | 输入 | 表示 TX 抢占 AIX-S 接口上呈现的帧长度(以字节为单位)。在抢占帧 SOP 时应有效。 | tx_clk_out |
状态 | |||
stat_tx_mm_verify[1:0] (无计数器) |
输出 |
表示验证状态。 [0] - 断言有效时,表示验证完成。 [1] - 断言有效时,表示验证成功。 仅当 ctl_en_preempt = 1'b1 且 ctl_disable_verify = 1'b0 时,该状态矢量中包含的值才有效 |
tx_clk_out |
stat_tx_mm_status | 输出 | 当发射可抢占的数据包(初始碎片或完整包)时,此信号断言有效。 | tx_clk_out |
stat_tx_mm_fragment | 输出 | 当发射可抢占包的持续碎片时,此信号断言有效。 | tx_clk_out |
stat_tx_mm_hold | 输出 | 当 ctl_hold_request 从 1'b0 转换为 1'b1 时,此信号断言有效。 | tx_clk_out |
stat_rx_mm_assembly_error | 输出 | 碎片汇编期间,检测到错误时,此信号断言有效。 | rx_core_clk |
stat_rx_mm_frame_smd_error | 输出 | 此信号在以下情况下断言有效:当帧碎片因 SMD 值错误而遭拒绝,或者帧碎片到达时包含 SMD-C(因当前未处理任何帧)。 | rx_core_clk |
stat_rx_mm_frame_assembly_ok | 输出 | 当所有可抢占帧碎片均已汇编完成并呈现时,此信号断言有效。 | rx_core_clk |
stat_rx_mm_fragment | 输出 | 当接收到碎片帧时,此信号断言有效。 | rx_core_clk |
rx_p_frm_drop_0 | 输出 | 当数据包汇编 FIFO 因已满而无法继续处理抢占碎片汇编时,会断言此信号有效。发生此情况时,接收到的抢占帧的所有碎片都将被丢弃。 | rx_core_clk |
rx_p_frm_drop_count_0 | 输出 | 此类事件的数量。 | rx_core_clk |
|