您的位置:首页 > 其它

PCI/PCIe 的那些事(1)- 总线基本知识

2016-01-05 21:46 1176 查看

PCI 总线

PCI: 周边组件互联局部总线 (Peripheral Component Interconnect Local Bus)

1992年,Intel发布了PCI 1.0规范, 用于替代老的ISA总线。PCI总线的产生主要解决了ISA总线的以下几个缺点:

总线容量不够

地址宽度不够

不支持即插即用

PCI采用的是树型拓扑结构,每一个PCI device相当于树的一个结点或者叶子,对整个PCI Bus的遍历可以采用遍历树的算法,在对树进行遍历之后,可以获得整个PCI Bus的资源需求情况,从而进行统一的分配。任何一下结点的损坏也不会造成整个树的崩溃,因而具有鲁棒性。

电气信号

第一组:系统信号, 时钟信号(CLK)和复位信号(PCIRST#)

第二组:地址/数据,命令/使能信号

第三组:传输控制信号,FRAME#, TRDY#, IRDY#, STOP#, DEVSEL#, IDSEL

第四组:仲裁请求和仲裁允许, REQ#, GNT#

第五组:终端信号

第六组:错误校验信号

第七组:PCI64扩展信号

总线操作

PCI总线操作的一具典型的特点就是支持BURST传输。什么是BURST传输呢?首先你得知道PCI的数据总线和地址总线是复用的。这就是说在同样的总线上,一段时间是地址,一段时间是传输数据。如果没有BURST传输,那么完成一次数据传输之前都得发一次地址,这就是总线有一半的时间都在传地址,这使得总线和利用率很低。有了BURST传输,可以先发一个起始地址和数据长度N, 之后传输数据0~N-1就可以直接发数据,不用再发地址了。



PCI总线典型操作分为两部分:

地址相, 当FRAME#有效时,C/BE#上面出现4位交易码,AD上面是地址数据

数据相,当DEVSEL#有效时,AD上面出现传输数据



PCI总线的具体交易过程如下:

主设备发起#REQ, 申请总线的使用权

得到仲裁允许,#GRT

FRAME#信号拉低,交易地址放入AD, 交易码放入C/BE#

如果从设备就在这个总线上,那么地址译码成功后,从设备会把DEVSEL#拉低,就可以开妈传输数据了

如果从设务不是直接连在总线上,而是跨过了PCI-PCI bridge。那么bridge就会启动一个请求重传的机制。即通过控制信号通知主设备重试,在此同时将自己作为主设备向下一级总线转发上级总线的交易请求,这样,当下一次主设备再次发起交易的时候,bridge上面已经有了从设备获取来的数据,交易就可以正常进行了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: