远程传输加载多节点FPGA程序加载管理电路的制作方法

文档序号:17488500发布日期:2019-04-23 20:11阅读:327来源:国知局
远程传输加载多节点FPGA程序加载管理电路的制作方法

本发明涉及一种结合互联网虚拟技术领域与嵌入式平台管理领域,形成的一套完整的fpga程序加载与存储方案与加载与重载电路。



背景技术:

近年来,fpga这个强大的平台让多节点系统各个节点的硬件构成拥有了更广泛的通用性。尤其是随着ip核技术的推广,再加上一些功能强大的cpu核的出现,使得目前的许多系统的主要功能都可以由大容量的fpga实现,而无需再使用比较昂贵的高性能微处理器。对于节点系统,这将大大降低系统成本。对于由大容量fpga构成的多节点系统,系统的升级是一个费时费力的工作。此时,fpga的远程升级能力就显得尤为重要。对于包含arm、dsp、poerpc等高性能嵌入式微处理器的多节点系统,使用这些嵌入式微处理器,采用sei,cetmap对fpga进行加载并实现远程升级,无需增加过多的外部器件,是非常经济和高效的。但对于核心器件就是大容量fpga的系统,如果由fpga本身来接收升级数据并写入存储配置数据的非易失性存储器.一旦升级失败,将无法再次升级,从而限制了它在许多需要高可靠性要求或者维护人员不便于到达的场合的应用;而如果单纯为了实现系统的远程升级而加入价格昂贵的嵌入式微处理器,又会较大地增加系统成本和复杂性。

fpga位流加载技术是fpga设计和调试中必不可少的一部分。现有技术中fpga位流加载都是利用外部下载线或者器件进行下载,当前对fpga位流文件的下载方式多数为pc机在线线缆通过jtag(jointtestactiongroup联合测试行为组织,一种边界扫描技术)接口下载,用jtag接口对fpga外部存储器进行烧写,通过jtag线缆必须使用pc机,其不具有fpga本身远程下载和控制功能,这种方式给产品升级带来了不便。而在实际应用中经常会出现对fpga要进行远程下载的场景。

现场可编程门阵列fpga是以硬件描述语言(veriog或vhdl)所完成的电路设计,可以经过简单的综合与布局,烧录到fpga,完成一些基本的逻辑门电路(比如and、or、xor、not)或者更复杂一些的组合功能比如解码器或数学方程式。开源的应用容器引擎docker作为时下最流行的轻量级虚拟化技术,给业界带来一场颠覆性的技术革命,docker虚拟化技术具有秒级的启动速度、低性能损耗高、多系统支持、安全隔离、轻量级的技术特点,使之可以作为嵌入式平台管理技术的基础技术。现在fpga越来越多的成为云计算中的一个计算加速单元被使用,但是在互联网与嵌入式结合领域,却没有一套完整的fpga程序存储与加载方案。没有一套适用大规模fpga程序管理加载的低功耗低价格架构,导致许多嵌入式机箱被设计出来以后,只能适用专用的程序,无法实现综合化,也无法对规模进行扩展的问题;

通过动态配置不同的配置文件来实现不同的功能是软件无线电应用所必需的一项技术。过去,实现fpga配置的方法很多,但大都通过dsp或其它cpu读取存储器中的比特文件对fpga进行加载,其加载速率一般较低,占用的硬件空间也相对较大,不符合机载设备小型化、低功耗的总体发展思路,而且fpga配置文件一般通过专用仿真器烧写,在电磁环境相对恶劣的外场环境下,往往出现仿真器挂接失败,无法进行程序升级的情况。典型的动态配置方法是将fpga配置文件通过cpu的专用仿真器固化到通用flash中,模块上电后cpu通过并行总线读取存储于flash中的fpga配置数据,然后通过cpld模拟fpga加载时序(由cpld送加载启动信号、加载时钟、加载数据),将配置数据加载到fpga。该方法具有如下特点:优点:flash容量较大,可以存储多达几十个版本;缺点:加载速度慢,加载速度为秒级、加载所依赖的器件多,可靠性低。现有技术采用fpga+cpld+prom的方法是将fpga文件通过jtag固化到prom中,模块上电后由cpld给出加载版本和加载触发信号(将fpga的prog—b信号拉低)以及版本选择信号,fpga给出加载时序,自动从prom读取数据加载。由于xcf32p采用并行加载,且其数据直接从prom到fpga,因此其加载速度比较快。该方法具有如下特点:优点:加载速度快,加载速度为毫秒级,加载依赖的器件相对较少;缺点:加载版本有限,一个prom为4个版本。以上两种fpga动态配置方法均需要通过外部cpld或cpu来实现对fpga的动态控制,并且将fpga程序固化到存储器中需要专用的下载器才能完成。目前fpga的动态配置和加载方法存在的速率低,在电磁环境恶劣的情况下加栽不稳定的问题。

