本发明实施例涉及通信技术领域,尤其涉及一种PCIe中断方法和系统。

背景技术:

PCIe(Peripheral Component Interconnect Express,高速外围组件互联)是最新的总线和接口标准,这个新标准将全面取代现行的PCI和AGP,最终实现总线标准的统一。

基于引脚的PCI中断也就是INTx中断,经常在几个设备间共享,内核必须调用与该中断相关的每一个中断处理函数,效率比较低。当设备向内存写入数据,然后发起引脚中断时,有可能在CPU接收到中断时,数据还未到达内存(在PCI-PCI桥后的设备更有可能如此)。为了保证数据已达到内存,中断处理程序必须轮询产生该中断的设备的一个寄存器,PCI事务保序规则会确保所有数据达到内存后,寄存器才会返回值。

PCI的每个功能设备只支持一个基于引脚的中断,驱动常常需要查询设备来确定发生的事件,降低了中断处理的效率,因此在PCIe系统中采用了MSI中断。MSI中断不是共享的,因此不存在INTx中断中共享的问题,使用MSI时,产生中断的写操作不能超过数据写操作,因而当中断产生时,驱动可以确信所有数据已经到达内存。MSI中断是采用向特定地址写入特定数值的方式实现,而且可以支持最多32个中断向量,但MSI中断又存在中断向量号必须连续的约束。为了解决此问题,MSI-X也被提出,与MSI Capability寄存器相比,MSI-X Capability寄存器使用一个数组存放Message Address字段和Message Data字段,而不是将这两个字段放入Capability寄存器中。从而当PCIE设备使用MSI-X机制时,每一个中断请求可以使用独立的Message Address字段和Message Data字段。MSI-X不需要中断向量号连续,而且可支持最多2048个中断向量。不同的处理器对PCIE设备发出的MSI报文的解释并不相同。但是PCIe设备在提交MSI中断请求时,都是向MSI/MSI-X Capability结构中的Message Address的地址写Message Data数据,从而组成一个存储器写TLP,向处理器提交中断请求。

在实际设计中,驱动所支持的中断类型可能是传统INTx中断、MSI中断或者是MSI-X中断中的一种或多种。基于开发简便的原因,可能硬件逻辑只完成和其匹配的某种中断,而放弃其余2种中断方式。这样就会造成在后续的驱动平台升级过程中可能支持的中断类型发生变化,从而导致底层FPGA开发人员要做相应功能适配来配合软件的升级,从而增加了项目周期和可维护性,也不利于项目的平台化实现。

技术实现要素:

本发明实施例提供一种PCIe中断方法和系统,以扩展FPGA对处理器中断的兼容性。

第一方面,本发明实施例提供了一种PCIe中断方法,FPGA与处理器之间通过PCIe接口实现数据通信,该方法包括:

接收中断请求;

获取所述FPGA中已配置的中断类型,其中,所述中断类型包括INTx中断类型、MSI中断类型和MSI-X中断类型中的至少一种;

根据所述中断类型生成PCIe中断数据,并根据所述中断类型确定所述PCIe接口上所述PCIe中断数据对应的传输接口;

通过所述传输接口发送所述PCIe中断数据。

进一步的,在所述接收中断请求的步骤之前,还包括:

配置所述FPGA的中断类型,并配置所述PCIe接口为全类型模式,其中,所述全类型模式支持所有所述中断类型。

进一步的,所述根据所述中断类型确定所述PCIe中断数据对应的传输接口的步骤包括:

若中断类型为MSI-X中断,则确定传输接口为AXI4-S接口;

若中断类型为MSI中断,则确定传输接口为CFG_INT接口;

若中断类型为INTx中断,则确定传输接口为CFG_INT接口。

进一步的,当传输接口为CFG_INT接口时,通过所述传输接口发送所述PCIe中断数据的处理时序包括:INTx中断执行流程和MSI中断执行流程;

所述INTx中断执行流程包括:

将CFG_INT接口的cfg_interrupt_assert信号和cfg_interrupt信号置为高电平;

当监测到CFG_INT接口的cfg_interrupt_rdy信号被CPU置为高电平时,将所述cfg_interrupt信号置为高电平,且将所述cfg_interrupt_assert信号置为低电平;

