PCI总线原理(四)

http://blog.c114.net/html/15/562315-75229.html

       PCIPeripheral Component Interconnect,中文意思是“外围器件互联”,是由PCISIG (PCI Special Interest Group)推出的一种局部并行总线标准。在现在电子设备中应用非常广泛,下面我详细介绍下PCI总线的工作原理,希望对大家有所帮助。

 

    ♦PCI仲裁器工作原理

   假设PCI仲裁器上接三个PCI设备,如下图所示。

 

    假定PCI1,PCI2,PCI3三个设备的优先级相同,上电后,PCI总线仲裁器会将PCI1设备的GNT1信号驱动为低电平(有效)。即PCI1占用PCI总线。如果此时PCI1上没有数据传输,但PCI2上有数据要传输,PCI2设备就会驱动REQ2为低电平来向仲裁器发出PCI总线使用请求。仲裁器在时钟的上升沿采样到REQ2信号,在下一个时钟沿,PCI2FRAMEIRDY驱动为低电平(FRAMEIRDY是所有PCI设备共用的),仲裁器在时钟的上升沿采样到这两个信号后,就将GNT2驱动为低电平,应答PCI2的请求,这样,PCI2就拥有了PCI总线的使用权。

 

    这里有一个问题,为什么PCI总线仲裁器不在采样到REQ2信号有效后立即将GNT2置低,将PCI总线的使用权交给PCI2设备,而是要等到PCI2设备的FRAMEIRDY信号有效后才执行呢?

 

    这主要是仲裁器避免某些PCI设备申请总线使用权而实际上不使用,所以要等到FRAMEIRDY信号有效后(表示数据传输准备就绪)才授权使用总线。如果仲裁器在采样到REQ2有效后,一直没有采样到FRAMEIRDY信号有效,仲裁器会不会一直等待下去呢?答案是不会,仲裁器内部有一个定时器,等到定时器超时后,仲裁器就不再等了。

 

    仲裁规则:优先级高设备抢占优先级低设备资源

    假设三个PCI设备的优先级顺序为:PCI3>PCI2>PCI1

某个时刻,PCI1正在使用PCI总线传输数据,如果此时PCI2想要使用PCI总线,于是将REQ2驱动为低,向PCI总线仲裁器申请PCI总线的使用权,此时REQ1REQ2都处于有效状态,虽然PCI2的优先级高于PCI1,但是总线仲裁器不会马上响应PCI2的请求。而是等待PCI1完成一次操作(注意:是一次操作,不是全部)后,PCI1FRAMEIRDY总线驱动为高(每完成一次操作都需要进行此操作的)

 

    PCI2探测到PCI总线空闲后,将FRAMEIRDY信号驱动为低。总线仲裁器采样到这两个信号有效后,将GNT1驱动为高,同时将GNT2驱动为低,将总线的使用权转交给PCI2

此时,如果PCI1完成了全部传输,会将REQ1驱动为高。

 

    如果PCI1还有数据等待传输,那么它会将REQ1一直保持为低电平,一直进行总线申请。一直等待到PCI2完成所有操作后,还会将PCI总线的使用权释放给PCI1

 

      ♦PCI操作类型

    前面已经说过了,在FRAME信号有效后的第一时钟周期,AD[31:0]总线上传输的是目标PCI器件的地址,C/BE[3:0]上传输的操作命令类型。如下图所示。

    

 

      ♦PCI总线的读写时序

    PCI总线写时序如下图所示。(点击看清楚大图)

 

 

     如上图所示,在FRAME#有效后的第一个时钟周期内,AD上传输的是要写入目标PCI设备的地址信息,C/BE#上传输的是命令类型(I/O写命令为0011)DEVSEL#信号有效后,表明目标PCI设备已经被选择到,IRDY#TRDY#同时有效后,主PCI设备向目标PCI设备中传输要写入的数据,在第5个时钟周期时,IRDY#TRDY#同时变为无效状态,AD总线上被插入一个等待周期,第6和第7个时钟周期时,IRDY#有效,但是TRDY#无效,传输仍然不能有效进行,总线上被继续插入两个等待周期,第8个时钟周期时,IRDY#TRDY#都有效,数据传输继续。

 

    PCI总线的读时序如下图所示。

 

    读操作同写操作类似,只是在FRAME#有效后的第一个时钟周期内,C/BE#上传输的是读操作命令而已(I/O读操作命令为0010)

你可能感兴趣的:(原理)