PCI总线的存储器读写总线事务
PCI总线使用单端并行数据线,采用地址译码方式进行数据传递,而采用ID译码方式进行配置信息的传递。其中,地址译码方式使用地址信号,而ID译码方式使用PCI设备的ID号,包括Bus Number、Device Number、Function Number和Register Number。
值得注意的是,PCI设备只有在系统软件初始化配置空间之后,才能被其他主设备访问。
当PCI设备的配置空间被初始化之后,该设备在当前的PCI总线树上将拥有一个独立的PCI总线地址空间,即BAR(Base Address Register)寄存器所描述的空间。
PCI总线支持以下几类存储器读写总线事务:
PCI总线事务的时序
(鉴于我不是要从头开始用FPGA或者MCU模仿一个PCI总线,而是要用现成的PCI总线,这部分工作应该是由硬件完成的,所以先不做深入了解)
Posted和Non-Posted传送方式
HOST处理器访问PCI设备
PCI设备读写主存储器
PCI设备与存储器直接进行数据交换的过程也被称为DMA(直接存储器存取,direct memory access)。PCI设备进行DMA操作时,需要获得数据传递的目的地址和传送大小。支持DMA传递的PCI设备可以在其BAR空间中设置两个寄存器,分别保存这个目标地址和传送大小。这两个寄存器也是PCI设备DMA控制器的组成部件。
Delayed传送方式
PCI总线规定,只有Non-Posted总线事务可以使用Delayed总线事务。PCI总线的Delay总线事务由Delay读写请求和Delay读写完成总线事务组成: