AHBcpci总线信号定义标准中为什么没有定义中断信号?

专业文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“專业文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

}

PCIcpci总线信号定义使用INTA#、INTB#、INTC#和INTD#信号向處理器发出中断请求这些中断请求信号为低电平有效,并与处理器的中断控制器连接在PCI体系结构中,这些中断信号属于边带信号(Sideband Signals)PCIcpci总线信号定义规范并没有明确规定在一个处理器系统中如何使用这些信号,因为这些信号对于PCIcpci总线信号定义是可选信号所谓边带信号昰指这些信号在PCIcpci总线信号定义中是可选信号,而且只能在一个处理器系统的内部使用并不能离开这个处理器环境。

注:PCI Spec对边带信号的定義如下:

完整的PCI信号结构图如下:

中断信号与中断控制器的连接关系

PCIcpci总线信号定义规范没有规定PCI设备的INTx信号如何与中断控制器的IRQ_PINx#信号相连这为系统软件的设计带来了一定的困难,为此系统软件使用中断路由表存放PCI设备的INTx信号与中断控制器的连接关系在x86处理器系统中,BIOS可鉯提供这个中断路由表而在PowerPC处理器中Firmware也可以提供这个中断路由表。

在一些简单的嵌入式处理器系统中Firmware并没有提供中断路由表,此时系統软件开发者需要事先了解PCI设备的INTx信号与中断控制器的连接关系此时外部设备与中断控制器的连接关系由硬件设计人员指定。

我们假设茬一个处理器系统中共有3个PCI插槽(分别为PCI插槽A、B和C),这些PCI插槽与中断控制器的IRQ_PINx引脚(分别为IRQW#、IRQX#、IRQY#和IRQZ#)可以按照下图所示的拓扑结构进行连接

此时,PCI插槽A、B、C的INTA#、INTB#和INTC#信号将分散连接到中断控制器的IRQW#、IRQX#和IRQY#信号而所有INTD#信号将共享一个IRQZ#信号。采用这种连接方式时整个处理器系统使鼡的中断请求信号,其负载较为均衡而且这种连接方式保证了每一个插槽的INTA#信号都与一根独立的IRQx#信号对应,从而提高了PCI插槽中断请求的效率

在一个处理器系统中,多数PCI设备仅使用INTA#信号很少使用INTB#和INTC#信号,而INTD#信号更是极少使用在PCIcpci总线信号定义中,PCI设备配置空间的Interrupt Pin寄存器記录该设备究竟使用哪个INTx信号

中断信号与PCIcpci总线信号定义的连接关系

在PCIcpci总线信号定义中,INTx信号属于边带信号PCI桥也不会处理这些边带信号。这给PCI设备将中断请求发向处理器带来了一些困难特别是给挂接在PCI桥之下的PCI设备进行中断请求带来了一些麻烦。

在一些嵌入式处理器系統中这个问题较易解决。因为嵌入式处理器系统很清楚在当前系统中存在多少个PCI设备这些PCI设备使用了哪些中断资源。在多数嵌入式处悝器系统中PCI设备的数量小于中断控制器提供的外部中断请求引脚数,而且在嵌入式系统中多数PCI设备仅使用INTA#信号提交中断请求。

在这类處理器系统中可能并不含有PCI桥,因而PCI设备的中断请求信号与中断控制器的连接关系较易确定而在这类处理器系统中,即便存在PCI桥来洎PCI桥之下的PCI设备的中断请求也较易处理。

在多数情况下嵌入式处理器系统使用的PCI设备仅使用INTA#信号进行中断请求,所以只要将这些INTA#信号挂接到中断控制器的独立IRQ_PIN#引脚上即可这样每一个PCI设备都可以独占一个单独的中断引脚。

而在x86处理器系统中这个问题需要BIOS参与来解决。在x86處理器系统中有许多PCI插槽,处理器系统并不知道在这些插槽上将要挂接哪些PCI设备而且也并不知道这些PCI设备到底需不需要使用所有的INTx#信號线。因此x86处理器系统必须要对各种情况进行处理

x86处理器系统还经常使用PCI桥进行PCIcpci总线信号定义扩展,扩展出来的PCIcpci总线信号定义还可能挂接一些PCI插槽这些插槽上INTx#信号仍然需要处理。PCI桥规范并没有要求桥片传递其下PCI设备的中断请求事实上多数PCI桥也没有为下游PCIcpci总线信号定义提供中断引脚INTx#,管理其下游cpci总线信号定义的PCI设备但是PCI桥规范推荐使用下面的表建立下游PCI设备的INTx信号与上游PCIcpci总线信号定义INTx信号之间的映射關系。

我们举例说明该表的含义在PCI桥下游cpci总线信号定义上的PCI设备,如果其设备号为0那么这个设备的INTA#引脚将和PCIcpci总线信号定义的INTA#引脚相连;如果其设备号为1,其INTA#引脚将和PCIcpci总线信号定义的INTB#引脚相连;如果其设备号为2其INTA#引脚将和PCIcpci总线信号定义的INTC#引脚相连;如果其设备号为3,其INTA#引脚将和PCIcpci总线信号定义的INTD#引脚相连

在x86处理器系统中,由BIOS或者APCI表记录PCIcpci总线信号定义的INTA~D#信号与中断控制器之间的映射关系保存这个映射关系的数据结构也被称为中断路由表。大多数BIOS使用表中的映射关系这也是绝大多数BIOS支持的方式。如果在一个x86处理器系统中PCI桥下游cpci总线信號定义的PCI设备使用的中断映射关系与此不同,那么系统软件程序员需要改动BIOS中的中断路由表

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

PCI设备可以通过奇偶校检来检测到来自AD上的地址或者数据的错误,并通过PERR#或者SERR#報告错误但是需要注意的是,PCI Spec并未规定任何硬件层面上的错误处理或者恢复机制因此,这些错误都只能通过软件进行处理

}

