四、PCI总线上的数据传输过程

本节所给的时序图主要表示总线以32位方式执行有关操作时,相应信号之间的关系。在具体图示中,当以信号以虚线画出时,则表示没有设备驱动它,但若此虚线处在基准位置时,仍然可表示它具有一个稳定的值;当三态信号以虚线方式画在高、低状态之间时,说明它的值是不稳定的(例如,AD线或C/BE#线);当一条实线编程连续的短线时,表明它由原来的被驱动状态变成了现在的三态;当一实线在由低向高跳变后变为连续的短线时,则说明该信号先经预充电变为高电平,然后变成三态(释放)。上述关于信号状态画法的约定在以后的章节中同样适用。

4.1、总线上的读操作

下图表示了总线上一次读操作中有关信号的变化情况。

四、PCI总线上的数据传输过程_第1张图片

从图中可以看出,一旦FRAME#信号有效,地址期就开始,并在时钟2的上升沿处稳定有效。在地址期内,AD[31..0]上包含有有效地址,C/BE[3..0]上含有一个有效的总线命令。数据期时从时钟3的上升沿处开始的,在此期间,AD[31..0]线上传送的时数据,而C/BE#线上的信息却指出数据线上的哪些字节是有效的(即哪几个字节时当前要传输的)。要特别指出的是无论是读操作还是后边讲的写操作,从数据期的开始一直到传输的完成,C/BE#的输出缓冲器必须始终保持有效状态。

图中的DEVSEL#信号和TRDY#信号是由被地址期内所发地址选中的设备(从设备)提供的,但要保证TRDY#在DEVSEL#之后出现。而IRDY#信号是发起读操作的设备(主设备)根据总线的占用情况自动发出的。数据的真正传输是在IRDY#和TRDY#同时有效的时钟前沿进行的,这两个信号的其中之一无效时,就表示需插入等待周期,此时不进行数据传输。这说明,一个数据期可以包含一次数据传输和若干个等待周期。在上图中,时钟4、6、8各进行了一次数据传输,而在时钟3、5、7处插入了等待周期。

在读操作中的地址期和数据期之间,AD线上要有一个交换周期,这需要由从设备利用TRDY#强制实现(也就是TRDY#的发出必须比地址的稳定有效慢一拍)。但在交换期过后并且有DEVSEL#信号时,从设备必须驱动AD线。

在时钟7处尽管是最后一个数据期,但由于主设备因某种原因不能完成最后一次传输(具体表现是此时IRDY#无效),故FRAME#不能撤销,只有在时钟8处,IRDY#变为有效后,FRAME#信号才能撤销。

3、总线上的写操作

下图表示总线上一次写操作的时序关系。

四、PCI总线上的数据传输过程_第2张图片

由上图可知,总线上的写操作与读操作类似,也是FRAME#信号的有效预示着地址周期的开始,且在时钟2的上升沿处达到稳定有效。整个数据期也与读操作基本相同,可以自行分析。只是在第三个数据期中由从设备连续插入了三个等待周期,时钟5处传输双方均插入了等待周期。

值得注意的是,当FRAME#撤销时必须要有IRDY#发出位前提,以表明时最后一个数据期。另外,从上图可看出,主设备在是时钟5处因撤销了IRDY#而插入等待周期,表明要写的数据将延迟发送,但此时,字节使能信号不受等待周期的影响,不得延迟发送。

要说写操作与读操作的不同点,那就是在写操作中,地址期与数据期之间没有交换周期,这是因为,在此类操作中,数据和地址是由同一个设备(主设备)发出的。

最后强调的是:上述的读/写操作均以多个数据期为例来说明的。如果是一个数据期时,FRAME#信号在没有等待周期的情况下,应在地址期(读操作应在交换周期)过后即撤销。若由等待周期时,请自行分析其时序关系。

3.3、传输的终止过程

 

你可能感兴趣的:(PCI接口及FPGA实现)