最近在做关于PCI的IP,所以要先学习一下PCI局部总线协议。将学习的内容陆续写出来,表示自己已经理解这一部分了。
1 总线交易
1.1 总线读交易(Read Transaction)
1.2 总线写交易(Write Transaction)
1.3 交易的终止(Transaction Termination)
所有交易的结束标志是FRAME#信号和IRDY#信号均已撤消而进入总线空闲状态。
1.3.1 由主设备发起的终止(Master Initiated Termination)
(1)正常终止(normal termination):
(2)废止终止(abort termination):
总之,在所有PCI交易中,FRAME#和IRDY#应遵循如下原则:
(1)FRAME#和它相对应的IRDY#定义了总线的空闲状态和忙状态。当二者之一有效时,总线处于忙状态;当二者都无效时,总线处于空闲状态。
(2)一旦FRAME#被撤消,则同一个交易期内不能重新有效。
(3)除非IRDY#有效,否则不能撤消FRAME#(IRDY#必须在撤消FRAME#的第一个时钟边沿有效)。
(4)一旦主设备建立了IRDY#,在当前数据期完成之前,它不能改变IRDY#或FRAME#。
(5)最后一个数据期完成后,主设备必须撤消IRDY#信号。
1.3.2 由目标设备发起的终止(Target Initiated Termination)
(1)重试(Retry):没有数据传输,目标忙,暂不能进行交易。
(2)断开(Disconnect):分为有数据断开和无数据断开两种情形。
有数据断开(disconnect with data):
无数据断开情形1(disconnect1 without data):
无数据断开情形2(disconnect2 without data):
(3)目标废止终止(Target Abort)
作为主设备,必须具备正确处理所有目标终止的能力:
(1)在目标终止时撤消REQ#,保持无效至少两个时钟周期。
(2)因重试而终止时,主设备必须无条件的重复同一请求,直到该交易完成。同一请求指同一地址,同一命令,同一字节使能及写交易的同一写数据。一般的,主设备在发生重试时先撤消REQ#并保持无效至少两个时钟周期,然后重新使REQ#有效,申请使用总线。当获得总线使用权时,进行同一交易的重复。
1.3.3 延迟交易(Delayed Transaction)
使用延迟交易的设备有两种:I/O控制器和桥(特别是PCI-PCI桥)。一般的,I/O控制器只能处理一个单延迟交易,桥能够处理多个延迟交易以提高系统性能。延迟交易的目的是及时让出总线,提高总线利用率。
延迟交易只包含单数据期,不能用于burst传输。
(1)延迟交易基本操作:
一个延迟交易的完成需经过主设备请求、目标设备完成请求和主设备完成交易三个步骤。
第一步:主设备在总线上产生一个交易,目标设备译码该访问、锁存完成访问所需的请求信息并采用重试终止交易。
第二步:目标设备利用锁存的请求信息,独立完成请求。如读请求就获得读取的数据和完成状态。
第三步:主设备成功的重新仲裁总线并重复同一请求,目标设备译码请求并向主设备返回完成状态,如果是读请求还返回数据。
(2)延迟请求所需的信息,目标设备必须锁存:
● 地址;
● 命令;
● 字节使能;
● 奇偶错误响应位(配置空间命令寄存器的bit6)被设置时,锁存地址和数据的奇偶信息;
● REQ64#(如果是64位传输);
(3)延迟交易的放弃
对于一个延迟的请求,在它没有完成之前,要求主设备不断的重复该延迟的请求,因此,当一个延迟的请求还没有在目的总线进行完成尝试时,主设备可以将它放弃。如果目标设备已经在目标总线上进行完成尝试后,主设备必须继续重复操作,直到在目的总线上完成,不能放弃。目标设备可以在下列两种情况下放弃延迟完成:其一,延迟完成时对一个可预取区域的读操作;其二,在215个时钟内主设备没有重复请求所有的延迟完成(读或写,可预取或不可预取)。
用户519857 2010-3-26 09:49
用户1472227 2009-6-21 00:02
用户82726 2007-6-28 09:28
很多地方都把"transaction"都翻译成 交易 哦
感觉没什么不好啊
用户1049668 2007-6-6 13:40
要么把“Transaction”翻译成“操作”,我觉得都无所谓。
用户1134543 2007-6-6 12:09
ash_riple_768180695 2007-6-5 13:33