原创 PCI局部总线协议的学习(1)

2007-6-5 11:30 6724 6 10 分类: FPGA/CPLD

  最近在做关于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)



cd58b55f-9dcb-4b75-8c8f-6772361d8755.GIF


作为主设备,必须具备正确处理所有目标终止的能力:



(1)在目标终止时撤消REQ#,保持无效至少两个时钟周期。


(2)因重试而终止时,主设备必须无条件的重复同一请求,直到该交易完成。同一请求指同一地址,同一命令,同一字节使能及写交易的同一写数据。一般的,主设备在发生重试时先撤消REQ#并保持无效至少两个时钟周期,然后重新使REQ#有效,申请使用总线。当获得总线使用权时,进行同一交易的重复。


  1.3.3 延迟交易(Delayed Transaction)



  使用延迟交易的设备有两种:I/O控制器和桥(特别是PCI-PCI桥)。一般的,I/O控制器只能处理一个单延迟交易,桥能够处理多个延迟交易以提高系统性能。延迟交易的目的是及时让出总线,提高总线利用率。


  延迟交易只包含单数据期,不能用于burst传输。


(1)延迟交易基本操作:


  一个延迟交易的完成需经过主设备请求、目标设备完成请求和主设备完成交易三个步骤。


第一步:主设备在总线上产生一个交易,目标设备译码该访问、锁存完成访问所需的请求信息并采用重试终止交易。


第二步:目标设备利用锁存的请求信息,独立完成请求。如读请求就获得读取的数据和完成状态。


第三步:主设备成功的重新仲裁总线并重复同一请求,目标设备译码请求并向主设备返回完成状态,如果是读请求还返回数据。


(2)延迟请求所需的信息,目标设备必须锁存:


    ● 地址;


    ● 命令;


    ● 字节使能;


    ● 奇偶错误响应位(配置空间命令寄存器的bit6)被设置时,锁存地址和数据的奇偶信息;


    ● REQ64#(如果是64位传输);


(3)延迟交易的放弃


    对于一个延迟的请求,在它没有完成之前,要求主设备不断的重复该延迟的请求,因此,当一个延迟的请求还没有在目的总线进行完成尝试时,主设备可以将它放弃。如果目标设备已经在目标总线上进行完成尝试后,主设备必须继续重复操作,直到在目的总线上完成,不能放弃。目标设备可以在下列两种情况下放弃延迟完成:其一,延迟完成时对一个可预取区域的读操作;其二,在215个时钟内主设备没有重复请求所有的延迟完成(读或写,可预取或不可预取)。

PARTNER CONTENT

文章评论4条评论)

登录后参与讨论

用户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

Transaction翻译成了“交易”好像有点不妥啊...

ash_riple_768180695 2007-6-5 13:33

继续啊,关注中。
相关推荐阅读
用户1049668 2010-12-28 15:56
多时钟域设计和触发器的亚稳态
    目前正在做的东西必须跨时钟域(crossing clock domain),信号非同步的问题很让人头疼。在读资料的时候了解到触发器(flip-flopper)输出会出现亚稳态(meta-sta...
用户1049668 2010-12-17 16:09
为何DC综合后网表文件包含assign语句,如何去除assign语句。
Question:问题:I have a feedthrough in my circuit, and the netlist is showing an assign statement for t...
用户1049668 2010-12-17 14:55
group_path
synopsis DC命令使用group_path可以是DC在编译时使用不同的代价比重。如下命令可以使编译器在编译时对输入端口到寄存器,寄存器到输出端口,输入端口到输出端口三中情况分别做优化。grou...
用户1049668 2010-12-17 14:45
DC compile命令
2.  Synopsys Commands                                        Command Reference                      ...
用户1049668 2010-12-10 10:30
dia软件的逻辑图形库 Logic shapes for DIA
This package is the newly updated logic shapes used in DIA, a opensource diagram program. Unpack the...
用户1049668 2010-11-13 22:52
PLL jitter
Jitter Definitions and Specifications 时钟抖动的定义和规定Jitter is a random variation of the output clock. It...
EE直播间
更多
我要评论
4
6
关闭 站长推荐上一条 /3 下一条