0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

简单的PCI总线INTx中断实现流程

SwM2_ChinaAET 来源:未知 作者:李倩 2018-08-24 09:58 次阅读

一个简单的PCI总线INTx中断实现流程,如下图所示。

1. 首先,PCI设备通过INTx边带信号产生中断请求,经过中断控制器(Interrupt Controller,PIC)后,转换为INTR信号,并直接发送至CPU

2. CPU收到INTR信号置位后,意识到了中断请求的发生,但是此时并不知道是什么中断请求。于是通过一个特殊的指令来查询中断请求信息,该过程一般被称为中断应答(Interrupt Acknowledge);

3. 该特殊指令被发送至PIC后,PIC会返回一个8bits的中断向量(Interrupt Vector)值给CPU。该中断向量值与其发送的INTR请求是对应的;

4. CPU收到来自PIC的中断向量值后,会去其Memory中的中断向量表(Interrupt Table)中查找对应的中断服务程序(Interrupt Service Routines,ISR)在Memory的位置;

5. 然后CPU读取ISR程序,进而处理该中断。

上面的例子主要是基于早期的单核CPU设计的,并没有考虑到目前多核CPU的情况。因此,在后续的PCI Spec中,将PIC替换为IO APIC(Advanced Programmed Interrupt Controller)。如下图所示:

实际上,在PCIe总线中,传统的中断机制(INTx)已经很少被使用,很多应用甚至直接将该功能禁止了。无论是在PCI总线(V2.3及以后的版本),还是PCIe总线中,都可以通过配置空间中的配置命令寄存器(Configuration Command Register来禁止INTx中断机制),如下图所示。不过,需要特别注意的是,虽然该bit的名称为中断禁止(Interrupt Disable),但是其只会影响INTx,对MSI/MSI-X不会造成影响。因为MSI/MSI-X的使能(或禁止)是通过配置空间中的MSI/MSI-X Capability Command Register来实现的,并且一旦使能了MSI/MSI-X,PCI总线/PCIe总线便会自动地禁止INTx。

并且可以通过配置状态寄存器的中断状态(Interrupt Status)bit来确定当前的中断状态,如下图所示:

INTx相关的寄存器在配置空间的位置如下图所示,Interrupt Pin和Interrupt Line分别定义了中断边带信号引脚号(INTA#~INTD#)和中断向量号(IRQ0~IRQ255)。

然而,PCIe总线继承了PCI总线的INTx中断机制,但是在实际的PCIe设备之间的中断信息传输中使用的并非边带信号INTx,而是基于消息(Message)的。其中Assert_INTx消息表示INTx信号的下降沿。Dessert_INTx消息表示INTx信号的上升沿。当发送这两种消息时,PCIe设备还会将配置空间的相关中断状态bit的值更新。对于PCIe-PCI(X)桥设备来说,会将接收到的来自PCI/PCI-X总线的INTx信号转换为消息,在往上级发送。一个简单的例子如下图所示:

INTx消息的格式为:

桥设备中的INTx消息的类型与设备号的映射关系如下图所示:

对应的,一个简单的例子如下:

当多个设备使用同一个中断信号线时,只有先置位的设备会被中断控制器响应。但是该中断信号线,并不会因为其中一个设备的中断请求得到响应便被清除,而是会等到所有的发送请求的设备的中断请求都得到了响应之后。如下图所示:

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    16190

    浏览量

    177344
  • PCI
    PCI
    +关注

    关注

    4

    文章

    662

    浏览量

    130179
  • 总线
    +关注

    关注

    10

    文章

    2865

    浏览量

    87973

原文标题:【博文连载】PCIe扫盲——中断机制介绍(INTx)

文章出处:【微信号:ChinaAET,微信公众号:电子技术应用ChinaAET】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于IP核的PCI总线接口设计与实现

    。lirqn为中断输入信号。可以通过PCI编译器IP工具台或编辑兆核函数头文件的方式修改PCI配置空间信息,本系统GCI兆核函数的配置信息如下: 3 本地总线读写状态机 在用户逻辑中,
    发表于 12-04 10:35

    基于PCI总线的CPLD实现

    独立的配置空间,可实现即插即用。这些优点使得PCI总线在数据采集、嵌入式系统和测控等领域得到广泛应用。实现PCI
    发表于 05-29 05:00

    PCI总线的信号是如何去定义的

    PCI总线的信号定义PCI总线是一条共享总线,在一条PCI
    发表于 02-16 06:48

    浅谈PCI总线中断机制

    PCI总线中断机制PCI总线使用INTA#、INTB#、INTC#和INTD#信号向处理器发出中断
    发表于 02-16 06:31

    pci总线标准|pci总线规范下载

    PCI总线渐渐地取代了ISA总线。它有许多优点,比如即插即用(Plug and Play)、中断共享等。在这里我们对PCI
    发表于 06-16 14:24 147次下载

    基于FPGA的PCI总线接口设计

    基于FPGA的PCI总线接口设计::PCI是一种高性能的局部总线规范,可实现各种功能标准的PCI
    发表于 06-25 08:17 49次下载

    PCI中断机制分析

    PCI中断机制分析:PCI 总线有四条中断线,所有PCI 设备共同使用这四条线向系统申请
    发表于 06-28 19:21 26次下载

    PCI总线仲裁器的设计及实现

    本文简要介绍了PCI 总线的仲裁机制, 完成了PCI 总线仲裁器核心的设计、实现。通过ModelSim 进行了软件仿真,最后在XILINX
    发表于 09-03 08:18 27次下载

    PCI总线协议的FPGA实现及驱动设计

    PCI总线协议的FPGA实现及驱动设计 摘要! 采用FPGA技术! 在公司的flex6000系列芯片上实现了从设备模式pci
    发表于 03-12 14:30 36次下载

    基于FPGA的PCI总线接口设计

    摘 要 :PCI是一种高性能的局部总线规范,可实现各种功能标准的PCI总线卡。本文简要介绍了PCI
    发表于 06-20 13:13 1087次阅读
    基于FPGA的<b class='flag-5'>PCI</b><b class='flag-5'>总线</b>接口设计

    一个简单PCI总线INTx中断实现流程

    一个简单PCI总线INTx中断实现流程,如下图所示
    发表于 10-18 16:37 625次阅读

    PCI总线如何与中断控制器的信号相连?

    PCI总线使用INTA#、INTB#、INTC#和INTD#信号向处理器发出中断请求。
    的头像 发表于 06-21 16:10 1811次阅读

    基于PCI总线的信号定义

    PCI总线的信号定义 PCI总线是一条共享总线,在一条PCI
    的头像 发表于 07-18 09:55 2394次阅读

    简述PCI总线中断机制

    PCI总线中断机制 PCI总线使用INTA#、INTB#、INTC#和INTD#信号向处理器发出中断
    的头像 发表于 07-18 10:10 2795次阅读

    Linux内核PCIE基础知识整理

    PCI总线中,所有需要提交中断请求的设备,必须能通过INTx引脚提交中断请求,MSI机制是一个可选机制。而PCIE
    发表于 01-12 14:54 2229次阅读
    Linux内核PCIE基础知识整理