PCI总线原理.docx
《PCI总线原理.docx》由会员分享,可在线阅读,更多相关《PCI总线原理.docx(19页珍藏版)》请在冰豆网上搜索。
PCI总线原理
PCI即PeripheralComponentInterconnect,中文意思是“外围器件互联”,是由PCISIG(PCISpecialInterestGroup)推出的一种局部并行总线标准。
在现在电子设备中应用非常广泛,下面我详细介绍下PCI总线的工作原理,希望对大家有所帮助。
z#~1J:
dr)]gho+T/p0
中国通信人博客$T&K}2U!
Ig@
♦PCI总线的过去现在和未来
/Ek4B1V"oh1\+G1g0
PCI总线是由ISA(IndustyStandardArchitecture)总线发展而来的,ISA并行总线有8位和16位两种模式,时钟频率为8MHz,总线带宽为:
8bit*8MHz=64Mbps=8MB/s或16bit*8MHz=128Mbps=16MB/s。
在计算机出现初期的386/486时代,ISA总线的带宽已经算是很宽的了,满足CPU的需求可以说是绰绰有余了。
1987年,IBM公司推出32位MAC(MicroChannelArchitecture)总线,总线带宽达到40MB/s,迫于IBM的压力,Compaq、AST、Epson、HP、Olivetti和NEL等9家公司联合于1988年9月推出EISA(ExtendedISA)总线,EISA总线仍然保持ISA总线的8MHz时钟频率,但将总线位宽提高到32位,总线带宽为:
32bit*8MHz=256Mbps= 32MB/s,并且与ISA总线完全兼容。
中国通信人博客PX,ct/Bw
中国通信人博客/e7iyJ4aI
随着计算机技术的继续发展,CPU的处理速度越来越快,EISA总线的32MB/s带宽已经满足不了CPU的需求,CPU外围总线带宽已经成为制约计算机处理能力继续提高的瓶颈。
1991年下半年,Intel公司首选提出PCI总线的概念,并与IBM、Compaq、AST、HP、DEC等100多家公司成立PCISIG组织,联合推出PCI总线。
中国通信人博客zH}Brs;ig
q"i&n8p4r&HYNM0
PCI总线支持32位和64位两种位宽,时钟频率为33MHz,总线带宽:
32bit*33MHz=1056Mbps =132MB/s或64bit*33MHz=2112Mbps=264MB/s。
中国通信人博客S%vKP,m:
hcXj6a
中国通信人博客E9j3i"qIe'?
;S
随着PCI总线的发展,PCI总线又发展到PCI-X时代,与PCI总线相比,PCI–X总线的位宽未改变,而是将时钟频率进行了提高。
中国通信人博客^Z*`)S{*a,d)w
(r}itlzF'u_0
PCI-X1.0的时钟频率有66MHZ/100MHz/133MHz,总线带宽分别为:
264MB/s,400MB/s和532MB/s(32位),528MB/s,800MB/s和1064MB/s(64位);中国通信人博客#zxX$_$WP
]v#pV:
isP{I0
PCI-X2.0的时钟频率有266MHz/533MHz/1066MHz,总线带宽分别为:
1064MB/s,2132MB/s和4264MB/s(32位),2128MB/s,4264MB/s和8512MB/s(64位),PCI-X与PCI总线在硬件结构上完全兼容。
中国通信人博客3PrH9Fm`'Xez
\4Ib:
y4yL:
ltS0
与PCI总线相比,PCI-X除掉在时钟频率高外,还在传输协议上进行了改进,PCI-X采用了“寄存器到寄存器”的新协议,在新协议模式下,发送方发出的数据信号会被预先送入一个专门的寄存器内,并在寄存器中保存一个时钟周期,接收端只要在这个周期内做出响应,取走数据即可。
而PCI协议中却没有这个缓冲,数据发出去后,如果对方因某种原因没能及时接收,数据将会被丢弃。
8H2d6h6CG0
i:
t,a+xb']3q3hV0
如今,PCI总线已经发展到PCI-Express时代,这是一个串行高速总线,也是由PCISIG推出,分为X1,X2,X4,X8,X12,X16和X32七种模式,X1模式有2对差分线,1对收1对发,X2模式有4对差分线,2对收2对发,其它类推。
PCI-E1.0的速率为2.5Gbps,PCI-E2.0的速率为5.0Gbps,PCIE3.0的速率可达8.0Gbps。
PCIE正在替代着PCI/PCI-X的角色,相信在不久的将来,PCI/PCI-X总线就如同ISA/EISA总线一样,进入历史的博物馆。
PCI总线的发展图如下所示。
c_5mwb&G0
7YP~\7R]w0o0
中国通信人博客:
ci/L%ab:
MAw
♦PCI总线结构中国通信人博客ZL0KK;L9j-l8s%EO(@
PCI总线是一种树型结构,并且独立于CPU总线,可以和CPU总线并行操作。
PCI总线上可以挂接PCI设备和PCI桥片,PCI总线上只允许有一个PCI主设备,其他的均为PCI从设备,而且读写操作只能在主从设备之间进行,从设备之间的数据交换需要通过主设备中转。
PCI总线结构如下图所示。
$Z;fj'W8Bizk"o;M?
0
中国通信人博客'[0k2kKVT9}D
Y$wao+Xi0 PCI即PeripheralComponentInterconnect,中文意思是“外围器件互联”,是由PCISIG(PCISpecialInterestGroup)推出的一种局部并行总线标准。
在现在电子设备中应用非常广泛,下面我详细介绍下PCI总线的工作原理,希望对大家有所帮助。
w0QVf,t(GL(h\0
中国通信人博客7\UDBN.E}[
♦PCI总线管脚功能
l,~$M2w'?
u0
PCI主设备最少需要49根线,从设备最少需要47根线,剩下的线可选。
在介绍PCI管脚功能前,先来说明下PCI管脚信号的类型。
中国通信人博客nda.z6vD
)pK4tf5R3f,z.m0
in:
输入信号;
z;a*\-W!
MFf5t%l0
out:
输出信号;中国通信人博客,SU;CA`sL"F
t/s:
双向三态信号(Tri-state),无效时为高组态;中国通信人博客|+t2yyB0[.x
s/t/s:
持续三态信号(SustainedTri-state),每次由且只由一个单元拥有并驱动的低有效双向、三态信号。
驱动一个s/t/s信号到低的单元在释放该信号浮空之前必须要将它驱动到高电平至少一个周期。
这个特点很重要,在后面我们分析PCI信号质量案例的时候会用到;中国通信人博客/lE^uC.v
o/d:
漏极开路输出(OpenDrain);
5txj@#cQTX.l0
#:
此符号代表该信号在低电平时有效。
中国通信人博客{Q&LxI0J.]+l
&cSn-ClU1B0
PCI总线引脚图如下所示。
中国通信人博客'Mh-J:
r(c#`i"T"Z
中国通信人博客0u5dVew'k0FM
中国通信人博客b)GGf(nk2^
实际使用中需要上拉的信号有:
FRAME#,TRDY#,IRDY#,DEVSEL#,STOP#,PERR#,SERR#,LOCK#,REQ64#,ACK64#,REQ#,GNT#,AD[63:
32],C/BE[7:
4],PAR64等,上拉电阻一般为10kohm,未使用的PCI管脚也要处理,避免悬空。
不需要上拉的信号有AD[31:
0],C/BE[3:
0],PAR,IDSEL,CLK。
中国通信人博客:
MI.h1j2S
z]%[3IR#z7~uQ0
1).系统引脚中国通信人博客|9mI0zY|i(`c
CLK:
in,系统时钟,为所有PCI上的传输及总线仲裁提供时序。
除RST#外,所有PCI信号都在CLK信号的上升沿采样。
Jbv:
f\&_d8zMg0
9O(^X5F~#j'IV0
RST#:
in,异步复位信号。
中国通信人博客'qc3Zyb&W|OSwK
中国通信人博客Sef,ng2_\Q
"wex6|Vn0
2).地址及数据引脚中国通信人博客1L[{3sQ
^'p4L[9\z0
AD[31:
0]:
t/s,地址数据复用引脚。
FRAME#开始变为有效的那个时钟周期内AD[31:
0]上传输的是地址。
对于配置空间和存储空间,这是一个双字节地址,对于I/O空间,这个一个单字节地址。
传输数据时,AD[7:
0]为最低字节数据。
中国通信人博客Z0]#XWR
za0AzdC-vk0Vj0
C/BE[3:
0]#:
t/s,总线命令和字节允许复用引脚。
在AD[31:
0]上传输地址的时候,C[3:
0]上传输的是总线命令,AD[31:
0]上传输数据的时候,BE[3:
0]#用作字节允许,表示哪些通道上的数据是有效的。
BE0#对应最低字节。
中国通信人博客3L!
JKn'kyI
WxmfWy8c9w0
PAR:
t/s,AD[31:
0]和C/BE[3:
0]#上的数据偶效验。
PAR与AD[31:
0]有相同的时序,但延迟一个时钟,在地址段后一个时钟,PAR稳定并有效;对于数据段,在写传输中,PAR在IRDT#有效一个时钟稳定并有效,而在读传输中,PAR在TRDY#有效后一个时钟周期稳定并有效。
一旦PAR有效,它必须保持有效直到当前数据段完成后一个时钟。
在地址段和写数据段,主PCI设备驱动PAR,在读数据段,目标从PCI设备驱动PAR。
中国通信人博客I.{J5|D6SJ
s|Ukw)v.Vs0
3).接口控制引脚
j{4NrzR(XM`r0
cH}[Fep8lH0
FRAME#:
s/t/s,帧开始信号。
由当前总线主设备驱动,以说明一个操作的开始和延续。
FRAME#有效,说明总线开始传输,当FRAME#维持有效时,说明总线传输继续进行,当FRAME#无效时,说明传送的最后一个字节正在进行。
ajf"Q)L0
中国通信人博客G'J/e:
i7M$]z4L
IRDY#:
s/t/s,启动者准备好信号(InitiatorReady)。
说明传输的启动者完成当前数据传输的能力。
在读操作中,IRDY#有效说明总线主设备已准备好接收收据。
在写操作中,它说明AD[3:
0]上已有有效数据。
在IRDY#和TRDY#都有效的时钟周期完成数据传输。
在IRDY#和TRDY#都有效之前,需要插入等待状态。
XA.VRj'g0
中国通信人博客c0qu0N1b~7V
TRDY#:
s/t/s,目标设备准备就绪(TargetReady)。
说明传输的目标设备完成当前的数据传输能力。
在写操作中,TRDY#有效说明目标设备已经准备好接收数据。
在读操作中,它说明AD[31:
0]上已有有效数据。
-c*c;Gj}Z`F0
中国通信人博客.w.Au/nW-Sw
STOP#:
s/t/s,停止信号。
说明当前的目标设备要求总线主设备停止当前传输。
中国通信人博客R*aKMr-gj
IE
U$dR_*cj]0
LOCK#:
s/t/s,锁定信号。
中国通信人博客8b4F]"E*MrQ!
v
中国通信人博客
Q._J$F~XoK
IDSEL:
in,初始化设备选择(InitializationDeviceSelect)。
在配置空间读写操作中,用作片选。
中国通信人博客.xHAF#O$Uy
中国通信人博客^y&W8r#B}
DEVSEL#:
s/t/s,设备选择。
当驱动有效时,说明驱动它的设备已将其地址解码为当前操作的目标设备。
*W8|@\+{z2I0
中国通信人博客d
_zb[vj
4).仲裁引脚中国通信人博客,_$goe%`vs
REQ#:
t/s,申请。
向仲裁器说明该单元想使用总线。
这是一个点对点的信号,每个总线主设备都有自己的REQ#。
中国通信人博客g"Y9MZs
!
n^2Ow-`zz4|)R0
GNT#:
t/s,允许。
仲裁器向申请单元说明其对总线的操作已被允许。
这是一个点对点信号,每个总线主设备都有自己的GNT#。
"UOLnSo;O0
中国通信人博客:
hYoD.R,UV.SI
5).错误反馈引脚中国通信人博客+G8JtWHQlz-x
中国通信人博客'`4U%_:
fu%^sk8`\
PERR#:
s/t/s,奇偶校验错误(ParityError)。
该引脚用于反馈在除特殊周期外的其他传送过程中的数据奇偶校验错误。
PERR#维持三态,在检测到奇偶校验错误后,在数据结束后两个时钟周期,由接收数据的单元驱动PERR#有效。
并至少持续一个时钟周期。
只有发出DEVSEL#的单元才能发出PERR#。
FL0\d2I/Z~9b9D0
中国通信人博客5l#DD[(UtUs^$k
SERR#:
o/d,系统错误(SystemError)。
用于反馈地址奇偶校验错误、特殊周期命令中的数据奇偶校验错误和将引起重大事故的其他灾难性的系统错误。
中国通信人博客L-|wZ$MF
}
!
O.]c.M,CP\0
6).中断引脚
]%tI-zaO6QQ0
INTA#,INTB#,INTC#,INTD#:
o/d,中断输出。
`9I+qc^k0
~;KR.[mz\0
7).高速缓存支持引脚
!
ob+s0|wu0
一个能高速缓存的PCI存储器必须利用这两条高速缓存支持引脚作为输入,以支持写通(write-through)和回写(write-back)。
如果可高速缓存的存储器是位于PCI上,则连接回写高速缓存到PCI的桥路必须利用这两条引脚,且作为输出。
连接写通高速缓存的桥路可以只使用一条引脚SDONE。
SmKI0x4|
ZCR0
U%t!
{C(SR7oT0
SBO#:
in/out,监视补偿。
当其有效时,说明对某条变化线的一次命中。
当SBO#无效而SDONE有效时,说明了一次“干净”的监视结果。
中国通信人博客q/BcL/Hf
3B)Th2ZEW0
SDONE:
in/out,监视进行。
表明对当前操作的监视状态。
当其无效时,说明监视结果仍未定。
当有效时,说明监视已有结果。
;VI1kR4M4wbK0
Yq$H@0L;MTa:
FG;K0
8).64位总线扩充引脚
7VN~(k3tzN,V:
S0
中国通信人博客3i'T0W7NZ6l;@d
AD[63:
32]:
t/s,地址数据复用引脚提供32个附加位。
在一个地址段,传送64位地址的高32位。
在数据段,传送64位中的高32位。
中国通信人博客+apLEWB.e
/q(S^+x.PwH0
C/BE[7:
4]#:
t/s,总线命令和字节允许复用引脚。
中国通信人博客qf9l
L2aT6K_iV
mj{cANs0
REQ64#:
s/t/s,请求64位传输。
当其被当前总线主设备有效驱动时,说明总线主设备想作64位传输。
中国通信人博客5v*t(G`"IF+\k?
\2K(X+A[nE'e0
ACK#:
s/t/s,应答64位传送。
在当前操作所寻址的目标设备有效驱动该信号时,说明目标设备能够进行64位传输,ACK#和DEVSEL#有相同的时序。
中国通信人博客a.f"~+gX:
{
中国通信人博客&\/dmJg8EQ6z]
PAR64:
t/s,高双字偶校验。
J#Ic,ua^g#W$Y3?
_0 PCI即PeripheralComponentInterconnect,中文意思是“外围器件互联”,是由PCISIG(PCISpecialInterestGroup)推出的一种局部并行总线标准。
在现在电子设备中应用非常广泛,下面我详细介绍下PCI总线的工作原理,希望对大家有所帮助。
中国通信人博客rG/bTecU|
YJoYuHG0
♦PCI总线的典型接法中国通信人博客'R3cVM)l;].N
下图为PCI总线的典型接法,点击看清楚大图。
中国通信人博客7WE;EYw$[H
中国通信人博客?
+l|4|-}:
|
-?
{Tu\9Jg0
♦PCI总线上IDSEL管脚的处理方式
4D2q:
\d]vG`L0
主PCI桥片的IDSEL管脚一般通过电阻下拉到地,从PCI设备的IDSEL管脚和AD[11:
31]相连,每个PCI从设备连接其中的一根,且不能重复。
如下图所示。
中国通信人博客M+_-j-kq"mL*Z@$f
中国通信人博客5`6Xc7`%fE3t
中国通信人博客MqE7WdS[`"oL
♦PCI信号的驱动方式中国通信人博客``+V'eX1}P2G_
PCI信号为半波驱动方式,为了更好的说明什么是半波驱动方式,下面我用一个仿真实例来说明。
下图为仿真链路。
a\R/BlsY0
"Sk6?
Xj7^I0
中国通信人博客D+`3b*BBW.{
仿真出来的波形如下图所示。
(示意图)
?
j$R#O8Xy*dQa"T0
中国通信人博客}Le2Ql4?
Ue
中国通信人博客D"oOCR#f8f
中国通信人博客9A'i]"b)q*?
从上图可以看出,PCI_OUT_3.3V输出先是以大约2.3V的半幅度来驱动总线,经过大约2ns延迟后,信号到达接收端,接收端阻抗不匹配,将信号反射回始端,反射信号经过2ns的延迟后到达始端,驱动信号与反射信号在始端出现叠加,使PCI_OUT_3.3V在大约4ns的位置达到全幅度3.3V。
之后经过短暂振荡后趋于平衡。
由于大多数PCI器件片内都内置了限幅器件,所以PCI信号在不在始端添加串行匹配电阻都可以使PCI信号很快平稳。
只是加串阻后,信号幅度更低,使PCI器件的使用寿命更长。
中国通信人博客rB;Uu`xG%kg5q
PCI即PeripheralComponentInterconnect,中文意思是“外围器件互联”,是由PCISIG(PCISpecialInterestGroup)推出的一种局部并行总线标准。
在现在电子设备中应用非常广泛,下面我详细介绍下PCI总线的工作原理,希望对大家有所帮助。
中国通信人博客b;`$jXk/D7Qo
v2Pm%g0_`5\$q
J0
♦PCI仲裁器工作原理中国通信人博客)p3]2cO$~^
假设PCI仲裁器上接三个PCI设备,如下图所示。
中国通信人博客!
k7zCt1s'a`_
中国通信人博客'eBJWw_&k
中国通信人博客xLY&?
4H$e7K'Fh
假定PCI1,PCI2,PCI3三个设备的优先级相同,上电后,PCI总线仲裁器会将PCI1设备的GNT1信号驱动为低电平(有效)。
即PCI1占用PCI总线。
如果此时PCI1上没有数据传输,但PCI2上有数据要传输,PCI2设备就会驱动REQ2为低电平来向仲裁器发出PCI总线使用请求。
仲裁器在时钟的上升沿采样到REQ2信号,在下一个时钟沿,PCI2将FRAME和IRDY驱动为低电平(FRAME和IRDY是所有PCI设备共用的),仲裁器在时钟的上升沿采样到这两个信号后,就将GNT2驱动为低电平,应答PCI2的请求,这样,PCI2就拥有了PCI总线的使用权。
中国通信人博客9e#U]7E|7v1Y2i^
中国通信人博客.Z]G/A1_.Ra*DOO
这里有一个问题,为什么PCI总线仲裁器不在采样到REQ2信号有效后立即将GNT2置低,将PCI总线的使用权交给PCI2设备,而是要等到PCI2设备的FRAME和IRDY信号有效后才执行呢?
o[,|}nu%y0
tSC\:
];c/t$K;KS$K0
这主要是仲裁器避免某些PCI设备申请总线使用权而实际上不使用,所以要等到FRAME和IRDY信号有效后(表示数据传输准备就绪)才授权使用总线。
如果仲裁器在采样到REQ2有效后,一直没有采样到FRAME和IRDY信号有效,仲裁器会不会一直等待下去呢?
答案是不会,仲裁器内部有一个定时器,等到定时器超时后,仲裁器就不再等了。
Wr,|G-zt;~+H0
中国通信人博客RMqb#M^#L
仲裁规则:
优先级高设备抢占优先级低设备资源
0_8@R
e.w$v!
?
0
假设三个PCI设备的优先级顺序为:
PCI3>PCI2>PCI1。
Z%^sbo*s]4OZz0
某个时刻,PCI1正在使用PCI总线传输数据,如果此时PCI2想要使用PCI总线,于是将REQ2驱动为低,向PCI总线仲裁器申请PCI总线的使用权,此时REQ1和REQ2都处于有效状态,虽然PCI2的优先级高于PCI1,但是总线仲裁器不会马上响应PCI2的请求。
而是等待PCI1完成一次操作(注意:
是一次操作,不是全部)后,PCI1将FRAME和IRDY总线驱动为高(每完成一次操作都需要进行此操作的)。
中国通信人博客bt3B{P
中国通信人博客H:
t'OK&\
d
PCI2探测到PCI总线空闲后,将FRAME和IRDY信号驱动为低。
总线仲裁器采样到这两个信号有效后,将GNT1驱动为高,同时将GNT2驱动为低,将总线的使用权转交给PCI2。
中国通信人博客.ZqQ3QL5S
此时,如果PCI1完成了全部传输,会将REQ1驱动为高。
中国通信人博客k]^J4o@~}v
y
fSr+]SW?
"j*p0
如果PCI1还有数据等待传输,那么它会将REQ1一直保持为低电平,一直进行总线申请。
一直等待到PCI2完成所有操作后,还会将PCI总线的使用权释放给PCI1。
中国通信人博客yK#qPXRY
L8DomgI)FJ~6}0
♦PCI操作类型
!
tV9b!
rkS0
前面已经说过了,在FRAME信号有效后的第一时钟周期,AD[31:
0]总线上传输的是目标PCI器件的地址,C/BE[3:
0]上传输的操作命令类型。
如下图所示。
中国通信人博客!
~)\l:
{R0WQ
中国通信人博客k"[h7_J2QU
中国通信人博客GG3L7}!
k-Oa
♦PCI总线的读写时序中国通信人博客,F^l(^3o
PCI总线写时序如下图所示。
(点击看清楚大图)
Vr&dL}]5y-I0
(BtYNwR&r,oG0
(L0uXZy2mk0
MR+UJN%aE0v0
如上图所示,在FRAME#有效后的第一个时钟周期内,AD上传输的是要写入目标PCI设备的地址信息,C/BE#上传输的是命令类型(I/O写命令为0011),DEVSEL#信号有效后,表明目标PCI设备已经被选择到,IRDY#和TRDY#同时有效后,主PCI设备向目标PCI设备中传输要写入的数据,在第5个时钟周期时,IRD