PCI总线学习(二)---> PCI总线仲裁

幻灯片 9

 

 

在一定时间内,可能有多个bus master请求使用总线传输数据,每个请求总线的master都会assert它的REQ#信号,来告诉仲裁器他要申请使用总线,仲裁器一般集成于芯片组中。

 


幻灯片 10

 

 

如果仲裁器是可编程的,启动配置软件可以通过读取Max_Lat配置寄存器来决定每个bus mater的优先级。如果总裁器件不支持编程,则可以忽略这个寄存器。

 


幻灯片 11

 

 

A,B是需要经常访问总线的,XYZ是不经常访问总线的,所以仲裁器决定的他们访问总线的顺序可能为:

A->B->X->A->B->Y->A->B->Z.。。。

 

幻灯片 12

 

 

如果一个master发起了一个transaction之后,立即又要进行另一个transaction,则它会在assert了FRAME#信号,开始当前transaction后继续保持REQ#信号。否则,master会deassert REQ#信号。

      隐藏总线仲裁:PCI规范允许当前bus master进行数据传输的同时进行总线仲裁,如果仲裁器决定将下次transaction的总线所有权给另一个master,则它会移除当前master的GNT#信号,而向下一个总线所有者发出GNT#信号。

      Bus parking:总线仲裁可以设计实现bus parking机制,当总线处于空闲状态时,仲裁器可以assert一个默认的bus master的GNT#信号,这样,当这个bus master申请总线的时候,它可以立即得到总线所有权。如果接下来这个bus master还要用总线,则它不需要assert REQ#信号,而只需看一下如果总线处于空闲状态并且自己的GNT#信号处于assert状态,那么它就可以立即发起transaction。将bus park在哪个master上取决于仲裁器的设计,spec推荐将bus park在最后一个使用总线的master上。

如果仲裁器实现了bus parking,则当总线空闲时,bus park在的那个master要负责驱动AD,C/BE 和par信号,防止它们悬空。如果仲裁没有实现bus parking机制,则仲裁器要负责这件事情。   

 

幻灯片 13

 

 

LT (Master Latency Timer):定义了bus master在获得了总线所有权,并开始了一次transaction后,它允许保持总线所有权的最少时间。

工作方式:发起transaction后,master的LT初始化为写入的起始值。接下来在每个时钟上升沿,LT减一。如果master在进行一次transaction时,仲裁器移除了它的GNT# 信号,此时,当前LT尚未过期的话(LT>0),则它可以继续拥有总线,直到结束了这次burst transaction或者LT过期才释放总线。

 

Min_Gnt (read only) 和 PCI bus speed 共同决定LT值。


 

幻灯片 14

 

 

Example of Arbitration

Clock1的上升沿,仲裁器检测到master A申请总线,于是在第一个clock中assert GNT# A,在第一个clock中master B开始申请使用总线。

Clock2的上升沿,master A检测到自己的GNT# asserted,表明总线已经分给自己,并且FRAME#信号和IRDY#信号均为deassert状态,表明总线空闲,所以在clock2期间assert FRAME#信号开始第一个transaction,并在address phase驱动起始地址和command数据到AD和C/BE线上。因为master A还有一个transaction要进行,所以他保持它的REQ#信号处于assert状态。总裁器在上升沿时检测到两个master均在申请总线,于是进行总线仲裁,仲裁结果是master B胜,所以在clock2期间deassert GNT# A,仲裁器会延时一个周期assert GNT#B,因为如果同时的话可能会引起AD线的竞争(总线技术上可能处于idle)

Clock3的上升沿,master A检测到自己的GNT#信号被deassert,即总线被强占,但由于它的LT尚未过期,所以可以继续拥有总线,master A开始第一个DATA phase write,drive data和byte enable信号到总线上,并assert IRDY#信号表明数据已经准备好。Clock3期间,仲裁器assert GNT#B。

Clock4的上升沿,IRDY#信号和TRDY#信号均为asserted,第一个data传输完成。Master B会在每个clock上升沿持续检测它的GNT#信号直到它取得总线。

Clock5的上升沿IRDY#信号和TRDY#信号均为asserted,第二个data传输完成。Clock5期间,master A 保持IRDY#  asserted 并deassert FRAME#信号,表明这是最后一个data phase。

Clock6的上升沿,IRDY#信号和TRDY#信号均为asserted,第三个data传输完成。Clock6期间,master A deassert IRDY#信号,总线返回到空闲状态。

Clock7的上升沿,master B检测到总线空闲,并且自己的GNT#处于assert状态,表明它拥有总线,于是在clock7期间关闭REQ#信号并assert它的FRAME#信号开始transaction,master B驱动地址和command命令到总线上。

Clock8的上升沿,仲裁器检测到master B REQ#deassert而master A REQ#still asserted,则仲裁器在clock8期间deassert master B的GNT#并assert master A的GNT#。Clock8期间,master B deassert它的FRAME#信号表明这是它唯一的data phase,并驱动data和byte enable到总线,它assert它的IRDY#信号表明数据已经准备好。

Clock9的上升沿,,IRDY#信号和TRDY#信号均为asserted,data传输完成。在clock9期间,master B deassert它的IRDY#,总线返回空闲状态。

Clock10的上升沿,master A检测到总线空闲,并且自己的GNT#处于assert状态,于是在clock10期间deassert它的REQ#信号,并assert它的FRAME#信号开始它的第二次transaction。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值