当所述cfg_interrupt_rdy信号被CPU置为高电平时,确定所述CPU响应所述中断;

所述MSI中断执行流程包括:

将所述CFG_INT接口的cfg_interrupt信号和cfg_interrupt_di信号置为第一标志位;

在监测到CFG_INT接口的cfg_interrupt_rdy信号被CPU置为高电平时,将所述cfg_interrupt信号和cfg_interrupt_di信号置为第二标志位,作为所述中断请求;

在所述cfg_interrupt_rdy信号被CPU置为高电平时,确定所述CPU响应所述中断请求。

进一步的,当传输接口为AXI4-S接口时,通过所述传输接口发送所述PCIe中断数据的处理时序包括:

将AXI4-S接口的s_axis_tx_tvalid信号置为高电平,s_axis_tx_tdata、s_axis_tx_tkeep、s_axis_tx_tlast信号填充适当数据;

当监测到AXI4-S接口的s_ais_tx_tready信号被CPU置为高电平时,表明当前传输的数据被接收,当s_axis_tx_tlast置为高电平时,表明是最后一笔中断数据传输;

当监测到AXI4-S接口的s_ais_tx_tready信号被CPU置为高电平时,表明整个中断数据传输完成,则将s_axis_tx_tvalid、s_axis_tx_tlast、s_axis_tx_tdata、s_axis_tx_tkeep置为低电平。

第二方面,本发明实施例还提供了一种PCIe中断系统,FPGA与处理器之间通过PCIe接口实现数据通信,该系统包括:中断控制模块和PCIe接口模块;

所述中断控制模块,用于接收中断请求,获取所述FPGA中已配置的中断类型,根据所述中断类型生成PCIe中断数据,并根据所述中断类型确定所述PCIe接口模块上的传输接口,其中,所述中断类型包括INTx中断类型、MSI中断类型和MSI-X中断类型中的至少一种;

所述中断控制模块通过所述传输接口发送所述PCIe中断数据。

进一步的,还包括:

中断配置模块,用于配置所述FPGA的中断类型;

所述PCIe接口模块还用于配置所述PCIe接口为全类型模式,其中,所述全类型模式支持所有所述中断类型。

进一步的,所述中断控制模块还用于:

当所述中断类型为MSI-X中断时,则确定传输接口为AXI4-S接口;

当所述中断类型为MSI中断时,则确定传输接口为CFG_INT接口;

当中断类型为INTx中断时,则确定传输接口为CFG_INT接口。

进一步的,当传输接口为CFG_INT接口时,通过所述传输接口发送所述PCIe中断数据的处理时序包括:INTx中断执行流程和MSI中断执行流程;

所述INTx中断执行流程包括:

将CFG_INT接口的cfg_interrupt_assert信号和cfg_interrupt信号置为高电平;

当监测到CFG_INT接口的cfg_interrupt_rdy信号被CPU置为高电平时,将所述cfg_interrupt信号置为高电平,且将所述cfg_interrupt_assert信号置为低电平;

当所述cfg_interrupt_rdy信号被CPU置为高电平时,确定所述CPU响应所述中断;

所述MSI中断执行流程包括:

将所述CFG_INT接口的cfg_interrupt信号和cfg_interrupt_di信号置为第一标志位;

在监测到CFG_INT接口的cfg_interrupt_rdy信号被CPU置为高电平时,将所述cfg_interrupt信号和cfg_interrupt_di信号置为第二标志位,作为所述中断请求;

在所述cfg_interrupt_rdy信号被CPU置为高电平时,确定所述CPU响应所述中断请求。

进一步的,当传输接口为AXI4-S接口时,通过所述传输接口发送所述PCIe中断数据的处理时序包括:

将AXI4-S接口的s_axis_tx_tvalid信号置为高电平,s_axis_tx_tdata、s_axis_tx_tkeep、s_axis_tx_tlast信号填充适当数据;

当监测到AXI4-S接口的s_ais_tx_tready信号被CPU置为高电平时,表明当前传输的数据被接收,当s_axis_tx_tlast置为高电平时,表明是最后一笔中断数据传输;

