CN117743212A - 基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法及系统 - Google Patents

基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法及系统 Download PDF

Info

Publication number
CN117743212A
CN117743212A CN202410183153.8A CN202410183153A CN117743212A CN 117743212 A CN117743212 A CN 117743212A CN 202410183153 A CN202410183153 A CN 202410183153A CN 117743212 A CN117743212 A CN 117743212A
Authority
CN
China
Prior art keywords
pcie
physical function
layer packet
transaction layer
fpga
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
Application number
CN202410183153.8A
Other languages
English (en)
Inventor
请求不公布姓名
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Guang Runtong Technology Development Co ltd
Original Assignee
Beijing Guang Runtong Technology Development Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Guang Runtong Technology Development Co ltd filed Critical Beijing Guang Runtong Technology Development Co ltd
Priority to CN202410183153.8A priority Critical patent/CN117743212A/zh
Publication of CN117743212A publication Critical patent/CN117743212A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Transfer Systems (AREA)

Abstract

本发明涉及基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法及系统,所述方法包括如下步骤:获取HOST读取与所述PCIe设备的第一个物理功能对应的配置空间的第一返回值,当所述第一返回值为单物理功能设备时动态修改所述第一返回值为多物理功能设备;获取HOST读取与所述PCIe设备的每个物理功能对应的配置空间的第二返回值,当所述第二返回值为所述PCIe设备的识别码或不支持物理功能请求时,确认所述PCIe设备支持与所述第二返回值对应的物理功能;保存与所述PCIe设备支持的每个物理功能对应的配置空间的空间基地址。本发明的至少一些技术方案的有益效果在于,成功的在Xilinx、复旦微公司的芯片上扩展了FPGA的PCIe IP核为多物理功能设备。

Description

