书签 分享 收藏 举报 版权申诉 / 18

一种FPGA配置文件在线升级方法及装置.pdf

  • 上传人:bo****18
  • 文档编号:5816812
  • 上传时间:2019-03-22
  • 格式:PDF
  • 页数:18
  • 大小:538.91KB
  • 摘要
    申请专利号:

    CN201110310780.6

    申请日:

    2011.10.13

    公开号:

    CN102360302A

    公开日:

    2012.02.22

    当前法律状态:

    授权

    有效性:

    有权

    法律详情:

    授权|||实质审查的生效IPC(主分类):G06F 9/445申请日:20111013|||公开

    IPC分类号:

    G06F9/445

    主分类号:

    G06F9/445

    申请人:

    福建星网锐捷网络有限公司

    发明人:

    周磊

    地址:

    350002 福建省福州市仓山区金山大道618号桔园州工业园19号楼

    优先权:

    专利代理机构:

    北京同达信恒知识产权代理有限公司 11291

    代理人:

    黄志华

    PDF完整版下载: PDF下载
    内容摘要

    本发明公开了一种FPGA配置文件在线升级的方法及装置,用以在不增加额外的逻辑器件的前提下,完成FPGA配置文件的在线升级,并实现FPGA上电即可用的目的。其中,FPGA配置文件在线升级的方法,包括:在进行FPGA配置文件升级时,CPU控制总线切换开关将FPGA与存储器之间的第一数据通路断开、将CPU与存储器之间的第二数据通路连通;所述CPU更新所述存储器中存储的FPGA配置文件;并在完成FPGA配置文件的更新之后,所述CPU控制所述总线切换开关将所述第一数据通路连通、将所述第二数据通路断开;以及所述CPU触发所述FPGA从所述存储器中重新载入更新后的FPGA配置文件,并所述FPGA进行配置。

    权利要求书

    1: 一种 FPGA 配置文件在线升级的方法, 其特征在于, 包括 : 在进行现场可编程门阵列 FPGA 配置文件升级时, 中央处理器 CPU 控制总线切换开关将 FPGA 与存储器之间的第一数据通路断开、 将 CPU 与存储器之间的第二数据通路连通 ; 所述 CPU 更新所述存储器中存储的 FPGA 配置文件 ; 并 在完成 FPGA 配置文件的更新之后, 所述 CPU 控制所述总线切换开关将所述第一数据通 路连通、 将所述第二数据通路断开 ; 以及 所述 CPU 触发所述 FPGA 从所述存储器中重新载入更新后的 FPGA 配置文件, 并对所述 FPGA 进行配置。
    2: 如权利要求 1 所述的方法, 其特征在于, CPU 控制总线切换开关将 FPGA 与存储器之 间的第一数据通路断开、 将 CPU 与存储器之间的第二数据通路连通, 具体包括 : 所述 CPU 向所述第一数据通路输入低电平信号, 将 FPGA 与存储器之间的第一数据通路 断开, 并同时向所述第二数据通路输入高电平信号, 将 CPU 与存储器之间的第二数据通路 连通。
    3: 如权利要求 1 所述的方法, 其特征在于, 触发所述 FPGA 重新从所述存储器中载入更 新后的 FPGA 配置文件, 具体包括 : 所述 CPU 拉低所述 FPGA 的配置管脚 PROG_B 并持续设定时长后释放, 触发所述 FPGA 重 新从所述存储器中载入更新后的 FPGA 配置文件。
    4: 如权利要求 1 所述的方法, 其特征在于, 还包括 : 所述 CPU 确定 FPGA 重新载入更新后的 FPGA 配置文件之后, 进行配置成功检测。
    5: 如权利要求 4 所述的方法, 其特征在于, 所述 CPU 在检测到所述 FPGA 的配置管脚 DONE 重新拉高时, 确定 FPGA 重新载入更新后的 FPGA 配置文件成功。
    6: 如权利要求 1 ~ 5 任一权利要求所述的方法, 其特征在于, 所述存储器的存储空间包 括第一存储区、 第二存储区和第三存储区, 其中, 第一存储区存储本次更新后的 FPGA 配置 文件, 第二存储区存储本次更新前的 FPGA 配置文件, 第三存储区存储初始 FPGA 配置文件 ; 以及 所述方法, 还包括 : CPU 在确定 FPGA 重新载入第一存储区存储的 FPGA 配置文件, 进行配置成功时, 比较第 一存储区存储的本次更新后的 FPGA 配置文件与第二存储区存储的本次更新前的 FPGA 配置 文件是否一致 ; 以及 在比较结果不一致时, 用第一存储区存储的本次更新后的 FPGA 配置文件覆盖第二存 储区存储的本次更新前的 FPGA 配置文件。
    7: 如权利要求 6 所述的方法, 其特征在于, 还包括 : CPU 在确定 FPGA 重新载入第一存储区存储的本次更新后的 FPGA 配置文件, 进行配置未 成功时, 用第二存储区存储的本次更新前的 FPGA 配置文件覆盖第一存储区存储的本次更 新后的 FPGA 配置文件 ; 并触发所述 FPGA 从所述第一存储区中重新载入本次更新前的 FPGA 配置文件, 并进行配置 ; 以及 CPU 在确定 FPGA 从所述第一存储区中重新载入本次更新前的 FPGA 配置文件, 进行配置 仍未成功时, 用第三存储区存储的初始 FPGA 配置文件覆盖第一存储区存储的本次更新前 的 FPGA 配置文件 ; 并触发所述 FPGA 从所述第一存储区中重新载入初始 FPGA 配置文件, 并 2 进行配置。
    8: 一种 FPGA 配置文件在线升级的装置, 其特征在于, 包括 : 存储器, 用于存储现场可编程门阵列 FPGA 配置文件 ; 中央处理器 CPU, 用于在进行 FPGA 配置文件升级时, 控制总线切换开关将 FPGA 与存储 器之间的第一数据通路断开、 将 CPU 与存储器之间的第二数据通路连通, 并更新所述存储 器中的 FPGA 配置文件 ; 以及在完成 FPGA 配置文件的更新之后, 控制所述总线切换开关将所 述第一数据通路连通、 将所述第二数据通路断开 ; 并触发所述 FPGA 重新从所述存储器中载 入更新后的 FPGA 配置文件, 并进行配置 ; 总线切换开关, 用于在所述 CPU 的控制下, 分别连通或者断开所述第一数据通路和所 述第二数据通路 ; FPGA, 用于在所述 CPU 的触发下, 从所述存储器中重新载入更新后的 FPGA 配置文件, 并 进行配置。
    9: 如权利要求 8 所述的装置, 其特征在于, 所述 CPU, 具体用于向所述第一数据通路输入低电平信号, 将 FPGA 与存储器之间的第 一数据通路断开, 并同时向所述第二数据通路输入高电平信号, 将 CPU 与存储器之间的第 二数据通路连通。
    10: 如权利要求 9 所述的装置, 其特征在于, 所述 CPU, 具体用于拉低所述 FPGA 的配置管脚 PROG_B 并持续设定时长后释放, 触发所 述 FPGA 重新从所述存储器中载入更新后的 FPGA 配置文件。
    11: 如权利要求 8 所述的装置, 其特征在于, 所述 CPU, 还用于确定 FPGA 重新载入更新后的 FPGA 配置文件之后, 进行配置成功检测。
    12: 如权利要求 11 所述的装置, 其特征在于, 所述 CPU, 具体用于在检测到所述 FPGA 的配置管脚 DONE 重新拉高时, 确定 FPGA 重新载 入更新后的 FPGA 配置文件成功。
    13: 如权利要求 8 ~ 12 任一权利要求所述的装置, 其特征在于, 所述存储器的存储空 间包括第一存储区、 第二存储区和第三存储区, 其中, 第一存储区存储本次更新后的 FPGA 配置文件, 第二存储区存储本次更新前的 FPGA 配置文件, 第三存储区存储初始 FPGA 配置文 件; 以及 所述 CPU, 还用于在确定 FPGA 重新载入第一存储区存储的 FPGA 配置文件, 进行配置成 功时, 比较第一存储区存储的本次更新后的 FPGA 配置文件与第二存储区存储的本次更新 前的 FPGA 配置文件是否一致 ; 以及在比较结果不一致时, 用第一存储区存储的本次更新后 的 FPGA 配置文件覆盖第二存储区存储的本次更新前的 FPGA 配置文件。
    14: 如权利要求 8 所述的装置, 其特征在于, 所述 CPU, 还用于在确定 FPGA 重新载入第一存储区存储的本次更新后的 FPGA 配置文 件, 进行配置未成功时, 用第二存储区存储的本次更新前的 FPGA 配置文件覆盖第一存储区 存储的本次更新后的 FPGA 配置文件 ; 并触发所述 FPGA 从所述第一存储区中重新载入本次 更新前的 FPGA 配置文件, 并进行配置 ; 以及在确定 FPGA 从所述第一存储区中重新载入本次 用第三存储区存储的初始 FPGA 配置文件覆 更新前的 FPGA 配置文件, 进行配置仍未成功时, 盖第一存储区存储的本次更新前的 FPGA 配置文件 ; 并触发所述 FPGA 从所述第一存储区中 3 重新载入初始 FPGA 配置文件, 并进行配置。

    说明书


    一种 FPGA 配置文件在线升级方法及装置

        【技术领域】
         本发明涉及电子电路设计技术领域, 尤其涉及一种 FPGA 配置文件在线升级方法及装置。 背景技术 现场可编程门阵列 (FPGA, Field-Programmable Gate Array) 是在可编程阵列逻 辑 (PAL, Programming array logic)、 通用阵列逻辑 (GAL, generic array logic)、 复杂可 编程逻辑器件 (CPLD, Complex Programmable Logic Device) 的基础上进一步发展的产物。 其允许涉及人员使用硬件描述语言 (Verilog 或者 VHDL) 完成电路设计, 通过对应综合工具 的编译生成配置文件, 当 FPGA 载入配置文件后, 即可使得 FPGA 实现设计需要的逻辑功能。
         FPGA 载入配置文件时, 可以使用联合测试行动小组 (JTAG, Joint Test Action Group) 下载线缆与其 JTAG 接口连接, 通过下载线缆将配置文件载入 FPGA, 但是, 在芯片下 电后通过配置文件形成的逻辑功能无法保存, 所以, FPGA 在使用前均有一个配置的过程, 使 用 FPGA 的电子设备在上电后, 会首先进行配置文件的载入。
         现有技术中, FPGA 载入配置文件分为主动配置方式和被动配置方式。主动配 置方式即为 FPGA 主动读取存储器中的配置文件, 其中, 存储器可以为可编程只读存储器 (PROM), 高速同步串行口闪存 (SPI-flash), 非易失闪存 (Nor-flash) 等, 按照存储器与 FPGA 之间的接口采用的协议, 主动配置方式可以包括以下四种工作模式 : 图 1a 为主动串行 配置模式, 图 1b 为主动 SPI 配置模式, 图 1c 为主动 BPI 配置模式, 图 1d 为主动 SelectMAP 模式 ; 被动配置方法即为外部的控制器件, 例如中央处理器 (CPU), 微处理器 (MCU) 以及模 拟配置时序的 CPLD 等, 通过控制 FPGA 的配置管脚, 以满足 FPGA 时序的方式进行配置, 按照 存储器与 FPGA 之间采用的接口协议, 被动配置方式可以包括以下四种工作模式 : 图 2a 为被 动串行模式, 图 2b 为被动 JTAG 模式, 图 2c 为被动 SelectMAP 模式。
         当使用 FPGA 的电子设备做好之后, 其配置文件就固定下来了, 通过烧片机烧片的 方式录入存储器芯片中, 在板卡制版的时候焊接带有配置文件的存储芯片, 这样, 如果需要 改变或者增加 FPGA 的逻辑功能, 就需要更改 FPGA 的配置文件, 如果在电路设计上未考虑 FPGA 配置文件的在线升级, 只能将存储芯片从板卡上取下, 重新烧写后焊接上。
         为了解决上述问题, 现有技术中, 主要通过以下两种方案进行 FPGA 配置文件的在 线升级 : 1、 增加一块 CPLD( 复杂可编程逻辑器件 ), 专门用作 FPGA 的升级。 FPGA 配置在被动 配置方式之下, 其配置管脚和 CPLD 相连, 同时 CPLD 和存储配置文件的存储芯片相连。CPLD 的逻辑功能固定, 专门用作配置 FPGA。在上电的时候由 CPLD 读取存储芯片中的配置文件, 再写入 FPGA 完成配置。当需要进行 FPGA 升级的时候, 通过 CPU 将新的配置文件通过写入 CPLD 这一中间器件写入存储芯片覆盖原来的配置文件。在重启 FPGA 整个配置流程或系统 断电重启后, CPLD 从存储芯片中读取到的就是更新后的配置文件了。这样就完成了配置 的升级 ; 2、 直接通过 CPU 的 GPIO( 通用输入输出 ) 管脚使用软件模拟 FPGA 的下载时序, 对 FPGA 进行配置。配置文件可放在 CPU 下挂的存储芯片中, 或者与 CPU 运行的主程序合为一
         体, 在 CPU 程序运行加载后将配置文件部分写入 FPGA。如果需要更新 FPGA 配置文件, 可以 通过更新存储芯片中配置文件的方式进行, 或跟随 CPU 主程序的更新一起进行升级。
         上述两种解决方案中, 存在以下问题 : 上述第一种方案中, 需要增加专门的 CPLD 器件, 且 CPLD 需要模拟和 CPU 和存储器间的接口时序, 以及配置 FPGA 的时序, 占用了 CPLD 较多的管脚, 耗费逻辑资源 ; 上述第二种方案中, 需要占用资源紧张的 CPU 较多的处理资 源, 而且, 由于这种配置方式需要在 CPU 自身启动配置完成, 软件开始执行以后才能通过 CPU 的 GPIO 模拟时序对 FPGA 进行下载, 在这之前 FPGA 处于未配置状态, 其逻辑功能无法实 现, 而在很多情况下, 需要 FPGA 一上电即可用, 因此, 不是所有使用 FPGA 的场合都适用这种 方式。 发明内容
         本发明提供一种 FPGA 配置文件在线升级的方法及装置, 用以在不增加额外的逻 辑器件的前提下, 完成 FPGA 配置文件的在线升级, 并实现 FPGA 上电即可用的目的。
         本发明实施例提供一种 FPGA 配置文件在线升级的方法, 包括 :
         在进行现场可编程门阵列 FPGA 配置文件升级时, 中央处理器 CPU 控制总线切换开 关将 FPGA 与存储器之间的第一数据通路断开、 将 CPU 与存储器之间的第二数据通路连通 ; 所述 CPU 更新所述存储器中存储的 FPGA 配置文件 ; 并
         在完成 FPGA 配置文件的更新之后, 所述 CPU 控制所述总线切换开关将所述第一数 据通路连通、 将所述第二数据通路断开 ; 以及
         所述 CPU 触发所述 FPGA 从所述存储器中重新载入更新后的 FPGA 配置文件, 并对 所述 FPGA 进行更新。
         本发明实施例提供一种 FPGA 配置文件在线升级的装置, 包括 :
         存储器, 用于存储现场可编程门阵列 FPGA 配置文件 ;
         中央处理器 CPU, 用于在进行 FPGA 配置文件升级时, 控制总线切换开关将 FPGA 与 存储器之间的第一数据通路断开、 将 CPU 与存储器之间的第二数据通路连通, 并更新所述 存储器中的 FPGA 配置文件 ; 以及在完成 FPGA 配置文件的更新之后, 控制所述总线切换开关 将所述第一数据通路连通、 将所述第二数据通路断开 ; 并触发所述 FPGA 重新从所述存储器 中载入更新后的 FPGA 配置文件, 并进行配置。
         总线切换开关, 用于在所述 CPU 的控制下, 分别连通或者断开所述第一数据通路 和所述第二数据通路 ;
         FPGA, 用于在所述 CPU 的触发下, 从所述存储器中重新载入更新后的 FPGA 配置文 件, 并进行配置。
         本发明实施例提供的 FPGA 配置文件在线升级的方法及装置, 当需要进行 FPGA 配 置文件升级时, CPU 控制总线切换开关将 FPGA 与存储器之间的第一数据通路断开、 将 CPU 与 存储器之间的第二数据通路连通, 使得 CPU 能够更新存储器中存储的 FPGA 配置文件, 并在 完成 FPGA 配置文件的更新之后, CPU 触发 FPGA 重新加载更新后的 FPGA 配置文件, 以完成 FPGA 配置文件的升级, 采用本发明实施例提供的 FPGA 配置文件在线升级的方法, 无需增加 额外的逻辑器件, 且在升级完成后, FPGA 上电后即可从存储器读取配置文件进行配置, 由于 无需通过 CPU 的 GPIO 模拟 FPGA 的下载时序, 从而对 FPGA 的配置无需在 CPU 自身启动配置
         完成后再进行, 实现了 FPGA 上电即可用的目的。
         本发明的其它特征和优点将在随后的说明书中阐述, 并且, 部分地从说明书中变 得显而易见, 或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明 书、 权利要求书、 以及附图中所特别指出的结构来实现和获得。 附图说明
         图 1a 为现有技术中, 主动串行配置模式下的主动配置方式示意图 ;
         图 1b 为现有技术中, 主动 SPI 配置模式下的主动配置方式示意图 ;
         图 1c 为现有技术中, 主动 BPI 配置模式下的主动配置方式示意图 ;
         图 1d 为现有技术中, 主动 SelectMAP 模式下的主动配置方式示意图 ;
         图 2a 为现有技术中, 被动串行模式下的被动配置方式示意图 ;
         图 2b 为现有技术中, 被动 JTAG 模式下的被动配置方式示意图 ;
         图 2c 为现有技术中, 被动 SelectMAP 模式下的被动配置方式示意图 ;
         图 3 为本发明实施例中, 总线切换开关的结构示意图 ;
         图 4 为本发明实施例中, FPGA 配置文件在线升级的方法的实施流程示意图 ; 图 5 为本发明实施例中, 使用 SPI-Flash 主动配置方式下的电路结构示意图 ;
         图 6 为本发明实施例中, 使用 SPI-Flash 主动配置方式下, FPGA 配置文件在线升 级方法的实施流程示意图 ;
         图 7 为本发明实施例中, FPGA 配置文件在线升级装置的结构示意图。
         具体实施方式
         为了在不增加额外的逻辑器件的前提下, 完成 FPGA 配置文件的在线升级, 并实现 FPGA 上电即可用的目的, 本发明实施例提供了一种 FPGA 文件在线升级的方法及装置。
         采用本发明实施例提供 FPGA 文件在线升级的方法及装置, 使得 FPGA 可以在正常 模式与升级模式之间进行切换。为了实现上述目的, 本发明实施例中, 利用 FPGA 的主动配 置方式, 通过总线切换开关进行数据通路的选通。如图 3 所示, 为总线切换开关的结构示意 图, 图 3 中以 3384 总线切换开关的结构为例进行说明。3384 总线切换开关一共有 10 路数 据通路, 通过两组 OE 使能键进行控制, 1OE# 有效时 ( 即为低电平时 ), 则对应的 1A, 1B 侧数 据通路连通, 即 1A1 和 1B1 可认为物理上连通, 1A2 与 1B2 连通 ...1A5 与 1B5 连通。而在 1OE# 无效时, 中间连通断开。同理 2OE# 可控制 2A1 与 2B1, 2A2 与 2B2... 等的通断情况。
         基于此, 本发明实施例中, FPGA 的配置管脚通过总线切换开关的 1OE# 与存储器相 连, CPU 通过总线切换开关的 2OE# 与存储器相连, 并通过 CPU 向总线切换开关输入使能信 号, 控制 1OE# 或者 2OE# 有效, 使得 FPGA 能够在正常模式与升级模式之间进行切换, 即当 1OE# 有效且 2oe# 无效时, FPGA 处于正常模式下 ; 当 1OE# 无效且 2oe# 有效时, FPGA 处于升 级模式下。正常模式下, 当上电时, FPGA 从存储器中读取 FPGA 配置文件完成 FPGA 的配置。 当需要进行 FPGA 配置文件升级时, 总线切换开关将 FPGA 与存储器之间的数据通路断开, 即 使得 1OE# 无效, 同时, 将 CPU 与存储器之间的数据通路连通, 即使得 2OE# 有效, 这样, 便建 立了 CPU 与存储器之间的连接, 使得 CPU 可以对存储器中存储的 FPGA 文件进行更新操作, 即使得 CPU 能够将更新后的 FPGA 配置文件写入到存储器中, CPU 在完成 FPGA 配置文件的更新操作之后, 控制总线切换开关将 FPGA 与存储器之间的数据通路连通, 即使得 1OE# 有效, 同时, 将 CPU 与存储器之间的数据通路断开, 即使得 2OE# 无效, 并触发 FPGA 从存储器中重 新载入更新后的 FPGA 配置文件, 完成了 FPGA 配置文件的在线升级。
         以下结合说明书附图对本发明的优选实施例进行说明, 应当理解, 此处所描述的 优选实施例仅用于说明和解释本发明, 并不用于限定本发明, 并且在不冲突的情况下, 本发 明中的实施例可以相互组合使用或者进行任意变型。
         如图 4 所示, 为本发明实施例提供的 FPGA 配置文件在线升级的方法, 包括以下步 骤:
         S401、 在 FPGA 配置文件升级时, CPU 控制总线切换开关将 FPGA 与存储器之间的第 一数据通路断开、 将 CPU 与存储器之间的第二数据通路连通 ;
         S402、 CPU 更新所述存储器中存储的 FPGA 配置文件 ;
         S403、 CPU 在完成 FPGA 配置文件的更新之后, 控制总线切换开关将第一数据通路 连通、 将所述第二数据通路断开 ;
         S404、 CPU 触发 FPGA 从存储器中重新载入更新后的 FPGA 配置文件, 并对该 FPGA 进 行配置。 具体实施时, 存储器可以为可编程只读存储器 (PROM), 高速同步串行口闪存 (SPI-flash), 非易失闪存 (Nor-flash) 等, 为了便于描述, 本发明实施例中, 以存储器为 SPI-flash 为例进行说明。
         如图 5 所示, 为使用 SPI-Flash 主动配置方式下的电路示意图, SPI-flash 的 SPI 接口的数据线、 时钟线及控制线分别与总线切换开关一边的两组数据通路相连接, 例如, SPI-flash 的数据输入线 datain 同时与 1A1 和 2A1 连接, 而接口对应的 FPGA 端的 MOSI 数 据线、 CPU 的 MOSI 数据线分别与 1B1 和 2B1 连接, SPI-flash 的数据输出线 dataout 同时 与 1A2 和 2A2 连接, 而接口对应端的 FPGA 的 DIN 数据线、 CPU 的 MISO 数据线分别与 1B2 和 2B2 连接, SPI-flash 的时钟线同时与 1A4 和 2A4 连接, 而接口对应端的 FPGA 的 clk 时钟线、 CPU 的 clk 时钟线分别与 1B4 和 2B4 连接 ; CPU 通过 GPIO 配置管脚引出的控制线向总线切 换开关输入电平信号, 来控制总线切换开关的 1OE# 有效且 2OE# 无效, 或者控制 1OE# 无效 且 2OE# 有效。
         在正常模式下, 上电后, 从 CPU 的 GPIO 出来的控制线默认上拉, 即 CPU 向 1OE# 输 入高电平信号, 向 2OE# 输入反向 ( 低电平 ) 信号, 使得 1OE# 有效, 2OE# 无效, 这时, 使得控 制总线切换开关将 SPI-flash 与 FPGA 之间的数据通路连通, 将 CPU 和 SPI-flash 之间的数 据通路断开 ; 当需要进行 FPGA 配置文件升级时, 通过 CPU 的 GPIO 对总线切换开关的势能 管脚进行控制, 向 1OE# 输入低电平信号, 使得 1OE# 无效, 从而将 FPGA 与 SPI-flash 之间的 1OE# 断开, 并同时向 2OE# 输入高电平信号, 使得 2OE# 有效, 从而将 CPU 与 SPI-flash 之间 的第二数据通路连通。这样, CPU 与 SPI-flash 之间建立了连接, 此时, 可以通过 CPU 的 SPI 接口对 SPI-flash 进行写入操作, 更新 SPI-flash 存储的 FPGA 配置文件。其中, CPU 的 SPI 接口可以是 CPU 自带的, 如果 CPU 无 SPI 接口, 可以通过 GPIO 进行模拟。在完成 FPGA 配置 文件的更新之后, CPU 对 FPGA 的配置管脚 PROG_B 进行操作, 拉低 FPGA 的配置管脚 PROG_B 并持续设定时长后释放, 即可触发 FPGA 重新从存储器中载入更新后的 FPGA 配置文件, 进行 FPGA 配置文件升级后的配置。
         具体实施中, CPU 在触发 FPGA 重新载入更新后的配置文件, 并进行配置之后, 还需 要确定 FPGA 配置是否成功。具体的, CPU 可以通过检测 FPGA 的配置管脚 DONE, 当检测到 DONE 重新拉高时, 则确定 FPGA 重新载入更新后的 FPGA 配置文件之后, 进行配置成功, 否则, 确定 FPGA 重新载入更新后的 FPGA 配置文件之后, 进行配置失败。
         本发明实施例中, FPFA 配置文件的升级过程对于 FPGA 来说是不可见的, 在 FPGA 配置文件升级的过程中, 对于 FPGA 来说, 与主动 SPI 模式下的配置过程无异, 在上电后主动 的从对应的配置接口去载入 FPGA 配置文件, 完成对 FPGA 的配置, 这样, 使得 FPGA 上电即可 用。
         具体实施中, 由于可能出现更新后的 FPGA 无法正常配置的情况出现, 而 FPGA 的未 成功配置在某些情况下会影响到整个设备的正常工作。
         较佳地, 本发明实施例中, 为了避免上述情况的出现, 增强 FPGA 配置文件升级的 可靠性, 可以将存储器的存储空间划分为连续的三段, 分别为第一存储区、 第二存储区和第 三存储区, 其中, 第一存储区存储本次更新后的 FPGA 配置文件, 第二存储区存储本次更新 前的 FPGA 配置文件, 第三存储区存储初始 FPGA 配置文件 ; 即第一存储区为正常读取配置空 间, 第二存储区为升级配置存储区, 第三存储区为保留区, 其中, 第三存储区原则上不允许 进行写操作。初始时, 三个存储区都写入初始 FPGA 配置文件。在后续进行 FPGA 配置文件 在线升级时, CPU 将更新后的 FPGA 配置文件写入第一存储区中, 并覆盖第一存储区中原来 的 FPGA 配置文件, CPU 在写入更新后的 FPGA 配置文件之后, 通过重新上电或者拉低 FPGA 的 配置管脚 PROG_B 的方式触发 FPGA 重新载入更新后的 FPGA 配置文件, FPGA 默认从第一存 储区载入更新后的 FPGA 配置文件。CPU 通过检测 FPGA 的配置管脚 DONE 的状态变化, 判断 FPGA 进行配置是否成功。若 DONE 重新拉高, 则确定 FPGA 载入更新后的 FPGA 配置文件, 进 行配置成功, 否则, 确定 FPGA 进行配置未成功。
         较佳地, 当 CPU 在确定 FPGA 重新载入第一存储区存储的 FPGA 配置文件, 进行配置 成功时, 比较第一存储区存储的本次更新后的 FPGA 配置文件与第二存储区存储的本次更 新前的 FPGA 配置文件是否一致 ; 以及
         在比较结果不一致时, 用第一存储区存储的本次更新后的 FPGA 配置文件覆盖第 二存储区存储的本次更新前的 FPGA 配置文件 ; 在比较结果一致时, 则不进行操作。
         较佳地, 当 CPU 在确定 FPGA 重新载入第一存储区存储的本次更新后的 FPGA 配置 文件, 进行配置未成功时, 用第二存储区存储的本次更新前的 FPGA 配置文件覆盖第一存储 区存储的本次更新后的 FPGA 配置文件 ; 并触发 FPGA 从第一存储区中重新载入本次更新前 的 FPGA 配置文件, 并进行配置。特别地, 当 CPU 在确定 FPGA 从第一存储区中重新载入本 次更新前的 FPGA 配置文件, 进行配置仍未成功时, 即在用第二存储区存储的本次更新前的 FPGA 配置文件覆盖第一存储区存储的本次更新后的 FPGA 配置文件之后, 对 FPGA 进行配置 仍未成功时, 用第三存储区存储的初始 FPGA 配置文件覆盖第一存储区存储的本次更新前 的 FPGA 配置文件 ; 并触发 FPGA 从第一存储区中重新载入初始 FPGA 配置文件, 并进行配置。
         具体实施过程中, 对于存储区之间的读写均是在总线切换开关在 CPU 的控制下将 存储器与 CPU 之间的数据通路连通的情况下完成的, 在触发 FPGA 重现载入 FPGA 配置文件 进行配置之前, 总线切换开关在 CPU 的控制下将存储器与 FPGA 之间的数据通路连通, 对于 FPGA 来说, 均是通过主动配置方式, 从第一存储区载入 FPGA 配置文件, 升级过程对其不可见。通常情况下, 不会出现载入更新后的 FPGA 配置文件, 进行配置失败的情况。但是如果 在进行 FPGA 配置文件升级的过程中, 恰好出现设备断电等意外情况时, 可以采取用第二存 储区存储的更新前的 FPGA 配置文件覆盖第一存储区的存储的更新后的 FPGA 配置文件。特 别地, 考虑极端情况, 如果在用第二存储区存储的更新前的 FPGA 配置文件覆盖第一存储区 的存储的更新后的 FPGA 配置文件的过程中, 也出现了意外情况, 此时, 可以用第三存储区 存储的初始 FPGA 配置文件覆盖第一存储区存储的本次更新前的 FPGA 配置文件, 从而, 保证 了 FPGA 配置文件升级过程的可靠性。
         为了便于理解本发明, 以下以使用 SPI-Flash 主动配置方式下, FPGA 配置文件在 线升级方法为例, 进行说明。如图 6 所示, 为本发明实施例中, 使用 SPI-Flash 主动配置方 式下, FPGA 配置文件在线升级方法的实施流程示意图, 包括以下步骤 :
         S601、 CPU 控制总线切换开关将 FPGA 与存储器之间的数据通路断开、 将 CPU 与存 储器之间的数据通路连通 ;
         具体的, CPU 向 FPGA 与存储器之间的数据通路输入低电平信号, 将 FPGA 与存储器 之间的数据通路断开, 并同时向 CPU 与存储器之间的数据通路输入高电平信号, 将 CPU 与存 储器之间的第二数据通路连通。 S602、 CPU 向存储器的第一存储区写入更新后的 FPGA 配置文件 ;
         S603、 CPU 控制总线切换开关将 FPGA 与存储器之间的数据通路连通、 将 CPU 与存 储器之间的数据通路断开 ;
         S604、 CPU 拉低 FPGA 的配置管脚 PROG_B, 并持续设定时长后释放 ;
         具体实施时, 也可以通过对 FPGA 重启上电的方式, 触发 FPGA 从第一存储区中重新 载入更新后的 FPGA 配置文件, 并进行配置。
         S605、 FPGA 从第一存储区中重新载入更新后的 FPGA 配置文件, 并进行配置 ;
         S606、 CPU 判断 FPGA 配置是否成功, 如果是, 执行步骤 S607, 否则, 执行步骤 S609 ;
         具体的, CPU 通过检测 FPGA 的配置管脚 DONE, 若检测到其重新拉高时, 则确定 FPGA 配置成功, 否则, 确定 FPGA 配置失败。
         S607、 比较第一存储区的 FPGA 配置文件与第二存储区的 FPGA 配置文件是否一致, 如果是, 执行步骤 S616, 否则执行步骤 S608 ;
         S608、 用第一存储区存储的本次更新后的 FPGA 配置文件覆盖第二存储区存储的 本次更新前的 FPGA 配置文件, 并执行步骤 S616 ;
         S609、 用第二存储区的存储的本次更新前的 FPGA 配置文件覆盖第一存储区存储 的本次更新后的 FPGA 配置文件 ;
         S610、 CPU 拉低 FPGA 的配置管脚 PROG_B, 并持续设定时长后释放 ;
         S611、 FPGA 重新从第一存储区载入本次更新前的 FPGA 配置文件, 并进行配置 ;
         S612、 CPU 判断 FPGA 配置是否成功, 如果是, 执行步骤 S616, 否则, 执行步骤 S613 ;
         S613、 用第三存储区存储的初始 FPGA 配置文件覆盖第一存储区存储的本次更新 前的 FPGA 配置文件 ;
         S614、 CPU 拉低 FPGA 的配置管脚 PROG_B, 并持续设定时长后释放 ;
         S615、 FPGA 重新从第一存储区载入初始 FPGA 配置文件, 并进行配置 ;
         S616、 流程结束。
         基于同一发明构思, 本发明实施例中还提供了一种 FPGA 配置文件在线升级的装 置, 由于该装置解决问题的原理与上述 FPGA 配置文件在线升级的方法相似, 因此该装置的 实施可以参见上述 FPGA 配置文件在线升级的方法的实施, 重复之处不再赘述。
         如图 7 所示, 为本发明实施例提供的 FPGA 配置文件在线升级装置的结构示意图, 包括 :
         存储器 701, 用于存储现场可编程门阵列 FPGA 配置文件 ;
         CPU 702, 用于在进行 FPGA 配置文件升级时, 控制总线切换开关将 FPGA704 与存储 器 701 之间的第一数据通路断开、 将 CPU 702 与存储器 701 之间的第二数据通路连通, 并更 新存储器 701 中的 FPGA 配置文件 ; 以及在完成 FPGA 配置文件的更新之后, 控制总线切换开 关 703 将第一数据通路连通、 将第二数据通路断开 ; 并触发 FPGA 704 重新从存储器 701 中 载入更新后的 FPGA 配置文件, 并进行配置。
         总线切换开关 703, 用于在 CPU 702 的控制下, 分别连通或者断开第一数据通路和 第二数据通路 ;
         FPGA 704, 用于在 CPU 702 的触发下, 从所述存储器中重新载入更新后的 FPGA 配 置文件, 并进行配置。 具体实施中, CPU 702, 可以用于向第一数据通路输入低电平信号, 将 FPGA704 与 存储器之间的第一数据通路断开, 并同时向第二数据通路输入高电平信号, 将 CPU702 与存 储器之间的第二数据通路连通。
         具体实施中, CPU702, 可以用于拉低 FPGA 704 的配置管脚 PROG_B 并持续设定时长 后释放, 触发 FPGA 704 重新从存储器 701 中载入更新后的 FPGA 配置文件。
         具体实施中, CPU702, 还可以用于确定 FPGA704 重新载入更新后的 FPGA 配置文件 之后, 进行配置成功。具体的, CPU 702, 具体用于在检测到 FPGA 704 的配置管脚 DONE 重新 拉高时, 确定 FPGA 704 重新载入更新后的 FPGA 配置文件成功。
         具体实施中, 存储器 701 的存储空间包括第一存储区、 第二存储区和第三存储区, 其中, 第一存储区存储本次更新后的 FPGA 配置文件, 第二存储区存储本次更新前的 FPGA 配 置文件, 第三存储区存储初始 FPGA 配置文件 ; 以及
         CPU 702, 还可以用于在确定 FPGA704 重新载入第一存储区存储的 FPGA 配置文件, 进行配置成功时, 比较第一存储区存储的本次更新后的 FPGA 配置文件与第二存储区存储 的本次更新前的 FPGA 配置文件是否一致 ; 以及在比较结果不一致时, 用第一存储区存储的 本次更新后的 FPGA 配置文件覆盖第二存储区存储的本次更新前的 FPGA 配置文件, 在比较 结果一致时, 不进行操作。
         具体实施中, CPU 702, 还可以用于在确定 FPGA 704 重新载入第一存储区存储的 本次更新后的 FPGA 配置文件, 进行配置未成功时, 用第二存储区存储的本次更新前的 FPGA 配置文件覆盖第一存储区存储的本次更新后的 FPGA 配置文件 ; 并触发 FPGA 704 从所述第 一存储区中重新载入本次更新前的 FPGA 配置文件, 并进行配置。
         具体实施中, CPU 702, 还用于在确定 FPGA 704 从第一存储区中重新载入本次更 新前的 FPGA 配置文件, 进行配置未成功时, 用第三存储区存储的初始 FPGA 配置文件覆盖第 一存储区存储的本次更新前的 FPGA 配置文件 ; 并触发 FPGA704 从第一存储区中重新载入初 始 FPGA 配置文件, 并进行配置。
         本发明实施例提供的 FPGA 配置文件在线升级的方法及装置, 基于 FPGA 的主动配 置模式, 在默认情况下, 使得 FPGA 与存储有 FPGA 配置文件的存储器之间的数据通路连通, 上电时 FPGA 主动载入 FPGA 配置文件, 在需要进行配置文件升级时, 通过总线切换开关将 CPU 与存储器之间的数据通路连通, 并断开 FPGA 与存储有 FPGA 配置文件的存储器之间的数 据通路, 使得 CPU 能够将更新的 FPGA 配置文件写入到存储器中。
         本发明实施例提供的 FPGA 配置文件在线升级的方法及装置, 当需要进行 FPGA 配 置文件升级时, CPU 控制总线切换开关将 FPGA 与存储器之间的第一数据通路断开、 将 CPU 与 存储器之间的第二数据通路连通, 使得 CPU 能够更新存储器中存储的 FPGA 配置文件, 并在 完成 FPGA 配置文件的更新之后, CPU 触发 FPGA 重新加载更新后的 FPGA 配置文件, 以完成 FPGA 配置文件的升级, 采用本发明实施例提供的 FPGA 配置文件在线升级的方法, 无需增加 额外的逻辑器件, 且在升级完成后, FPGA 上电后即可从存储器读取配置文件进行配置, 由于 无需通过 CPU 的 GPIO 模拟 FPGA 的下载时序, 从而对 FPGA 的配置无需在 CPU 自身启动配置 完成后再进行, 实现了 FPGA 上电即可用的目的。
         显然, 本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精 神和范围。这样, 倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围 之内, 则本发明也意图包含这些改动和变型在内。

    关 键  词:
    一种 FPGA 配置文件 在线 升级 方法 装置
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:一种FPGA配置文件在线升级方法及装置.pdf
    链接地址:https://www.zhuanlichaxun.net/p-5816812.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1