在介绍PCI总线信号之前,有两个名称需要解释:主设备和从设备。按照PCI总线协议,总线上所有引发PCI传输事务的实体都是主设备,凡是响应传输事务的实体都是从设备,从设备又称为目标设备。主设备应具备处理能力,能对总线进行控制,即当一个设备作为主设备时,它就是一个总线主控器。
在一个PCI系统中,接口信号通常分为必备和可选的两大类。如果只作为从设备,则至少需要47根信号线;若作为主设备,则需要49根信号线。利用这些信号线可以处理数据、地址,实现接口控制、仲裁及系统功能。下面根据主设备与从设备的不同,按功能分组将这些信号表示在图9.5中。可以看出有些信号名称中有“#”号,这是PCI总线规范中的信号表示法。信号名称后面有“#”号表示低电平有效,否则表示高电平有效;对于有两种意义的信号(如c/BE[0]#),低电平时表示有“#”号的信号(例中的BE[0])起作用,高电平时表示没有“#”号的信号(例中的C)起作用。“#”相当于通常表示中的“横杠”。
1.信号类型说明
在PCI总线规范中对信号类型作了规定。下面的类型是从设备(连接在PCI总线上的每一台设备)角度定义的,而不是从仲裁器和中央资源信号角度定义的。
in:表示标准输入信号。
out:表示标准输出信号。
t/s:表示双向的三态信号。
s/t/s:表示持续的且低电平有效的三态信号,该信号在某一时刻只能属于一个主设备并被其驱动,它从有效变为浮空(高阻状态)之前必须保证使其具有至少一个时钟周期的高电平状态,另一主设备要想驱动它,至少要等待该信号的原有驱动者将其释放(变为三态)一个时钟周期之后才能开始。
o/d:表示漏极开路,以线或的形式允许多个设备共同驱动和分享。
2.PCI总线信号描述
1)系统信号
(1)CLK in:PCI系统总线时钟
对于所有的PCI设备该信号均为输入,其频率{zg}可达33 MHz,{zd1}频率一般为0 Hz(Dc)。除RST#、INTA#、INTB#、INTC#及INTD#之外,所有其他PCI信号都在CLK的上升沿有效(或采样)。
(2)RSI# in:复位信号
用于复位总线上的接口逻辑,并使PCI专用的寄存器、序列器和有关信号复位到指定的状态。该信号低电平有效,在它的作用下PCI总线的所有输出信号处于高阻状态,SERR#被浮空。
2)地址与数据信号
(1)AD[31~00]t/s:地址数据多路复用信号
这是一组信号,双向三态,为地址和数据公用。在FRAME#有效(低电平)时,表示地址相位开始,该组信号线上传送的是32位物理地址;对于I/O端口,这是一个字节地址;对于配置空间或存储器空间,是双字地址。在数据传送相位,该组信号线上传送数据信号,AD[7~0]为{zd1}字节数据,而AD[31~24]为{zg}字节数据。当IRDY#有效时,表示写数据稳定有效,而TRDY#有效时,则表示读数据稳定有效。在:IRDY#和TRDY#都有效期间传送数据。
(2)C/BE[3~0]# t/s:总线命令和字节允许复用信号
双向三态信号。在地址相位中,这四条线上传输的是总线命令;在数据相位内,它们传输的是字节允许信号,表明整个数据相位中AD[31~00]上哪些字节为有效数据,C/BE0#~C/BE3#分别对应字节0~3。
(3)PAR(Paritv)t/s:奇偶校验信号
双向三态。该信号用于对AD[31~00]和c/BE[3~0]上的信号进行奇偶校验,以保证数据的准确性。对于地址信号,在地址相位之后的一个时钟周期PAR稳定有效;对于数据信号,在IRDY#(写操作)或TRDY#(读操作)有效之后的一个时钟周期PAR稳定并有效,一旦PAR有效,它将保持到当前数据相位结束后一个时钟。在地址相位和写操作的数据相位,PAR由主设备驱动,而在读操作的数据相位,则由从设备驱动。
3)接口控制信号
接口控制信号共有7个,对这些信号本身及相互间配合的理解是学习PCI总线的一个关键。
(1) FRAME#(Frame)s/t/s:帧周期信号
双向三态,低电平有效。该信号由当前主设备驱动,用来表示一个总线周期的开始和结束。该信号有效,表示总线传输操作开始,此时AD[3l~0]和C/BE[3~0]上传送的是有效地址和命令。只要该信号有效,总线传输就一直进行着。当FRAME#变为无效时,表示总线传输事务进入{zh1}一个数据相位或该事务已经结束。
(2)IRDY#(Initiator Ready)s/t/s:主设备准备就绪信号
双向三态,低电平有效,由主设备驱动。该信号有效表明引起本次传输的设备为当前数据相位做好了准备,但要与TRDY#配合,它们同时有效才能完成数据传输。在写周期,IRDY#表示AD[31~0]上数据有效;在读周期,该信号表示主控设备已准备好接收数据。如果IRDY#和TRDY#没有同时有效,则插入等待周期。
(3)TRDY#(17arget Ready)s/t/s:从设备准备就绪信号 ;双向三态,低电平有效,由从设备驱动。该信号有效表示从设备已作好当前数据传输的准备工作,可以进行相应的数据传输。同样,该信号要与IRDY#配合使用,二者同时有效才能传输数据。在写周期内,该信号有效表示从设备已作好接收数据的准备;在读周期内,该信号有效表示有效数据已提交到AD[31~0]上。如果TRDY#和IRDY#没有同时有效,则插入等待周期。
(4)STOP#(stop)s/t/s:从设备请求主设备停止当前数据传输事务
双向三态,低电平有效,由从设备驱动,用于请求总线主设备停止当前数据传送。
(5)LOCK#(Lock)s/t/s:锁定信号
双向三态信号,低电平有效,由主设备驱动。PCI利用该信号提供一种互斥访问机制。该信号有效表示驱动它的设备对桥所进行的一个原子操作(atomic operation)可能需要多次传输才能完成,此期间该桥路被独占,而非互斥性传输事务可以在未加锁的桥上进行。LOCK#有自己的协议,并和GNt#信号合作。即使有几个不同的设备在使用总线,但对LOCK#的控制权只属于某一个主设备。对主桥、PCI-T0-PCI桥以及扩展总线桥的传输事务都可以加锁。
(6)IDSEL#(Initialization Device Select)in:初始化设备选择信号
输入信号,高电平有效,在参数配置读/写传输期间用作芯片选择(片选)。
(7)1)EVSEL#(Device Selecl)s/t/s:设备选择信号
双向三态,低电平有效,由从设备驱动。当该信号由某个设备驱动时(输出),表示所译码的地址属于该设备的地址范围;当作为输入信号时,可以判断总线上是否有设备被选中。
4)仲裁信号(主设备使用)
(1)REQ#(Request)t/s:总线占用请求信号
双向三态,低电平有效,由希望成为总线主控设备的设备驱动。它是一个点对点信号,并且每一个主控设备都有自己的REQ#。
(2)GNT#(Grant)t/s:总线占用允许信号
双向三态,低电平有效。当该信号有效时表示总线占用请求被响应。这也是点对点信号,每个总线主控设备都有自己的GNT#。
5)错误报告信号
(1)PERR#(Parity Error)s/t/s:数据奇偶校验错信号
双向三态,低电平有效。当该信号有效,表示总线数据奇偶错,但该信号不报告特殊周期中的数据奇偶错。一个设备只有在响应设备选择信号(DEVSEL#)和完成数据相位之后,才能报告一个PERR#。对于每个数据接收设备,如果发现数据有错误,就应在数据收到后的两个时钟周期内将PERR#xx。该信号的持续时间与数据相位的多少有关。如果是一个数据相位,则最小持续时间为一个时钟周期;若是一连串的数据相位且每个数据相位都有错,那么,PERR#的持续时间将多于一个时钟周期。该信号是s/t/s信号,和所有s/t/s信号一样,在被释放到三态之前,必须为高电平并维持一个时钟周期。另外,对于数据奇偶错的报告既不能丢失也不能推迟。
(2)SERR#(System Error)o/d:系统错误报告信号
漏极开路信号,低电平有效。该信号用于报告地址奇偶错、数据奇偶错、命令错等可能引起灾难性后果的系统错误。SERR#信号一般接至微处理器的NMI引脚上,如果系统不希望产生非屏蔽中断,就应该采用其他方法来实现SERR#的报告。由于该信号是一个漏极开路信号,因此,发现错误的设备需将它驱动一个PCI时钟周期。SERR#信号的发出要与时钟同步,并满足所有总线信号的建立和保持的时间需求。而SERR#恢复成无效由中央资源负责,此时需要进行微小的上拉(值与上拉s/t/s信号时相同)并持续3个时钟周期。
6)中断请求信号(可选)
(1)INTx#(Interrupt)o/d:中断请求信号
漏极开路信号,电平触发,低电平有效。此类信号的建立与撤消与时钟不同步。对于单功能设备,只有一条中断线,而多功能设备最多可有四条中断线。在前一种情况下,只能使用INTA#,其他三条中断线没有意义。所谓多功能的设备是指将几仑相互独立的功能集中在一个设备中。PCI总线中共有四条中断请求线,分别是INTA#、INTB#、INTC#和INTD#,均为漏极开路信号,其中后三个只能用于多功能设备。
一个多功能设备上的任何功能都可对应于四条中断请求线中的任何一条,即各功能与中断请求线之间的对应关系是任意的,没有附加限制。二者的最终对应关系由中断引脚寄存器定义,因而具有很大的灵活性。如果一个设备要实现一个中断,就定义为INTA#;要实现两个中断,则定义为INTA#和INTB#,其他情况依此类推。对于多功能设备,可以多个功能公用同一条中断请求线,或者各自占一条,或者是两种情况的组合;而单功能设备,只能使用一条中断请求线。
7)高速缓冲支持信号
为了使具有缓存功能的PCI存储器能够和通写式(Write-through)或回写式(Write-back)的Cache操作相配合,PCI总线设置了两个高速缓冲支持信号。
(1)SBO#(Snoop Back 0ff)in/out:窥视返回信号
双向,低电平有效。当该信号有效时,表示命中了一个修改行。
(2)SDONE#(Snoop Done)in/out:查询完成信号
双向,低电平有效。当它有效时,表示查询已经完成,反之,查询仍在进行中。
&nb sp; 说明:这两个信号对应的引脚在PCI总线规范V2.2中被作为保留使用。
8)64位扩展信号
(1)REQ64# s/t/s:64位传输请求信号
双向三态,低电平有效。该信号用于64位数据传输,由主设备驱动,时序与FRAME#相同。
(2)ACK64# s/t/s:64位传输响应信号
双向三态,低电平有效,由从设备驱动。该信号有效表明从设备将启用64位通道传输数据,其时序与DEVSEL#相同。
(3)AD[63~32]t/s:扩展的32位地址和数据复用线
(4)C/BE[7~4]# t/s:高32位总线命令和字节允许信号
(5)PAR64#t/s:高32位奇偶校验信号,是AD[63~32]和C/BE[7~4]}}的校验位。
9)JTAG/边界扫描引脚(可选)
IEEEll49.1标准,即测试访问端口和边界扫描体系结构,是可选的PCI设备接口。该标准规定了设计1149.1兼容集成电路的规则和性能参数。设备测试访问口(Test Access Port TAP)使用五个信号,其中一个为可选信号。
(1)TCK(Test Clock)in:测试时钟
在TAP操作期间,该信号用来测试时钟状态信息和设备的输入/输出信息。
(2)TDI(Test Data Input)in:测试数据输入
在TAP操作期间,该信号用来把测试数据和测试命令串行输入到设备。
(3)TDO(Test Data Output)out:测试数据输出
在TAP操作期间,该信号用来串行输出设备中的测试数据和测试命令。
(4)TMS(Tesl Mode Select)in:测试模式选择
该信号用来控制在设备中的TAP控制器的状态。
(5)TRST#(Test Reset)in:测试复位
该信号可用来对TAP控制器进行异步复位,为可选信号。
PCI总线使用124线总线插槽,用于连接总线板卡,板卡的总线连接头上每边各有62个引线。扩充到64位时,总线插槽需增加64线,变成188线。相应地,板卡的总线连接头上每边变成94线。限于篇幅,这里将不列举PcI总线插槽及板卡的全部188个引脚,读者如有需要,可查阅有关资料或上网浏览。
注意
①5 V系统环境下的PCI总线插槽和PCI总线板卡与3.3 V系统环境下的插槽和板卡在物理结构上是有区别的。5 V系统的插槽利用第五十和第五十一管脚位置安排了一个凸起部分(总线规范中原文为Connect Key),板卡的第五十和第五十一管脚位置安排了一个缺口(Key Way);而3.3 V系统的插槽的凸起部分以及板卡的缺口安排在第十二和第十三管脚位置。这样,5 V板卡与3.3 V板卡不会互相插错。至于在两种电源环境下都能使用的通用板卡,这两处的凸起和缺口都有。两种(5 V与3.3 V)支持64位扩展的总线插槽都在第62脚与第63脚之间安排了一个凸起,与此相对应,三种(5 V、3.3 V及通用)支持64位扩展的板卡在该位置开了一个缺口。
②在所有的PcI总线插槽和板卡上都包含了两个与接插件相关的引脚,即Prsntl#和Prsnt2#,用来表示板卡是否物理存在于插槽上以及提供板卡电源总需求信息。表9.3说明了Prsntl#和Prsnt2#设置组合的含义。