按照传统的fpga程序加载方法:

(1)需要利用器件厂商提供的加载环境(如xilinx的ise编程/烧录环境,altera的libero编程/烧录环境),采用器件厂商提供的编程器通过器件的jtag编程口对fpga进行程序升级。该方法加载优点:1加载电路有厂家提供并实现,电路稳定可靠;缺点:不能进行批量化的程序升级,服务人员在外长对fpga节点进行升级还需要打开产品盖板,通过jtag口进行升级,效率很低,并且还需要服务人员具备专业的嵌入式知识。

(2)将fpga镜像文件传输到fpga对应的flash中,fpga读取flash中的数据进行加载,该方法优点:相较于方法(1)提高了加载速度;缺点:1每个fpga需要配备一个flash存储器,增加成本。

(3)一次只能存储一个fpga镜像,每次切换程序都需要耗费大量的时间,不利于快速程序切换。



技术实现要素:

本发明的目的是针对现有的fpga节点管理所存在的不足之处,提供一种具有硬件设计简单、动态配置速度快、远程加载稳定可靠,通用强且轻量级的fpga程序存储、远程加载方法和实现该方法价格功耗都很低的fpga加载电路。

本发明的上述目的可以通过以下措施来达到,一种远程传输加载多节点fpga程序加载管理电路,包括:接入以太网的主控上位机,连接主控上位机的以太网交换机,嵌入式多媒体控制器emmc存储芯片,以及多个被加载的fpga,其特征在于:主控上位机通过以太网交换机连接多个可扩展处理平台zynq的ps节点,zynq的ps节点通过axi4总线连接zynq的pl节点,zynq的pl节点通过专用配置接口电路连接到待被加载的fpga节点构成远程加载电路;一个zynq的pl节点管理多个待被加载的fpga节点,fpga的存储和在主控上位机至zynqps节点之间的传输以开源的应用容器引擎docker镜像为基础,将fpga镜像封装到docker镜像当中;在zynqps端启动docker镜像命令,启动后的容器引擎docker获取docker启动参数,并将参数传递给引擎容器docker中的fpga镜像加载程序,该加载程序读取引擎容器docker中的fpga镜像文件,并通过启动参数来确定加载哪一片fpga,然后将fpga镜像通过axi4总线传输数据到zynqpl节点上,zynqpl节点收到fpga数据后,通过配置总线加载启动对应节点的fpga。

本发明相比于现有技术具有如下有益效果:

硬件设计简单。本发明主控上位机通过以太网交换机连接多个可扩展处理平台zynq的ps节点,zynq的ps节点通过axi4总线连接zynq的pl节点,zynq的pl节点通过专用配置接口电路连接到待被加载的fpga节点构成远程加载电路;通过采用docker虚拟化技术,大大简化了fpga镜像的存储与传输问题,也非常利于扩展,并使用低功耗低价格zynq芯片管理多个fpga节点的架构,实现fpga节点的程序加载与镜像存储管理。解决了互联网与嵌入式结合领域,缺失大规模fpga程序管理加载的低功耗低价格架构,只能适用专用的程序,无法实现综合化,也无法对规模进行扩展的问题;通过远程加载的方法,省去了通过xilinx仿真器直接连接板卡jtag接口进行程序加载而带来的操作麻烦。

动态配置速度快、远程加载稳定可靠。本发明采用一个zynq的pl节点管理多个待被加载的fpga节点,fpga的存储和在主控上位机至zynqps节点之间的传输以开源的应用容器引擎docker镜像为基础,将fpga镜像封装到docker镜像当中,动态配置速度快、远程加载稳定可靠,通用性强。

本发明结合互联网虚拟技术领域与嵌入式平台管理领域,并形成了一套完整的fpga程序加载与存储方案与电路;借用docker技术对fpga镜像实现了存储与传输,实现fpga程序的快速加载与重载。在zynqps端启动docker镜像命令,将参数传递给引擎容器docker中的fpga镜像加载程序,通过加载程序读取引擎容器docker中的fpga镜像文件,fpga镜像通过axi4总线传输数据到zynqpl节点上,zynqpl节点收到fpga数据后,通过配置总线加载启动对应节点的fpga。因为程序可以存放在x86电脑的硬盘或者zynq节点的emmc存储芯片上,而非fpga对应的flash芯片上,再结合docker-registry的管理,其存储空间可以无限扩展,简单管理。

附图说明

下面结合附图进一步说明本发明的技术方案,但本发明所保护的内容不局限于以下所述。