当监测到AXI4-S接口的s_ais_tx_tready信号被CPU置为高电平时,表明整个中断数据传输完成,则将s_axis_tx_tvalid、s_axis_tx_tlast、s_axis_tx_tdata、s_axis_tx_tkeep置为低电平。

本发明实施例通过接收中断请求;获取FPGA中已配置的中断类型;根据中断类型生成PCIe中断数据,并根据中断类型确定PCIe接口上PCIe中断数据对应的传输接口;通过传输接口发送PCIe中断数据。扩展了FPGA对CPU中断的兼容性。而且每种中断功能都可以独立开发和维护,且相互之间不会产生影响,降低了开发难度,且有助于实现FPGA逻辑平台化建设,也能从底层保证驱动层的平台化建设。

附图说明

图1是本发明实施例一中的一种PCIe中断方法的流程图;

图2是本发明实施例一中的一种PCIe中断系统的结构示意图;

图3是本发明实施例二中的一种PCIe中断方法的流程图;

图4是本发明实施例二中的PCIe中断处理时序图;

图5是本发明实施例二中的PCIe中断处理时序图;

图6是本发明实施例二中的PCIe中断数据包结构示意图;

图7是本发明实施例三中的一种PCIe中断系统的结构示意图;

图8是本发明实施例三中的另一示例的PCIe中断系统的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

图1为本发明实施例一提供的一种PCIe中断方法的流程图,本实施例可适用于PCIe中断的情况,该方法可以由本发明实施例中PCIe中断系统来执行,该系统可采用软件和/或硬件的方式实现。对于一个具备某种功能的系统,其一般会包括CPU处理器,其是响应各种计算处理需求的核心器件。该系统还可能包括各种外围设备,例如键盘、鼠标、显示器、超声探头或存储器等。本发明实施例的方案中,提供了FPGA(Field-Programmable Gate Array,即现场可编程门阵列),其设置在外围设备和处理器CPU之间,辅助外围设备向CPU发起中断请求,也可以为FPGA获取CPU中的数据,向CPU发送中断,要求CPU为自己进行数据处理。FPGA与CPU之间通过PCIe接口实现数据通信。

如图1所示,该方法具体包括如下步骤:

S110,接收中断请求。

该中断请求作为FPGA的内部中断请求,为开始中断数据传输的操作提示。所述普通数据为需要处理器处理的数据。具体过程为:外围设备获取普通数据(若外围设备为超声探头,则普通数据可以为超声波信号),并将数据传输至FPGA,FPGA包括数据传输模块和接收模块。接收模块用于接收外围设备传输的普通数据,数据传输模块用于通过AXI4-S接口将外围设备获取的普通数据发送至内存。内存和处理器属于同一设备,处理器负责运算和处理,内存负责数据交换。在数据传输模块将数据全部传输至内存后,数据传输模块向接收模块发送数据已经全部传输至内存的提示信息,接收模块接收提示信息。本实施例中的中断请求指的是数据传输模块将数据传输至内存,数据传输完成后,接收模块接收到数据传输完成的提示信息,即中断请求。

S120,获取所述FPGA中已配置的中断类型,其中,所述中断类型包括INTx中断类型、MSI中断类型和MSI-X中断类型中的至少一种。

其中,所述FPGA中配置的中断类型为所述FPGA根据处理器能够处理的中断类型,选取处理器能够处理的中断类型。若满足处理器能够处理的中断类型的中断类型不止一个,则选取其中最优的中断类型(MSI-X中断类型优于MSI中断类型,MSI中断类型优于INTx中断类型)。其中,所述FPGA中配置的中断类型可以为INTx中断类型和MSI中断类型,也可以为INTx中断类型、MSI中断类型和MSI-X中断类型,还可以为INTx中断类型和MSI-X中断类型,本实施例对此不进行限制。

S130,根据所述中断类型生成PCIe中断数据,并根据所述中断类型确定所述PCIe接口上所述PCIe中断数据对应的传输接口。

