接前一篇文章:《PCI Express体系结构导读》随记 —— 第I篇 第1章 PCI总线的基本知识(7)
PCI总线是一条共享总线,在一条PCI总线上可以挂接多个PCI设备。这些PCI设备通过对一系列信号与PCI总线相连,这些信号由地址/数字信号、控制信号、仲裁信号、中断信号等多种信号组成。
PCI总线是一条同步总线,每一个设备都有一个CLK信号,其发送设备与接收设备使用这个CLK信号进行同步数据传递。PCI总线可以使用33MHz或66MHz的时钟频率,PCI-X总线可以使用133MHz、266MHz或者533MHz的时钟频率(如上一回中的表格所示)。
除了RST#、INTA~D#、PME#和CLKRUN#等信号之外,PCI设备使用的绝大多数信号都使用这个CLK信号进行同步。其中,RST#是复位信号,而PCI设备使用INTA~D#信号进行中断请求。本书并不详细介绍PME#和CLKRUN#信号。
?
1.2.3 仲裁信号
PCI设备使用该组信号进行总线仲裁,并获得PCI总线的使用权。只有PCI主设备才需要使用该组信号,而PCI从设备可以不使用总线仲裁信号。这组信号由REQ#和GNT#组成,其中PCI主设备的REQ#和GNT#信号与PCI总线的仲裁器直接相连。
PCI主设备的总线仲裁信号与PCI仲裁器的连接关系如下图所示:
值得注意的是,每一个PCI主设备都具有独立的总线仲裁信号,并与PCI总线仲裁器一一相连。而总线仲裁器需要保证在同一时间段内,只有一个PCI设备可以使用当前总线。
在一个处理器系统中,一条PCI总线可以挂接PCI主设备的数目,除了与负载能力相关之外,还与PCI总线仲裁器能够提供的仲裁信号数目直接相关。
在一棵PCI总线树中,每一条PCI总线上都有一个总线仲裁器。一个处理器系统可以使用PCI桥扩展出一条新的PCI总线,这条新的PCI总线也需要一个总线仲裁器,通常在PCI桥中集成了这个总线仲裁器。多数HOST主桥也集成了一个PCI总线仲裁器,但是PCI总线也可以使用独立的PCI总线仲裁器。
PCI主设备使用PCI总线进行数据传递时,需要:
1)首先置REQ#有效,向PCI总线仲裁器发出总线申请;
2)当PCI总线仲裁器允许PCI主设备获得PCI总线的使用权后,将置GNT#信号为有效,并将其发送给指定的PCI主设备;
3)而PCI主设备在获得总线使用权之后,将可以置FRAME#信号为有效,与PCI从设备进行数据通信。
1.2.4 中断请求等其它信号
PCI总线提供了INTA#、INTB#、INTC#和INTD#4个中断请求信号。PCI设备借助这些中断请求信号,使用电平触发方式向处理器提交中断请求。当这些中断请求信号为低时,PCI设备将向处理器提交中断请求;当处理器执行中断服务程序清除PCI设备的中断请求后,PCI设备将该信号置高(INTx#这组信号为开漏输出,当所有的驱动源均不驱动该信号时,该信号由上啦电阻驱动为高),结束当前中断请求。
PCI总线规定,单功能设备只能使用INTA#信号,而多功能设备才能使用INTB# / C# / D#信号。PCI设备的这些中断请求信号可以通过某种规则进行线与,之后与中断控制器的中断请求信号线相连。而处理器系统需要预先知道这个规则,以便正确地处理来自不同PCI设备的中断请求。这一规则被称为中断路由表。
PCI总线在进行数据传递过程时,难免会出现各种各样的错误,因此PCI总线提供了一些错误信号,如PERR#何SERR#信号。其中,当PERR#信号有效时,表示数据传送过程中出现了奇偶校验错误(Special Cycle周期除外);而当SERR#信号有效时,表示当前处理器系统出现了三种错误可能,分别为地址奇偶校验错误、在Special Cycle周期中出现数据奇偶校验错误、系统出现其它严重错误。
如果PCI总线支持64位模式,还需要提供AD[63:32]、C/BE[7:4]、REQ64、ACK64和PAR64这些信号。此外,PCI总线还有一些与JTAG、SMBCLK以及66MHz使能相关的信号,本章并不介绍这些信号。
至此,第1章第2节“PCI总线的信号定义”全部结束。