用于初始化可编程器件的方法和装置的制造方法

文档序号:9750580阅读:277来源:国知局
用于初始化可编程器件的方法和装置的制造方法
【技术领域】
[0001]本发明涉及可编程器件的初始化。
【背景技术】
[0002]为了使可编程器件能够承担指定的逻辑功能,需要对可编程器件进行相应的初始化。然而,对可编程器件的初始化往往会导致额外的资源占用。例如,当CPU承担可编程器件的初始化时,会额外占用CPU资源。

【发明内容】

[0003]在一个实施例中,一种用于初始化可编程器件的方法能够减少额外的资源占用,该方法包括:
[0004]将包含第一模块的编程文件加载至可编程器件中;
[0005]解复位可编程器件;
[0006]将第一数据加载至连接可编程器件的内存中;
[0007]当内存中的第一数据被可编程器件中的第一模块转换为第二数据后,将第二模块加载至可编程器件中并替换编程文件中的第一模块,使保存在内存中的第二数据被可编程器件中的第二模块访问。
[0008]在另一个实施例中,一种用于初始化可编程器件的方法能够减少额外的资源占用,该装置包括:
[0009]文件加载模块,将包含第一模块的编程文件加载至可编程器件中;
[0010]解复位模块,解复位可编程器件;
[0011]数据加载模块,将第一数据加载至连接可编程器件的内存中;
[0012]加载替换模块,当内存中的第一数据被可编程器件中的第一模块转换为第二数据后,将第二模块加载至可编程器件中并替换编程文件中的第一模块。
[0013]在又一个实施例中,一种网络设备包括包括CPU、可编程器件、以及连接CPU的第一内存和连接可编程器件的第二内存:
[0014]CPU将包含第一模块的编程文件加载至可编程器件中;
[0015]CPU解复位可编程器件;
[0016]CPU将第一内存中的第一数据加载至第二内存中;
[0017]当第二内存中的第一数据被可编程器件中的第一模块转换为第二数据后,CPU将第二模块加载至可编程器件中并替换编程文件中的第一模块。
[0018]在上述的各实施例中,可编程器件的初始化能够部分地由可编程器件承担,因此,初始化可编程器件的额外资源占用能够被减少。
【附图说明】
[0019]图1a至图1c为一个实施例中初始化可编程器件的原理图;
[0020]图2a至图2b为一个比较例中初始化可编程器件的原理图;
[0021]图3a至图3b为图1a至图1c示出的实施例中的初始化可编程器件的时序图;
[0022]图4为图2a至图2b示出的比较例中的初始化可编程器件的时序图;
[0023]图5为另一个实施例中的初始化可编程器件的流程图;
[0024]图6为另一个实施例中的初始化可编程器件的逻辑图。
【具体实施方式】
[0025]为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
[0026]图1a至图1c为一个实施例中初始化可编程器件的原理图。请参见图1a至图lc,在一个实施例中,CPUll承担可编程器件12的初始化,并且,可编程器件12可以是例如 FPGA (Field — Programmable Gate Array,现场可编程门阵列)、或 CPLD (ComplexProgrammable Logic Device,复杂可编程逻辑器件)等任一种器件。
[0027]在该实施例中,CPUl I连接可编程器件12,例如,CPUl I可以通过PCIE (PeripheralComponent Interconnect Express,高速周边原件互连)总线接口等接口连接可编程器件
12;并且,CPUll连接第一内存13、可编程器件连接第二内存14,其中,第一内存13和第二内存14可以是物理内存。
[0028]在该实施例中,可编程器件12在完成初始化之后承担的逻辑功能依赖于CPUll提供的数据,并且,这些数据在可编程器件12的初始化过程中被转换为适合可编程器件12使用的格式。对于这些数据的转换,在该实施例中由可编程器件12来完成。为了便于描述,将转换前的数据称为第一数据121,将转换后的数据称为第二数据122。在某些特定的场景下,对数据的转换可以采用例如Compile (编译)等方式,相应地,第一数据121可以被理解为Raw Data(原始数据),第二数据122可以被理解为Compiled Data(编译数据)。
[0029]如图1a至Ic所示,该实施例中对可编程器件12的初始化可以按照以下原理予以实现:
[0030]S11,CPU11将包含第一模块111的编程文件110加载至可编程器件12中。其中,编程文件I1中不限于包括第一模块111,除了第一模块111之外,编程文件110中至少还可以包括管理可编程器件12与CPUll和第二内存14进行通信的接口的接口管理模块,进一步,编程文件110中还可以支持其承担的逻辑功能的其他模块。其中,对于编程文件的加载可以使FPGA实现该编程文件所对应的功能,例如对数据进行编译或者对数据进行查找坐寸ο
[0031]S12,CPUll解复位可编程器件12,使可编程器件12基于编程文件110进入工作状态。其中,在对FPGA进行初始化前,会先将FPGA置于复位状态,这里所述的解复位是指解除FPGA的复位状态,使被复位的FPGA开始运行。
[0032]S13,CPUll将其连接的第一内存13中的第一数据121加载至可编程器件12连接的第二内存14中。其中,如前文所述,编程文件110中可以包括管理可编程器件12与CPUll和第二内存14进行通信的接口的接口管理模块,因此,CPUll可以通过进入工作状态的可编程器件12访问连接可编程器件12的第二内存14。
[0033]S14,可编程器件12中的第一模块111将第二内存14中的第一数据121转换为第二数据122。
[0034]S15,CPUll将第二模块112加载至可编程器件12中并替换编程文件110中的第一模块111,S卩,图1a和图1b中示出的编程文件110在其包含的第一模块111被替换为第二模块112之后,变为图1c中示出的编程文件110’,从而,使得第二内存14中保存的第二数据122可以被可编程器件12中的第二模块112访问。
[0035]其中,相比于Sll对编程文件110的全局加载,S15中的CPUll将第二模块112加载至可编程器件12的过程可以采用局部加载的方式,这里所述的局部加载是指对编程文件110中的一部分的加载,局部加载主要用于对编程文件110的局部进行替换。并且,S15可以发生在可编程器件12所属设备完成启动之后,即,可编程器件12所属设备能够利用可编程器件12承担指定的逻辑功能正常运行之后。并且,第二模块112可以是通过访问第二数据122而支持可编程器件12承担的逻辑功能的模块。
[0036]从该实施例的上述原理可见,可编程器件12的初始化过程中的数据转换由可编程器件12承担,因此,当初始化可编程器件时,至少能够减少数据转换所导致的额外的CPU资源占用。
[0037]在上述的该实施例中,可编程器件12可以是支持局部加载的器件,并且,对于可编程器件12为FPGA的情况,编程文件110可以是例如Altera公司定义的RBF (Raw BinaryFile,原始二进制文件)格式、或Xilinx公司定义的BIN(binary, 二进制)格式、或其他支持局部加载的类似格式的文件。该局部加载用于对编程文件中的部分模块进行替换,以使FPGA实现其他编程文件的功能。
[0038]图2a至图2b为一个比较例中初始化可编程器件的原理图。如图2a至图2b所示的与传统初始化方式相似,以更明显地体现出上述实施例减少的额外的资源占用。
[0039]请参见图2a至图2b,在该比较例中,CPU21承担可编程器件22的初始化,并且,可编程器件22可以是例如FPGA、或CPLD等任一种器件。
[0040]在该比较例中,CPU2
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1