其中,所述传输接口用于传输中断数据,所述中断数据用于通知处理器普通数据传输完成。由于中断类型不同,相应的PCIe中断数据也不相同,因此需要根据所述中断类型生成相对应的PCIe中断数据。所述中断数据可以为设备存储器PCIe标准定义的信息,也可以为中断向量的地址,本实施例对此不进行限制。不同的中断类型对应的传输接口也不相同,因此需要根据所述中断类型确定所述PCIe接口上所述PCIe中断数据对应的传输接口。例如,如果中断类型为INTx中断类型,则相应的传输接口为CFG_INT接口;如果中断类型为MSI-X中断类型,则相应的传输接口为AXI4-S接口。

具体的,各种中断类型所对应中断传输接口如下表所示:

S140,通过所述传输接口发送所述PCIe中断数据。

处理器接收PCIe中断数据后开始进行中断操作。

在一个具体的例子中,若外围设备为超声探头,超声探头获取需要处理器处理的超声波信号,将所述超声波信号传输至FPGA,FPGA中的数据传输单元通过AXI4-S接口将超声波信号传输至内存,数据传输完成之后,数据传输单元向接收模块发送数据传输完成的提示信息,也就是向FPGA的接收模块发送中断请求,如图2所示,PCIe中断系统包括中断配置模块和中断处理模块,FPGA接收到超声波信号已经全部传输至内存的信息后,驱动层获取处理器能够处理的中断类型,中断配置模块配置相应的中断类型,中断处理模块根据处理器能够处理的中断类型配置相应的传输接口,将所述中断类型对应的PCIe中断数据通过相应的传输接口发送至PCIe IP核,PCIe IP核将数据发送至处理器中PCIe根控制器。进而实现将处理器中断请求发送至处理器,实现中断操作。PCIe根控制器作为连接CPU/内存和外部设备的枢纽,根控制器在整个PCIe体系结构中处于核心位置,它是I/O层次系统与CPU/内存系统连接的最顶层。一个根控制器可以支持一个或多个PCIe端口。每个端口定义了一个独立的域,每个域由一个单独的终端,或一个包含一个或多个交换机和终端的子系统构成。同时,根据协议规定,根控制器中可以根据具体选择支持不同域间报文路由的功能。

本实施例的技术方案,通过FPGA接收内部中断请求;获取FPGA中已配置的中断类型;根据中断类型生成PCIe中断数据,并根据中断类型确定PCIe接口上PCIe中断数据对应的传输接口;通过传输接口发送PCIe中断数据。扩展了FPGA对处理器中断的兼容性。而且每种中断功能都可以独立开发和维护,且相互之间不会产生影响,降低了开发难度,且有助于实现FPGA逻辑平台化建设,也能从底层保证驱动层的平台化建设。

实施例二

图3为本发明实施例二中的一种PCIe中断方法的流程示意图,在上述实施例的基础上,在所述接收中断请求的步骤之前,还包括:配置所述FPGA的中断类型,并配置所述PCIe接口为全类型模式,其中,所述全类型模式支持所有所述中断类型。

如图3所示,本实施例的方法具体包括如下步骤:

S210,配置所述FPGA的中断类型,并配置所述PCIe接口为全类型模式,其中,所述全类型模式支持所有所述中断类型。

其中,所述FPGA的中断类型可以为INTx中断类型,也可以为MSI中断类型,还可以为MSI-X中断类型。所述FPGA根据CPU能够处理的中断类型配置所述FPGA的中断类型。例如可以是,CPU能够处理的中断类型为INTx中断类型,配置所述FPGA的中断类型为INTx中断类型。

具体的,所述全类型模式为可以支持INTx中断类型的数据传输,也可以支持MSI中断类型的数据传输,还可以为支持MSI-X中断类型的数据传输。

具体的,由于所述INTx中断类型、MSI中断类型以及MSI-X中断类型需要的传输接口不同,因此,FPGA如果需要支持所有的中断类型,则需要配置多个传输接口,在不同的中断类型的情况下使用不同的传输接口传输数据。这样就可以保证不论外接设备的中断类型为INTx中断类型、MSI中断类型还是MSI-X中断类型,FPGA都可以根据需要为其提供相应的传输接口。

S220,接收中断请求。