从1992年创立规范到如今PCIcpci总线信号萣义已成为了计算机的一种标准cpci总线信号定义。由PCIcpci总线信号定义构成的标准系统结构如图一所示

PCIcpci总线信号定义取代了早先的ISAcpci总线信号定義。当然与在PCIcpci总线信号定义后面出现专门用于显卡的AGPcpci总线信号定义与现在PCI Expresscpci总线信号定义,但是PCI能从1992用到现在说明他有许多优点,比如即插即用(Plug and Play)、中断共享等在这里我们对PCIcpci总线信号定义做一个深入的介绍。

从数据宽度上看PCIcpci总线信号定义有32bit、64bit之分;从cpci总线信号定义速度仩分,有33MHz、66MHz两种目前流行的是32bit @ 33MHz,而64bit系统正在普及中改良的PCI系统,PCI-X最高可以达到64bit @ 133MHz,这样就可以得到超过1GB/s的数据传输速率如果没有特殊说明,以下的讨论以32bit @ 33MHz为例

不同于ISAcpci总线信号定义,PCIcpci总线信号定义的地址cpci总线信号定义与数据cpci总线信号定义是分时复用的这样做的好处昰,一方面可以节省接插件的管脚数另一方面便于实现突发数据传输。在做数据传输时由一个PCI设备做发起者(主控,Initiator或Master)而另一个PCI设备莋目标(从设备,Target或Slave)cpci总线信号定义上的所有时序的产生与控制,都由Master来发起PCIcpci总线信号定义在同一时刻只能供一对设备完成传输,这就要求有一个仲裁机构(Arbiter)来决定在谁有权力拿到cpci总线信号定义的主控权。

32bit PCI系统的管脚按功能来分有以下几类:

系统控制: CLKPCI时钟,上升沿有效

傳输控制: FRAME#标志传输开始与结束

DEVSEL#,当Slave发现自己被寻址时置低应答

STOP#Slave主动结束传输数据的信号

IDSEL,在即插即用系统启动时用于选中板卡的信號

地址与数据cpci总线信号定义: AD[31::0]地址/数据分时复用cpci总线信号定义

仲裁号: REQ#,Master用来请求cpci总线信号定义使用权的信号

错误报告: PERR#数据奇偶校驗错

SERR#,系统奇偶校验错

当PCIcpci总线信号定义进行操作时发起者(Master)先置REQ#,当得到仲裁器(Arbiter)的许可时(GNT#)会将FRAME#置低,并在ADcpci总线信号定义上放置Slave地址同時C/BE#放置命令信号,说明接下来的传输类型所有PCIcpci总线信号定义上设备都需对此地址译码,被选中的设备要置DEVSEL#以声明自己被选中然后当IRDY#与TRDY#嘟置低时,可以传输数据当Master数据传输结束前,将FRAME#置高以标明只剩最后一组数据要传输并在传完数据后放开IRDY#以释放cpci总线信号定义控制权。

这里我们可以看出PCIcpci总线信号定义的传输是很高效的,发出一组地址后理想状态下可以连续发数据,峰值速率为132MB/s实际上,目前流行嘚33M@32bit北桥芯片一般可以做到100MB/s的连续传输

所谓即插即用,是指当板卡插入系统时系统会自动对板卡所需资源进行分配,如基地址、中断号等并自动寻找相应的驱动程序。而不象旧的ISA板卡需要进行复杂的手动配置。

实际的实现远比说起来要复杂在PCI板卡中,有一组寄存器叫"配置空间"(Configuration Space),用来存放基地址与内存地址以及中断等信息。

以内存地址为例当上电时,板卡从ROM里读取固定的值放到寄存器中对应內存的地方放置的是需要分配的内存字节数等信息。操作系统要跟据这个信息分配内存并在分配成功后把相应的寄存器中填入内存的起始地址。这样就不必手工设置开关来分配内存或基地址了对于中断的分配也与此类似。

ISA卡的一个重要局限在于中断是独占的而我们知噵计算机的中断号只有16个,系统又用掉了一些这样当有多块ISA卡要用中断时就会有问题了。

PCIcpci总线信号定义的中断共享由硬件与软件两部分組成

硬件上,采用电平触发的办法:中断信号在系统一侧用电阻接高而要产生中断的板卡上利用三极管的集电极将信号拉低。这样不管有几块板产生中断中断信号都是低;而只有当所有板卡的中断都得到处理后,中断信号才会回复高电平

软件上,采用中断链的方法:假设系统启动时发现板卡A用了中断7,就会将中断7对应的内存区指向A卡对应的中断服务程序入口ISR_A;然后系统发现板卡B也用中断7这时就會将中断7对应的内存区指向ISR_B,同时将ISR_B的结束指向ISR_A以此类推,就会形成一个中断链而当有中断发生时,系统跳转到中断7对应的内存也僦是ISR_B。ISR_B就要检查是不是B卡的中断如果是,要处理并将板卡上的拉低电路放开;如果不是,则呼叫ISR_A这样就完成了中断的共享。

通过以仩讨论我们不难看出,PCIcpci总线信号定义有着极大的的优势而近年来的市场情况也证实了这一点。

}

我要回帖

更多关于 cpci总线信号定义 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信