注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

路雷米的博客

人生最难的就是在热爱和生计之间做选择, 愿每个人这一生 既对得起梦想又担得责任

 
 
 

日志

 
 

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

2015-02-13 13:47:35|  分类: PCI-PCIE |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

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线,访问响应的设备

  评论这张
 
阅读(254)| 评论(0)

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018