基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法及 系统
技术领域
本发明属于通讯技术领域,特别涉及基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法及系统。
背景技术
PCIe是一种高速串行计算机扩展总线标准,主机(HOST)和外设(PCIe设备)可通过PCIe总线进行输入/输出(I/O)。根据PCIe规范,每个PCIe设备可以拥有1~8个独立的PF(Physical Function 物理功能或物理模块,有时简称为功能或Function),PF 是包括了SR-IOV(Single-root I/O virtualization,单根I/O虚拟化)功能的传统 PCIe function(功能),它具有对 PCIe 设备的完全配置和控制功能(包括数据移动),每个PF都有一个唯一独立的配置空间(Configuration Space)与之对应,每个PF可设置不同功能。基于FPGA的PCIe IP核,是FPGA厂家(比如Xilinx、Intel、复旦微公司)在市场销售的基于FPGA实现的PCIe IP核,都为单物理功能(single-function)而不是多物理功能(multi-function),单物理功能只能实现单一的功能,例如,网卡驱动编写者预基于单口网卡实现多口或者多个不同功能的PCIe设备,只能用一个驱动(系统也只能加载一个实例)来实现,对于维护和控制都极其麻烦,一般基于FPGA的PCIe IP核用户因受该单物理功能限制,只能开发单一的功能的单物理功能PF设备。因此,亟需一种基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法及系统。
发明内容
本发明至少一个方面涉及一种基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法,所述基于FPGA的PCIe IP核配置在PCIe设备上,所述方法包括如下步骤:
截获HOST探测所述基于FPGA的PCIe IP核的第一个物理功能(function 0)的配置空间得到的第一返回值,当所述第一返回值为单物理功能设备信息时修改为多物理功能设备信息,再将修改后的所述第一返回值返回给所述HOST;
获得所述HOST读取所述基于FPGA的PCIe IP核的每个物理功能的所述配置空间得到的第二返回值(CPL&CPLD),所述第二返回值为支持物理功能请求信息(CPLD)或不支持物理功能请求信息(CPL),再将所述第二返回值返回给所述HOST;
提取所述HOST向返回所述第二返回值为所述支持物理功能请求信息的所述配置空间发送的PCIe配置写(CfgWr)命令的物理功能编码(Function ID)和空间基地址(BaseAddress),再将所述物理功能编码和所述空间基地址分别存放在所述第一个物理功能的所述配置空间上。
本发明至少一个方面涉及基于FPGA的PCIe IP核实现多物理功能的PCIe设备的系统,所述系统包括至少一个处理器;以及存储器,其存储有指令,当通过至少一个处理器来执行该指令时,实施按照本发明任一项所述的方法的步骤。
本发明的多个技术方案为通过截获从HOST发来的PCIe配置命令,来动态修改相应的回应数据来达到本发明目的。
本发明的至少一些技术方案的有益效果在于,成功的在Xilinx、Intel、复旦微公司等基于FPGA实现的PCIe IP核(芯片)的基础上实现了多物理功能的PCIe设备。
附图说明
图1 HOST与包括基于FPGA的PCIe IP核的PCIe设备通过PCIe总线通讯的拓扑图;
图2 基于FPGA的PCIe IP核的物理功能的配置空间示意图;
图3 基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法流程图;
图4 基于FPGA的PCIe IP核实现多物理功能的PCIe设备的系统示意图。
具体实施方式
现在将参考所附附图来解释本公开的各方面。虽然阐述了许多细节,但应当理解,本公开的一些方面可在没有这些细节的情况下被实施。在其他情况下,未详细示出熟知的步骤、结构和技术,以免模糊对该描述的理解。
术语解释:
HOST,表示主机,该主机包括操作系统。
PCIe(PCI-Express,peripheral component interconnect express),为一种高速串行计算机扩展总线标准。
TLP(Transaction Layer Packet),表示事务层包。
PCIe配置命令,表示HOST对于PCIe设备发出的配置命令,包括PCIe配置写(CfgWr)命令、PCIe配置读(CfgRd)命令。
PCIe配置写(CfgWr)命令,里面包括PCIe基地址(BAR)写命令,就是把HOST发来的配置地址,写入到PCIe IP核上,PCIe IP核要保存此地址。
PCIe配置读(CfgRd)命令,里面包括PCIe基地址(BAR)读命令),就是PCIe IP核要把保存在PCIe IP核上的地址,返回给HOST。
PCIe寄存器读写命令,表示HOST对已经配置好的PCIe设备,发送寄存器命令,包括PCIe寄存器写(MWr)命令、PCIe寄存器读命令(MRd)。
PCIe寄存器写(MWr)命令:对之前已经通过PCIe配置写(CfgWr)命令,配置过BAR地址的设备(Device),此时HOST发出带有BAR基地址+偏移地址的命令,相当于写一个数据到PCIe IP核的寄存器上。例如:0号寄存器、1号寄存器、2号寄存器上,分别对应BAR+0,BAR+1,BAR+2地址。
PCIe寄存器读(MRd)命令:HOST发出带有BAR基地址+偏移地址的命令给Device,然后Device把要HOST要的寄存器数据返回给HOST。
上述的每个命令的TLP格式不同,由PCIe TLP规范规定TLP格式。
PCIe RX TLP ,表示PCIe接收事务层包,为HOST向PCIe IP核发出的请求信息,不包含HOST返回给PCIe IP核的返回信息。PCIe RX TLP处理的TLP包括含Function ID的TLP和不含Function ID的TLP,含Function ID的TLP包括CfgWr、CfgRd、不含Function ID的TLP包括MRd、MWr。
PCIe TX TLP,表示PCIe发送事务层包,为PCIe IP核返回给HOST的返回信息,不包含PCIe IP核向HOST发出的请求信息。PCIe TX TLP处理的TLP包括CfgRd、MRd。
BAR(Base Address Registers),表示基地址寄存器。
VID(Vender ID),表示供应商识别码。
PID(Product ID),表示产品识别码。
REQUESTER ID区域,表示TLP的REQUESTER ID字段,存有REQUESTER ID信息。
PCIe设备是基于PCIe IP核的拥有1~8个独立的PF设备。PF 是包括了 SR-IOV(Single-root I/O virtualization,单根I/O虚拟化)功能的传统 PCIe function(功能),它具有对 PCIe 设备的完全配置和控制功能(包括数据移动)。以网卡(为一种PCIe设备,亦称为的板卡)为例,每个PF可设置不同功能,有两个显而易见的好处:一是对于有多个相同的PF功能的板卡,驱动程序维护方便,驱动程序编写者只关注一个网口的配置读写即可。由于每个PF功能一样,系统会自动加载多份实例(instance),来驱动各个网口的功能,无需为每个网口单独考虑控制(当然固件的编写人员需要考虑每个PF的收发数据);二是对于不同PF功能的板卡,可以分别实现不同的功能,例如:一个PCIe板卡上,同时有网口、特定加速卡、串口功能,驱动程序编写者可以单独写独立的驱动程序来控制每个功能PF(PhysicalFunction 物理功能)。
基于FPGA的PCIe IP核,是FPGA厂家(比如Xilinx、Intel、复旦微公司)在市场销售的基于FPGA实现的PCIe IP核,多为单物理功能(single-function)而不是多物理功能(multi-function),单物理功能只能实现单一的功能,例如,网卡驱动程序编写者预基于单口网卡实现多口或者多个不同功能的PCIe设备,只能用一个单一功能的驱动(系统也只能加载一个实例)来实现,对于维护和控制都极其麻烦,一般FPGA的PCIe IP核用户因受该单物理功能限制,只能开发单一的功能的单物理功能PF设备。
如图1所示,为已知的HOST与包括基于FPGA的PCIe IP核的PCIe设备通过PCIe总线通讯的拓扑图,HOST 1与基于FPGA的PCIe设备2 通过PCIe总线3通讯,基于FPGA的PCIe IP核4配置在PCIe设备2上,该基于FPGA的PCIe IP核4为PCIe设备2提供了8个物理功能(funtion0、funtion1、funtion2、funtion3、funtion4、funtion5、funtion6、funtion7),每个物理功能均包括配置空间100。结合图2所示,配置空间100包括Header Type寄存器、0号寄存器、基地址(BAR)寄存器。基于FPGA的PCIe IP核的PCIe设备的其他寄存器(图中未示出)均依据PCIe总线标准配置。
本发明的原理为:HOST 1可向单功能的PCIe设备2发送配置命令,按照本发明提供的方法或系统进行配置,即可得到多物理功能的PCIe设备2。此后,HOST 1向配置后的多物理功能的PCIe设备2发送读写命令时,就能方便基于FPGA的PCIe IP核4的用户接口部分来识别出此读写命令是访问哪个物理功能。
如图3所示,本发明的一些实施例涉及一种基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法,所述方法包括如下步骤:
S1:截获HOST探测所述基于FPGA的PCIe IP核的第一个物理功能(function 0)的配置空间得到的第一返回值,当所述第一返回值为单物理功能设备信息时修改为多物理功能设备信息,再将修改后的所述第一返回值返回给所述HOST;
S2:获得所述HOST读取所述基于FPGA的PCIe IP核的每个物理功能的所述配置空间得到的第二返回值(CPL&CPLD),所述第二返回值为支持物理功能请求信息(CPLD)或不支持物理功能请求信息(CPL),再将所述第二返回值返回给所述HOST;
S3:提取所述HOST向返回所述第二返回值为所述支持物理功能请求信息的所述配置空间发送的PCIe配置写(CfgWr)命令的物理功能编码和空间基地址,再将所述物理功能编码和所述空间基地址分别存放在所述第一个物理功能的所述配置空间上。
在本发明的一些基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法实施例中,所述配置空间包括Header Type寄存器,所述HOST读取与所述PCIe设备的第一个物理功能(function 0)对应的配置空间的Header Type寄存器得到所述第一返回值,后续对第一返回值的修改为动态修改。本发明中,Header Type寄存器第7位为1表示当前PCI设备为多功能设备、为0表示单功能设备,其中,0或1即为第一返回值。
在本发明的一些基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法实施例中,所述配置空间包括0号寄存器,所述HOST读取与所述基于FPGA的PCIe IP核的每个物理功能对应的配置空间的0号寄存器得到所述第二返回值。支持物理功能请求信息(CPLD)表示返回PCIe设备的VID&PID,不支持物理功能请求信息(CPL)表示返回unsupport请求。
在本发明的一些基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法实施例中,所述配置空间包括基地址寄存器(BAR),将所述物理功能编码和所述空间基地址分别存放在所述第一个物理功能的所述配置空间的所述基址寄存器上。
结合以上一些实施例可知,经过步骤S1及步骤S2后,HOST就已知道PCIe IP核支持几个物理功能。比如,HOST知道PCIe IP核支持2个物理功能后,HOST会为2个物理功能单独发出2次配置各自的基地址寄存器的空间基地址的PCIe配置写(CfgWr)命令,该空间基地址为将来HOST与PCIe IP核沟通(通信)的地址,每个物理功能都有一个单独的空间基地址。
结合以上一些实施例可知,本发明是动态修改为支持多物理功能,PCIe IP核不会保存HOST发来的空间基地址,而是由第一个物理功能对应的基址寄存器保存这些HOST发来的空间基地址,方便区分HOST后来发来的指令是针对哪个物理功能。
本发明的另一些实施例涉及一种基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法,所述方法包括如下步骤:
S41:当所述PCIe设备接收到所述HOST向所述基于FPGA的PCIe IP核发出的PCIe接收事务层包(PCIe RX TLP)后,当所述PCIe接收事务层包承载所述PCIe配置写(CfgWr)命令时:获取所述PCIe接收事务层包中的所述物理功能编码和所述空间基地址,将所述物理功能编码和所述空间基地址分别存放在所述第一个物理功能的所述配置空间上。
在本发明的另外一些基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法实施例中,所述方法包括如下步骤:
S42:当所述PCIe设备接收到所述HOST向所述基于FPGA的PCIe IP核发出的PCIe接收事务层包后,当所述PCIe接收事务层包承载PCIe配置写命令时:获取所述PCIe接收事务层包中的所述物理功能编码和所述空间基地址,将所述含物理功能编码的事务层包中的所述物理功能编码和所述空间基地址放入所述PCIe接收事务层包中暂时不用的区域;将所述PCIe接收事务层包对应的所述物理功能编码修改为所述第一个物理功能的所述物理功能编码;将修改后的PCIe接收事务层包发送到所述基于FPGA的PCIe IP核上。
在本发明的另外一些基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法实施例中,所述方法包括如下步骤:
S43:当所述PCIe设备接收到所述HOST向所述基于FPGA的PCIe IP核发出的PCIe接收事务层包后,当所述PCIe接收事务层包承载寄存器读命令或寄存器写命令时:将所述PCIe接收事务层包中的所述空间基地址与所述第一个物理功能的所述基址寄存器保存的所述空间基地址比较,获得所述PCIe接收事务层包对应的所述物理功能编码和所述空间基地址;将所述PCIe接收事务层包对应的所述物理功能编码和所述空间基地址修改到所述PCIe接收事务层包中所述暂时不用的区域;将所述PCIe接收事务层包对应的所述物理功能编码修改为所述第一个物理功能的所述物理功能编码;将修改后的PCIe接收事务层包发送到所述基于FPGA的PCIe IP核上。
在步骤S43中,术语“修改到”是指用新的物理功能编码和空间基地址替换事务层包暂时不用的区域中已有的物理功能编码和空间基地址。获得所述PCIe接收事务层包对应的所述物理功能编码和所述空间基地址后,可将该物理功能编号植入寄存器读命令或寄存器写命令的TLP包头上,可将空间基地址的偏移地址保存在第一个物理功能对应的配置空间上。
结合以上另外一些实施例可知,PCIe设备是动态修改基于FPGA的PCIe IP核的,该基于FPGA的PCIe IP核自己并不支持多物理功能,除了接受HOST发来的第一个物理功能的空间基地址外,其会拒收HOST发来的非第一个物理功能的空间基地址。进一步的说,PCIe设备会把HOST发来的非第一个物理功能的空间基地址均更改为function 0的空间基地址,并把HOST发来的非第一个物理功能的Function ID(比如Function ID为3)植入TLP中暂时不用的区域,进而方便在PCIe IP核所在的用户层(FPGA侧)接口上,获得Function ID,进而知道HOST真正要读写的是哪个物理功能,然后做相应的操作。
在本发明的还有一些基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法实施例中,所述方法包括如下步骤:
S51:当所述PCIe设备接收到所述基于FPGA的PCIe IP核向所述HOST返回的PCIe发送事务层包后,如果所述PCIe发送事务层包包括所述第二返回值,从所述PCIe发送事务层包中所述暂时不用的区域里提取所述物理功能编码和所述空间基地址,继续判断所述PCIe发送事务层包是否承载所述PCIe配置读命令或所述寄存器读命令;如果所述PCIe发送事务层包不包括所述第二返回值,直接将所述PCIe发送事务层包返回所述HOST。
在本发明的另外一些基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法实施例中,所述方法包括如下步骤:
S52:当所述PCIe发送事务层包承载所述PCIe配置读命令时,将所述PCIe发送事务层包的所述空间基地址修改为从所述PCIe发送事务层包中所述暂时不用的区域里提取的所述空间基地址。
在以上的一些实施例的进一步可选的配置方式为:步骤1.如果HOST发来的BAR配置地址为全1,基于FPGA的PCIe IP核支持此配置空间,就返回全1,如果不支持此配置空间,就返回全0;步骤2.同理,如果HOST发来的BAR配置地址为全0,基于FPGA的PCIe IP核就返回全0;步骤1和步骤2实际是HOST来探测基于FPGA的PCIe IP核是不是支持BAR配置的命令。步骤3.如果HOST发来的BAR配置地址不是全1或全0,说明为真正的配置地址,则需要保存。
本发明的PCIe配置读(CfgRd)命令,不仅仅是配置BAR地址(PCIe读空间配置命令(CFG Rd BAR)配置),还可以有很多其他配置(读其他寄存器配置命令(CFG Rd)),比如可以包括读取VID PID信息、VPD信息等,对于这类其他配置,原样处理返回即可。
在本发明的另外一些基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法实施例中,所述方法包括如下步骤:
S53:当所述PCIe发送事务层包承载所述寄存器读命令时,将所述PCIe发送事务层包的所述物理功能编码修改为从所述PCIe发送事务层包中所述暂时不用的区域里提取的所述物理功能编码。
在本发明的最后一些基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法实施例中,所述PCIe接收事务层包或所述PCIe发送事务层包中所述暂时不用的区域,为相应的PCIe TLP包头(TLP header)中暂时不用的区域,进一步的实施例中,为相应的PCIe TLP包头中的REQUESTER ID区域。在更进一步的实施例中,预先保存TLP的包头中REQUESTER ID区域的REQUESTER ID信息,待所述基于FPGA的PCIe IP核返回数据后,再将预先保存的所述REQUESTER ID信息植入所述REQUESTER ID区域。
REQUESTER ID区域,表示TLP的REQUESTER ID字段,存有REQUESTER ID信息,该REQUESTER ID信息存放的是PCIe请求端的设备BDF(Bus、Device、Function)信息。因此PCIeDevice(PCIe设备)返回数据的时候,复制这个BDF信息,利于数据正确返回。另外,由于PCIe总线支持交换结构,因此可能有很多连接到PCIe总线的HOST同时对基于FPGA的PCIe IP核实现多物理功能的PCIe设备发出请求。
在本发明一些技术方案中,核心是在HOST发出请求的时候,判断出HOST是发给PCIe设备的哪个Function的命令,然后先保存这个原始的REQUESTER ID信息,同时把这个REQUESTER ID修改为存有Function ID信息的数据,发给PCIe Device。PCIe Device会把这个包含修改后的REQUESTER ID的TLP包发给PCIE IP用户侧接口,进而可以通过识别REQUESTER ID里面的Function ID,知道这个TLP是发给哪个Function的。如果需要PCIeDevice返回数据的TLP(MRd),可以再次把REQUESTER ID替换为之前保存的原始REQUESTERID数据,返回给HOST即可。
在本发明的一些基于FPGA的PCIe IP核实现多物理功能的PCIe设备的系统实施例中,结合图4所示,所述系统200包括至少一个处理器201;以及存储器202,其存储有指令,当通过至少一个处理器201来执行该指令时,实施按照方法实施例所述的方法的步骤。其中,系统200与基于FPGA的PCIe IP核等组成PCIe设备。
下面进一步对本发明基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法或系统进行说明。
实施例1
1.在当前HOST读取此寄存器时,动态修改返回值,把对应的第一返回值的bit位由0修改为1(0→1)。
2.此后HOST会分别为每个物理功能发送读取基于FPGA的PCIe IP核的配置空间的0号寄存器的命令,来获取PCIe设备的VID&PID。如果基于FPGA的PCIe IP核支持这个物理功能,那么就可以正常返回VID&PID(CPLD),如果不支持,则返回unsupport请求(CPL)。
3.HOST知道上述信息后,就会确认PCIe设备支持几个物理功能,然后会为每个物理功能发送配置空间基地址的命令,需要为每个物理功能保存地址。
4.后面HOST发送的读寄存器命令、写寄存器命令,需要比较发来的地址空间,根据步骤3保存的地址来比较,确认此地址空间属于哪个物理功能的地址空间(0-7),得到物理功能编码,然后只保留偏移地址,并放在第一个物理功能的配置空间的基址寄存器上。至于检测到的物理功能编码,放在PCIe TLP包头(TLP header)上没用的地方,方便基于FPGA的PCIe IP核用户接口部分来识别出读寄存器命令或写寄存器命令是访问哪个物理功能,即可对应操作数据。
实施例2
当PCIe设备接收到HOST向基于FPGA的PCIe IP核发出的请求信息(PCIe RX TLP)后,按照如下情况配置:
当为写配置命令(Config Wr)时,获取TLP包中的Function ID以及Bar ID,把这二个ID信息放到TLP的包头中暂时不用的区域,并同时修改Function ID为0发送到基于FPGA的PCIe IP核上;如果是写空间配置命令(CFG Wr BAR),则根据Function ID以及Bar ID,分别存放在第一个物理功能的配置空间的基址寄存器上。
当为读配置命令(Config Rd)时,获取TLP包中的Function ID以及Bar ID,把这二个ID信息放到TLP的包头中暂时不用的区域,并同时修改Function ID为0发送到基于FPGA的PCIe IP核上。
当为存储配置命令(Memory)时,获取TLP包中地址信息,与之前第一个物理功能的基址寄存器保存的空间基地址比较,获得对应的Function ID以及BAR ID,修改到TLP的包头的暂时不用的区域,并同时修改Function ID为0,发送到基于FPGA的PCIe IP核上。
当为其他类型配置命令时,不做处理。
实施例3
当PCIe设备发送TLP包的配置(PCIe TX TLP)后,按照如下情况处理:
当TLP为CPL & CPLD的TLP格式时,需从TLP中暂时不用的区域里提取信息(在比如实施例2的TLP请求的时候植入的),包括Function ID以及Bar ID;其中,对于CFG RD BAR,根据条件,修改Bar ID,返回正确的地址信息;对于MEM RD,修改Function ID,返回正确的物理功能编码。
当为其他TLP类型时,不做任何处理,直接原样返回。
结合实施例1-3可知,首先,当为写配置命令(Config Wr)时,不用比较HOST发来的地址空间,因为此刻HOST之前还没发出配置空间的基址寄存器的空间基地址的配置命令。该写配置命令(Config Wr)里面本身就有物理功能的Function ID信息,不需要比较Function ID信息。其次,写配置命令或者读配置命令的配置过程中,更改了Function ID,比如由3修改为0,但TLP数据在基于FPGA的PCIe IP核处理完后要返回HOST的,因此在返回HOST时(参见实施例3),要根据之前植入的信息,再更改回来本来的Function ID信息,比如由0改回3。最后,本发明中,PCIe RX TLP是HOST发出的请求信息,PCIe TX TLP是PCIe IP核返回给HOST的返回信息,有PCIe RX TLP请求,才有PCIe TX TLP返回,但返回也可不是实时的。二者之间需要传达的信息,是通过修改在TLP的包头中暂时不用的区域来识别的,修改TLP的包头中暂时不用的区域的TLP,PCIe IP核返回的时候是原样返回的,因此可提取这个之前请求时修改的信息,来判断返回时要修改的信息。另外,公知技术中PCIe RX TLP里面也包含了PCIe IP核请求的返回信息,PCIe TX TLP也包含PCIe IP核请求的请求信息,但本发明实施例只关心HOST发出的请求信息以及PCIe IP核返回给HOST的返回信息。
虽然本说明书包含很多具体的实施细节,但是这些不应当被解释为对任何发明的范围或者对可以要求保护的内容的范围的限制,而是作为可以使特定发明的特定实施方式具体化的特征的说明。在独立的实施方式的语境中的本说明书中描述的特定特征还可以与单个实施方式组合地实施。相反地,在单个实施方式的语境中描述的各种特征还可以独立地在多个实施方式中实施,或者在任何合适的子组合中实施。此外,虽然以上可以将特征描述为组合作用并且甚至最初这样要求,但是来自要求的组合的一个或多个特征在一些情况下可以从该组合去掉,并且要求的组合可以转向子组合或者子组合的变形。