具体的,先阐述一下FPGA和CPU之间的数据交换过程,以最常见的FPGA上传数据至DDR(Double Data Rate,双倍速率同步动态随机存储器)为例。当FPGA端想要上传数据至CPU端的主存设备时,为了减轻CPU负担在FPGA侧通常情况下会放入DMU(Direct Memory Unit,直接内存单元)模块,最初时刻DMU处于闲置状态,等待CPU配置DMU模块,其中,配置参数有传输数据长度、目标地址、通道号以及中断使能等信息。FPGA中数据传输模块通过DMA(Direct Memory Access,存储器直接访问)的方式透过PCIe接口将数据上传至CPU端DDR主存,当数据传输模块将数据搬运完成数据传输模块向FPGA中的接收模块发送内部中断请求,FPGA中的接收模块会接收到内部中断请求。

S230,获取所述FPGA中已配置的中断类型,其中,所述中断类型包括INTx中断类型、MSI中断类型和MSI-X中断类型中的至少一种。

S240,根据所述中断类型生成PCIe中断数据,并根据所述中断类型确定所述PCIe接口上所述PCIe中断数据对应的传输接口。

可选的,所述根据所述中断类型确定所述PCIe中断数据对应的传输接口的步骤包括:

若中断类型为MSI-X中断,则确定传输接口为AXI4-S接口;

若中断类型为MSI中断,则确定传输接口为CFG_INT接口;

若中断类型为INTx中断,则确定传输接口为CFG_INT接口。

MSI中断请求是向Message Address所在的地址写Message Data字段包含的数据。MSI-X中断机制在MSI-X Capablity结构中存放了一个指向一组Message Address和Message Data字段的指针,从而一个PCIe设备可以支持的MSI-X中断请求数目大于32个,而且并不要求中断向量号连续。MSI-X机制使用的这组Message Address和Message Data字段存放在PCIe设备的BAR空间中,而不是在PCIe设备的配置空间中,从而可以由用户决定使用MSI-X中断请求的数目。

S250,通过所述传输接口发送所述PCIe中断数据。

具体的,数据搬运完成需要进行Interrupt中断请求处理,MSI-X中断类型对应的中断向量表存在于User Logic,User端只能通过发送含有中断信息的MWr TLP包实现,因此MSI-X中断必须通过操作AXI4-S接口实现。MSI中断类型存放于PCIe Capability Structure中,可以通过发送MWr TLP包或者操作CFG_INT接口来实现。INTx中断类型必须通过操作CFG_INT接口实现。其Interrupt详细处理流程如下:CPU配置中断类型;根据配置类型使能相应模块;在中断请求来到时,被使能的模块执行相应的中断流程;中断执行完成,返回空闲状态,等待下一次中断操作。

可选的,当传输接口为CFG_INT接口时,通过所述传输接口发送所述PCIe中断数据的处理时序包括:INTx中断执行流程和MSI中断执行流程;

所述INTx中断执行流程包括:

将CFG_INT接口的cfg_interrupt_assert信号和cfg_interrupt信号置为高电平;

当监测到CFG_INT接口的cfg_interrupt_rdy信号被CPU置为高电平时,将所述cfg_interrupt信号置为高电平,且将所述cfg_interrupt_assert信号置为低电平;

当所述cfg_interrupt_rdy信号被CPU置为高电平时,确定所述CPU响应所述中断;

具体的,通过配置接口cfg_interrupt和cfg_interrupt_assert来提交中断,当接收到有效中断时将cfg_interrupt_rdy置为有效,表示中断请求被接受。

具体的,如图4所示,图中2所示位置为INTx中断请求被接收,在时钟输出的上升沿,中断置位信号(cfg_interrupt_assert信号)、中断请求信号(cfg_interrupt信号)以及中断响应信号(cfg_interrupt_rdy信号)为高电平。图中3所示的位置为释放INTx中断请求,在时钟输出的上升沿,中断请求信号(cfg_interrupt信号)为高电平,中断置位信号(cfg_interrupt_assert信号)为低电平以及中断响应信号(cfg_interrupt_rdy信号)为高电平,确定所述CPU响应INTx中断请求。

所述MSI中断执行流程包括:

将所述CFG_INT接口的cfg_interrupt信号和cfg_interrupt_di信号置为第一标志位;

其中,将所述CFG_INT接口的cfg_interrupt信号和cfg_interrupt_di信号置为第一标志位可以为置高cfg_interrupt信号和将cfg_interrupt_di信号置为01h。