图1为本发明远程传输加载多节点fpga程序加载管理电路的硬件连接示意图。

图2为fpga镜像程序的存储分布示意图。

图3是图1可扩展处理平台zynq的pl与fpga之间的逻辑配置连接关系示意图。

具体实施方式

参阅图1。在以下描述的实施例中,一种远程传输加载多节点fpga程序加载管理电路,包括:接入以太网的主控上位机,连接主控上位机的以太网交换机,嵌入式多媒体控制器emmc存储芯片,以及多个被加载的fpga。其中,主控上位机可以是安装了ubuntu操作系统,并安装docker-registry服务软件的x86电脑。可扩展处理平台zynq的ps节点需要使用emmc存储芯片作为其文件系统的硬件基础和加载具有专用配置逻辑的驱动程序,并安装了peta嵌入式操作系统linux开发环境,安装docker服务程序,可扩展处理平台zynq的ps节点和zynq的可编程pl节点通过axi4总线相连,zynq的可编程pl节点加载专用配置程序。

主控上位机通过以太网交换机连接多个可扩展处理平台zynq的ps节点,zynq的ps节点通过axi4总线连接zynq的pl节点,zynq的pl节点通过专用配置接口电路连接到待被加载的fpga节点构成远程加载电路;一个zynq的pl节点管理多个待被加载的fpga节点,fpga的存储和在主控上位机至zynqps节点之间的传输以开源的应用容器引擎docker镜像为基础,将fpga镜像封装到docker镜像当中;在zynqps端启动docker镜像命令,启动后的容器引擎docker获取docker启动参数,并将参数传递给引擎容器docker中的fpga镜像加载程序,该加载程序读取引擎容器docker中的fpga镜像文件,并通过启动参数来确定加载哪一片fpga,然后将fpga镜像通过axi4总线传输数据到zynqpl节点上,zynqpl节点收到fpga数据后,通过配置总线加载启动对应节点的fpga。

参阅图2。a、fpga编程人员准备好待加载fpga镜像,在x86上位机桌面管理单元上,进行fpga镜像程序的存储分布,以文件的方式将待加载fpga镜像加入到一个基础镜像中,并被制作为一个新的docker镜像,该docker镜像中包含了基础镜像、fpga镜像、需要在zynq的ps端执行的fpga镜像加载可执行文件,将制作好的docker镜像放入运行在x86上位机桌面管理单元上的docker-registry进行集中保存;docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

b、zynq的ps节点可以在本地使用dockerpull命令,通过多路以太网从docker-registry拉取指定镜像,分别经docker引擎送入对应的本地系统,镜像会保存在安装了docker服务程序的emmc存储区中进行单独保存,在减少镜像网络传输这一环节后,可以缩短fpga的镜像加载时间;

c、当zynq的ps节点需要发起fpga程序加载动作时,直接在zynq的ps节点本地执行docker-run命令,dockerrun命令首先在指定的映像上创建一个可写容器层,然后使用指定的命令启动docker容器,也就是说,dockerrun相当于api/containers/create和/containers/(id)/start。可以使用dockerstart重新启动停止的容器,并使用其所有先前的更改完整。zynqps节点先检查本地是否已经存储了存放待加载的fpga程序的docker镜像,如果有,则直接启动docker镜像;如果没有,则从x86上位机的dockerregistry中下载docker镜像后再启动镜像,docker容器会运行zynqps端的fpga加载程序,将docker镜像中的fpga镜像与指定的fpga节点通过axi4总线,传输到zynq的pl节点;

d、zyncpl节点收到fpga镜像数据后与指定的fpga节点后,通过专用的fpga加载链路,对指定的fpga程序进行加载。

参阅图3。可扩展处理平台zynq的pl配置逻辑的data、clk、programdown、init、proc信号与所有fpga节点对应端口相连接;可扩展处理平台zynq的pl配置逻辑的ce1…cen分别与fpga节点的ce端口相连接。zynq的pl通过ce1…cen片选选择待加载的fpga节点,

选择好被加载的fpga后的所有信后都只输送到被选择的fpga节点。通过配置总线中的fpgaproc接口,告知被选择的fpga节点准备开始传输数据;再通过fpgainit接口来确认被选择的fpga是否已经准备好接收镜像数据;待被选择的fpga准备好接收数据以后,通过data[0:31]接口将fpga镜像程序传输给对端fpga;然后通过programdown接口来查询fpga镜像是否被加载成功。

在不付出创造性劳动的前提下,还可以根据上述实施例获得其他的技术方案,以及在本发明保护的范围内做出的等同变化均应落入本发明的保护范围内,都属于本发明保护的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1