Claims (10)

1.一种基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法,其特征在于,所述方法包括如下步骤:
截获HOST探测所述基于FPGA的PCIe IP核的第一个物理功能的配置空间得到的第一返回值,当所述第一返回值为单物理功能设备信息时修改为多物理功能设备信息,再将修改后的所述第一返回值返回给所述HOST;
获得所述HOST读取所述基于FPGA的PCIe IP核的每个物理功能的所述配置空间得到的第二返回值,所述第二返回值为支持物理功能请求信息或不支持物理功能请求信息,再将所述第二返回值返回给所述HOST;
提取所述HOST向返回所述第二返回值为所述支持物理功能请求信息的所述配置空间发送的PCIe配置写命令的物理功能编码和空间基地址,再将所述物理功能编码和所述空间基地址分别存放在所述第一个物理功能的所述配置空间上。
2.如权利要求1所述的基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法,其特征在于,所述配置空间包括Header Type寄存器、0号寄存器和基地址寄存器;
所述HOST读取所述基于FPGA的PCIe IP核的第一个物理功能的配置空间的HeaderType寄存器得到所述第一返回值;
所述HOST读取所述基于FPGA的PCIe IP核的每个物理功能的配置空间的0号寄存器得到所述第二返回值;
将所述物理功能编码和所述空间基地址分别存放在所述第一个物理功能的所述配置空间的基址寄存器上。
3.如权利要求2所述的基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法,其特征在于,当所述PCIe设备接收到所述HOST向所述基于FPGA的PCIe IP核发出的PCIe接收事务层包后,当所述PCIe接收事务层包承载所述PCIe配置写命令时:
获取所述PCIe接收事务层包中的所述物理功能编码和所述空间基地址,将所述物理功能编码和所述空间基地址分别存放在所述第一个物理功能的所述配置空间上。
4.如权利要求3所述的基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法,其特征在于,当所述PCIe设备接收到所述HOST向所述基于FPGA的PCIe IP核发出的PCIe接收事务层包后,当所述PCIe接收事务层包承载PCIe配置读命令时:
获取所述PCIe接收事务层包中的所述物理功能编码和所述空间基地址,将含物理功能编码的事务层包中的所述物理功能编码和所述空间基地址放入所述PCIe接收事务层包中暂时不用的区域;
将所述PCIe接收事务层包对应的所述物理功能编码修改为所述第一个物理功能的所述物理功能编码;
将修改后的PCIe接收事务层包发送到所述基于FPGA的PCIe IP核上。
5.如权利要求4所述的基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法,其特征在于,当所述PCIe设备接收到所述HOST向所述基于FPGA的PCIe IP核发出的PCIe接收事务层包后,
当所述PCIe接收事务层包承载寄存器读命令或寄存器写命令时:
将所述PCIe接收事务层包中的所述空间基地址与所述第一个物理功能的所述基址寄存器保存的所述空间基地址比较,获得所述PCIe接收事务层包对应的所述物理功能编码和所述空间基地址;
将所述PCIe接收事务层包对应的所述物理功能编码和所述空间基地址修改到所述PCIe接收事务层包中所述暂时不用的区域;
将所述PCIe接收事务层包对应的所述物理功能编码修改为所述第一个物理功能的所述物理功能编码;
将修改后的PCIe接收事务层包发送到所述基于FPGA的PCIe IP核上。
6.如权利要求5所述的基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法,其特征在于,当所述PCIe设备接收到所述基于FPGA的PCIe IP核向所述HOST返回的PCIe发送事务层包后,如果所述PCIe发送事务层包包括所述第二返回值,从所述PCIe发送事务层包中所述暂时不用的区域里提取所述物理功能编码和所述空间基地址,继续判断所述PCIe发送事务层包是否承载所述PCIe配置读命令或所述寄存器读命令;如果所述PCIe发送事务层包不包括所述第二返回值,直接将所述PCIe发送事务层包返回所述HOST。
7.如权利要求6所述的基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法,其特征在于,
当所述PCIe发送事务层包承载所述PCIe配置读命令时,将所述PCIe发送事务层包的所述空间基地址修改为从所述PCIe发送事务层包中所述暂时不用的区域里提取的所述空间基地址。
8.如权利要求7所述的基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法,其特征在于,
当所述PCIe发送事务层包承载所述寄存器读命令时,将所述PCIe发送事务层包的所述物理功能编码修改为从所述PCIe发送事务层包中所述暂时不用的区域里提取的所述物理功能编码。
9.如权利要求8所述的基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法,其特征在于,所述PCIe接收事务层包或所述PCIe发送事务层包中所述暂时不用的区域为REQUESTER ID区域。
10.一种基于FPGA的PCIe IP核实现多物理功能的PCIe设备的系统,其特征在于,所述系统包括至少一个处理器;以及存储器,其存储有指令,当通过至少一个处理器来执行该指令时,实施按照权利要求1-9任一项所述的方法的步骤。
CN202410183153.8A 2024-02-19 2024-02-19 基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法及系统 Pending CN117743212A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410183153.8A CN117743212A (zh) 2024-02-19 2024-02-19 基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410183153.8A CN117743212A (zh) 2024-02-19 2024-02-19 基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法及系统

