CN115220810A - 基于龙芯2k1000的fpga资源动态加载配置方法 - Google Patents

基于龙芯2k1000的fpga资源动态加载配置方法 Download PDF

Info

Publication number
CN115220810A
CN115220810A CN202210767420.7A CN202210767420A CN115220810A CN 115220810 A CN115220810 A CN 115220810A CN 202210767420 A CN202210767420 A CN 202210767420A CN 115220810 A CN115220810 A CN 115220810A
Authority
CN
China
Prior art keywords
pcie
port
controller
configuration
register
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
CN202210767420.7A
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.)
CETC 30 Research Institute
Original Assignee
CETC 30 Research Institute
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 CETC 30 Research Institute filed Critical CETC 30 Research Institute
Priority to CN202210767420.7A priority Critical patent/CN115220810A/zh
Publication of CN115220810A publication Critical patent/CN115220810A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种基于龙芯2K1000的FPGA资源动态加载配置方法,属于FPGA资源动态加载配置领域,包括步骤:S1,启动动态加载配置;S2,匹配PCIE链路相关配置信息;S3,保护软件系统PCIE上下文环境;S4,实时动态加载逻辑资源;S5,启动控制器端口PCIE链路重定向训练;S6,判断链路训练是否成功:如果训练成功,则进入步骤S7,如果训练不成功,则动态加载配置失败;S7,恢复端口PCIE链路相关配置信息;S8,恢复软件系统PCIE上下文环境,动态加载配置成功。本发明在保障系统运行状态下快速实现设备功能切换和扩展,具有更强的灵活性和良好的应用前景。

Description

