CN114327660B - 基于fpga的外接内存的初始化方法 - Google Patents
基于fpga的外接内存的初始化方法 Download PDFInfo
- Publication number
- CN114327660B CN114327660B CN202111654748.XA CN202111654748A CN114327660B CN 114327660 B CN114327660 B CN 114327660B CN 202111654748 A CN202111654748 A CN 202111654748A CN 114327660 B CN114327660 B CN 114327660B
- Authority
- CN
- China
- Prior art keywords
- data
- code
- fpga
- external
- soft
- 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.)
- Active
Links
- 238000011423 initialization method Methods 0.000 title claims abstract description 13
- 238000000034 method Methods 0.000 claims description 30
- 238000013500 data storage Methods 0.000 claims description 13
- 238000004891 communication Methods 0.000 claims description 5
- 230000003993 interaction Effects 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000013473 artificial intelligence Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
一种基于FPGA的外接内存的初始化方法,包括:提供配置文件,所述配置文件包括逻辑代码、优先使用数据代码和软核启动代码;向所述FPGA中加载配置文件;所述FPGA基于所述配置文件中的逻辑代码定义所述FPGA中的逻辑电路,搭建出处理器;所述FPGA中的处理器基于所述优先使用数据代码从外接闪存中读取优先使用数据并复制到外接内存中;所述FPGA中的处理器基于所述软核启动代码从外接闪存中读取软核数据并复制到外接内存中。由于优先使用数据可以先于软核数据被加载到外接闪存中,因而在应用程序被启动前,所述优先使用数据就可以被系统中的外部设备优先使用,从而可以提高人机交互体验或系统运行效率。
Description
技术领域
本申请涉及FPGA领域,尤其涉及一种基于FPGA的外接内存的初始化方法。
背景技术
目前,随着集成电路的发展,一方面现场可编程门阵列(Field-ProgrammableGate Array,FPGA)作为专用集成电路领域中的一种半定制电路,因其可重构、逻辑资源丰富、输入输出接口灵活等特点被广泛应用于各种领域。另一方面双倍速率(Double DataRate,DDR)同步动态随机存储器(ynchronous Dynamic Random AccessMemory,SDRAM)因其高数据传输速率,同样在很多领域中得到广泛应用。基于FPGA的特点和DDR SDRAM的特点,二者的结合可广泛应用于图像视频时序控制系统、工业控制系统等多个领域。
但是现有FPGA和DDR SDRAM结合的系统还是存在人机交互体验差或系统运行效率较低的问题。
发明内容
鉴于此,本申请提供了一种基于FPGA的外接内存的初始化方法,所述FPGA与外接内存和外接闪存连接,包括:
提供配置文件,所述配置文件包括逻辑代码、优先使用数据代码和软核启动代码;
向所述FPGA中加载配置文件;
所述FPGA基于所述配置文件中的逻辑代码定义所述FPGA中的逻辑电路,搭建出处理器;
所述FPGA中的处理器基于所述优先使用数据代码从外接闪存中读取优先使用数据并复制到外接内存中;
所述FPGA中的处理器基于所述软核启动代码从外接闪存中读取软核数据并复制到外接内存中。
在一些实施例中,所述配置文件存储在外接闪存中,所述优先使用数据和软核数据也存储在外接闪存中。
在一些实施例中,所述配置文件中所述逻辑代码、优先使用数据代码和软核启动代码的优先级别依次由高到低,所述FPGA基于所述优先级别高低依次执行所述逻辑代码、优先使用数据代码和软核启动代码。
在一些实施例中,所述FPGA中的处理器根据所述优先级别先基于所述优先使用数据代码从外接闪存中读取优先使用数据并复制到外接内存中,后基于所述软核启动代码从外接闪存中读取软核数据并复制到外接内存中。
在一些实施例中,还包括与所述FPGA和所述外接内存连接的外部设备,在将所述外接闪存中读取的软核数据复制到外接内存之前,所述FPGA控制所述外接内存中缓存的优先使用数据传入所述外部设备,供所述外部设备使用。
在一些实施例中,所述优先使用数据为图像数据,所述外部设备为显示屏。
在一些实施例中,所述优先使用数据为密码表或检验码表,所述外部设备为通信装置。
在一些实施例中,所述优先使用数据为模型数据包,所述外部设备为AI装置。
在一些实施例中,所述优先使用数据代码包括数据长度和数据目标地址。
在一些实施例中,所述FPGA中的处理器基于所述优先使用数据代码从外接闪存中读取优先使用数据并复制到外接内存中包括:所述FPGA中的处理器从外接闪存中相应位置读取所述数据长度对应的所述优先使用数据,并将优先使用数据根据所述数据目标地址复制到外接内存中相应的位置。
在一些实施例中,所述软核启动代码为二级引导代码,所述FPGA基于所述二级引导代码读取存储在外接闪存中对应的应用工程代码,并基于所述应用工程代码从外接闪存中读取软核数据并复制到外接内存中。
在一些实施例中,所述二级引导代码包括二级引导代码长度和二级引导目标地址,所述FPGA中的处理器从外接闪存中相应位置读取所述二级引导代码长度的对应的所述应用工程代码,所述FPGA中的处理器基于所述应用工程代码从外接闪存中读取软核数据,并将所述读取的软核数据根据所述二级引导目标地址并复制到所述外接内存中相应的位置。
在一些实施例中,所述应用工程代码包括软核数据存放地址、软核数据长度;所述FPGA中的处理器基于所述软核数据存放地址从外接闪存中相应位置读取所述软核数据长度的软核数据。
在一些实施例中,还包括出厂工程代码,所述FPGA中的处理器在读取所述应用工程代码之前,判断所述应用工程代码是否存在且正确,若所述应用工程代码存在且正确,则继续读取所述应用工程代码,并基于所述应用工程代码从外接闪存中读取软核数据并复制到外接内存中,若所述应用工程代码不存在或者所述应用工程代码存在但不正确,则读取所述出厂工程代码,并基于所述出厂工程代码从外接闪存中读取软核数据并复制到外接内存中。
在一些实施例中,所述出厂工程代码包括默认软核数据存放地址、默认软核数据长度;所述FPGA中的处理器基于所述默认软核数据存放地址从外接闪存中相应位置读取所述默认软核数据长度的软核数据。
在一些实施例中,所述配置文件中的优先使用数据代码为多个,所述FPGA中的处理器基于第一规则选取其中至少一个优先使用数据代码,所述FPGA中的处理器基于选取的所述至少一个所述优先使用数据代码从外接闪存中读取至少一个优先使用数据并复制到外接内存中。
在一些实施例中,所述配置文件中的软核启动代码为多个,所述FPGA中的处理器基于第二规则选取至少一个软核启动代码,并基于选取的至少一个所述软核启动代码从外接闪存中读取至少一个软核数据并复制到外接内存中。
在一些实施例中,所述第一规则为多个优先使用数据代码的优先级别,所述第二规则为软核启动代码的优先级别。
在一些实施例中,所述外接闪存为SDRAM、DDR SDRAM或RDRAM,所述外接闪存为FLASH闪存。
本申请的前述一些实施例中的基于FPGA的外接内存的初始化方法,所述FPGA与外接内存和外接闪存连接,包括:提供配置文件,所述配置文件包括逻辑代码、优先使用数据代码和软核启动代码;向所述FPGA中加载配置文件;所述FPGA基于所述配置文件中的逻辑代码定义所述FPGA中的逻辑电路,搭建出处理器;所述FPGA中的处理器基于所述优先使用数据代码从外接闪存中读取优先使用数据并复制到外接内存中;所述FPGA中的处理器基于所述软核启动代码从外接闪存中读取软核数据并复制到外接内存中。由于优先使用数据可以先于软核数据被加载到外接闪存中,因而在应用程序被启动前,所述优先使用数据就可以被系统中的外部设备优先使用,从而可以提高人机交互体验或系统运行效率。
附图说明
图1为本申请一些实施例中基于FPGA的外接内存的初始化方法的流程示意图;
图2为本申请一些实施例中基于FPGA系统的结构示意图;
图3-图4为本申请一些实施例中配置文件的结构示意图;
图5为本申请一些实施例中基于FPGA的外接内存的初始化方法的流程示意图;
图6为本申请一些实施例中配置文件的结构示意图;
图7为本申请一些实施例中基于FPGA的外接内存的初始化方法的流程示意图;
图8为本申请一些实施例中应用工程代码和出厂工程代码的结构示意图;
图9为本申请一些实施例中配置文件的结构示意图;
图10为本申请一些实施例中基于FPGA的外接内存的初始化方法的流程示意图;
图11为本申请一些实施例中配置文件的结构示意图。
具体实施方式
如背景技术所言,现有FPGA和DDR SDRAM结合的系统还是存在人机交互体验差或系统运行效率较低的问题。
研究发现,现有FPGA和DDR SDRAM结合的系统上运行某一应用程序时,需要等软核代码全部加载到DDRSDRAM上,才会进行画面的显示或特殊数据的交互,特别是软核代码较大时,这个等待时间会更长,极大的影响了用户的体验或系统的运行效率。
为此,本申请提供了一种基于FPGA的外接内存的初始化方法,提升人机交互体验,提高系统运行效率。
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请的具体实施方式做详细的说明。在详述本申请实施例时,为便于说明,示意图会不依一般比例作局部放大,而且所述示意图只是示例,其在此不应限制本申请的保护范围。此外,在实际制作中应包含长度、宽度及深度的三维空间尺寸。
本申请一些实施例提供了一种基于FPGA的外接内存的初始化方法,所述FPGA与外接内存和外接闪存连接,参考图1,包括步骤:
步骤S200,提供配置文件,所述配置文件包括逻辑代码、优先使用数据代码和软核启动代码;
步骤S201,向所述FPGA中加载配置文件;
步骤S202,所述FPGA基于所述配置文件中的逻辑代码定义所述FPGA中的逻辑电路,搭建出处理器;
步骤S203,所述FPGA中的处理器基于所述优先使用数据代码从外接闪存中读取优先使用数据并复制到外接内存中;
步骤S204,所述FPGA中的处理器基于所述软核启动代码从外接闪存中读取软核数据并复制到外接内存中。
下面结合附图对前述过程进行详细描述。
进行步骤S200,提供配置文件,所述配置文件包括逻辑代码、优先使用数据代码和软核启动代码。
本申请提供的基于FPGA的外接内存的初始化方法基于FPGA构建的系统进行,在一些实施例中,参考图2,所述基于FPGA构建的系统包括FPGA 101,与所述FPGA 101连接的外接闪存102和外接内存103。
所述FPGA(Field-Programmable Gate Array)101属于专用集成电路中的一种半定制电路或器件,是可编程的逻辑列阵,能够有效的解决原有的器件门电路数较少的问题。在一些实施例中,所述FPGA 101的基本结构包括可编程输入输出单元、可配置逻辑块、数字时钟管理模块、嵌入式块RAM、布线资源、内嵌专用硬核、底层内嵌功能单元等。
通过向FPGA 101中加载配置文件对FPGA进行配置,以形成定制化的电路或搭建出处理器。在断电后,所述FPGA 101中的现有的配置会消失。
所述外接内存103的作用是用于暂时存放FPGA 101需要用到的数据,以及暂时存放与其他硬件进行交换的数据或者供其他硬件使用的数据。在断电后,所述外接内存103现有存储的数据均会消失。在一些实施例中,所述外接闪存为SDRAM(Synchronous DRAM)、DDRSDRAM(Double Data Rate SDRAM)或RDRAM(Rambus DRAM)。
所述外接闪存102为非易失性存储器,它在断电情况下仍能保持所存储的数据信息。在一些实施例中,所述外接闪存102为FLASH闪存。
所述外接闪存102用于存储各种应用程序或软核代码(程序代码),所述应用程序或软核代码(程序代码)为需要在基于FPGA构建的系统中运行的应用程序。本申请中,所述外接闪存102还用于存储配置文件、优先使用数据、软核数据。所述配置文件用于对所述FPGA 101进行配置,以形成定制化的电路或搭建出处理器。所述软核数据为应用程序启动时或运行前需要加载到外接内存103中的数据。所述优先使用数据为本申请中应用程序中的软核数据加载完之前,外部设备需要使用的数据。
在一些实施例中,所述应用程可以为包括图像处理功能的应用程序、包括通信功能的应用程序、或者包括人工智能处理功能的应用程序。在一些实施例中,所述优先使用数据可以为图像数据,密码表或检验码表,或模型数据包。
在一些实施例中,所述系统还包括外部设备104,所述外部设备104与所述FPGA101和外接内存103连接。在一些实施例中,所述外部设备104为显示屏,所述显示屏为触控屏或非触控屏。所述外部设备104还可以为通信装置或AI(Artificial Intelligence)装置。需要说明的是,所述应用程序可以为具有其他功能的应用程序,所述优先使用数据也可以为其他作用的数据,所述外部设备也可以为具有其他功能的外部设备。
在一些实施例中,所述外部设备104可以为具有相同功能或不同功能的多个设备。
所述配置文件中包括对FPGA 101的进行配置的逻辑代码,在系统上电后,所述配置文件被加载到所述FPGA 101中,所述FPGA 101基于所述配置文件中逻辑代码进行配置,以形成定制化的电路或搭建出处理器。
在一些实施例中,参考图3,所述配置文件包括逻辑代码301、优先使用数据代码302和软核启动代码303。所述逻辑代码301用于对所述FPGA 101中的逻辑电路进行定义,以形成定制化的电路或搭建出处理器。所述优先使用数据代码302用于向FPGA 101中的处理器提供读取优先使用数据并复制到外接内存中时的相关信息。所述软核启动代码303用于向FPGA 101中的处理器提供读取软核数据并复制到外接内存时的相关信息。
在一些实施例中,请参考图4和图2,所述优先使用数据代码302中包括数据长度和数据目标地址,所述数据长度为所述FPGA101中的处理器从外接闪存102中读取优先使用数据时读取的数据长度,所述数据目标地址为所述FPGA101中的处理器将读取的优先使用数据复制到外接内存103的存储地址。所述软核启动代码303中包括软核代码长度和软核目标地址,所述软核代码长度为所述FPGA101中的处理器从外接闪存102中读取软核数据时读取的数据长度,所述软核目标地址为所述FPGA101中的处理器将读取的软核数据复制到外接内存103中的存储地址。
在一些实施例中,所述配置文件中所述逻辑代码301、优先使用数据代码302和软核启动代码303的优先级别依次由高到低,即所述逻辑代码301的优先级别高于所述优先使用数据代码302的优先级别,所述优先使用数据代码302的优先级别高于所述软核启动代码303的优先级别。后续所述FPGA基于所述优先级别高低依次执行所述逻辑代码、优先使用数据代码和软核启动代码。
在一些实施例中,为了方便FPGA判断配置文件中各个项目的优先级别,将配置文件中所述逻辑代码301、优先使用数据代码302和软核启动代码303中存储的位置先后作为优先级别的高度,具体的将存储在前面的或者存储地址小判定为优先级别高。
在一些实施例中,所述逻辑代码可以采用专门的逻辑开发语言进行开发,常用的逻辑开发语言包括VHDL和VERILOG。所述逻辑代码301被开发出来后,与优先使用数据代码302和软核启动代码303一起组合形成配置文件,所述配置文件存储在所述外接闪存102(参考图2)中。
在一些实施例中,所述配置文件存储在所述外接闪存102中,优先使用数据和软核数据也存储在外接闪存102中,且所述配置文件、优先使用数据和软核数据可以按照存储地址从小达大依次存储。
继续参考图1-图4,进行步骤S201,向所述FPGA101中加载配置文件。
在系统上电后,自动向所述FPGA101中加载配置文件。
进行步骤S202,所述FPGA101基于所述配置文件中的逻辑代码301定义所述FPGA中的逻辑电路,搭建出处理器。
所述FPGA101在搭建出处理器后,才能进行后续的数据处理操作。
进行步骤S203,所述FPGA101中的处理器基于所述优先使用数据代码302从外接闪存102中读取优先使用数据并复制到外接内存103中。
所述FPGA101搭建出处理器后,运行或执行所述配置文件中的优先使用数据代码302,具体的,所述FPGA101中的处理器基于所述优先使用数据代码302从外接闪存102中读取优先使用数据并复制到外接内存103中。
在一些实施例中,所述FPGA101中的处理器基于所述优先使用数据代码302从外接闪存102中读取优先使用数据并复制到外接内存103中包括:所述FPGA中的处理器从外接闪存中相应位置读取所述数据长度对应的所述优先使用数据,并将优先使用数据根据所述数据目标地址复制到外接内存中相应的位置。在一些实施例中,由于所述配置文件与所述优先使用数据是依次存储在外接闪存102中,所述FPGA101中的处理器根据配置文件的地址很容易就知道优先使用数据的存储地址,并根据该存储地址进行读取。在其他实施例中,当所述优先使用数据存储在外接闪存102的其他地址时,所述优先使用数据代码302中还可以包括优先使用数据存储地址,所述FPGA101中的处理器根据所述优先使用数据存储地址从所述从外接闪存102中相应位置读取所述数据长度对应的所述优先使用数据。
进行步骤S204,所述FPGA101中的处理器基于所述软核启动代码303从外接闪存102中读取软核数据并复制到外接内存103中。
本实施例中,进行步骤S203后进行步骤S204。具体的,所述FPGA中的软核根据所述配置文件中的优先使用数据代码302和软核代码303的优先级别先基于所述优先使用数据代码302从外接闪存102中读取优先使用数据并复制到外接内存103中,后基于所述软核启动代码303从外接闪存102中读取软核数据并复制到外接内存103中。本申请中,由于优先使用数据先于软核数据被加载到外接闪存中,因而在应用程序被启动前,所述优先使用数据就可以被系统中的外部设备104优先使用,从而可以提高人机交互体验或系统运行效率,比如当所述优先使用数据为图像数据时,所述外部设备104为显示器时,所述外部设备104可以在应用程序被启动前就显示相关的图像,提高人机交互体验,再比如当所述优先使用数据为密码表或检验码表时,所述外部设备104为通信装置时,所述外部设备104可以在应用程序被启动前就进行密码的校验,在应用程序启动后,无需额外花时间进行校验,提高系统的运行效率,再比如当所述优先使用数据为模型数据包时,所述外部设备104为AI装置时,所述外部设备104可以在应用程序被启动前就进行模型数据包的相关处理,在应用程序启动后,无需额外花时间进行处理,提高系统的运行效率。
在一些实施例中,所述FPGA101中的处理器基于所述软核启动代码303从外接闪存102中读取软核数据并复制到外接内存103中包括:所述FPGA中的处理器从外接闪存中相应位置读取所述软核代码长度对应的所述软核数据,并将所述软核数据根据所述软核目标地址复制到外接内存103中相应的位置。在一些实施例中,由于所述配置文件、所述优先使用数据和所述软核数据是依次存储在外接闪存102中,所述FPGA101中的处理器根据配置文件的地址很容易就知道软核数据的存储地址,并根据该存储地址进行读取。在其他实施例中,当所述软核数据存储在外接闪存102的其他地址时,所述软核启动代码303中还可以包括软核代码存储地址,所述FPGA101中的处理器根据所述软核代码存储地址从所述从外接闪存102中相应位置读取所述数据长度对应的所述优先使用数据。
参考图5和图6,本发明另一些实施例还提供了一种基于FPGA的外接内存的初始化方法,本实施例中的方法与前述实施例中的方法的区别在于:软核数据的读取方式不同。
具体的,所述软核启动代码303为二级引导代码(参考图6),进行步骤S204时(参考图5),所述FPGA101(参考图2)基于所述二级引导代码读取存储在外接闪存102(参考图2)中对应的应用工程代码,并基于所述应用工程代码从外接闪存102中读取软核数据并复制到外接内存103(参考图2)中。本实施例中,所述软核数据是存储在应用工程代码所指向的外接闪存102中的特定位置,所述二级引导代码仅起到引导的作用,因而二级引导代码不会太大,从而使得软核启动代码303不会太大,防止占用FPGA101中过多的缓存空间,优化系统的运行效率。
在一些实施例中,所述二级引导代码(303)包括二级引导代码长度和二级引导目标地址,所述FPGA101中的处理器从外接闪存102中相应位置读取所述二级引导代码长度的对应的所述应用工程代码,所述FPGA101中的处理器基于所述应用工程代码从外接闪存中读取软核数据,并将所述软核数据根据二级引导目标地址并复制到所述外接内存中相应的位置。
在一些实施例中,所述应用工程代码存储在所述外接闪存102中存储优先使用数据之后的存储位置。
在一些实施例中,所述应用工程代码包括软核数据存储地址、软核数据长度。所述FPGA101中的处理器根据所述软核数据存储地址从外接闪存102中相应位置中读取所述软核数据长度对应的软核数据,并将所述读取的软核数据根据二级引导目标地址复制到所述外接内存103中相应的位置。
参考图7-图9,本发明另一些实施例还提供了一种基于FPGA的外接内存的初始化方法,本实施例中的方法与前述实施例中的方法的区别在于:所述FPGA中的处理器在读取所述应用工程代码之前,需要判断所述应用工程代码是否存在且正确,以及软核数据的读取方式不同。
首先,参考图8,所述应用工程代码401和出厂工程代码402均存储在外接闪存102(参考图2)中的相应位置。所述应用工程代码401包括软核数据存储地址、软核数据长度。所述出厂工程代码402包括默认软核数据存储地址、默认软核数据长度。在一些实施例中,所述应用工程代码401和出厂工程代码依次存储在所述外接闪存102中存储优先使用数据之后的存储位置。
参考图9,所述配置文件中的软核启动代码303中还包括判断所述应用工程代码是否存在且正确,在进行步骤S204时(参考图7),所述FPGA101(参考图2)中的处理器在读取所述应用工程代码之前,判断所述应用工程代码是否存在且正确,若所述应用工程代码存在且正确,则继续在读取所述应用工程代码,并基于所述应用工程代码从外接闪存102中读取软核数据并复制到外接内存103(参考图2)中(其具体过程包括:所述FPGA101中的处理器根据所述软核数据存储地址从外接闪存102中相应位置中读取所述软核数据长度对应的软核数据,并将所述读取的软核数据根据二级引导目标地址复制到所述外接内存103中相应的位置),若所述应用工程代码不存在或者所述应用工程代码存在但不正确,则读取所述出厂工程代码,并基于所述出厂工程代码从外接闪存中读取软核数据并复制到外接内存中(其具体过程包括:所述FPGA101中的处理器根据所述默认软核数据存储地址从外接闪存102中相应位置中读取所述默认软核数据长度对应的(默认)软核数据,并将所述读取的(默认)软核数据根据二级引导目标地址复制到所述外接内存103中相应的位置)。从而可以保证系统能有一个程序正常运行而可以再次升级。
参考图10-图11,本发明另一些实施例还提供了一种基于FPGA的外接内存的初始化方法,本实施例中的方法与前述实施例中的方法的区别在于:配置文件中优先使用数据代码的数量以及软核启动代码的数量不用,优先使用数据和软核数据的读取方式不同。
进行步骤S200时,所述提供的所述配置文件(参考图11)中除了包括逻辑代码,还包括多个优先使用数据代码和多个软核代码,以及FPGA101选取优先使用数据代码使得第一规则和选取软核代码时的第二规则,所述每一个优先使用数据代码对应一种优先使用数据,所述多种优先使用数据对应的存储在外接闪存102(参考图2)中,每一个所述软核代码对应一种软核数据,所述多种优先使用数据对应的存储在外接闪存102中。进行步骤S203时,所述FPGA中的处理器基于第一规则选取其中至少一个优先使用数据代码,所述FPGA中的处理器基于选取的所述至少一个所述优先使用数据代码从外接闪存中读取至少一个优先使用数据并复制到外接内存中,进行步骤S204时,所述FPGA中的处理器基于第二规则选取至少一个软核启动代码,并基于选取的至少一个所述软核启动代码从外接闪存中读取至少一个软核数据并复制到外接内存中。因而本申请中前述所述的基于FPGA的系统中存在几个应用程序时,只需要提供一个配置文件,就可以完成不用应用程序启动时对FPGA的配置,提高系统运行效率,节省资源,此外,某一个应用程序启动时或运行前,外部设备可以使用一个或多个优先使用数据,进一步提高系统的运行效率。
在一些实施例中,所述第一规则为多个优先使用数据代码的优先级别,所述FPGA101按照优先级别高低选取优先使用数据代码,所述第二规则为软核启动代码的优先级别,所述FPGA101按照优先级别高低选取软核启动代码。在其他实施例中,所述第一规则和第二规则可以根据实际的使用过程进行设置。
本申请虽然已以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以利用上述揭示的方法和技术内容对本申请技术方案做出可能的变动和修改,因此,凡是未脱离本申请技术方案的内容,依据本申请的技术实质对以上实施例所作的任何简单修改、等同变化及修饰,均属于本申请技术方案的保护范围。
Claims (16)
1.一种基于FPGA的外接内存的初始化方法,所述FPGA与外接内存和外接闪存连接,与所述FPGA和所述外接内存连接的外部设备,其特征在于,包括:
提供配置文件,所述配置文件包括逻辑代码、优先使用数据代码和软核启动代码,所述配置文件中所述逻辑代码、优先使用数据代码和软核启动代码的优先级别依次由高到低;
向所述FPGA中加载配置文件,所述FPGA基于所述优先级别高低依次执行所述逻辑代码、优先使用数据代码和软核启动代码;
所述FPGA基于所述配置文件中的逻辑代码定义所述FPGA中的逻辑电路,搭建出处理器;
所述FPGA中的处理器根据所述优先级别先基于所述优先使用数据代码从外接闪存中读取优先使用数据并复制到外接内存中,后基于所述软核启动代码从外接闪存中读取软核数据并复制到外接内存中,所述软核数据为应用程序启动时或运行前需要加载到外接内存中的数据,所述优先使用数据为应用程序中的软核数据加载完之前,外部设备需要使用的数据;
在将所述外接闪存中读取的软核数据复制到外接内存之前,在应用程序被启动前,所述FPGA控制所述外接内存中缓存的优先使用数据传入所述外部设备,供所述外部设备使用。
2.如权利要求1所述的基于FPGA的外接内存的初始化方法,其特征在于,所述配置文件存储在外接闪存中,所述优先使用数据和软核数据也存储在外接闪存中。
3.如权利要求1所述的基于FPGA的外接内存的初始化方法,其特征在于,所述优先使用数据为图像数据,所述外部设备为显示屏。
4.如权利要求1所述的基于FPGA的外接内存的初始化方法,其特征在于,所述优先使用数据为密码表或检验码表,所述外部设备为通信装置。
5.如权利要求1所述的基于FPGA的外接内存的初始化方法,其特征在于,所述优先使用数据为模型数据包,所述外部设备为AI装置。
6.如权利要求1所述的基于FPGA的外接内存的初始化方法,其特征在于,所述优先使用数据代码包括数据长度和数据目标地址。
7.如权利要求6所述的基于FPGA的外接内存的初始化方法,其特征在于,所述FPGA中的处理器基于所述优先使用数据代码从外接闪存中读取优先使用数据并复制到外接内存中包括:所述FPGA中的处理器从外接闪存中相应位置读取所述数据长度对应的所述优先使用数据,并将优先使用数据根据所述数据目标地址复制到外接内存中相应的位置。
8.如权利要求1所述的基于FPGA的外接内存的初始化方法,其特征在于,所述软核启动代码为二级引导代码,所述FPGA基于所述二级引导代码读取存储在外接闪存中对应的应用工程代码,并基于所述应用工程代码从外接闪存中读取软核数据并复制到外接内存中。
9.权利要求8所述的基于FPGA的外接内存的初始化方法,其特征在于,所述二级引导代码包括二级引导代码长度和二级引导目标地址,所述FPGA中的处理器从外接闪存中相应位置读取所述二级引导代码长度的对应的所述应用工程代码,所述FPGA中的处理器基于所述应用工程代码从外接闪存中读取软核数据,并将所述读取的软核数据根据所述二级引导目标地址并复制到所述外接内存中相应的位置。
10.权利要求9所述的基于FPGA的外接内存的初始化方法,其特征在于,所述应用工程代码包括软核数据存放地址、软核数据长度;所述FPGA中的处理器基于所述软核数据存放地址从外接闪存中相应位置读取所述软核数据长度的软核数据。
11.权利要求10所述的基于FPGA的外接内存的初始化方法,其特征在于,还包括出厂工程代码,所述FPGA中的处理器在读取所述应用工程代码之前,判断所述应用工程代码是否存在且正确,若所述应用工程代码存在且正确,则继续读取所述应用工程代码,并基于所述应用工程代码从外接闪存中读取软核数据并复制到外接内存中,若所述应用工程代码不存在或者所述应用工程代码存在但不正确,则读取所述出厂工程代码,并基于所述出厂工程代码从外接闪存中读取软核数据并复制到外接内存中。
12.如权利要求1所述的基于FPGA的外接内存的初始化方法,其特征在于,所述出厂工程代码包括默认软核数据存放地址、默认软核数据长度;所述FPGA中的处理器基于所述默认软核数据存放地址从外接闪存中相应位置读取所述默认软核数据长度的软核数据。
13.如权利要求1所述的基于FPGA的外接内存的初始化方法,其特征在于,所述配置文件中的优先使用数据代码为多个,所述FPGA中的处理器基于第一规则选取其中至少一个优先使用数据代码,所述FPGA中的处理器基于选取的所述至少一个所述优先使用数据代码从外接闪存中读取至少一个优先使用数据并复制到外接内存中。
14.如权利要求13所述的基于FPGA的外接内存的初始化方法,其特征在于,所述配置文件中的软核启动代码为多个,所述FPGA中的处理器基于第二规则选取至少一个软核启动代码,并基于选取的至少一个所述软核启动代码从外接闪存中读取至少一个软核数据并复制到外接内存中。
15.如权利要求14所述的基于FPGA的外接内存的初始化方法,其特征在于,所述第一规则为多个优先使用数据代码的优先级别,所述第二规则为软核启动代码的优先级别。
16.权利要求1所述的基于FPGA的外接内存的初始化方法,其特征在于,所述外接内存为SDRAM、DDR SDRAM或RDRAM,所述外接闪存为FLASH闪存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111654748.XA CN114327660B (zh) | 2021-12-30 | 2021-12-30 | 基于fpga的外接内存的初始化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111654748.XA CN114327660B (zh) | 2021-12-30 | 2021-12-30 | 基于fpga的外接内存的初始化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114327660A CN114327660A (zh) | 2022-04-12 |
CN114327660B true CN114327660B (zh) | 2024-01-30 |
Family
ID=81018816
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111654748.XA Active CN114327660B (zh) | 2021-12-30 | 2021-12-30 | 基于fpga的外接内存的初始化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114327660B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115562465B (zh) * | 2022-09-14 | 2023-08-01 | 中国科学院空间应用工程与技术中心 | 一种fpga系统中软核处理器的复位方法和系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1928824A (zh) * | 2006-09-20 | 2007-03-14 | 华为技术有限公司 | 一种加载fpga目标程序的方法及系统 |
CN102331733A (zh) * | 2010-07-14 | 2012-01-25 | 中国科学院沈阳计算技术研究所有限公司 | 基于片上可编程系统的数控系统逻辑控制器及其实现方法 |
CN104750510A (zh) * | 2013-12-30 | 2015-07-01 | 深圳市中兴微电子技术有限公司 | 一种芯片启动方法及多核处理器芯片 |
CN106484446A (zh) * | 2015-08-28 | 2017-03-08 | 晨星半导体股份有限公司 | 应用程序的程序代码载入方法及应用其方法的电脑系统 |
CN111198704A (zh) * | 2019-12-13 | 2020-05-26 | 南京理工大学 | 基于tcp协议的fpga远程升级系统 |
CN112073650A (zh) * | 2020-09-16 | 2020-12-11 | 中航华东光电有限公司 | 基于fpga的ddr3视频缓存控制方法 |
CN112230955A (zh) * | 2020-10-14 | 2021-01-15 | 西安微电子技术研究所 | 基于双核ARM SoC计算机FPGA重构系统及操作方法 |
-
2021
- 2021-12-30 CN CN202111654748.XA patent/CN114327660B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1928824A (zh) * | 2006-09-20 | 2007-03-14 | 华为技术有限公司 | 一种加载fpga目标程序的方法及系统 |
CN102331733A (zh) * | 2010-07-14 | 2012-01-25 | 中国科学院沈阳计算技术研究所有限公司 | 基于片上可编程系统的数控系统逻辑控制器及其实现方法 |
CN104750510A (zh) * | 2013-12-30 | 2015-07-01 | 深圳市中兴微电子技术有限公司 | 一种芯片启动方法及多核处理器芯片 |
CN106484446A (zh) * | 2015-08-28 | 2017-03-08 | 晨星半导体股份有限公司 | 应用程序的程序代码载入方法及应用其方法的电脑系统 |
CN111198704A (zh) * | 2019-12-13 | 2020-05-26 | 南京理工大学 | 基于tcp协议的fpga远程升级系统 |
CN112073650A (zh) * | 2020-09-16 | 2020-12-11 | 中航华东光电有限公司 | 基于fpga的ddr3视频缓存控制方法 |
CN112230955A (zh) * | 2020-10-14 | 2021-01-15 | 西安微电子技术研究所 | 基于双核ARM SoC计算机FPGA重构系统及操作方法 |
Also Published As
Publication number | Publication date |
---|---|
CN114327660A (zh) | 2022-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101583002B1 (ko) | 컴퓨팅 시스템, 그것의 부팅 방법, 및 코드 데이터 피닝 방법 | |
CN108628688B (zh) | 一种消息处理方法、装置及设备 | |
KR101555210B1 (ko) | 휴대용 단말기에서 내장 대용량 메모리를 이용한 컨텐츠 다운로드 방법 및 장치 | |
CN103677654A (zh) | 一种存储数据的方法及电子设备 | |
CN103984565A (zh) | 文件系统预提取的方法与电子装置以及启动方法 | |
KR20170040734A (ko) | 업데이트 제어 방법을 갖는 전자 시스템 및 그것의 동작 방법 | |
CN114327660B (zh) | 基于fpga的外接内存的初始化方法 | |
CN104156226A (zh) | 混合内存设备的挂起或关机方法 | |
CN116737244A (zh) | 芯片多硬件域启动方法及装置 | |
CN104346132A (zh) | 应用于智能卡虚拟机运行的控制装置及智能卡虚拟机 | |
CN108762989B (zh) | 固态硬盘的数据存储方法、装置、设备及可读存储介质 | |
CN109426511B (zh) | 软核更新方法和系统 | |
KR102116984B1 (ko) | 메모리 스왑 오퍼레이션 제어 방법 및 이를 적용하는 데이터 처리 시스템 | |
US10970206B2 (en) | Flash data compression decompression method and apparatus | |
CN113282239A (zh) | 数据迁移方法、存储器及控制器 | |
CN115981751B (zh) | 一种近存计算系统以及近存计算方法、装置、介质及设备 | |
WO2020113421A1 (zh) | 一种挂载文件系统的方法、终端设备及存储介质 | |
CN110874333B (zh) | 存储设备及存储方法 | |
CN105404591A (zh) | 处理器系统及其存储器控制方法 | |
CN111399926A (zh) | 下载启动程序的方法和装置 | |
CN114895969A (zh) | 一种操作系统休眠方法、装置、计算设备和存储介质 | |
EP4020220A1 (en) | Utilizing nand buffer for dram-less multilevel cell programming | |
CN103927207A (zh) | 软件加速方法和装置 | |
CN110515665B (zh) | 一种处理器系统的启动方法、系统及装置 | |
CN104077156A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |