问题描述
请考虑以下场景,其中核心是执行写入事务的启动器:
– PCI-X核心启动mem写入。
– 中途,发起者取消REQ#。
– Arbiter继续声称GNT#(PCI-X核心现在“停在”上)。
– 发起人完成交易。
此时做出的决定是:
– 返回总线空闲,等待四个时钟,然后驱动AD。
– 在启动器完成后立即驱动AD,因为核心“停在”上。
在规范的4.1.1节中,陈述如下:
“如果GNT#被置位且总线空闲连续四个时钟,则器件必须在不晚于第六个时钟的情况下主动驱动总线(AD [31 :: 0]和C / BE [3 :: 0]#)并且PAR或ECC [6 :: 0]一个时钟之后。“
PCI-X内核立即驱动AD [31 :: 0]和C / BE [3 :: 0],而不是等待四个时钟周期。这是一个问题吗?
解决/修复方法
为了澄清,Xilinx联系了PCI-X SIG技术支持小组,以确保核心行为正确。他们确认上面的正确选项是PCI-X内核在发起者完成事务后一个周期后立即驱动AD [31:0]和CBE [3:0],然后是PAR的那个选项。
PCI-X PT 2.0a规范中的4.1.1节规定,对于PCI-X模式1,与传统PCI一样,如果没有发起方请求总线,则允许仲裁器将总线停放在PCI-X模式1中任何能够成为启动器的启动器,以防止总线信号浮动。它进一步指出,如果GNT#被断言且总线空闲连续四个时钟,则器件必须在不迟于时间内主动驱动总线(AD [31 :: 0]和C / BE [3 :: 0]#)。第一个时钟和PAR或ECC [6 :: 0]一个时钟之后。
在上面提到的场景中,由于PCI-X核心正在完成当前事务并且仍然断言GNT#(总线所有权没有变化),核心应该继续驱动总线。在再次驾驶公交车之前无需停止驾驶公交车。
没有回复内容