在监测到CFG_INT接口的cfg_interrupt_rdy信号被CPU置为高电平时,将所述cfg_interrupt信号和cfg_interrupt_di信号置为第二标志位,作为所述中断请求;

其中,将所述cfg_interrupt信号和cfg_interrupt_di信号置为第二标志位可以为置高cfg_interrupt信号和将cfg_interrupt_di信号置为00h。

在所述cfg_interrupt_rdy信号被CPU置为高电平时,确定所述CPU响应所述中断请求。

具体的,如图4所示,图中5所示位置为MSI中断请求被接收,在时钟输出的上升沿,CFG_INT接口的中断请求信号(cfg_interrupt信号)为高电平、中断输入数据信号(cfg_interrupt_di信号)为01h以及中断响应信号(cfg_interrupt_rdy信号)为高电平。图中4所示的位置为释放MSI中断请求,在时钟输出的上升沿,CFG_INT接口的中断请求信号(cfg_interrupt信号)为高电平、中断输入数据信号(cfg_interrupt_di信号)为00h以及中断响应信号(cfg_interrupt_rdy信号)为高电平,确定所述CPU响应MSI中断请求。

可选的,当传输接口为AXI4-S接口时,通过所述传输接口发送所述PCIe中断数据的处理时序包括:

具体的,ASI4-S遵守标准AXI4-Stream规范,其中的中断地址和中断数据包含在数据包内,都是预先RC配置到FPGA内部模块的。数据包格式需要遵从Xilinx提供的PCIe TLP数据结构。

将AXI4-S接口的s_axis_tx_tvalid信号置为高电平,s_axis_tx_tdata、s_axis_tx_tkeep、s_axis_tx_tlast信号填充适当数据;

当监测到AXI4-S接口的s_ais_tx_tready信号被CPU置为高电平时,表明当前传输的数据被接收,当s_axis_tx_tlast置为高电平时,表明是最后一笔中断数据传输;

当监测到AXI4-S接口的s_ais_tx_tready信号被CPU置为高电平时,表明整个中断数据传输完成,则将s_axis_tx_tvalid、s_axis_tx_tlast、s_axis_tx_tdata、s_axis_tx_tkeep置为低电平。

具体的,通过AXI4-S接口实现PCIe核与PCIe Root Complex之间数据的传输。

具体的,如图5所示,图中1所示位置为AXI4-S接口数据传输完成,在时钟输出的上升沿,s_axis_tx_tvalid、s_axis_tx_tlast以及s_axis_tx_tready为高电平,表明传输完成。

如图6所示,数据包格式遵从Xilinx提供的PCIe TLP数据结构,其中,传送类型字段(TC字段)定义报文的传送类型,TD位表示TLP中的TLP Digest是否有效,EP位表示当前TLP中的数据是否有效,报文模型字段定义报文的模型,报文的有效负载(Length),即需要读取的双字(DW)个数,第一标记由八位组成,决定了发送端能够暂存256个同类型的TLP,应用层需要根据报文的有效负载(Length)及地址(Address),使用完成报文返回相应的数据。

本实施例的技术方案,通过配置所述FPGA的中断类型,并配置所述PCIe接口为全类型模式,其中,所述全类型模式支持所有所述中断类型。能够保证不管CPU端采用何种类型的CPU(ARM、x86、PowerPC等),也无论其支持哪种类型的中断(INTx、MSI、MSI-X),FPGA侧均可以支持,增强了FPGA对3种中断类型的兼容性,实现了接口的一致性以及CPU和PCIe之间的中断处理标准化,同时,亦可提升FPGA平台建设。

实施例三

图7为本发明实施例三的一种PCIe中断系统的结构示意图,所述系统用于执行PCIe中断方法。如图7所示,FPGA与处理器之间通过PCIe接口实现数据通信,所述PCIe中断系统具体包括:中断控制模块310和PCIe接口模块320。

其中,所述中断控制模块310,用于接收中断请求,获取所述FPGA中已配置的中断类型,根据所述中断类型生成PCIe中断数据,并根据所述中断类型确定所述PCIe接口模块320上的传输接口,其中,所述中断类型包括INTx中断类型、MSI中断类型和MSI-X中断类型中的至少一种;

