TX 暂停生成 - 4.1 简体中文

10G/25G High Speed Ethernet Subsystem 产品指南 (PG210)

Document ID
PG210
Release Date
2023-05-10
Version
4.1 简体中文

您可以使用 ctl_tx_pause_req[8:0]ctl_tx_pause_enable[8:0] 输入总线请求发射暂停包。位 [8] 对应于全局暂停包,位 [7:0] 对应于优先暂停包。

此总线的每个位都必须保持稳定状态达至少 16 个周期,随后才能执行下一次转换。

警告:
同时请求全局和优先暂停包会导致不可预测的行为,必须避免。

暂停包的内容可使用下列输入管脚来确定。

全局暂停包:

ctl_tx_da_gpp[47:0] 
ctl_tx_sa_gpp[47:0]
ctl_tx_ethertype_gpp[15:0]
ctl_tx_opcode_gpp[15:0]
ctl_tx_pause_quanta8[15:0]

优先暂停包:

ctl_tx_da_ppp[47:0] 
ctl_tx_sa_ppp[47:0] 
ctl_tx_ethertype_ppp[15:0] 
ctl_tx_opcode_ppp[15:0] 
ctl_tx_pause_quanta0[15:0] 
ctl_tx_pause_quanta1[15:0] 
ctl_tx_pause_quanta2[15:0] 
ctl_tx_pause_quanta3[15:0] 
ctl_tx_pause_quanta4[15:0] 
ctl_tx_pause_quanta5[15:0] 
ctl_tx_pause_quanta6[15:0] 
ctl_tx_pause_quanta7[15:0]

10G/25G Ethernet Subsystem 会自动计算 FCS 并将其添加到包中。对于优先暂停包,10G/25G Ethernet Subsystem 还会根据请求的优先级来自动生成启用矢量。

要请求暂停包,必须将 ctl_tx_pause_req[8:0]ctl_tx_pause_enable[8:0] 总线的对应位设置为 1,并在暂停请求期间使其保持为 1 不变(即,如果这些输入设置为 0,则取消所有挂起的暂停包)。通过发出另一个暂停包并将其中包含的对应暂停量设为 0,即可取消暂停。10G/25G Ethernet Subsystem 将在当前进行中的包完成后立即发射暂停包。

重要: 此总线的每个位都必须保持稳定状态达至少 16 个周期,随后才能执行下一次转换。

为重新发射暂停包,10G/25G Ethernet Subsystem 包含总计 9 个独立定时器;对应每个优先暂停包 1 个定时器,对应全局暂停包 1 个定时器。这些定时器将加载对应输入总线的值。发射暂停包后,对应定时器将加载 ctl_tx_pause_refresh_timer[8:0] 输入总线的对应值。当定时器超时后,一旦当前进行中的包完成后就会立即发射对应该优先级的另一个包(或全局包)。此外,您可将定时器手动强制设为 0,因此,可针对某一时钟周期将 ctl_tx_resend_pause 输入强制设置为 1 来强制重新发射。

为了减少暂停包执行优先模式操作的次数,只要任一定时器超时,该暂停包对应的定时器就会被视为“已超时”。此外,等待当前进行中的包完成的过程中,只要任何新定时器发生超时,或者收到任何新请求,都将合并为单一暂停帧。例如,如有 2 个定时器正在倒计时,并且您针对第 3 个优先暂停包发送请求,则前 2 个定时器将被强制超时,并且发射当前进行中的包(如有)后就会立即发送一个对应全部 3 个优先级的暂停包。同样,如果前 2 个定时器中的任何一个定时器超时且未收到其他请求,则这 2 个定时器都会被强制超时,并且发射当前进行中的包(如有)后就会立即发送一个对应这 2 个优先级的暂停包。

您可通过将 ctl_tx_pause_req[8:0]ctl_tx_pause_enable[8:0] 的相应位设置为 0 来停止生成暂停包。