最近调试6455 PCI的主从功能,遇到一个问题。我的硬件电路是两个6455 直连,中间由FPGA走线直连,一个作主一个作从。使用一个6455 对另外一片6455 的配置空间作配置写的操作后,写入成功后,作主的6455一直不能释放总线,且无限重复的向另一片6455进行配置写操作。(在PCI2.3协议中不是说当主设备收到从设备的DEVSEL和TRDY的无效后,应该认为本次的操作结束了嘛)
尝试过disable主设备的主使能寄存器后,就会暂时停止,但是一旦再次使能做主的寄存器后会继续进行配置写操作,这是为什么?
Shine:
请查看一下PCIMCFGCMD寄存器的READY是否为1,表示上一次数据传输完成。
user6393154:
回复 Shine:
不是1,但是明明已经传输结束了,为什么不置1呢?
Shine:
回复 user6393154:
请量一下时序是否正确,传输结束后READY会置1。具体请看PCI user guide
9.2.1 I/O Write Transactions
www.ti.com/…/sprue60b.pdf
user6393154:
回复 Shine:
时序是正确的,在做从的6455 上看到了配置写已经成功了。我这里还有另一个问题,主设备6455对从设备6455 memory写的时候,从6455 一直不给Trdy的应答信号是为啥?我完全是按照手册的设置进行的(主的配置是PCIADDSUB1 = 0x12800000; 从的配置是 BAR0 = 0x12800000; 对0x40800000地址进行写值),从时序上看也是正常的。
Shine:
回复 user6393154:
请查看一下PCICSR状态寄存器,看一下是否有error产生?
10.1 PCI Exceptions
www.ti.com/…/sprue60b.pdf
user6393154:
回复 Shine:
没有错误产生。不过已经可以memory写了。不过现在有个新的问题,就是第一次写一个32位的数是成功的,主设备对下一个地址操作再写就不行了,从总线上看主设备发出的地址并没有更新新的地址,还是第一次的地址。最近在研究6455 的PCI,遇到很多问题,求解答!
Shine:
回复 user6393154:
请对照PCI user guide看一下PCI地址映射是否正确?
6 Slave Memory Map
www.ti.com/…/sprue60b.pdf