CN106681816A - PCIe中断方法和系统 - Google Patents
PCIe中断方法和系统 Download PDFInfo
- Publication number
- CN106681816A CN106681816A CN201611227961.1A CN201611227961A CN106681816A CN 106681816 A CN106681816 A CN 106681816A CN 201611227961 A CN201611227961 A CN 201611227961A CN 106681816 A CN106681816 A CN 106681816A
- Authority
- CN
- China
- Prior art keywords
- interrupt
- cfg
- signals
- pcie
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4825—Interrupt from clock, e.g. time of day
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明实施例公开了一种PCIe中断方法和系统,该方法包括:接收中断请求;获取所述FPGA中已配置的中断类型;根据所述中断类型生成PCIe中断数据,并根据所述中断类型确定所述PCIe接口上所述PCIe中断数据对应的传输接口;通过所述传输接口发送所述PCIe中断数据。通过本发明的技术方案,扩展了FPGA的对处理器中断的兼容性。而且每种中断功能都可以独立开发和维护,且相互之间不会产生影响,降低了开发难度,且有助于实现FPGA逻辑平台化建设,也能从底层保证驱动层的平台化建设。
Description
技术领域
本发明实施例涉及通信技术领域,尤其涉及一种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-XCapability寄存器使用一个数组存放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 GateArray,即现场可编程门阵列),其设置在外围设备和处理器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 MemoryUnit,直接内存单元)模块,最初时刻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 CapabilityStructure中,可以通过发送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逻辑平台化建设,也能从底层保证驱动层的平台化建设。
上述产品可执行本发明任意实施例所提供的方法,具备执行方法相应的功能模块和有益效果。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种PCIe中断方法,FPGA与处理器之间通过PCIe接口实现数据通信,其特征在于,包括以下步骤:
接收中断请求;
获取所述FPGA中已配置的中断类型,其中,所述中断类型包括INTx中断类型、MSI中断类型和MSI-X中断类型中的至少一种;
根据所述中断类型生成PCIe中断数据,并根据所述中断类型确定所述PCIe接口上所述PCIe中断数据对应的传输接口;
通过所述传输接口发送所述PCIe中断数据。
2.根据权利要求1所述的方法,其特征在于,在所述接收中断请求的步骤之前,还包括:
配置所述FPGA的中断类型,并配置所述PCIe接口为全类型模式,其中,所述全类型模式支持所有所述中断类型。
3.根据权利要求1所述的方法,其特征在于,所述根据所述中断类型确定所述PCIe中断数据对应的传输接口的步骤包括:
若中断类型为MSI-X中断,则确定传输接口为AXI4-S接口;
若中断类型为MSI中断,则确定传输接口为CFG_INT接口;
若中断类型为INTx中断,则确定传输接口为CFG_INT接口。
4.根据权利要求3所述的方法,其特征在于,当传输接口为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响应所述中断请求。
5.根据权利要求3所述的方法,其特征在于,当传输接口为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置为低电平。
6.一种PCIe中断系统,FPGA与处理器之间通过PCIe接口实现数据通信,其特征在于,包括:中断控制模块和PCIe接口模块;
所述中断控制模块,用于接收中断请求,获取所述FPGA中已配置的中断类型,根据所述中断类型生成PCIe中断数据,并根据所述中断类型确定所述PCIe接口模块上的传输接口,其中,所述中断类型包括INTx中断类型、MSI中断类型和MSI-X中断类型中的至少一种;
所述中断控制模块通过所述传输接口发送所述PCIe中断数据。
7.根据权利要求6所述的系统,其特征在于,还包括:
中断配置模块,用于配置所述FPGA的中断类型;
所述PCIe接口模块还用于配置所述PCIe接口为全类型模式,其中,所述全类型模式支持所有所述中断类型。
8.根据权利要求6所述的系统,其特征在于,所述中断控制模块还用于:
当所述中断类型为MSI-X中断时,则确定传输接口为AXI4-S接口;
当所述中断类型为MSI中断时,则确定传输接口为CFG_INT接口;
当中断类型为INTx中断时,则确定传输接口为CFG_INT接口。
9.根据权利要求8所述的系统,其特征在于,当传输接口为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响应所述中断请求。
10.根据权利要求8所述的系统,其特征在于,当传输接口为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置为低电平。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611227961.1A CN106681816A (zh) | 2016-12-27 | 2016-12-27 | PCIe中断方法和系统 |
PCT/CN2017/093470 WO2018120780A1 (zh) | 2016-12-27 | 2017-07-19 | PCIe中断方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611227961.1A CN106681816A (zh) | 2016-12-27 | 2016-12-27 | PCIe中断方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106681816A true CN106681816A (zh) | 2017-05-17 |
Family
ID=58871911
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611227961.1A Pending CN106681816A (zh) | 2016-12-27 | 2016-12-27 | PCIe中断方法和系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN106681816A (zh) |
WO (1) | WO2018120780A1 (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018120780A1 (zh) * | 2016-12-27 | 2018-07-05 | 深圳开立生物医疗科技股份有限公司 | PCIe中断方法和系统 |
CN108628782A (zh) * | 2018-03-27 | 2018-10-09 | 天津麒麟信息技术有限公司 | 一种基于飞腾平台的中断转换机制的实现方法 |
CN108763121A (zh) * | 2018-04-28 | 2018-11-06 | 西安电子科技大学 | TTE端系统适配卡PCIe控制器的中断操作方法 |
CN109582232A (zh) * | 2018-11-21 | 2019-04-05 | 中国船舶重工集团公司第七0七研究所 | 一种基于FPGA的顺序读写多片Flash系统及方法 |
CN110399324A (zh) * | 2019-06-28 | 2019-11-01 | 苏州浪潮智能科技有限公司 | 中断转换器及中断转换方法 |
CN110750472A (zh) * | 2019-09-10 | 2020-02-04 | 苏州浪潮智能科技有限公司 | 一种int中断转msi中断的转换方法、装置及存储介质 |
CN111078597A (zh) * | 2019-12-04 | 2020-04-28 | 江苏芯盛智能科技有限公司 | 一种中断消息生成装置、方法以及端设备 |
CN111427823A (zh) * | 2020-03-30 | 2020-07-17 | 天津光电通信技术有限公司 | 支持pc与fpga通过pcie通信的驱动设计方法 |
CN113282397A (zh) * | 2021-06-25 | 2021-08-20 | 厦门紫光展锐科技有限公司 | 外设的中断处理方法及设备 |
CN115221083A (zh) * | 2022-09-05 | 2022-10-21 | 浪潮电子信息产业股份有限公司 | 一种PCIe中断处理方法、装置、设备及介质 |
WO2022227565A1 (zh) * | 2021-04-29 | 2022-11-03 | 上海阵量智能科技有限公司 | 中断控制器、中断控制方法、芯片、计算机设备以及介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113472964B (zh) * | 2021-06-05 | 2024-04-16 | 山东英信计算机技术有限公司 | 一种图像处理装置和系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050289271A1 (en) * | 2004-06-29 | 2005-12-29 | Martinez Alberto J | Circuitry to selectively produce MSI signals |
US7197588B2 (en) * | 2004-03-31 | 2007-03-27 | Intel Corporation | Interrupt scheme for an Input/Output device |
US20100262741A1 (en) * | 2009-04-14 | 2010-10-14 | Norimitsu Hayakawa | Computer system, interrupt relay circuit and interrupt relay method |
US20110289242A1 (en) * | 2010-05-21 | 2011-11-24 | Oracle International Corporation | Managing interrupts in a virtualized input/output device supporting multiple hosts and functions |
CN103959267A (zh) * | 2011-11-30 | 2014-07-30 | 马维尔国际贸易有限公司 | 用于具有多个总线的pcie电桥的中断处理系统及方法 |
CN104484159A (zh) * | 2005-10-18 | 2015-04-01 | 高通股份有限公司 | 用于数字信号处理器的共享中断控制方法及系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101634974A (zh) * | 2009-08-26 | 2010-01-27 | 成都市华为赛门铁克科技有限公司 | 一种多中断类型的处理方法、装置和系统 |
CN103559156B (zh) * | 2013-11-11 | 2016-04-06 | 北京大学 | 一种fpga与计算机之间的通信系统 |
CN106681816A (zh) * | 2016-12-27 | 2017-05-17 | 深圳开立生物医疗科技股份有限公司 | PCIe中断方法和系统 |
-
2016
- 2016-12-27 CN CN201611227961.1A patent/CN106681816A/zh active Pending
-
2017
- 2017-07-19 WO PCT/CN2017/093470 patent/WO2018120780A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7197588B2 (en) * | 2004-03-31 | 2007-03-27 | Intel Corporation | Interrupt scheme for an Input/Output device |
US20050289271A1 (en) * | 2004-06-29 | 2005-12-29 | Martinez Alberto J | Circuitry to selectively produce MSI signals |
CN104484159A (zh) * | 2005-10-18 | 2015-04-01 | 高通股份有限公司 | 用于数字信号处理器的共享中断控制方法及系统 |
US20100262741A1 (en) * | 2009-04-14 | 2010-10-14 | Norimitsu Hayakawa | Computer system, interrupt relay circuit and interrupt relay method |
US20110289242A1 (en) * | 2010-05-21 | 2011-11-24 | Oracle International Corporation | Managing interrupts in a virtualized input/output device supporting multiple hosts and functions |
CN103959267A (zh) * | 2011-11-30 | 2014-07-30 | 马维尔国际贸易有限公司 | 用于具有多个总线的pcie电桥的中断处理系统及方法 |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018120780A1 (zh) * | 2016-12-27 | 2018-07-05 | 深圳开立生物医疗科技股份有限公司 | PCIe中断方法和系统 |
CN108628782A (zh) * | 2018-03-27 | 2018-10-09 | 天津麒麟信息技术有限公司 | 一种基于飞腾平台的中断转换机制的实现方法 |
CN108628782B (zh) * | 2018-03-27 | 2024-03-15 | 天津麒麟信息技术有限公司 | 一种基于飞腾平台的中断转换机制的实现方法 |
CN108763121B (zh) * | 2018-04-28 | 2021-07-27 | 西安电子科技大学 | TTE端系统适配卡PCIe控制器的中断操作方法 |
CN108763121A (zh) * | 2018-04-28 | 2018-11-06 | 西安电子科技大学 | TTE端系统适配卡PCIe控制器的中断操作方法 |
CN109582232A (zh) * | 2018-11-21 | 2019-04-05 | 中国船舶重工集团公司第七0七研究所 | 一种基于FPGA的顺序读写多片Flash系统及方法 |
CN110399324A (zh) * | 2019-06-28 | 2019-11-01 | 苏州浪潮智能科技有限公司 | 中断转换器及中断转换方法 |
CN110750472A (zh) * | 2019-09-10 | 2020-02-04 | 苏州浪潮智能科技有限公司 | 一种int中断转msi中断的转换方法、装置及存储介质 |
CN111078597A (zh) * | 2019-12-04 | 2020-04-28 | 江苏芯盛智能科技有限公司 | 一种中断消息生成装置、方法以及端设备 |
CN111078597B (zh) * | 2019-12-04 | 2021-07-30 | 江苏芯盛智能科技有限公司 | 一种中断消息生成装置、方法以及端设备 |
CN111427823A (zh) * | 2020-03-30 | 2020-07-17 | 天津光电通信技术有限公司 | 支持pc与fpga通过pcie通信的驱动设计方法 |
WO2022227565A1 (zh) * | 2021-04-29 | 2022-11-03 | 上海阵量智能科技有限公司 | 中断控制器、中断控制方法、芯片、计算机设备以及介质 |
CN113282397A (zh) * | 2021-06-25 | 2021-08-20 | 厦门紫光展锐科技有限公司 | 外设的中断处理方法及设备 |
CN113282397B (zh) * | 2021-06-25 | 2022-08-30 | 厦门紫光展锐科技有限公司 | 外设的中断处理方法及设备 |
CN115221083A (zh) * | 2022-09-05 | 2022-10-21 | 浪潮电子信息产业股份有限公司 | 一种PCIe中断处理方法、装置、设备及介质 |
CN115221083B (zh) * | 2022-09-05 | 2023-01-24 | 浪潮电子信息产业股份有限公司 | 一种PCIe中断处理方法、装置、设备及介质 |
WO2024051122A1 (zh) * | 2022-09-05 | 2024-03-14 | 浪潮电子信息产业股份有限公司 | 一种PCIe中断处理方法、装置、设备及非易失性可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2018120780A1 (zh) | 2018-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106681816A (zh) | PCIe中断方法和系统 | |
US7752374B2 (en) | Method and apparatus for host messaging unit for peripheral component interconnect busmaster devices | |
US9467511B2 (en) | Techniques for use of vendor defined messages to execute a command to access a storage device | |
US6523081B1 (en) | Architecture using dedicated endpoints and protocol for creating a multi-application interface and improving bandwidth over universal serial bus | |
CN1815463B (zh) | 四重抽吸总线体系结构和协议 | |
US7257658B2 (en) | Message based interrupt table | |
JP2001142842A (ja) | Dmaハンドシェークプロトコル | |
JP4837659B2 (ja) | 分割トランザクションを処理するためのバス・コントローラ | |
JPH07210537A (ja) | コンピュータシステム | |
US6766386B2 (en) | Method and interface for improved efficiency in performing bus-to-bus read data transfers | |
EP1625506B1 (en) | Usb host controller with memory for transfer descriptors | |
US6105080A (en) | Host adapter DMA controller with automated host reply capability | |
CN114817965A (zh) | 基于多算法ip核实现msi中断处理的高速加解密系统及方法 | |
US7383372B2 (en) | Bus system, station for use in a bus system, and bus interface | |
JPH08314418A (ja) | バースト・ダイレクトメモリアクセスを備えた表示制御装置を有するデータ処理システム | |
EP1483674B1 (en) | Usb host controller | |
JP2008502977A (ja) | バス・コントローラのための割り込み方式 | |
US6684284B1 (en) | Control chipset, and data transaction method and signal transmission devices therefor | |
US8996772B1 (en) | Host communication device and method with data transfer scheduler | |
JP6146508B1 (ja) | 同期処理ユニット、デバイス、システムおよび方法 | |
US7243178B2 (en) | Enable/disable claiming of a DMA request interrupt | |
JPH11163970A (ja) | 装置内基盤制御システム | |
CN109992560B (zh) | 一种通信方法及通信系统 | |
CN100541466C (zh) | 系统芯片间信息传递方法 | |
US7716397B2 (en) | Methods and systems for interprocessor message exchange between devices using only write bus transactions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170517 |
|
RJ01 | Rejection of invention patent application after publication |