现场可编程门阵列位文件下载的方法及装置 【技术领域】
本发明涉及通信领域, 具体而言, 涉及一种现场可编程门阵列位文件下载的方法及装置。 背景技术 随着通讯领域中嵌入式技术的发展, 现场可编程门阵列 (FieldProgrammable Gate Array, 简称 FPGA) 作为一种逻辑控制电路器件, 由于其具有静态可重复编程或在线动 态重构的特点, 是的其在越来越多的领域得到大规模的应用。
FPGA 在断电之后会失去功能, 因此在通常设计 FPGA 的外围电路中会需要加上外 部存储单元保存 FPGA 的逻辑程序 ( 位文件 ), 在系统上电或特定需求时从存储单元中将逻 辑程序下载到 FPGA 里。通常 FPGA 的逻辑程序有多种下载方法, 如采用 FPGA 厂家提供的专 用 PROM 芯片进行下载。
通常如果需要对 PROM 进行升级时, 需要直接对可编程只读存储器 (Programmable Read Only Memory, 简称为 PROM) 进行读写操作, 但是如果在升级阶段突然遇到 FPGA 断电 或 CPU 出现异常中断, 如 CPU 复位时, 最后导致 FPGA 再重新读取 PROM 位文件时失败, FPGA 加载不成功导致整个系统无法正常工作。
针对相关技术中 PROM 升级中常常存在因异常状况导致 FPGA 配置失败的问题, 目 前尚未提出有效的解决方案。
发明内容
针对 PROM 升级中常常存在因异常状况导致 FPGA 配置失败的问题而提出本发明, 为此, 本发明的主要目的在于提供一种可编程门阵列位文件下载的方法及装置, 以解决上 述问题。
为了实现上述目的, 根据本发明的一个方面, 提供了一种可编程门阵列位文件下 载的装置。
根据本发明的可编程门阵列位文件下载的装置包括 : 主用 PROM 和备用 PROM, 用于 存储 FPGA 的逻辑配置文件 ; 开关芯片, 与 FPGA、 主用 PROM 和备用 PROM 相连, 用于将 FPGA 与 主用 PROM 接通, 或将 FPGA 与备用 PROM 接通。
优选地, 主用 PROM 和备用 PROM 分别与开关芯片的输入接口相连, FPGA 的下载配 置管脚和开关芯片的输出管脚相连。
优选地, FPGA 下载装置还包括 : 标准烧结下载插座, 与主用 PROM 相连, 用于将烧结 逻辑写入主用 PROM 中。
优选地, FPGA 下载装置还包括 : 处理器, 与开关芯片和 FPGA 相连, 用于对开关芯片 和 FPGA 进行控制。
优选地, FPGA 下载装置还包括 : EEPROM, 与处理器相连, 用于保存 FPGA 的升级相关 信息。优选地, FPGA 升级相关信息包括 : 指示通过备用 PROM 升级是否成功的信息。
优选地, 开关芯片的管脚包括 : 2 个输入接口、 1 个输出接口、 1 个通道接口控制端 和 1 个使能端。
为了实现上述目的, 根据本发明的另一方面, 提供了一种可编程门阵列位文件下 载的方法。
根据本发明的可编程门阵列位文件下载的方法包括 : 在 FPGA 首次上电时将烧结 逻辑写入主用 PROM 中 ; 在系统正常工作后, 使连接备用 PROM 的通道处于正常工作状态以从 备用 PROM 中读取逻辑配置位文件 ; 在从备用 PROM 中读取逻辑配置位文件失败的情况下, 使 连接主用 PROM 的通道处于正常工作状态以从主用 PROM 中读取逻辑位文件。
优选地, 在从备用 PROM 中读取逻辑配置位文件失败的情况下, 该方法还包括 : 对 通过备用 PROM 中读取逻辑配置位文件失败进行记录。
优选地, 在 FPGA 重新上电或系统复位时, 通过读取 EEPROM 来判断通过主用 PROM 或备用 PROM 来读取逻辑配置位文件, 其中, EEPROM 用于存储 FPGA 升级的相关信息。
本发明提供了一种可编程门阵列位文件下载的方法及装置, 该装置包括 : 主用 PROM 和备用 PROM, 用于存储 FPGA 的逻辑配置文件 ; 开关芯片, 与 FPGA、 主用 PROM 和备用 PROM 相连, 用于将 FPGA 与主用 PROM 接通, 或将 FPGA 与备用 PROM 接通, 通过本发明, 解决了 PROM 升级中常常存在因异常状况导致 FPGA 配置失败的问题, 进而达到了使 FPGA 升级更加 安全可靠的效果。 附图说明 此处所说明的附图用来提供对本发明的进一步理解, 构成本中请的一部分, 本发 明的示意性实施例及其说明用于解释本发明, 并不构成对本发明的不当限定。在附图中 :
图 1 是根据本发明实施例的可编程门阵列位文件下载的装置的示意图 ;
图 2 是根据本发明实施例的可编程门阵列位文件下载的方法的流程图 ;
图 3 是根据本发明实施例的首次上电或重新上电后可编程门阵列位文件下载的 方法的流程图 ;
图 4 是根据本发明实施例的可编程门阵列升级和异常处理的方法的流程图 ;
图 5 是根据本发明实施例的优选的可编程门阵列位文件下载的装置的示意图。
具体实施方式
功能概述
考虑到 PROM 升级中常常存在因异常状况导致 FPGA 配置失败, 本发明实施例提供 了一种可编程门阵列位文件下载的方法及装置。该装置包括 : 主用 PROM 和备用 PROM, 用于 存储 FPGA 的逻辑配置文件 ; 开关芯片, 与 FPGA、 主用 PROM 和备用 PROM 相连, 用于将 FPGA 与 主用 PROM 接通, 或将 FPGA 与备用 PROM 接通。
需要说明的是, 在不冲突的情况下, 本申请中的实施例及实施例中的特征可以相 互组合。下面将参考附图并结合实施例来详细说明本发明。
根据本发明的实施例, 提供了一种可编程门阵列位文件下载的装置。
图 1 是根据本发明实施例的可编程门阵列位文件下载的装置的示意图。如 图 1 所 示, 该装置包括 : FPGA 101, 主 PROM( 主 用 PROM)103, 备 PROM( 备 用 PROM)104, 优选地, 还包括 : CPU 102, SWITCH 开关芯片 105, EEPROM 106, 标准烧结下载插座 107。 FPGA 101 的逻辑位文件存放于主 PROM 103 中和备 PROM 104。 SWITCH 开关芯片 105 的 管脚一般由 2 个输入接口, 1 个输出接口, 1 个通道接口控制端, 1 个使能端组成。FPGA 101 的下载配置管脚已 SWITCH 开关芯片 105 的 1 个输入相连, CPU 102 的 GPIO( 通用的输入输 出 ) 管脚分别与 SWITCH 开关芯片 105 的控制管脚和 FPGA 101 的下载状态输出管脚相连。 主 PROM 103, 备 PROM 104 的管脚和 SWITCH 开关芯片 104 的 2 个输入管脚相连。EEPROM106 的管脚和 CPU 102 的 GPIO 管脚或专用 IIC 接口相连。 标准烧结下载插座 107 和主 PROM 103 相连。同时 FPGA 101 和 CPU 102 通过并行总线或串行总线相连。首次 FPGA 上电后通过标 准烧结下载插座 107 和专用 FPGA 烧结软件将烧结逻辑写入主 PROM 103 中。同时 CPU 102 的 GPIO 控制 SWITCH 开关芯片 104 的通道接口管脚使连接主用 PROM 103 的通道处于正常 工作状态。
图 2 是根据本发明实施例的可编程门阵列位文件下载的方法的流程图。
如图 2 所示, 该方法包括如下的步骤 S202 至步骤 S206 :
步骤 S202, 在 FPGA 首次上电时将烧结逻辑写入主用 PROM 中 ;
步骤 S204, 在系统正常工作后, 使连接备用 PROM 的通道处于正常工作状态以从所 述备用 PROM 中读取逻辑配置位文件 ;
步骤 S206, 在从所述备用 PROM 中读取所述逻辑配置位文件失败的情况下, 使连接 所述主用 PROM 的通道处于正常工作状态以从所述主用 PROM 中读取逻辑位文件。
下面将结合实例对本发明实施例的实现过程进行详细描述。
图 3 是根据本发明实施例的首次上电或重新上电后可编程门阵列位文件下载的 方法的流程图。
如图 3 所示, 该方法包括以下步骤 :
步骤 S301, 设计 FPGA 逻辑, 其中包括为 CPU 设计出一个读写接口能够读写 FPGA 内 部寄存器和读写 PROM 的接口。
步骤 S302, 设计 CPU 应用程序, 其中包括对 FPGA 内部寄存器进行读写、 监控 FPGA 下载状态管脚、 控制 FPGA 下载的 nConfig 管脚、 控制开关的 DIR 管脚和读写 EEPROM 的 IIC 管脚。
步骤 S303, 首次 FPGA 101 上电后通过标准烧结下载插座 107 和专用 FPGA 101 烧 结软件 ( 一般由 FPGA 厂家提供 ) 将烧结逻辑写入主 PROM 103 中。
步骤 S304, 当单板重新上电后 CPU 102 根据 IIC 接口读取预先约定的 EEPROM 106 相应的地址空间中的内容 ( 升级成功标志字 ) 来切换 SWITCH 开关芯片 105 决定从相应 PROM 中下载 FPGA 101 逻辑。
步骤 S305, CPU 102 控制 SWITCH DIR 管脚, 切换到相应的通道。
步骤 S306, CPU 102 判断是从备用 PROM 104 还是从主用 PROM 103 更新 FPGA 逻 辑。
步骤 S307, 如果判断结果为是, 当 CPU 102 判断是从备用 PROM 104 下载时同时打 开定时监控程序监控 FPGA 101 的下载状态输出管脚 ( 通常是 INIT_DONE 或 CONF_DONE)。 如果这些管脚在一定时间内 ( 通常根据具体情况决定 ) 没有输出为有效值, 说明 FPGA 101从备用 PROM 104 下载失败, 这时 CPU 102 切换 SWITCH 开关芯片 105 通道从主用 PROM 103 下载 FPGA 101 逻辑文件, 同时监控程序监控 FPGA 101 的下载状态输出管脚, 当这些管脚为 有效值时说明 FPGA 101 下载成功, 系统正常运行。最后 CPU 102 通过 GPIO 管脚或专用 IIC 接口对相连的 EEPROM 106 进行写操作, 把特定的数据 ( 升级是否成功标志 ) 写到的约定地 址空间中。
监控 INIT_DONE 是否为高电平。 如果判断结果为是, 转步骤 S312, 如果判断结果为 否, 转步骤 S308。
步骤 S308, CPU 监控程序监控 FPGA 101 的下载状态输出管脚是否超出预定的时 间。如果判断结果为是, 转步骤 S309, 如果判断结果为否, 转步骤 S307。
步骤 S309, CPU 控制 SWITCH DIR 管脚, 切换到主用 PROM 通道。
步骤 S310, CPU 控制 FPGA 管脚使 FPGA 重新下载逻辑。
步骤 S311, CPU 监控 INIT_DONE 是否为高电平。如果判断结果为是, 转步骤 S312, 如果判断结果为否, 则继续进行判断。
步骤 S312, FPGA 完成下载, 系统开始正常工作。
步骤 S313, CPU 将升级信息存储到 EEPROM 相应的地址空间中。 步骤 S314, FPGA 完成下载, 系统处于正常状态。
图 4 是根据本发明实施例的可编程门阵列升级和异常处理的方法的流程图。
如图 4 所示, 该方法包括以下步骤 :
编写 CPU 102 的应用程序, 使 CPU 102 可以通过总线读写 FPGA 101 内部寄存器升 级备用 PROM 104 中文件。完成升级备用 PROM 104 中文件后, CPU 102 通过控制 FPGA 101 的下载配置管脚 ( 通常是 nConfig 管脚 ) 使 FPGA 重新从备用 PROM 104 中读取逻辑配置位 文件完成 FPGA 逻辑下载。CPU 102 在 FPGA 101 读取配置期间, 监控 FPGA 101 的下载状态 输出指示管脚 ( 通常是 INIT_DONE 或 CONF_DONE)。当 FPGA 101 完成下载后这些状态管脚 输出为有效值, CPU 102 监控到后, 通过 GPIO 管脚或专用 IIC 接口相连的 EEPROM 106 把升 级成功标志字存储到相应的地址空间中。如果 FPGA 101 在从备用 PROM 104 中读取位文件 时, 遇到备用 PROM 104 失效或者其他异常状况导致读操作失败时, 这些通过 CPU 102 在一 段时间内 ( 通常根据具体应用具体决定 ) 没有检测到 FPGA 101 的下载状态输出指示管脚 ( 通常是 INIT_DONE 或 CONF_DONE) 为有效值时, 说明 FPGA 101 从备用 PROM 104 中读取配 置位文件失败, 这时 CPU 102 的 GPIO 控制 SWITCH 开关芯片 104 的通道接口管脚使连接主 用 PROM 104 的通道处于正常工作状态, 通过控制 FPGA 101 下载控制管脚 ( 通常是 nConfig 管脚 ) 使 FPGA 101 重新从主用 PROM 103 中读取逻辑配置位文件完成 FPGA 101 逻辑下载, 这样可以避免系统因为升级异常导致 FPGA101 不能正常工作的情况。
步骤 S401, 判断是否对备用 PROM 逻辑文件进行升级。如果判断结果为是, 转步骤 S402, 如果判断结果为否, 则继续进行判断。
步骤 S402, CPU 102 控制 SWITCH DIR 管脚, 切换到备用的通道。
步骤 S403, CPU 102 通过总线读写 FPGA 内部寄存器以更新备用 PROM 中的文件。
步骤 S404, 判断备用 PROM 文件是否更新完成。如果判断结果为是, 转步骤 S405, 如果判断结果为否, 则继续进行判断。
步骤 S405, 返回系统正常的进程。
步骤 S406, 判断是否需要从备用 PROM 更新。如果判断结果为是, 转步骤 S407, 如 果判断结果为否, 则转步骤 S405。
步骤 S407, CPU 控制 FPGA 重新下载逻辑。
步骤 S408, 监控 INIT_DONE 是否为高电平。如果判断结果为是, 转步骤 S413, 如果 判断结果为否, 转步骤 S409。
步骤 S409, CPU 判断定时监控是否超出预定时间。
步骤 S410, CPU 102 控制 SWITCH DIR 管脚, 切换到主用的通道。
步骤 S411, CPU 控制 FPGA 重新下载逻辑。
步骤 S412, 监控 CONF_DONE 是否为高电平。
步骤 S413, FPGA 下载完成下载, 开始正常工作。
步骤 S414, CPU 将升级信息保存到 EEPROM 相应的地址空间中。
图 5 是根据本发明实施例的优选的可编程门阵列位文件下载的装置的示意图。
如 图 5 所 示, 优 选 地, 该装置中: FPGA(401) 选 择 器 件 为 ALTERA 公 司 的 EP2C35F672, CPU(402) 为 PPC8321, 主 PROM(403) 和备 PROM(404) 为 EPCS16, SWITCH 开关芯 片 (405) 为 PI3L100Q, EEPROM(406) 为 AT24C64, 标准烧结下载插座 (407)。FPGA(401) 的 逻辑程序存放于所述 PROM(403) 中。SWITCH 开关芯片 (405) 的管脚一般由 2 个输入接口 (I0, I1), 1 个输出接口 (Y), 1 个通道接口控制端 (S), 1 个使能端 (E) 组成。FPGA(401) 的 下载配置管脚已所述 SWITCH 开关芯片 105 的 1 个输入相连, CPU(402) 的 GPIO( 通用的输 入输出 ) 管脚分别与 SWITCH 开关芯片 (405) 的控制管脚 (S) 和 FPGA(401) 的下载状态输 出管脚 (CONF_DONE) 相连。主 PROM(403), 备 PROM(404) 的管脚和 SWITCH 开关芯片 (404) 的 2 个输入管脚相连。
从以上的描述中, 可以看出, 本发明采用通用的 PROM 构成的逻辑位文件存储器主 PROM 103 和备 PROM 104, 通过 CPU 102 访问预先设定的 EEPROM 106 相应的地址空间来切 换 SWITCH 开关芯片 105 从哪个逻辑位文件存储器中下载 FPGA 101 逻辑, 完成 FPGA 101 的 逻辑重新下载更新, 同时可以避免在 FPGA 升级过程中引起的异常情况, 方案简单可靠, 成 本低。
需要说明的是, 在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的 计算机系统中执行, 并且, 虽然在流程图中示出了逻辑顺序, 但是在某些情况下, 可以以不 同于此处的顺序执行所示出或描述的步骤。
显然, 本领域的技术人员应该明白, 上述的本发明的各模块或各步骤可以用通用 的计算装置来实现, 它们可以集中在单个的计算装置上, 或者分布在多个计算装置所组成 的网络上, 可选地, 它们可以用计算装置可执行的程序代码来实现, 从而, 可以将它们存储 在存储装置中由计算装置来执行, 或者将它们分别制作成各个集成电路模块, 或者将它们 中的多个模块或步骤制作成单个集成电路模块来实现。这样, 本发明不限制于任何特定的 硬件和软件结合。
以上所述仅为本发明的优选实施例而已, 并不用于限制本发明, 对于本领域的技 术人员来说, 本发明可以有各种更改和变化。 凡在本发明的精神和原则之内, 所作的任何修 改、 等同替换、 改进等, 均应包含在本发明的保护范围之内。