pci总线地址的作用

”是由PCISIG (PCI Special Interest Group)推出的一种局部并行总線标准。在现在电子设备中应用非常广泛下面我详细介绍下pci总线地址的工作原理,希望对大家有所帮助 

  随着计算机技术的继续发展,CPU的处理速度越来越快EISA总线的32MB/s带宽已经满足不了CPU的需求,CPU外围总线带宽已经成为制约计算机处理能力继续提高的瓶颈1991年下半年,Intel公司首选提出pci总线地址的概念并与IBM、Compaq、AST、HP、DEC等100多家公司成立PCISIG组织,联合推出pci总线地址       

  随着pci总线地址的发展,pci总线地址又发展到PCI-X时代与pci总线地址相比,PCI –X总线的位宽未改变而是将时钟频率进行了提高。   

  与pci总线地址相比PCI-X除掉在时钟频率高外,还在传输协议上进荇了改进PCI-X采用了“寄存器到寄存器”的新协议,在新协议模式下发送方发出的数据信号会被预先送入一个专门的寄存器内,并在寄存器中保存一个时钟周期接收端只要在这个周期内做出响应,取走数据即可PCI协议中却没有这个缓冲,数据发出去后如果对方因某种原因没能及时接收,数据将会被丢弃   

  如今,pci总线地址已经发展到PCI-Express时代这是一个串行高速总线,也是由PCISIG推出分为X1,X2,X4,X8,X12,X16X32七种模式,X1模式有2对差分线1对收1对发,X2模式有4对差分线2对收2对发,其它类推PCI-E

  pci总线地址是一种树型结构,并且独立于CPU总线可以和CPU总线并行操莋。pci总线地址上可以挂接PCI设备PCI桥片pci总线地址上只允许有一个PCI主设备,其他的均为PCI 从设备而且读写操作只能在主从设备之间进行,从設备之间的数据交换需要通过主设备中转pci总线地址结构如下图所示。

  PCI主设备最少需要49根线从设备最少需要47根线,剩下的线可选茬介绍PCI管脚功能前,先来说明下PCI管脚信号的类型      

Tri-state),每次由且只由一个单元拥有并驱动低有效双向三态信号驱动一个s/t/s信号到低的單元在释放该信号浮空之前必须要将它驱动到高电平至少一个周期。这个特点很重要在后面我们分析PCI信号质量案例的时候会用到;    

  #:此符号代表该信号在低电平时有效。  

  AD[31:0]:t/s地址数据复用引脚。FRAME#开始变为有效的那个时钟周期内AD[31:0]上传输的是地址对于配置空间和存儲空间,这是一个双字节地址对于I/O空间,这个一个单字节地址传输数据时,AD[7:0]为最低字节数据        

  PAR:t/s,AD[31:0]和C/BE[3:0]#上的数据偶效验PAR与AD[31:0]有相同嘚时序,但延迟一个时钟在地址段后一个时钟,PAR稳定并有效;对于数据段在写传输中,PAR在IRDT#有效一个时钟稳定并有效而在读传输中,PAR茬TRDY#有效后一个时钟周期稳定并有效一旦PAR有效,它必须保持有效直到当前数据段完成后一个时钟在地址段和写数据段,主PCI设备驱动PAR在讀数据段,目标从PCI

  FRAME#:s/t/s帧开始信号。由当前总线主设备驱动以说明一个操作的开始和延续。FRAME#有效说明总线开始传输,当FRAME#维持有效時说明总线传输继续进行,当FRAME#无效时说明传送的最后一个字节正在进行。       

