PCI总线协议基础

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

PCI总线协议基础

PCI总线协议基础

PCI基本总线协议传输机制是猝发成组数据传输。一个分组由一个地址相位和一个或多个数据相位组成。

1.PCI总线的传输控制

PCI总线上所有的数据传输基本上都是由以下三条信号线控制的:

FRAME#:由主设备驱动,说明一次数据传输周期的开始和结束。

IRDY#:由主设备驱动,表示主设备已经作好传送数据的准备。

TRDY#:由从设备驱动,表示从设备已经作好传送数据的准备。

当数据有效时,数据源设备需要无条件设置xRDY#,接收方可以在适当的时间发出xRDY#信号。FRAME#信号有效后的第一个时钟前沿是地址相位的开始,此时,开始传送地址信息和总线命令,下一个时钟前沿进入一个或多个数据相位。每当IRDY#和TRDY#同时有效时,所对应的时钟前沿就使数据在主从设备之间传送。在此期间,可由主设备或从设备分别利用IRDY#和TRDY#的无效而插入等待周期。

一旦主设备设置了IRDY#,将不能再改变IRDY#和FRAME#,直到当前的数据相位完成为止,而此期间不管TRDY#的状态是否发生变化。一旦从设备设置了TRDY#,就不能改变DEVSEL#、TRDY#或STOP#,直到当前的数据相位完成为止。也就是说,只要数据传输已经开始,那么在当前数据相位结束之前,不管是主设备还是从设备都不能撤消命令,必须完成数据传输。

最后一次数据传输时(可能紧接地址相位之后),主设备应撤消FRAME#信号而建立IRDY#,表明主设备已作好了最后一次数据传输的准备。当从设备发出TRDY#信号,表明最后一次数据传输已经完成,接口转入空闲状态,此时FRAME#和IRDY#均被撤消。

对于PCI总线的传输,可总结出以下几条规则:

①FRAME#和IRDY#决定总线的忙/闲状态。当其中一个有效时,表示总线忙;两个都无效时,总线进入空闲状态。

②一旦FRAME#被置为无效,在同一传输期间不能重新置为有效。

③除非设置IRDY#,一般情况下不能设置FRAME#无效(在FRAME#无效后的第一个时钟沿IRDY#必须保持有效)。

④一旦主设备已使IRDY#有效,在当前数据相位完成前,不能改变IRDY#或FRAME#的状态。

⑤在完成最后一个数据相位之后的时钟周期主设备必须使IRDY#无效。

2.PCI总线的寻址

PcI总线定义了三种物理地址空间:内存地址空间、I/O地址空间及配置地址空间,前两种为通常意义的地址空间,第三种配置地址空间用以支持PCI的硬件配置。

PCI总线的地址译码是分散的,每个设备都有自己的地址译码逻辑,从而省去了中央译码逻辑。PCl支持对地址的正向译码和负向译码,所谓正向译码,是指总线上每个设备都监视地址总线上的访问地址,判断是否落在自己的地址范围内,译码速度较快。所谓负向译码,是指要接受未被其他设备在正向译码中接受的所有访问,因此,此种译码方式只能由总线上的一个设备来实现(一般是连接

标准扩展总线的桥)。由于它要等到总线上其他所有设备都拒绝之后才能动作,所以速度较慢。负向译码对于标准扩展总线上地址空间零散的设备是很有用的。

在I/O地址空间,所有韵32位地址都用来表示一个完整的字节地址。启动I/O传输的主设备应确保AD[1~0]正确指示本次传输的最低有效字节(即起始

字节)。字节允许信号和AD[1~0]一起指明传输的数据宽度和双字中被选中的字节,表9.5表示了AD[1~0]和初始数据相位中字节允许的有效组合。

在存储器地址空间,AD[31~2]提供一个双字边界地址,而AD[1—0]不参与地址译码,用来指明主设备要求的数据传输顺序,见表9.6。

在线性增加模式下,每个数据相位后,地址增加一个双字(即加4,对32位传输)或增加两个双字(即加8,对64位传输),直到传输结束。对于Cache行回卷(wayp)模式,传输可从Cache中任意地址偏移处开始,Cache块的长度是由配置空间中的Cache块大小寄存器定义的。访问过程中每次地址增加一个双字(64位传输中地址增加两个双字),一直到Cache块的末尾,然后回卷到同一Cache 块的开始处,再进行到Cache块的剩余部分被传送完为止。

在配置地址空间,由AD[7—2]寻址64个双字寄存器。当一条配置命令的地址被译码,IDSEL有效且AD[1—0]=00时,设备判断是否寻址自己的配置寄存器,如果不是则不理会当前操作。

3.PCI总线驱动的过渡

为了避免多个设备同时驱动一个信号到PCI总线上而产生竞争,在一个设备驱

动到另一个设备驱动之间要设置一个过渡期,又称为交换周期,如图9—6所示中用互相指向对方尾部的双箭头符号表示。不同信号的交换周期出现的时刻可能不同。对于IRDY#、TRDY\STOP#、DEVSEL#等信号,都利用地址相位作为它们的交换周期;而对于FRAME#、C/BE[3~0]#、AD[3l~00]等信号,则是利用数据传输之间的空闲期作为交换周期。

4.PCI总线数据传输过程

PCI采用地址/数据复用技术,每一个PCI总线传送由一个地址相位和一个或多个数据相位组成。地址相位由FRAME#变为有效的时钟周期开始。在地址相位,总线主设备通过C/BE[3~0]#发送总线命令。如果是总线读命令,在地址相位后需要一个交换周期,该周期过后,AD[3l~0]改由从设备驱动,以接纳从设备的数据。对于写操作没有过渡期,直接从地址相位进入数据相位。数据相位的个数取决于要传送的数据个数,一个数据相位至少需要一个PCI时钟周期,在任何一个数据相位都可以插入等待周期。FRAME#从有效变成无效表示当前正处于最后一个数据相位。

总线操作结束有多种方式。在大多数情况下,由从设备和主设备共同撤消准备就绪信号TRDY#和IRDY#。如果从设备不能继续传送,可以设置STOP#信号,表示从设备撤消与总线的连接。所寻址的从设备不存在或者DEVSEL#信号一直为无效状态都可能导致主设备结束当前总线操作,使FRAME#和IRDY#变为无效,回到总线空闲状态。

1)PCI总线上的读操作

图9.6是PCI总线读操作时序的一个例子,从中可以看出,一旦FRAME#信号有效,地址相位便开始,并在时钟2的上升沿处稳定有效。在地址相位内,AD[31~00]上包含有效地址,C/BE#[3~0]上包含一个有效的总线命令。数据相位是从时钟3的上升沿处开始的。在此期间,AD[31一00]上传送的是数据,C /BE#线上的信息用于指定数据线上哪些字节有效(即哪几个字节是当前要传输

相关文档
最新文档