基于龙芯2K1000的FPGA资源动态加载配置方法
技术领域
本发明涉及FPGA资源动态加载配置领域,更为具体的,涉及一种基于龙芯2K1000的FPGA资源动态加载配置方法。
背景技术
随着国产高性能多核处理器快速发展,高速串行总线技术正取代传统并行总线成为系统级和板级互联设计主要技术。PCIExpress简称PCIE,作为用来互联设备的第三代高性能IO总线,具有速度快且点对点串行传输的特点,目前已成为微机系统和板级系统中的主流互联总线,在处理器和外围设备的高速IO接口设计中得到大量应用。
当前密码通信和保密安全领域,高性能通信服务设备中的高速数据处理单元普遍基于FPGA逻辑实现系统业务功能,采用PCIE总线与处理器进行IO数据交互。基于PCIE总线特征,PCIE设备功能必须在操作系统引导运行前配置固化,当平台引导固件完成PCI总线扫描或操作系统完成引导后,PCIE从设备就无法实现在线替换或动态加载逻辑资源,也不具备系统实时在线更新、扩充以及升级等功能。在某些高安全级别应用场景,系统正常运行时,基于FPGA逻辑实现的PCIE设备功能若需动态实现扩展或升级,则必须暂停或者重启系统,这种操作流程会对系统稳定性、实时性以及可靠性带来不小影响。
发明内容
本发明的目的在于克服现有技术的不足,提供一种基于龙芯2K1000的FPGA资源动态加载配置方法,在保障系统运行状态下快速实现设备功能切换和扩展,具有更强的灵活性和良好的应用前景。
本发明的目的是通过以下方案实现的:
一种基于龙芯2K1000的FPGA资源动态加载配置方法,包括步骤:
S1,启动动态加载配置;
S2,匹配PCIE链路相关配置信息;
S3,保护软件系统PCIE上下文环境;
S4,实时动态加载逻辑资源;
S5,启动控制器端口PCIE链路重定向训练;
S6,判断链路训练是否成功:如果训练成功,则进入步骤S7,如果训练不成功,则动态加载配置失败;
S7,恢复端口PCIE链路相关配置信息;
S8,恢复软件系统PCIE上下文环境,动态加载配置成功。
进一步地,在步骤S3中,包括子步骤:
S31,依据系统PCIE总线连接关系,匹配FPGA芯片所连接的处理器PCIE控制器对应端口,确定所使用的控制器端口号和配置头访问首地址;
S32,采用Type1类型访问格式,访问对应的控制器端口配置头空间寄存器,记录存储配置头空间寄存器数值;
S33,确定PCIE控制器对应端口BAR0基地址后,依次实现对PCIE控制器端口内部寄存器的读写访问,记录端口BAR0基地址寄存器所配置数值;
S34,保护软件相关上下文环境,停止对FPGA逻辑设计的系统调用,卸载FPGA逻辑设计相关设备驱动程序。
进一步地,在步骤S4中,包括子步骤:
S41,采用被动串行运行加载模式,遵从FPGA芯片被动串行运行加载模式加载时序要求,设置处理器互联配置管脚,模拟加载时序,动态加载FPGA芯片全部逻辑资源;
S42,等待资源加载完成,立即检测到PCIE控制器端口链路链接状态为断开;
S43,配置使能PCIE控制寄存器,复位PCIE控制器端口,完成端口初始化。
进一步地,在步骤S5中,包括子步骤:
S51,依据所使用的PCIE控制器端口号,选择对应的配置头访问首地址;
S52,采用64位地址方式,即配置头访问首地址加上0x900000fe00000000偏移,访问控制器配置头内部寄存器,设置控制器配置头内部Gen2控制寄存器的定向速度变化数据位为1,端口物理层发送端电平波动数据位为0;寄存器偏移地址大于8位地址,将高4位填到地址格式中的bit24~bit27;
S53,采用64位地址方式,即配置头访问首地址加上0x900000fe00000000偏移,继续访问控制器配置头内部寄存器,设置控制器配置头内部时序配置和过滤掩码寄存器的bit26数据位为1,设置控制器忽略数据响应包长度的不匹配情况,当接收到与请求长度不匹配的数据包时,控制器不丢弃;
S54,依据所匹配的PCIE控制器端口,选择端口BAR0基地址,重新配置端口BAR0基地址,恢复已记录的端口BAR0基地址寄存器所配置数值;
S55,访问处理器PCIE控制器端口内部寄存器,设置应端口内部PCIE写操作控制寄存器、PCIE读操作控制寄存器的bit[2:4]数据位与bit[18:20]数据位为0,设置控制器端口MEM和IO/CFG类型访问中PCIETLP包中TD、ATTR的值为0;
S56,根据所使用的PCIE控制器端口BAR0基地址,通过MEM访问设置PCIE控制器内部PCIE端口控制器寄存器的链路训练和状况状态机数据位为1,启动PCIE控制器端口链路初始化,开始链路重定向训练;
S57,延时等待,通过MEM方式访问PCIE控制器内部寄存器PCIE端口状态控制器寄存器,判断寄存器链路训练和状况状态机的当前状态数据位值是否为0x11,如果若该字段变成0x11,则表示PCIE链路重定向训练完成,PCIE链路重新协商建立成功。
进一步地,在步骤S8中,包括子步骤:
S81,等待PCIE控制器端口链路重定向训练成功,链路恢复到正常运行状态,便立即更新配置头空间寄存器中的主总线号、二级总线、二级总线寄存器,回写为之前存储记录的数值,恢复主总线号、二级总线号配置;
S82,根据所记录存储的配置头空间寄存器数值,更新配置头空间对应寄存器,恢复最初配置;
S83,重新扫描系统PCIE总线,插入FPGA逻辑设计设备驱动程序,启用对新加载的FPGA逻辑设计的系统调用,恢复软件系统相关上下文环境,即完成FPGA逻辑资源的在线动态加载配置。
进一步地,在步骤S57中,如果该字段不变成0x11,则PCIE链路重新协商建立失败。
本发明的有益效果包括:
本发明采用动态加载配置机制,利用PCIE链路重定向,动态加载适应不同场景和功能需求的FPGA逻辑资源,在保障系统运行状态下快速实现设备功能切换和扩展,具有更强的灵活性和良好的应用前景,具体而言,包括如下几点:(1)减少FPGA动态可配置设计所需逻辑资源消耗,降低设计技术难度;(2)系统运行状态快速实现业务功能切换,提升系统应用灵活性;(3)实时加载配置不同安全级别的FPGA逻辑资源,增强系统安全性;(4)方便实现功能在线升级与扩展,便于后期系统的维护更新操作,保证了系统长时间可靠运转,提升了系统可靠性,延长了系统生命周期。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例方法的步骤流程图;
图2为Type1类型访问格式。
具体实施方式
下面结合附图和实施例对发明进一步说明。本说明书中所有实施例公开的所有特征,或隐含公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合和/或扩展、替换。
术语解释
龙芯2K1000,龙芯2K1000处理器;
PCIE,Peripheral Component Interconnect Express,即PCI Express,是一种高速串行计算机扩展总线标准;
Type1类型访问格式,PCIE设备配置空间的头部有两种类型:Type0和Type1,Type0是访问非桥设备(Endpoint)使用,Type1是访问桥设备(Root和Switch端口中的P2P桥)使用;
Directed Speed Change,定向速度变化;
PHY Tx Swing,端口物理层发送端电平波动;
MEM方式,Memory访问方式,即利用PCIE控制器或设备在内存中的映射地址访问相关数据;
app_ltssm_enable,LTSSM(Link Training and Status State Machine)即链路训练和状况状态机,负责PCIE链路的训练和初始化,是配置和初始化设备物理层、端口和相关链路的物理层控制过程。app_ltssm_enable为启用PCIE链路训练和状况状态机功能比特位;
xmlh_ltssm_state,链路训练和状况状态机的当前状态;
primary bus number,主总线号;
secondarybus,二级总线;
subordinate bus寄存器,下级总线。
本发明实施例在解决背景中问题的过程中发现如下技术问题:当前密码通信与保密安全领域,基于不同安全应用场景需满足不同安全级别要求的需求,在保障设备系统稳定运行下,如何通过实时动态重新配置FPGA来加载不同的逻辑设计,实现功能在线切换与扩展,实现不同安全级别的系统功能,保证设备安全,是密码通信与保密安全设备系统应用的必备技术。
同样在航天在轨等领域,受系统运行的特殊环境限制,软件资源动态加载设计作为系统软件更改的唯一方式变得尤为重要。系统设备具备功能在线切换与扩展功能,一方面可以修正已知的软件设计缺陷和错误,最大程度减少损失;另一方面还可通过注入新资源来适应用户新需求的变化,延长设备的服役时间。因此需充分考虑系统软件更新后的快速恢复能力,以期最大程度的减少系统中断时间,设计一种可靠、安全的资源动态加载配置机制。
作为本发明的一种实施例,技术构思在于提供一种基于龙芯2K1000的FPGA资源动态加载配置方法,其实质为一种基于龙芯2K1000 PCI Express链路重定向的FPGA逻辑资源动态加载配置机制。该机制充分发挥软件化的灵活性,在保障基于龙芯2K1000处理器的设备系统正常运行状态下,不用暂停或重启系统,通过构建系统PCIE上下文环境保存/恢复机制,采用可加载配置技术,利用PCIE链路重定向技术,完成PCIE控制器端口链路状态重定向训练,在系统运行状态下快速实现设备功能切换和扩展。
本发明实施例在保障设备系统正常运行状态下,可动态加载不同设计的FPGA逻辑资源,实现各种应用场景所需的系统功能,具有更强的灵活性;可实时加载配置不同安全级别的FPGA逻辑资源,满足各种应用场景下不同安全级别要求;可快速实现系统功能在线扩展与升级,便于后期系统的维护更新操作,可保证系统长时间可靠运转,提升了系统可靠性,延长了系统生命周期,具备良好的应用前景。
如图1所示,在具体实施方式中,包括如下步骤:
1)基于龙芯2K1000处理器平台,依据PCI Express总线连接关系,匹配FPGA芯片所连接的处理器PCIE控制器对应端口,访问处理器PCIE控制器配置头空间寄存器和端口内部寄存器,保存系统PCIE上下文环境;
2)利用动态可配置能力技术,依据FPGA芯片的加载信号,遵循加载规范,模拟加载时序,实时动态加载FPGA芯片逻辑资源,复位PCIE控制器对应端口;
3)配置处理器PCIE控制器端口内部寄存器,启动PCIE控制器端口链路定向状态训练,触发控制器端口与FPGA芯片进行PCI Express总线协议握手协商,重新配置和初始化设备控制器物理层、端口和相关链路,建立PCIE链路,使链路可发送正常的数据包流量,实现PCI Express总线链路重定向;
4)利用已记录存储的相关信息,重新配置、恢复处理器PCIE控制器配置头空间相关寄存器配置信息,恢复软件系统相关上下文环境,实现FPGA逻辑资源的在线动态加载配置。
实施例中,本发明实施例可运行在龙芯2K1000处理器系统引导固件或操作系统里,接受业务应用需求控制。其主要功能分为:保存系统PCIE上下文环境、实时动态加载逻辑资源、PCIE链路重定向、恢复系统PCIE上下文环境。
1)保存系统PCIE上下文环境
a)依据系统PCIE总线连接关系,匹配FPGA芯片所连接的处理器PCIE控制器对应端口,确定所使用的控制器端口号和配置头访问首地址;
b)采用Type1类型访问格式(图2),访问对应的控制器端口配置头空间寄存器(表1),记录存储配置头空间寄存器数值;
c)确定PCIE控制器对应端口BAR0基地址后,依次实现对PCIE控制器端口内部寄存器的读写访问,记录端口BAR0基地址寄存器所配置数值;
d)保护软件相关上下文环境,停止对FPGA逻辑设计的系统调用,卸载FPGA逻辑设计相关设备驱动程序。
2)实时动态加载逻辑资源
a)利用动态可配置能力技术,采用被动串行(PS)运行加载模式,遵从FPGA芯片PS模式加载时序要求,设置处理器互联配置管脚,模拟加载时序,动态加载FPGA芯片全部逻辑资源;
b)等待资源加载完成,立即检测到PCIE控制器端口链路链接状态为断开;
c)随即配置使能PCIE控制寄存器,复位PCIE控制器端口,完成端口初始化。
3)PCIE链路重定向
a)依据所使用的PCIE控制器端口号,选择对应的配置头访问首地址;
b)采用64位地址方式,即配置头访问首地址加上0x900000fe00000000偏移,访问控制器配置头内部寄存器,设置控制器配置头内部Gen2控制寄存器的Directed SpeedChange(bit[17])数据位为1,PHY Tx Swing(bit[18])数据位为0。寄存器偏移地址大于8位地址,需将高4位填到地址格式中的bit24~bit27;
c)采用64位地址方式,即配置头访问首地址加上0x900000fe00000000偏移,继续访问控制器配置头内部寄存器,设置控制器配置头内部时序配置和过滤掩码1寄存器的bit26数据位为1,设置控制器忽略数据响应包长度的不匹配情况,当接收到与请求长度不匹配的数据包时,控制器不丢弃;
d)依据所匹配的PCIE控制器端口,选择端口BAR0基地址,重新配置端口BAR0基地址,恢复已记录的端口BAR0基地址寄存器所配置数值;
e)随即访问处理器PCIE控制器端口内部寄存器,设置应端口内部PCIE写操作控制寄存器、PCIE读操作控制寄存器的bit[2:4]数据位与bit[18:20]数据位为0,设置控制器端口MEM和IO/CFG类型访问中PCIETLP包中TD、ATTR的值为0;
f)根据所使用的PCIE控制器端口BAR0基地址,通过MEM访问设置PCIE控制器内部PCIE端口控制器0寄存器的app_ltssm_enable(bit[3])数据位为1,启动PCIE控制器端口链路初始化,开始链路重定向训练;
g)延时等待,通过MEM方式访问PCIE控制器内部寄存器PCIE端口状态控制器1寄存器,判断寄存器xmlh_ltssm_state(bit[0:5])数据位值是否为0x11,如果若该字段变成0x11,则表示PCIE链路重定向训练完成,实现了相关通道链路宽度、多通道设备端口通道反转或极性倒置、链路数据速率协商、比特锁定、符号锁定以及通道到通道的相位补偿等配置,PCIE链路重新协商建立成功。
4)恢复系统PCIE上下文环境
a)等待PCIE控制器端口链路重定向训练成功,链路恢复到正常运行状态,便立即更新配置头空间寄存器中的primary bus number、secondarybus、subordinate bus寄存器,回写为之前存储记录的数值,恢复主总线号、二级总线号配置;
b)根据之前步骤所记录存储的配置头空间寄存器数值(表1),更新配置头空间对应寄存器,恢复最初配置;
c)重新扫描系统PCIE总线,插入FPGA逻辑设计设备驱动程序,启用对新加载的FPGA逻辑设计的系统调用,恢复软件系统相关上下文环境,即可完成FPGA逻辑资源的在线动态加载配置。
在具体实施方式中,PCIE各个Port的设备号(device number)分别为0x9,0xa,0xb,0xc,0xd,0xe。根据设备号及所要访问的寄存器偏移地址(offset)即可得到对应寄存器的物理地址。当寄存器偏移地址offset大于8位地址,需将偏移地址高4位填到bit24-bit27。
功能号Function Number为0时访问配置头内部寄存器,功能号Function Number为1时访问配置头空间寄存器,均可改写其寄存器数值。
表1存储寄存器信息
Figure BDA0003726152620000111
本发明实施例采用动态加载配置机制,利用PCIE链路重定向,动态加载适应不同场景和功能需求的FPGA逻辑资源,在保障系统运行状态下快速实现设备功能切换和扩展,具有更强的灵活性和良好的应用前景,具体而言,包括如下几点:
(1)减少FPGA动态可配置设计所需逻辑资源消耗,降低设计技术难度
采用FPGA动态可配置设计在设计阶段分割FPGA资源,预先确定FPGA内部静态部分和动态可重配置部分电路状态,首次加载FPGA内部静态部分资源电路,再次加载动态可重配置部分电路,其先后加载的逻辑资源其实归属于同一份逻辑资源。对比之下,本发明利用动态加载配置机制,所动态加载配置的FPGA逻辑资源在逻辑设计阶段不预先分割FPGA资源,资源内部没有静态、动态资源电路的区别,每次加载都是全部逻辑资源,减少了FPGA设计逻辑资源消耗,降低了设计技术难度。
(2)系统运行状态快速实现业务功能切换,提升系统应用灵活性
设备运行过程中需根据应用场景的变化实现更多功能,这对利用FPGA逻辑实现系统业务功能,且采用PCIE总线与处理器进行数据交互的系统设计是一个技术难点。按照传统加载方式,系统重新加载FPGA逻辑资源进行业务功能切换后,为了满足PCIE设备功能在操作系统引导运行前完成配置固化的要求,必须重启设备系统,待设备平台引导固件完成PCI总线扫描与操作系统引导后,再重新启用服务,系统业务功能才能真正实现切换。这对系统恢复正常运行带来了不小麻烦。对比之下,本发明具有安全、高效、灵活的特点,在保障系统正常运行状态下,不用暂停或重启系统,对基于PCIE总线的FPGA芯片进行实时动态加载,实现各种应用场景所需的系统功能,在不中断系统当前任务、保障系统运行状态下快速实现功能切换,省去了繁琐的系统重启过程,使系统应用具备更强的灵活性。
(3)实时加载配置不同安全级别的FPGA逻辑资源,增强系统安全性
在密码通信与保密安全领域,基于不同安全应用场景需满足不同安全级别要求的需求,需提供不同安全级别的功能服务。基于传统FPGA逻辑资源加载方式,加载FPGA逻辑资源后系统必须重启,无法真正实现系统功能在线切换与实时扩展。对比之下,本发明利用动态可配置能力,可实时加载配置不同安全级别的FPGA逻辑资源,配置满足不同应用场景需求的系统功能,满足各种应用场景下不同安全级别要求,能够满足系统的实时性要求,增强了系统安全性。
(4)方便实现功能在线升级与扩展,便于后期系统的维护更新操作
本发明保障系统在运行状态下,可实时动态更新FPGA逻辑设计资源,同时提供了资源更新后系统的快速恢复能力,可实现功能在线升级与扩展,修正了已知的软件设计缺陷和错误,最大程度减少损失;还可通过注入新资源来适应用户新需求的变化,延长了设备的服役时间,给系统升级与功能完善带来更大的灵活性,对于后期系统的维护更新操作都非常方便,保证了系统长时间可靠运转,提升了系统可靠性,延长了系统生命周期。
实施例1
一种基于龙芯2K1000的FPGA资源动态加载配置方法,包括步骤:
S1,启动动态加载配置;
S2,匹配PCIE链路相关配置信息;
S3,保护软件系统PCIE上下文环境;
S4,实时动态加载逻辑资源;
S5,启动控制器端口PCIE链路重定向训练;
S6,判断链路训练是否成功:如果训练成功,则进入步骤S7,如果训练不成功,则动态加载配置失败;
S7,恢复端口PCIE链路相关配置信息;
S8,恢复软件系统PCIE上下文环境,动态加载配置成功。
实施例2
在实施例1的基础上,在步骤S3中,包括子步骤:
S31,依据系统PCIE总线连接关系,匹配FPGA芯片所连接的处理器PCIE控制器对应端口,确定所使用的控制器端口号和配置头访问首地址;
S32,采用Type1类型访问格式,访问对应的控制器端口配置头空间寄存器,记录存储配置头空间寄存器数值;
S33,确定PCIE控制器对应端口BAR0基地址后,依次实现对PCIE控制器端口内部寄存器的读写访问,记录端口BAR0基地址寄存器所配置数值;
S34,保护软件相关上下文环境,停止对FPGA逻辑设计的系统调用,卸载FPGA逻辑设计相关设备驱动程序。
实施例3
在实施例1的基础上,在步骤S4中,包括子步骤:
S41,采用被动串行运行加载模式,遵从FPGA芯片被动串行运行加载模式加载时序要求,设置处理器互联配置管脚,模拟加载时序,动态加载FPGA芯片全部逻辑资源;
S42,等待资源加载完成,立即检测到PCIE控制器端口链路链接状态为断开;
S43,配置使能PCIE控制寄存器,复位PCIE控制器端口,完成端口初始化。
实施例4
在实施例1的基础上,在步骤S5中,包括子步骤:
S51,依据所使用的PCIE控制器端口号,选择对应的配置头访问首地址;
S52,采用64位地址方式,即配置头访问首地址加上0x900000fe00000000偏移,访问控制器配置头内部寄存器,设置控制器配置头内部Gen2控制寄存器的定向速度变化(Directed Speed Change)数据位为1,端口物理层发送端电平波动(PHY Tx Swing)数据位为0;寄存器偏移地址大于8位地址,将高4位填到地址格式中的bit24~bit27;
S53,采用64位地址方式,即配置头访问首地址加上0x900000fe00000000偏移,继续访问控制器配置头内部寄存器,设置控制器配置头内部时序配置和过滤掩码寄存器(此处具体为过滤掩码1寄存器,控制器配置头内部有时序配置和过滤掩码0和时序配置和过滤掩码1两个寄存器,本次操作的是时序配置和过滤掩码1寄存器)的bit26数据位为1,设置控制器忽略数据响应包长度的不匹配情况,当接收到与请求长度不匹配的数据包时,控制器不丢弃;
S54,依据所匹配的PCIE控制器端口,选择端口BAR0基地址,重新配置端口BAR0基地址,恢复已记录的端口BAR0基地址寄存器所配置数值;
S55,访问处理器PCIE控制器端口内部寄存器,设置应端口内部PCIE写操作控制寄存器、PCIE读操作控制寄存器的bit[2:4]数据位与bit[18:20]数据位为0,设置控制器端口MEM和IO/CFG类型访问中PCIETLP包中TD、ATTR的值为0;
S56,根据所使用的PCIE控制器端口BAR0基地址,通过MEM访问设置PCIE控制器内部PCIE端口控制器寄存器(此处为PCIE端口控制器0寄存器,控制器有PCIE端口控制器0和PCIE端口控制器1两个寄存器,本次操作的是PCIE端口控制器0寄存器)的链路训练和状况状态机(app_ltssm_enable)数据位为1,启动PCIE控制器端口链路初始化,开始链路重定向训练;
S57,延时等待,通过MEM方式访问PCIE控制器内部寄存器PCIE端口状态控制器寄存器(此处为PCIE端口状态控制器1寄存器,控制器有PCIE端口状态控制器0和PCIE端口状态控制器1两个寄存器,本次操作的是PCIE端口状态控制器1寄存器),判断寄存器链路训练和状况状态机的当前状态(xmlh_ltssm_state)数据位值是否为0x11,如果若该字段变成0x11,则表示PCIE链路重定向训练完成,PCIE链路重新协商建立成功。
实施例5
在实施例1的基础上,在步骤S8中,包括子步骤:
S81,等待PCIE控制器端口链路重定向训练成功,链路恢复到正常运行状态,便立即更新配置头空间寄存器中的主总线号(primary bus number)、二级总线(secondarybus)、二级总线(subordinate bus)寄存器,回写为之前存储记录的数值,恢复主总线号、二级总线号配置;
S82,根据所记录存储的配置头空间寄存器数值,更新配置头空间对应寄存器,恢复最初配置;
S83,重新扫描系统PCIE总线,插入FPGA逻辑设计设备驱动程序,启用对新加载的FPGA逻辑设计的系统调用,恢复软件系统相关上下文环境,即完成FPGA逻辑资源的在线动态加载配置。
实施例6
在实施例4的基础上,在步骤S57中,如果该字段不变成0x11,则PCIE链路重新协商建立失败。
描述于本发明实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的方法。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现上述实施例中所述的方法。
本发明未涉及部分均与现有技术相同或可采用现有技术加以实现。
上述技术方案只是本发明的一种实施方式,对于本领域内的技术人员而言,在本发明公开了应用方法和原理的基础上,很容易做出各种类型的改进或变形,而不仅限于本发明上述具体实施方式所描述的方法,因此前面描述的方式只是优选的,而并不具有限制性的意义。
除以上实例以外,本领域技术人员根据上述公开内容获得启示或利用相关领域的知识或技术进行改动获得其他实施例,各个实施例的特征可以互换或替换,本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

