Aurora 8B/10B 协议包括本地流控制(NFC)接口,其允许接收机通过指定必须放入数据流的空闲数据跳数来控制接收数据的速率。甚至可以通过请求发送器临时发送空闲(XOFF)来完全关闭数据流.NFC 通常用于防止FIFO 溢出条件。
当NFC 选项启用时生成IPCORE 时,就会创建NFC 接口。该接口包括用于发送NFC 消息的请求(s_axi_nfc_tx_tvalid)和确认(s_axi_nfc_tx_tready)端口以及4 位s_axi_nfc_tx_tdata 端口,以指定所请求的空闲周期数。
用户应用程序断言s_axi_nfc_tx_tvalid 并将NFC 代码写入s_axi_nfc_tx_tdata。NFC 代码指示频道合作伙伴应在其TX 数据流中插入的最小空闲周期数。用户应用程序必须保存s_axi_nfc_tx_tvalid 和s_axi_nfc_tx_tdata,直到s_axi_nfc_tx_tready 被断言。Aurora 8B / 10B 内核在发送NFC 消息时无法传输数据。在s_axi_nfc_tx_tready断言之后的周期上,s_axi_tx_tready总是被取消置位。
下图给出了当用户应用向通道伙伴发送NFC 消息时的发送定时的示例。s_axi_nfc_tx_tready信号被断言一个周期(假设n 至少为2),以在NFC 消息的数据流中创建间隙。