一种基于fpga的远程加载系统及其下载配置方法
技术领域
1.本发明属于通信领域,具体涉及一种基于fpga的远程加载系统及其下载配置方法。
背景技术:2.当前fpga的配置方式可分为三种:主动配置、被动配置和jtag配置。一般的,大家都习惯使用jtag去更新fpga配置,因为jtag配置非常快和方便,各大厂商的集成设计工具也都提供了相应的jtag配置通道。但jtag配置毕竟只是通用于调试阶段的配置方法,在fpga工程验证结束后,应用到相应的产品时却并不适合,因为很多产品在发布时因jtag接口的笨重性和产品封装的要求等原因,导致产品是不提供jtag接口的,故远程加载方案是这些产品的必然选择。
3.抛弃jtag配置模式,用户还可以选择主动配置和被动配置两种模式,这两种配置实现都离不开片外的存储器,主动模式是指fpga主动向片外的存储器读取配置;被动配置一般通过协处理器把片外存储器里的配置数据写入到fpga从而实现fpga配置。在这两种配置方法中,被动配置需要协处理器的参与,在硬件架构上要更显复杂且成本更高,而主动配置并不需要对硬件架构做更多的改变,显得实现简单和成本较低。
4.发明目的
5.本发明的目的在于解决现有技术中产品笨重、架构复杂、成本高昂的问题,提供一种基于fpga的远程加载系统及其配置方法,该系统下载配置完全脱离了jtag接口,能够简化产品上线时笨重的接口预留,在不改变硬件结构复杂性的基础上实现fpga芯片配置的远程加载。
技术实现要素:6.根据本发明的一个方面,提供了一种基于fpga的远程加载系统,包括pc、fpga、ddr和flash,其中所述fpga分别与pc、ddr、flash相互通信交互数据;pc与fpga的相互通信实现配置文件由pc下载到fpga,通信方式为以太网、pcie、usb、光纤的一种;fpga与ddr的相互通信实现配置文件的数据缓存;fpga和flash的交互通信包括两个过程:(1)fpga把配置数据固化到flash;(2)fpga通过icap原语实现对flash中配置数据的读取,从而实现fpga的重配置;
7.所述fpga包括udp_ctrl模块、ddr_ctrl模块、flash_ctrl模块和icap_ctrl模块;所述udp_ctrl模块负责与pc端上位机通信,采用udp协议通信并根据数据报定义解析出fpga配置数据和相关配置命令;所述ddr_ctrl模块负责与ddr通信,该ddr_ctrl模块控制ddr的读写;所述flash_ctrl模块负责与flash的通信,控制flash的擦除、下载和校验;所述icap_ctrl模块负责icap原语的控制,通过状态机对icap发送iprog指令序列,当icap原语接收到所述iprog指令序列后自动加载指定地址的配置数据,从而实现fpga的重配置。
8.优选地,所述ddr_ctrl模块采用xilinx的ddr控制器mig核,所述控制ddr的读写即
控制mig核的读写。
9.根据本发明的另一个方面,提供了一种上述fpga的远程加载系统的配置方法,包括以下步骤:
10.步骤1、将工程生成的比特流文件封装成.bin文件,该.bin文件可被固化到flash中;所述封装使用vivado提供的封装途径或根据xilinx提供的脚本文件自写一个脚本程序;
11.步骤2、将所述.bin文件数据通过以太网udp协议写入到fpga,再经过fpga写入到ddr,在ddr进行数据缓存;
12.步骤3、所述fpga把ddr中的配置数据读出并写入到flash中,在写入flash之前,须进行flash擦除操作;
13.步骤4、所述fpga通过icap原语主动读取所述flash中的配置数据完成对fpga的重配置;所述icap原语的使用选择通过参考数据手册来获得。
附图说明
14.图1为本发明所述基于fpga的远程加载系统的框架图。
具体实施方式
15.下面结合附图详细阐述本发明。需要指出的是,具体实施方式仅用于示例性的描述本发明,不应被视作对本发明的保护范围的限定,本领域技术人员应当明白,不脱离本发明主旨的变体和改动均落入本发明的保护范围。
16.图1为本发明所述基于fpga的远程加载系统的框架图。由图可知,本发明所述的基于fpga的远程加载系统,包括pc、fpga、ddr和flash,其中,fpga分别与pc、ddr、flash相互通信交互数据;各硬件数据交互可分为以下几个过程:
17.pc与fpga通信,主要实现配置文件由pc下载到fpga,通信方式可为以太网、pcie、usb、光纤等,本实施方式以以太网udp协议通信为例。
18.fpga与ddr通信,fpga与ddr通信主要是实现配置文件的数据缓存,fpga的配置文件经格式转换处理后一般都比较大,fpga本身由于ram的资源有限不适合做大数据量的缓存,故使用ddr做数据缓存。
19.fpga与flash通信,fpga和flash通信分为两个过程,其一为fpga把配置数据固化到flash,其二为fpga通过icap原语实现对flash中配置数据的读取,从而实现fpga的重配置。
20.所述fpga包括udp_ctrl模块、ddr_ctrl模块、flash_ctrl模块和icap_ctrl模块,四个模块分工明确使得fpga功能框架清晰,各模块功能具体如下:
21.(1)udp_ctrl模块
22.该模块完全负责与pc端上位机通信,模块功能内容主要是udp协议通信并根据数据报定义解析出fpga配置数据和相关配置命令。
23.(2)ddr_ctrl模块
24.该模块完全负责与ddr通信,模块功能内容为ddr的读写控制,该模块例化了xilinx的ddr控制器mig核,故逻辑内容其实是mig核的读写控制。
25.(3)flash_ctrl模块
26.该模块完全负责与flash的通信,模块功能内容为flash的擦除、下载和校验。
27.(4)icap_ctrl模块
28.该模块负责icap原语的控制,该模块通过状态机对icap发送iprog指令序列,icap原语接收到该序列后自动加载指定地址的配置数据,从而实现fpga的重配置。iprog指令序列内容详情可查看相关数据手册。
29.上述fpga的远程加载系统的下载配置方法,包括以下步骤:
30.步骤1、将工程生成的比特流文件封装成.bin文件,该.bin文件可被固化到flash中;所述封装使用vivado提供的封装途径或根据xilinx提供的脚本文件自写一个脚本程序;
31.步骤2、将所述.bin文件数据通过以太网udp协议写入到fpga,再经过fpga写入到ddr,在ddr进行数据缓存;
32.步骤3、所述fpga把ddr中的配置数据读出并写入到flash中,在写入flash之前,须进行flash擦除操作;
33.步骤4、所述fpga通过icap原语主动读取所述flash中的配置数据完成对fpga的重配置;所述icap原语的使用选择通过参考数据手册来获得。
34.综上所述,本发明的远程加载系统的下载配置完全脱离了jtag接口,能够简化产品上线时笨重的接口预留,不同于其他需要协处理器参与的方案,该远程加载系统结构简单,可以在不改变硬件结构复杂性的基础上实现fpga芯片配置的远程加载。本发明围绕flash和xilinxfpga内部的icap原语展开描述,主体思路是fpga的配置文件由pc下载到fpga,再经过ddr缓存,由fpga控制着写入到flash,最后通过icap原语实现fpga的在线重配置,从而完成fpga的远程加载过程。