Claims (6)

1.一种基于龙芯2K1000的FPGA资源动态加载配置方法,其特征在于,包括步骤:
S1,启动动态加载配置;
S2,匹配PCIE链路相关配置信息;
S3,保护软件系统PCIE上下文环境;
S4,实时动态加载逻辑资源;
S5,启动控制器端口PCIE链路重定向训练;
S6,判断链路训练是否成功:如果训练成功,则进入步骤S7,如果训练不成功,则动态加载配置失败;
S7,恢复端口PCIE链路相关配置信息;
S8,恢复软件系统PCIE上下文环境,动态加载配置成功。
2.根据权利要求1所述的基于龙芯2K1000的FPGA资源动态加载配置方法,其特征在于,在步骤S3中,包括子步骤:
S31,依据系统PCIE总线连接关系,匹配FPGA芯片所连接的处理器PCIE控制器对应端口,确定所使用的控制器端口号和配置头访问首地址;
S32,采用Type1类型访问格式,访问对应的控制器端口配置头空间寄存器,记录存储配置头空间寄存器数值;
S33,确定PCIE控制器对应端口BAR0基地址后,依次实现对PCIE控制器端口内部寄存器的读写访问,记录端口BAR0基地址寄存器所配置数值;
S34,保护软件相关上下文环境,停止对FPGA逻辑设计的系统调用,卸载FPGA逻辑设计相关设备驱动程序。
3.根据权利要求1所述的基于龙芯2K1000的FPGA资源动态加载配置方法,其特征在于,在步骤S4中,包括子步骤:
S41,采用被动串行运行加载模式,遵从FPGA芯片被动串行运行加载模式加载时序要求,设置处理器互联配置管脚,模拟加载时序,动态加载FPGA芯片全部逻辑资源;
S42,等待资源加载完成,立即检测到PCIE控制器端口链路链接状态为断开;
S43,配置使能PCIE控制寄存器,复位PCIE控制器端口,完成端口初始化。
4.根据权利要求1所述的基于龙芯2K1000的FPGA资源动态加载配置方法,其特征在于,在步骤S5中,包括子步骤:
S51,依据所使用的PCIE控制器端口号,选择对应的配置头访问首地址;
S52,采用64位地址方式,即配置头访问首地址加上0x900000fe00000000偏移,访问控制器配置头内部寄存器,设置控制器配置头内部Gen2控制寄存器的定向速度变化数据位为1,端口物理层发送端电平波动数据位为0;寄存器偏移地址大于8位地址,将高4位填到地址格式中的bit24~bit27;
S53,采用64位地址方式,即配置头访问首地址加上0x900000fe00000000偏移,继续访问控制器配置头内部寄存器,设置控制器配置头内部时序配置和过滤掩码寄存器的bit26数据位为1,设置控制器忽略数据响应包长度的不匹配情况,当接收到与请求长度不匹配的数据包时,控制器不丢弃;
S54,依据所匹配的PCIE控制器端口,选择端口BAR0基地址,重新配置端口BAR0基地址,恢复已记录的端口BAR0基地址寄存器所配置数值;
S55,访问处理器PCIE控制器端口内部寄存器,设置应端口内部PCIE写操作控制寄存器、PCIE读操作控制寄存器的bit[2:4]数据位与bit[18:20]数据位为0,设置控制器端口MEM和IO/CFG类型访问中PCIETLP包中TD、ATTR的值为0;
S56,根据所使用的PCIE控制器端口BAR0基地址,通过MEM访问设置PCIE控制器内部PCIE端口控制器寄存器的链路训练和状况状态机数据位为1,启动PCIE控制器端口链路初始化,开始链路重定向训练;
S57,延时等待,通过MEM方式访问PCIE控制器内部寄存器PCIE端口状态控制器寄存器,判断寄存器链路训练和状况状态机的当前状态数据位值是否为0x11,如果若该字段变成0x11,则表示PCIE链路重定向训练完成,PCIE链路重新协商建立成功。
5.根据权利要求1所述的基于龙芯2K1000的FPGA资源动态加载配置方法,其特征在于,在步骤S8中,包括子步骤:
S81,等待PCIE控制器端口链路重定向训练成功,链路恢复到正常运行状态,便立即更新配置头空间寄存器中的主总线号、二级总线、二级总线寄存器,回写为之前存储记录的数值,恢复主总线号、二级总线号配置;
S82,根据所记录存储的配置头空间寄存器数值,更新配置头空间对应寄存器,恢复最初配置;
S83,重新扫描系统PCIE总线,插入FPGA逻辑设计设备驱动程序,启用对新加载的FPGA逻辑设计的系统调用,恢复软件系统相关上下文环境,即完成FPGA逻辑资源的在线动态加载配置。
6.根据权利要求4所述的基于龙芯2K1000的FPGA资源动态加载配置方法,其特征在于,在步骤S57中,如果该字段不变成0x11,则PCIE链路重新协商建立失败。
CN202210767420.7A 2022-07-01 2022-07-01 基于龙芯2k1000的fpga资源动态加载配置方法 Pending CN115220810A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210767420.7A CN115220810A (zh) 2022-07-01 2022-07-01 基于龙芯2k1000的fpga资源动态加载配置方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210767420.7A CN115220810A (zh) 2022-07-01 2022-07-01 基于龙芯2k1000的fpga资源动态加载配置方法