Publications (1)

Publication Number Publication Date
CN117743212A true CN117743212A (zh) 2024-03-22

Family

ID=90253045

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410183153.8A Pending CN117743212A (zh) 2024-02-19 2024-02-19 基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法及系统

Country Status (1)

Country Link
CN (1) CN117743212A (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120166690A1 (en) * 2010-12-28 2012-06-28 Plx Technology, Inc. Multi-root sharing of single-root input/output virtualization
CN102819447A (zh) * 2012-05-29 2012-12-12 中国科学院计算技术研究所 一种用于多根共享系统的直接i/o 虚拟化方法和装置
CN113904938A (zh) * 2021-09-28 2022-01-07 北京大禹智芯科技有限公司 一种动态配置PCIe终端设备的系统和方法
CN115203101A (zh) * 2021-04-13 2022-10-18 爱思开海力士有限公司 PCIe装置及其操作方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120166690A1 (en) * 2010-12-28 2012-06-28 Plx Technology, Inc. Multi-root sharing of single-root input/output virtualization
CN102819447A (zh) * 2012-05-29 2012-12-12 中国科学院计算技术研究所 一种用于多根共享系统的直接i/o 虚拟化方法和装置
CN115203101A (zh) * 2021-04-13 2022-10-18 爱思开海力士有限公司 PCIe装置及其操作方法
CN113904938A (zh) * 2021-09-28 2022-01-07 北京大禹智芯科技有限公司 一种动态配置PCIe终端设备的系统和方法

Similar Documents

Publication Publication Date Title
US8812758B2 (en) Mechanism to flexibly support multiple device numbers on point-to-point interconnect upstream ports
EP1244973B1 (en) System and method for providing hot swap capability using existing circuits and drivers with minimal changes
JP4799417B2 (ja) ホストコントローラ
US7715450B2 (en) Sideband bus setting system and method thereof
US7689751B2 (en) PCI-express system
EP3001323B1 (en) Serial peripheral interface
US6915365B2 (en) Mechanism for PCI I/O-initiated configuration cycles
EP1834246B1 (en) Integrated circuit having processor and switch capabilities
US7890666B2 (en) Embedded protocol selection technique, related interface and computer program product
CN117743212A (zh) 基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法及系统
CN101189577B (zh) 通过自动改变索引来访问配置寄存器的方法和装置
CN112559402B (zh) 一种基于fpga的pci从接口控制电路及fpga
US20070016712A1 (en) Multi-port bridge device
CN100541468C (zh) 系统管理总线从属装置的从属地址扫描装置及其方法
WO2005114437A1 (en) Integrated circuit having processor and switch capabilities
US6081861A (en) PCI migration support of ISA adapters
CN102082715A (zh) 网卡重置的测试方法
CN111258763A (zh) 一种服务器系统及服务器系统的控制方法和装置
CN101676894B (zh) 面向集中地址译码的非pci片上总线的pci虚拟化装置及方法
US20050256990A1 (en) Integrated circuit having processor and bridging capabilities
CN117009162B (zh) 一种三模raid卡芯片识别硬盘的方法
JP2006127128A (ja) 情報処理システムの下位装置、下位装置用動作制御プログラムおよび下位装置用動作制御方法
CN116521585A (zh) 槽位丝印显示方法、装置、设备及存储介质
CN112052199A (zh) 电路和方法
CN117609117A (zh) 触发驱动多路iic外设的控制方法、装置及系统

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