所述中断控制模块310通过所述传输接口发送所述PCIe中断数据。

可选的,如图8所示,还包括:中断配置模块330,用于配置所述FPGA的中断类型。所述PCIe接口模块还用于配置所述PCIe接口为全类型模式,其中,所述全类型模式支持所有所述中断类型。

可选的,所述中断控制模块还用于:

当所述中断类型为MSI-X中断时,则确定传输接口为AXI4-S接口;

当所述中断类型为MSI中断时,则确定传输接口为CFG_INT接口;

当中断类型为INTx中断时,则确定传输接口为CFG_INT接口。

可选的,当传输接口为CFG_INT接口时,通过所述传输接口发送所述PCIe中断数据的处理时序包括:INTx中断执行流程和MSI中断执行流程;

所述INTx中断执行流程包括:

将CFG_INT接口的cfg_interrupt_assert信号和cfg_interrupt信号置为高电平;

当监测到CFG_INT接口的cfg_interrupt_rdy信号被CPU置为高电平时,将所述cfg_interrupt信号置为高电平,且将所述cfg_interrupt_assert信号置为低电平;

当所述cfg_interrupt_rdy信号被CPU置为高电平时,确定所述CPU响应所述中断;

所述MSI中断执行流程包括:

将所述CFG_INT接口的cfg_interrupt信号和cfg_interrupt_di信号置为第一标志位;

在监测到CFG_INT接口的cfg_interrupt_rdy信号被CPU置为高电平时,将所述cfg_interrupt信号和cfg_interrupt_di信号置为第二标志位,作为所述中断请求;

在所述cfg_interrupt_rdy信号被CPU置为高电平时,确定所述CPU响应所述中断请求。

可选的,当传输接口为AXI4-S接口时,通过所述传输接口发送所述PCIe中断数据的处理时序包括:

将AXI4-S接口的s_axis_tx_tvalid信号置为高电平,s_axis_tx_tdata、s_axis_tx_tkeep、s_axis_tx_tlast信号填充适当数据;

当监测到AXI4-S接口的s_ais_tx_tready信号被CPU置为高电平时,表明当前传输的数据被接收,当s_axis_tx_tlast置为高电平时,表明是最后一笔中断数据传输;

当监测到AXI4-S接口的s_ais_tx_tready信号被CPU置为高电平时,表明整个中断数据传输完成,则将s_axis_tx_tvalid、s_axis_tx_tlast、s_axis_tx_tdata、s_axis_tx_tkeep置为低电平。

本实施例的技术方案,通过接收中断请求;获取FPGA中已配置的中断类型;根据中断类型生成PCIe中断数据,并根据中断类型确定PCIe接口上PCIe中断数据对应的传输接口;通过传输接口发送PCIe中断数据。扩展了FPGA的对处理器中断的兼容性。而且每种中断功能都可以独立开发和维护,且相互之间不会产生影响,降低了开发难度,且有助于实现FPGA逻辑平台化建设,也能从底层保证驱动层的平台化建设。

上述产品可执行本发明任意实施例所提供的方法,具备执行方法相应的功能模块和有益效果。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

