PCI总线操作四: PCI配置周期

PCI总线操作 之 PCI配置周期

PCI总线协议中定义了256字节的配置空间,用来驱动和配置PCI设备。配置空间的寄存器在总线第六章有描述,这里主要讨论访问pci配置空间的总线命令的具体操作。

 

在PCI总线的拓扑结构中,每个PCI设备都有一个固定唯一的地址,我们称之为config address。在物理上,对pci设备的配置都需要通过此config address 译码找到对应的设备。也即是,设备的IDSEL 脚要被选中,当然此时AD[1:0]的值为“00”。找到PCI设备之后,访问内部的配置空间寄存器(64-Dword),是通过AD[7:2]和byte enable线来译码实现。如果pci针对某个config address去译码,没有任何设备反馈的话,那么此次访问以Master-Abort来终结。

 

这里要说明一个问题,IDSEL的连线和DeviceNO。

如果某设备IDSEL在线路上连接到AD16,那么该设备的PCI device NO为0=16-16。

如果IDSEL连接到总线上的AD17,则PCI DeviceNO为1=17-16;以此类推。那么对于DeviceNO为17-31怎么处理呢? 一般情况不会有设备存在。主桥会处理这类地址周期,但是不会去影响AD[31:16]线,并且以Master-Abort方式来结束这次传输。

 

下面是PCI配置周期的Read 时序图

 

IDSEL只是在配置周期的寻址阶段其效果。如上图中,为了保证IDSEL能稳定的被取样,需要在FRAME#动作之前,让地址总线多驱动一段时间,当做delay。

 

配置类型

为了适应PCI总线中的多层次结构,定义了两种总线配置类型,如下图所示,主要区别在与配置周期中地址阶段AD总线上的不同。

 

Type0和Type1的配置周期中明显的不同在于AD[1:0]线。Type0(当AD[1:0]=“00”)用来访问当前总线上挂载的pci设备。而type1(当AD[1:0]=“01”)用来访问非当前总线的pci设备,需要通过pci-pci bridge来解析到另外的bus上。Bridge解析到AD线,得到其下一层bus上某个device的DeviceNO,则会产生type0的配置周期给下一层bus,同时拉动IDSEL线去访问对应设备。

       如果目标设备不是在下一层bus,则Bridge会产生一个type1的周期,普通设备不会响应type1,只有PCI-PCI bridge才会理会type1周期。通过BusNO一层一层的通过Bridge传导到对应的Bus上。如果某个Bridge发现该配置周期中的busNO为自己的secondary busNO,则它会将此配置周期进行剥离,解码。只保留AD[10:2]不变,AD[1:0]变成“00”,其他AD清零,同时拉动IDSEL线,访问响应的设备。

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值