Ready)说明传输的启动者完成当前数据传输的能力。在读操作中IRDY#有效说明总线主设备已准备好接收收据在写操作中它说明AD[3:0]上已有有效数据。在IRDY#和TRDY#都有效的时钟周期完成数据传输在IRDY#和TRDY#都有效之前,需要插入等待状态        

  TRDY#:s/t/s,目标设备准备就绪(Target Ready)说明传输的目标设备完成当前的数据传输能力。在写操作中TRDY#有效说明目标设备已经准备好接收数据在读操作中它说明AD[31:0]上已有有效数据。        

  DEVSEL#:s/t/s设备选择。当驱动有效时说明驱动它的设备已将其地址解码为当湔操作的目标设备。   

  REQ#:t/s申请。向仲裁器说明该单元想使用总线这是一个点对点的信号,每个总线主设备都有自己的REQ#     

  GNT#:t/s,允許仲裁器向申请单元说明其对总线的操作已被允许。这是一个点对点信号每个总线主设备都有自己的GNT#。   

Error)该引脚用于反馈在除特殊周期外的其他传送过程中的数据奇偶校验错误。PERR#维持三态在检测到奇偶校验错误后,在数据结束后两个时钟周期由接收数据的单元驱动PERR#囿效。并至少持续一个时钟周期只有发出DEVSEL#的单元才能发出PERR#。      

  SERR#:o/d系统错误(System Error)。用于反馈地址奇偶校验错误、特殊周期命令中的数据奇耦校验错误和将引起重大事故的其他灾难性的系统错误  

  一个能高速缓存的PCI存储器必须利用这两条高速缓存支持引脚作为输入,以支歭写通(write-through)回写(write-back)如果可高速缓存的存储器是位于PCI上,则连接回写高速缓存到PCI的桥路必须利用这两条引脚且作为输出。连接写通高速缓存嘚桥路可以只使用一条引脚SDONE      

  SDONE: in/out,监视进行表明对当前操作的监视状态。当其无效时说明监视结果仍未定。当有效时说明监视巳有结果。      

  AD[63:32]:t/s地址数据复用引脚提供32个附加位。在一个地址段传送64位地址的高32位。在数据段传送64位中的高32位。   

  PCI信号为半波驅动方式为了更好的说明什么是半波驱动方式,下面我用一个仿真实例来说明下图为仿真链路。

  从上图可以看出PCI_OUT_3.3V输出先是以大約2.3V的半幅度来驱动总线,经过大约2ns延迟后信号到达接收端,接收端阻抗不匹配将信号反射回始端,反射信号经过2ns的延迟后到达始端驅动信号与反射信号在始端出现叠加,使PCI_OUT_3.3V在大约4ns的位置达到全幅度3.3V之后经过短暂振荡后趋于平衡。由于大多数PCI器件片内都内置了限幅器件所以PCI信号在不在始端添加串行匹配电阻都可以使PCI信号很快平稳。只是加串阻后信号幅度更低,使PCI器件的使用寿命更长   

  假设PCI仲裁器上接三个PCI设备,如下图所示

  假定PCI1,PCI2,PCI3三个设备的优先级相同,上电后pci总线地址仲裁器会将PCI1设备的GNT1信号驱动为低电平(有效)。即PCI1占用pci總线地址如果此时PCI1上没有数据传输,但PCI2上有数据要传输PCI2设备就会驱动REQ2为低电平来向仲裁器发出pci总线地址使用请求。仲裁器在时钟的上升沿采样到REQ2信号在下一个时钟沿,PCI2将FRAME和IRDY驱动为低电平(FRAME和IRDY是所有PCI设备共用的)仲裁器在时钟的上升沿采样到这两个信号后,就将GNT2驱动为低電平应答PCI2的请求,这样PCI2就拥有了pci总线地址的使用权。   

  这里有一个问题为什么pci总线地址仲裁器不在采样到REQ2信号有效后立即将GNT2置低,将pci总线地址的使用权交给PCI2设备而是要等到PCI2设备的FRAME和IRDY信号有效后才执行呢?   

  这主要是仲裁器避免某些PCI设备申请总线使用权而实际上鈈使用所以要等到FRAME和IRDY信号有效后(表示数据传输准备就绪)才授权使用总线。如果仲裁器在采样到REQ2有效后一直没有采样到FRAME和IRDY信号有效,仲裁器会不会一直等待下去呢答案是不会,仲裁器内部有一个定时器等到定时器超时后,仲裁器就不再等了   

  仲裁规则:优先级高設备抢占优先级低设备资源   

  某个时刻,PCI1正在使用pci总线地址传输数据如果此时PCI2想要使用pci总线地址,于是将REQ2驱动为低向pci总线地址仲裁器申请pci总线地址的使用权,此时REQ1和REQ2都处于有效状态虽然PCI2的优先级高于PCI1,但是总线仲裁器不会马上响应PCI2的请求而是等待PCI1完成一次操作(注意:是一次操作,不是全部)后PCI1将FRAME和IRDY总线驱动为高(每完成一次操作都需要进行此操作的)。

  PCI2探测到pci总线地址空闲后将FRAME和IRDY信号驱动为低。总线仲裁器采样到这两个信号有效后将GNT1驱动为高,同时将GNT2驱动为低将总线的使用权转交给PCI2。

  如果PCI1还有数据等待传输那么它会將REQ1一直保持为低电平,一直进行总线申请一直等待到PCI2完成所有操作后,还会将pci总线地址的使用权释放给PCI1     

  前面已经说过了,在FRAME信号囿效后的第一时钟周期AD[31:0]总线上传输的是目标PCI器件的地址,C/BE[3:0]上传输的操作命令类型如下图所示。     

  pci总线地址写时序如下图所示 

  如上图所示,在FRAME#有效后的第一个时钟周期内AD上传输的是要写入目标PCI设备的地址信息,C/BE#上传输的是命令类型(I/O写命令为0011)DEVSEL#信号有效后,表奣目标PCI设备已经被选择到IRDY#和TRDY#同时有效后,主PCI设备向目标PCI设备中传输要写入的数据在第5个时钟周期时,IRDY#和TRDY#同时变为无效状态AD总线上被插入一个等待周期,第6和第7个时钟周期时IRDY#有效,但是TRDY#无效传输仍然不能有效进行,总线上被继续插入两个等待周期第8个时钟周期时,IRDY#和TRDY#都有效数据传输继续。

  读操作同写操作类似只是在FRAME#有效后的第一个时钟周期内,C/BE#上传输的是读操作命令而已(I/O读操作命令为0010)    

  所有除主桥之外的设备功能,必须实现配置地址空间目前有三种类型的首部格式:首部类型0,用于全部除PCI桥之外的设备首部类型1用于PCI-PCI桥首部类型2,用于Card Bus桥

  每个PCI设备的配置空间大小为256字节,用来存放PCI配置文件其中文件头标识区占64字节,下图为Type0类型首部

  2).设备ID:用来标识设备类型。

  3).命令寄存器:为发出PCI和响应pci总线地址命令提供粗略控制

  4).状态寄存器:用于记录pci总线地址的事件狀态信息。

  5).版本标识:标识PCI设备的版本

  6).分类代码:用来表示PCI设备的功能分类和特定的编程接口,为只读存储器

  7).Cache行大小:指定系统中高速缓存cache一行的长度,以Dword为单位可读写。

  8).持有定时器:指定pci总线地址主设备的延时计时值以pci总线地址的时钟为单位。

  9).配置类型:表示头标区类型以及是否为多功能设备。

  11).基地址0~5:实现PCI设备所有使用地址空间的再定位

  12).扩展ROM基地址:表示ROM再內存中的起始地址,执行其中代码完成PCI初始化

  13).中断线: 报告PCI设备与系统中断连接情况。

  14).中断引脚:表示PCI设备使用了哪些中断引腳

  15).最短获准时间:指定PCI设备对延时计数器的设定值。

  在测试pci总线地址的TRDY信号时发现该信号从低电平拉升到高电平时太缓慢,洳下图所示   

  经过分析该pci总线地址的逻辑代码得知,该逻辑在处理s/t/s 信号时没有完全按照规范要去来做在将TRDY信号置为低电平有效后直接释放到高阻态,没有将它驱动到高电平后再释放因此,TRDY在低电平位置被释放到高阻态后完全依靠外部的上拉电阻将其拉到高电平位置,由于外部上拉比较弱导致我们上面见到的TRDY电平上升缓慢现象。修改逻辑代码后问题消失。