Publications (1)

Publication Number Publication Date
CN115220810A true CN115220810A (zh) 2022-10-21

Family

ID=83609042

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210767420.7A Pending CN115220810A (zh) 2022-07-01 2022-07-01 基于龙芯2k1000的fpga资源动态加载配置方法

Country Status (1)

Country Link
CN (1) CN115220810A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116541898A (zh) * 2023-07-07 2023-08-04 山东多次方半导体有限公司 一种基于fpga实现多算法可重配置的密码卡设计方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116541898A (zh) * 2023-07-07 2023-08-04 山东多次方半导体有限公司 一种基于fpga实现多算法可重配置的密码卡设计方法
CN116541898B (zh) * 2023-07-07 2023-10-13 山东多次方半导体有限公司 一种基于fpga实现多算法可重配置的密码卡设计方法

Similar Documents

Publication Publication Date Title
US7506087B2 (en) Method for configuring a Peripheral Component Interconnect Express (PCIE)
US6886107B2 (en) Method and system for selecting a master controller in a redundant control plane having plural controllers
KR101847943B1 (ko) 고성능 상호연결 물리 계층
WO2021212948A1 (zh) 存储系统启动方法、装置及计算机可读存储介质
CN110941576B (zh) 具有多模pcie功能的存储控制器的系统、方法和设备
US20070028087A1 (en) Method and system for reducing instruction storage space for a processor integrated in a network adapter chip
US11467909B1 (en) Peripheral component interconnect express interface device and operating method thereof
CN113227991B (zh) 替代协议选择
US11940942B2 (en) Peripheral component interconnect express interface device and operating method thereof
US7453816B2 (en) Method and apparatus for automatic recovery from a failed node concurrent maintenance operation
WO2023147748A1 (zh) 一种服务器初始化智能网卡的方法、装置、设备及介质
CN115220810A (zh) 基于龙芯2k1000的fpga资源动态加载配置方法
CN110880998A (zh) 一种基于可编程器件的报文传输方法及装置
TW202246976A (zh) 快速週邊元件互連裝置以及包括其的計算系統
US20230315591A1 (en) PCIe DEVICE AND COMPUTING SYSTEM INCLUDING THE SAME
US11349780B2 (en) Enhancing port link-up time
US20240012770A1 (en) Interface device having plurality of ports and method of operating the same
JP6841876B2 (ja) プロセッサモジュールのフレキシブル接続
US20230315672A1 (en) Interface device and computing system including the same
US11921657B2 (en) Peripheral component interconnect express (PCIE) device for supporting separate reference clock(s) operating between host and direct memory access (DMA) controller
US11726870B2 (en) Peripheral component interconnect express interface device and system including the same
US20220382362A1 (en) Peripheral component interconnect express (pcie) interface device and method of operating the same
US20230388194A1 (en) Software-based physical layer configuration
KR940000453B1 (ko) 전전자 교환기의 하위레벨 프로세서 로딩방법
CN116627463A (zh) 一种芯片升级方法、装置、设备及介质

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