中断处理过程示意图_PCIe中断方法和系统与流程相关推荐

  1. 中断处理过程示意图_中断和中断处理流程

    1. 中断概念 中断是指由于接收到来自外围硬件(相对于中央处理器和内存)的异步信号或来自软件的同步信号,而进行相应的硬件/软件处理.发出这样的信号称为进行中断请求(interrupt request, ...

  2. 中断处理过程示意图_中断及中断处理过程

    中断及中断处理过程 1. 中断和异常的概念区别 Intel的官方文档里将中断和异常理解为两种中断当前程序执行的不同机制.这是中断和异常的共同点.不同点在于: 中断(interrupt)是异步的事件,典 ...

  3. 中断处理过程示意图_中断服务程序流程图

    教学方法.实施步骤 时间分配 教学手段 回 顾 5 " × 2 板书 计算机 投影仪 多媒体课件等 讲 授 40 " × 2 提 问 3 " × 2 小 结 2 &quo ...

  4. 中断处理过程示意图_聊聊什么是中断机制?

    什么是中断 中断其实是一种"中断"事件,中断具体代表什么意思需要考虑它所处的上下文环境和参照对象是谁.考虑事件,我们可以简单把中断抽象为这样一种模型: 当我们分析某种中断事件时,我 ...

  5. 中断处理过程示意图_ucore操作系统实验笔记 - Lab1

    最近一直都在跟清华大学的操作系统课程,这个课程最大的特点是有一系列可以实战的操作系统实验.这些实验总共有8个,我在这里记录实验中的一些心得和总结. Task1 这个Task主要是为了熟悉Makfile ...

  6. html5 视频语音对讲,一种基于WebRTC的多人语音视频通话方法及系统与流程

    本发明涉及视频通话领域,特别涉及一种基于WebRTC的多人语音视频通话方法及系统. 背景技术: 随着互联网技术和通信技术的快速发展,人们的交流方式与交流内容得到了极大的丰富和发展.在节奏越来越快的信息 ...

  7. java工单自动化流程控件,一种工单审批的自动化处理方法及系统与流程

    本发明涉及IT运维技术领域,尤其涉及一种工单审批的自动化处理方法及系统. 背景技术: 工单系统是企业内部工作任务传达的系统,用于记录.处理.跟踪.审批一项工作执行情况,工单系统的普遍现状是由申请人在工 ...

  8. 分布式mysql保持数据一致性_一种分布式跨数据库保持事务一致性的方法及系统与流程...

    本发明涉及计算机网络技术领域,尤其涉及一种分布式跨数据库保持事务一致性的方法及系统. 背景技术: 目前,分布式服务架构十分的流行,特别是对于电商领域来说.他的优点就不多说了,但是随着集群机器的增加,集 ...

  9. 先滑窗后时空联合处理MATLAB,时空联合优化重建方法及系统与流程

    本发明属于图像三维重建技术领域,尤其涉及一种基于扫描光场显微成像系统的时空联合优化重建方法及系统. 背景技术: 三维成像一直是显微成像研究领域中的热点前沿,对科学家探索生命奥秘.疾病机理均有重大意义. ...

最新文章

  1. 想学单片机怎么入手?学单片机前先学什么?
  2. 计算机运用领域最高奖的是2016年,中国首获高性能计算应用领域最高奖
  3. The bag-of-words model
  4. vim 记录阅读信息
  5. 所请求vi未加载至服务器内存_linux下tomcat端口请求数太大,导致服务器资源加载过慢的配置优化...
  6. UVA 11584 Partitioning by Palindromes 动态规划 入门
  7. 用 Python 制作子弹图也这么简单,爱了~
  8. 仅用 []()+! 就足以实现几乎任意Javascript代码
  9. 前端学习(2014)vue之电商管理系统电商系统之监听on-remove事件
  10. 数据结构之树的一些基本操作
  11. .net下汇总搜索引擎关键字编码
  12. 终端IO--unix环境高级编程读书笔记
  13. android.support.v4.app.FragmentManager无法转换为android.app.FragmentManager
  14. python程序内存分析_Python中使用MELIAE分析程序内存占用实例
  15. 概率论与数理统计1:启航
  16. matlab 画图函数plot
  17. 动作捕捉——从模型到动画个人流程记录
  18. Java古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
  19. 信息系统的无单点故障设计
  20. GET请求里的body问题

热门文章

  1. 从运维角度浅谈MySQL数据库优化,中小企业DBA必会
  2. 解析鸿蒙内核消息队列QueueMail接口的哼哈二将
  3. 云小课 | 玩转HiLens Studio之快速订购HiLens Studio版本
  4. 一文掌握GaussDB(DWS) SQL进阶技能:全文检索
  5. 【华为云技术分享】华为云HiLens全面升级,端云协同多模态AI应用开发利器
  6. 【华为云技术分享】【昇腾】【玩转Atlas200DK系列】基于Pycharm专业版构建开发板python开发运行环境
  7. 学习索引结构的一些案例——Jeff Dean在SystemML会议上发布的论文(下)
  8. 服务器虚拟化的培训,VMware服务器虚拟化及桌面虚拟化培训.pptx
  9. 设置Markdown中展示Liquid(Jekyll)但不解析的方式
  10. 使用CLion在Gtkmm中加载glade文件时的相对路径问题