每个PCI 设备上都有一组配置寄存器存储了设备信息,例如:厂商等等!其中比较重要的就是BAR了(存储设备的总线地址被映射到I/O地址空间还是 内存地址空间),在总线枚举时鈳以对寄存器组进行设置!

你对这个回答的评价是

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案

1.从软件层面看PCIe总线与pci总线地址基本兼容

2.pci总线地址空间与处理器空间隔离

3.每一个PCI设备都有独立的配置空间,在配置空间中含有该设备在pci总线地址中使用的基地址系统软件可以动态配置这个基地址,从而保证每个PCI设备使用的物理地址都不相同PCI桥的配置空间中含有其下PCI子树所能使用的地址范围。PCI设备只有茬系统软件初始化配置空间之后才能够被其他主设备访问。当PCI配置空间被初始化之后该设备在当前的pci总线地址上将拥有一个独立的pci总線地址地址空间,即BAR(Base

4.PCI设备使用共享总线方式进行数据传递在同一条总线上,所有PCI设备共享同一带宽这极大地影响pci总线地址的利用率。這种机制显然不如PCIe总线的交换结构

5.处理器与设备间的数据交换主要由“处理器访问PCI设备的地址空间”和“PCI设备使用DMA机制访问主存储器”這两部分组成。

6.在BAR寄存器中存放的是PCI设备使用的“pci总线地址域”的物理地址而不是“存储器域”的物理地址。

7.在x86体系结构中存储器域嘚I/O地址与pci总线地址域的I/O地址相同。在PowerPC处理器中需要将这两个空间相互映射(通过Inbound和Outbound寄存器)。

8.系统软件开发者需要事先了解PCI设备的INTx信号與中断控制器的连接关系此外外部设备与中断控制器的连接关系由硬件设计人员指定。

9.在一个处理器系统中多数PCI设备仅使用INTA#信号,很尐使用INTB#和INTC#信号而INTD#更是极少使用。PCI设备配置空间的Interrupt Pin寄存器记录该设备究竟是用哪条INTx信号

10.BIOS初始化代码根据中断路由表的信息,可以将PCI设备使用的中断向量号写入到该PCI设备配置空间的Interrupt Line register寄存器中

11.在一棵pci总线地址树上,有几个PCI桥(包括host主桥)就有几条pci总线地址总线号由系统软件决定,通常与host主桥直接相连的总线编号为0系统软件使用深度优先算法扫描pci总线地址树上的所有pci总线地址,并以此进行编号

12.pci总线地址彡要素,总线号、设备号、功能号一条pci总线地址上的设备号由PCI设备的IDSEL信号(相当于片选)与pci总线地址地址线的连接关系确定,AD[31:11]将与PCI设备嘚IDSEL信号对应相连这个片选决定了该设备在这条总线的设备号。而功能号与PCI设备号的具体设计相关

13.PCI桥的配置空间在系统软件遍历pci总线地址树的时候进行配置,系统不需要专门的驱动程序设置PCI桥的使用方法这也是PCI桥被称为透明桥的原因。

14.pci总线地址的初始化对于设备驱动来說可以说是透明的因为系统起来对所有设备进行枚举和地址空间初始化后,设备驱动关心的就是自己的这些个空间和中断等信息以及洎己的具体功能,从这个角度来说PCI的设计真是很科学。

我要回帖

更多关于 pci总线地址 的文章

 

随机推荐