AR# 72916

UltraScale/UltraScale+ (Vivado 2019.1) — PCI Express 集成块对原有中断的“interrupt_disable”位设置响应不正确

描述

发现问题的版本: v1.3 Rev5 (Vivado 2019.1)

解决问题的版本和其他问题(Xilinx Answer 65751)

使用原有中断时,以下步骤的顺序可能会导致原有中断被保持断言,从而导致连续的 INTx 消息向上游发送。 

  1. 端点断言原有中断(例如 INTA)
  2. 主机写入端点配置空间,将命令寄存器的“中断禁用”位设置为 1'b1


按照 PCIe 规范,在上述第 2 步之后,端点中的 PCIe 集成块将需要发送“Deassert_INTA”消息。

在 UltraScale(或)UltraScale+ 器件中,PCI Express 集成块不会发生这种情况。


本文是 PCI Express 解决方案中心的一部分

(Xilinx Answer 34536)面向 PCI Express 的 Xilinx 解决方案中心

解决方案

这是一个已知芯片问题。下面是一个解决方法。

  1. 在端点中断言 cfg_interrupt_int 信号。
    它会发送一个 assert_INTA 消息至主机。
  2. 主机中的驱动程序会在 FPGA 配置空间中设置中断禁用位。
  3. 在 FPGA 中实现一个可由驱动程序访问的寄存器,监控端点 cfg_function_status 输出的 bit3(INTx 禁用)。
    • 您需要在 FPGA 配置空间中取消对中断禁用位的设置,否则在配置空间中设置中断禁用位时,去断言 cfg_interrupt_int 将不会生成 deassert_INTA 消息。
  1. 在 cfg_function_status 输出的第 3 位之后断言 cfg_interrupt_int。 该端点会发送 deassert_INTA 消息至主机。


修订历史:

10/14/2019 -- 初始版本

AR# 72916
日期 10/14/2019
状态 Active
Type 已知问题
器件 More Less
IP More Less